区块链分叉-节点共识的分歧
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除了可能需要重新验证之外,还可能面临双花攻击的风险。
至于为什么是六个区块,这并非硬性规定,有些交易所只需两个或三个确认即可入账。六个确认代表该交易在全网共识中处于安全状态。当然,这个数字也是经过计算得出的,具体内容请参考
比特币白皮书。
### 硬分叉与最长链共识
以上我们介绍了区块链自然产生的临时性分叉。若区块链因版本更新或社群共识分裂而产生“硬分叉”,则由于硬分叉不是在自然情况下发生,且涉及矿工的意识选择,因此无法单纯通过“最长链共识”解决分叉问题。详情请见下一篇文章“硬分叉与软分叉”。
标签: 数字货币
版权声明: 本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任