比特币交易流程总结
时间: 2020年10月4日                     分类: 比特币 标签:, ,

过程摘要

    摘要:比特币是一个分布式的点对点网络系统。它被设计成为一种完全通过点对点技术实现的电子现金系统,可以不通过中间任何的金融机构直接由一方发起并支付给另外一方。比特币系统基本单位是UTXO(未经使用的一个交易输出),账户是通过脚本来进行金额的锁定,要提供一个包含用户私钥的解锁脚本来解锁输出。比特币系统通过PoW(工作量证明)生产区块已证明交易的合法性,难度会随系统的算力进行相应的改变,平均十分钟出一块区块。基于与上一个区块生成的随机散列来生成新的散列提供给下一个区块,形成了多路链式结构(会出现分叉),有效避免了系统的恶意攻击(51%攻击)。
    主要是对知识的总结,理解会有偏差。从小明向小红转钱来进行知识的整体的梳理。

简介

小明有一天出去和朋友一起玩,在路上遇到了他的朋友肖红。两人很开心地聊天。在离开之前,小明对小红说:“我们俩都喜欢区块链,否则我会给你1w 区块链作为纪念,请给我您的地址”。我们不要说小明有很多btc,也不要说私钥乘以椭圆曲线就可以成为公钥。公钥双哈希和Base58Check编码形成比特币地址。最可能的原因是小明接受了它。用头从计算机中挖出。肖红刚和小明很久不认识,所以索要小明的事有多么尴尬,但忍不住小明的心,很难善良。小红别无选择,只能回答:“我们已经很久没有认识了,所以我们不需要这样做。或者我们可以提供少量。我的支付宝帐户是xxxx?”。小明生气了吗? “这太麻烦了,我将其传递给博客作者。”

比特币交易

交易

当小明将其转让给小红时,在一笔交易诞生之时,比特币交易将被一个或多个签名加密,这表示允许使用交易所指向的比特币资金。接下来,比特币事务被广播到比特币网络。任何事务都是包含输入和输出值的数据结构。该数据结构嵌入有代码信息,该代码信息将资金从初始点(输入值)转移到目标地址(输出值)。当交易被网络中的某个节点批准时,网络节点将继续向其他连接的节点广播该交易,发起者将收到一条消息,表明该交易已被有效接受;如果交易未获批准,则节点“交易”将被拒绝,并返回交易被拒绝的消息。

如果您只是去这里,这几乎与中立支付系统相同。集中式系统此时会将用户发送的消息记录在系统中,以进行消息处理记录,并返回到客户端以完成交易。这里的集中式系统解决了两个陌生人的信任问题,并且将其自身用作信任的保证。当前的系统也是分布式框架。集中式分布式系统解决了流量大的问题。因为系统是集中的,所以请求和事务处理太集中了,事情也就太集中了。单点无法处理多大的流量。无论业务拆分部署,数据库子数据库子表,系统降级和当前限制如何,软负载平衡的构造都是以较小的成本处理更多的事务请求。我以前觉得这是一种全新的技术,现在我知道比特币很棒,它提供了全新的解决方案。

交易将资金从交易输入转移到输出。投入是指资金来源,通常是前一次交易的产出。交易的输出是通过关联密钥来给新所有者钱。当资金从一个地址转移到另一个地址时,这会创建所有权链。因为是链式存储结构,所以具有可追溯功能。

比特币交易

每个交易都是通过比特币交易脚本,锁定脚本和解锁脚本来实现的。锁定脚本是放置在输出值上的“障碍”,它阐明了将来使用输出的条件。由于锁定脚本通常包含一个公共密钥(即比特币地址),因此解锁脚本是一种“解决”或满足锁定脚本在输出上设置的支出条件的脚本,它将允许使用输出

比特币交易

多个交易的汇总是一个账单(块)。系统如何识别虚拟货币并将交易视为成功? 比特币系统的参与者共同维护一个公共分类帐,这是一个公共数据结构。每个参与者将下载完整的账簿数据。参与者完成块的计算后,计算结果将在整个网络上发布,其他节点将在收到结果后对结果进行验证。成功后,它将把它写入自己的块中以表示批准,然后立即进行下一个块计算。

