主页 > imtoken钱包官方下载最新地址 > 比特币如何达成共识——最长链的选择

比特币如何达成共识——最长链的选择

比特币没有中心组织,几乎所有完整的节点都有公共账本,那么如何达成共识:确认哪一个是公认的权威账本?

为什么我需要遵守协议

这实际上是一个经济问题。经济活动中的每个人都是自私的,都追求利益的最大化。一个节点工作 只有当其他节点同意有效(打包的新区块,其他节点通过验证后才会加入区块链并在网络上传播),才能盈利,只有遵守规则才能被其他节点识别。因此,基于营利性,节点会自发遵守协议。数以万计的独立节点遵循简单的规则(通过异步交互)自发形成共识。

共识:要遵守的协议规范

去中心化共识

比特币是如何挖矿的

在工作量证明中,我们了解竞争性簿记是通过工作量证明实现的。权威总账是如何达成共识的还没有完全解释清楚。我今天将添加它。事实上,比特币的共识是由所有节点的4个独立进程交互产生的:

每个节点(Mining节点)根据标准独立验证每笔交易。挖矿节点通过完成工作量证明将交易记录独立打包到新区块中。每个节点独立验证新块并将其组装到区块链的每个块中。节点自主选择区块链,在工作量证明机制下选择累积工作量最大的区块链。

共识的最终目标是确保比特币始终在工作量最大的区块链上。在运行中,工作量最大的区块链是权威的公共账本。

比特币是如何挖矿的

第 1、2 和 3 步已经在如何挖掘比特币 - 工作证明中提到,我将在下面重点介绍第 4 步。

最长链的选择

首先,让我们定义一个难度最大的区块链。通常,包含最多块的链称为主链。每个(挖矿)节点总是选择并尝试扩展主链。

比特币是如何挖矿的

分叉

当两个矿工几乎同时拥有一个工作量证明解决方案时,他们会立即将他们的“获胜”区块传播到网络,首先传播到相邻节点,然后传播到整个网络。每个接收到有效块的节点都会合并它并扩展区块链。当这两个区块传播时,有的节点先收到#3458A,有的节点先收到#3458B,两个候选区块(通常这两个候选区块会包含几乎相同的交易)都是主链分叉的延伸。此时分叉了两条竞争链,如图:

分叉

比特币是如何挖矿的

两个块都收到 工作量较多的节点继续做主链,另一个保存为备用链(保存是因为以后备用链可能会超过主链的难度,也就是称为新主链)。

分叉分辨率

收到#3458A的(挖矿)节点会立即将该区块作为父区块生成新的候选区块,并尝试为该区块寻找候选区块的Proof-of-work解决方案。同样,接受区块#3458B 的节点将开始生成以该区块为链的顶点的新区块比特币是如何挖矿的,从而扩展该链(以下简称 B 链)。这个时候,总会有一方先找到工作量证明的解决方案,然后传播出去。假设以#3458B为父块的PoW是最先求解的,如图:

比特币是如何挖矿的

分叉

当原本以#3458A为父块解出的节点收到#3458B、#3459B时,会立即以B​​链为主链(因为以#3458A为顶点的链不再是最长链) 继续挖掘。

节点也可以先接收#3459B,然后接收#3458B。当它接收到#3459B 时,会被认为是一个“孤块”(因为没有找到#3459B 的父块#3458B)它被保存在孤块池中,并且在接收到父块#3458B 时比特币是如何挖矿的,节点将从孤块池中取出孤块并将其连接到其父块,使其成为区块链的一部分。

比特币的出块间隔设计为 10 分钟,这是更快的交易确认和更低的分叉概率之间的折衷。更短的区块生成间隔将导致更快的交易确认和更频繁的链分叉。相反,较长的时间间隔会减少分叉的数量,但会导致更长的确认时间。

区块链通俗——打造优质区块链技术博客,来这里了解区块链,关注知乎和微博,掌握区块链技术动态。我的知识星球为你解答区块链技术问题,欢迎加入讨论。