主页 > imtoken安卓最新版 > 比特币如何达成共识——最长链的选择

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

imtoken安卓最新版 2023-05-15 06:42:47

本文首发于区块链社区比特币怎样长出来的,语言通俗

原文链接:比特币如何达成共识——最长链的选择 原文已更新,请阅读原文

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

为什么我需要遵守协议

这实际上是一个经济问题。经济活动中的每个人都是自私的,都追求利益的最大化。一个节点工作 只有当其他节点同意有效(打包的新区块,其他节点验证通过后才会加入区块链并在网络上传播),才能盈利,

比特币怎样长出来的

只有遵守规则才能让其他节点同意。

因此,基于利益的节点,节点会自发地遵守协议。数以万计的独立节点遵循简单的规则(通过异步交互)自发形成共识。

共识:要遵守的协议规范的去中心化共识

在工作量证明一文中,我们了解了权威总账是如何通过工作量证明来竞争簿记的。共识没有完全解释清楚,但我今天补充一下。

其实比特币的共识是由所有节点的4个独立进程交互产生的:

比特币怎样长出来的

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

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

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

最长链的选择

首先,让我们定义一个难度最大的区块链。一般来说,包含最多区块的链称为主链

比特币怎样长出来的

每个(挖矿)节点总是选择并尝试扩展主链。

分叉

当两个矿工几乎同时拥有一个工作量证明解决方案时,他们会立即将他们的“获胜”区块传播到网络,首先传播到相邻节点,然后传播到整个网络。每个收到有效区块的节点都会合并它并扩展区块链。

当这两个区块被传播时,有的节点先收到#3458A,有的节点先收到#3458B,这两个候选区块(通常两个候选区块会包含几乎相同的交易)是主链的扩展,一个会发生分叉。此时分叉了两条竞争链,如图:

比特币怎样长出来的

收到两个区块的节点会继续使用工作量较大的一个作为主链,并将另一个保存为备用链(保存是因为备用链将来可能会超过主链的难度,也就是所谓的新主链)。

分叉分辨率

收到#3458A的(挖矿)节点会立即将该区块作为父区块生成新的候选区块,并尝试为该区块寻找候选区块的Proof-of-work解决方案。同样比特币怎样长出来的,接受区块#3458B 的节点会开始生成新区块,并以此区块为链的顶点,扩展链(以下简称 B 链)。

这个时候,总会有一方去寻找工作量证明的解决方案并将其传播出去。假设以#3458B为父块的工作量证明最先求解,如图:

比特币怎样长出来的

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

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

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

☛区块链通俗易懂——系统学习区块链,打造最好的区块链技术博客。

☛我的知识星球为您解答区块链技术问题,欢迎参与讨论。