交易被写入到块中,但是使用块进行验证将太大。块标题中的merkle结构用于快速验证和搜索。块标题还用于连接上一个块。矿工挖掘还通过更改Nonce计算块的哈希值。计算出的值小于难度目标,可以将区块写入分类帐,系统将奖励矿工采矿费。这项费用很特别。它没有输入源。这称为硬币创建交易。它不包括“解锁脚本”(也称为scriptSig)字段,该字段已被Coinbase取代。块的难度将随系统的计算能力而变化。这是比特币系统中的PoW(工作量证明)。因为所有块标题都连接到前一个块,所以必须重新计算该块之后的所有块以修改事务。成本太大,几乎是不可能的,因此区块链不能被篡改。从理论上讲,如果一个人拥有51%的计算能力,则可以随意修改比特币系统,但是在拥有如此大的计算能力之后比特币交易,他就可以使用该计算能力来挖掘利润,而不必使用这种方法。大量的计算能力。修改数据的努力。 51%的攻击不太可能发生。

块数据结构:

比特币交易

块头数据结构:

比特币交易

这时,事务被视为已完成,但是系统可能会分叉。因此,建议在将交易写入账本后的六个区块后,正式确认交易成功。

两次付款

比特币是分布式点对点网络系统。它被设计为完全通过对等技术实现的电子现金系统。这是由于上述特殊证书。不可避免地会出现分布式系统问题,并且将引入拜占庭将军问题。我一直以为这是一个区块链系统问题,但后来我逐渐意识到这是一个分布式系统问题。在分布式系统中,将存在一致性问题,信息传输延迟和消息序列问题。基本上,并行数据将更改为串行处理。使用CAP / BASE原理(要了解一点,但是如果不作总结,请稍后再总结)。

注意:拜占庭将军问题是一个模型,代表可信信道下的一致性问题。相应的蓝军问题模型是相同一致性下的渠道不信任问题。通过TCP / IP协议解决。

因为比特币是虚拟货币,所以存在双重支付问题。因为它在分布式系统中,所以系统中将有两个矿工同时查找满足要求的随机Nonce字符串。他们将同时向系统广播,并且靠近他们的人将验证并同意该阻止。这时,系统有一个分叉。此时,系统将分为A和B区域,它们将同时计算下一个块。经过验证,每个人都会找到最长的主链来进行计算,以进行计算

比特币交易

黑色代表当前帐户簿的主干。此时,您可以选择任何页面作为当前主分支,例如,选择A:

比特币交易

这时,如果有一个基于A的新账簿页面,则此主干将继续:

比特币交易

如果此主干网以这种方式继续,则意味着每个人基本上都将A用作主干网,而B将被遗忘。但是也有可能B突然变长:

比特币交易

然后,我们需要使用B分支作为当前主干,并基于该分支执行后续工作。

比特币交易

从局部的角度来看,尽管在某个时刻每组书籍的主干可能存在不一致之处,但总体方向是相同的。那些由于不同步而偶尔生成的小分支将很快被历史淹没。

双重支出问题就是基于这一点。当攻击者向用户A支付一笔款项时,该用户在收到阻止确认后便进行了交易,但攻击者还使用这笔钱来错过另一位用户B,该用户支付了相同的金额,并故意使叉子使交易无效。之前的交易。 比特币由PoW解决,最好利用这种计算能力来进行攻击来赚钱。避免了51%的攻击。<​​/ p>

第一步,攻击者准备从受害者A购买10 比特币黄金。他签署交易单给受害者A,然后将10 比特币转移给受害者A。

比特币交易

第二步,在最新的账簿页面上确认交易,并由各个采矿团队宣布。受害者A看到了公告,确认比特币到了,并给了攻击者10 比特币等值的金。

在第三步中,攻击者找到账簿比特币交易,从包含交易的账簿页面的上一页开始创建一个分支,并生成比上一个分支更多的账单页面。由于攻击者刚刚创建的分支成为主分支,并且包含受害者A收到的钱的分支成为分支分支,因此采矿组织现在不再识别转移,受害者A获得的10 比特币被取消了。

比特币交易

在第四步中,攻击者可以再次在交易单上签名,并向受害者B支付相同的金额。在受害者B确认款项到达后,他向攻击者支付了等价的黄金。

比特币交易

到目前为止,攻击者已经花了两次10 比特币并从两个受害者的每一个那里购买了等价的黄金。攻击者也可以这样做,取消与受害者B的转移,并向他人支付相同的金额…

硬叉和软叉

通过数据结构的协议来更改软派生。节点可能不会继续升级,但是生成的块将是非法的。

硬叉是永久叉。修改了相应的结构,并且需要升级节点,从而导致永久性差异。

请参阅:什么是硬分叉,什么是软分叉,什么是共识?

参考:

1.

2.关于拜占庭将军问题的深入讨论

3.什么是硬分叉,什么是软分叉,什么是共识?

4A的故事告诉您比特币的原理和运行机制