酷玩网

区块链分叉-节点共识的分歧

linx
欧意最新版本

欧意最新版本

欧意最新版本app是一款安全、稳定、可靠的数字货币交易平台。

APP下载  官网地址
在探讨区块链账本如何保持一致性的重要议题时,我们不可避免地要提及“分叉”这一概念。简而言之,分叉指的是区块链账本节点在共识上产生分歧,导致全网出现两种或多种账本版本。此时,必须依赖“链分叉选择规则”来促使矿工达成共识,从而在多个账本中选取一个作为该区块链的权威账本。本文将特别聚焦于“临时性分叉”的产生原因及其解决策略。 ### 区块链临时性分叉的产生原因 在基于工作量证明(PoW)的共识机制中,矿工们竞相破解一道题目,率先解出者获得下一个区块的记账权。然而,问题随之而来:是否有可能两个矿工同时破解题目,从而同时产生新区块? 答案是肯定的。由于题目是随机的,且网络存在异步性,因此两个矿工同时解出题目并产生新区块是可能的。此时,双方将各自将新挖出的区块广播至网络,供其他节点验证。一旦验证通过,节点便会认可该区块为新区块。 以下以图例进行说明:甲节点挖出了C区块,乙节点挖出D区块,并同步广播至网络进行验证。由于网络信息传递存在延迟,网络状态可能会呈现如下情形: - **C队**:首先接收到C区块的节点会认可C为新区块(否定D区块,并将其置于孤块池中)。 - **D队**:首先接收到D区块的节点会认可D为新区块(否定C区块,并将其置于孤块池中)。 ### 分叉与最长链共识 在这种情况下,矿工之间产生分歧,区块链状态呈现出以下特征: 接下来,我们将探讨如何处理这种临时性分叉。在比特币PoW算法网络中,共识规则如下:当出现分叉时,网络将保持两个分支,一旦其中一个分支的工作量超过另一个分支,节点将只在工作量较大的链上工作。 简单来说,C队以C区块为父区块继续挖矿,D队以D区块继续挖矿。哪个队伍先挖出第二个区块,全网便会认可其为主链,这就是所谓的“最长链共识”。 以下以图例进行说明:假设D队率先挖出E区块,并广播至全网进行验证。C队接收到E区块后,会将D区块从孤块池中取出,并以D分支作为主链(因为C分支不再是最长链),C区块便成为孤块。 ### 分叉对交易的影响 当遇到分叉时,短链区块内验证的交易若尚未被长链验证,会发生什么情况呢?以下为中本聪本人的解释: (图片展示) 如果短链的交易不在长链里,会重新被放入交易池(内存池),等待矿工打包进入后面的区块。该笔交易的确认数也会重新计算。这就是为什么比特币需要等待六个区块才能完全确认交易,因为用户通常不知道区块链是否处于分叉状态。如果包含交易A的区块在下一个区块后成为孤块,交易A除了可能需要重新验证之外,还可能面临双花攻击的风险。 至于为什么是六个区块,这并非硬性规定,有些交易所只需两个或三个确认即可入账。六个确认代表该交易在全网共识中处于安全状态。当然,这个数字也是经过计算得出的,具体内容请参考比特币白皮书。 ### 硬分叉与最长链共识 以上我们介绍了区块链自然产生的临时性分叉。若区块链因版本更新或社群共识分裂而产生“硬分叉”,则由于硬分叉不是在自然情况下发生,且涉及矿工的意识选择,因此无法单纯通过“最长链共识”解决分叉问题。详情请见下一篇文章“硬分叉与软分叉”。

标签: 数字货币