因为区块链是一个去中心化的数据结构,区块链的不同副本不是时刻都能保持完全一致的。区块在不同节点间的到达时间会存在差异,因而不同的节点可能拥有不完全一样的区块链视图。为了解决这个问题,每个节点总是选择并尝试延长代表了最大工作量证明的区块链,即最长的链条或者最大累积难度的链条。通过汇总记录在链上的每个区块的难度值,节点可以计算出创建这个链所耗费的工作量证明总额。只要所有节点都选择最大累积难度的链条,全局比特币网络最终将调整到一致状态。分叉是不同版本的区块链间暂时的不一致现象,当更多区块被加入其中某一个分支时,最终收敛将解决这一问题。

在接下来的几张图中,我们将在全网范围内,追踪“分叉”事件的整个过程。图形是比特币作为一个全局网络的简化表示。在现实中,比特币网络拓扑并没有按照地理位置进行组织。相反,互连的节点形成了一个网状网络,但是相连的节点间地理距离可能非常遥远。使用地理拓扑的表示法是为了更加简洁地演示分叉。在真实的比特币网络中,节点间的“距离”是用节点到节点间的“跳数”(hops)来衡量的,而不是基于它们的物理位置。出于演示目的,不同区块用不同颜色表示,散布在网络中,而它们经过的连接也用该颜色标示出来。

第一个图例(见图8.2),全网拥有统一的区块链视图,蓝色的区块位于主链的顶端。

什么是区块链分叉

图8.2 区块链“分叉”事件演示——分叉前

共5页:
上一页
1
2
3
4
5
下一页

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注