<font color=gray>
原文: Chain Spilit and Resolutions节选
作者: Alphonse Pace
译者: 187J3X1
</font>
分叉的分类
矿工们可以通过故意将一些区块孤儿化(译者注:从其他节点收到但是不将它记录到主链上)来让区块链产生分叉。用户们也可以通过遵守不同的共识规则最终走向不同的分支。为了简化讨论,我们忽略第一类情况,只考虑第二类。并且约定红色规则代表旧的共识规则, 黄色规则表示新的共识规则。
不兼容型硬分叉
这种类型的分叉是最容易理解的了。在区块链发展到某个高度时,一部分用户决定实现一种和原来完全不同的共识规则。
在网络中一部分矿工决定按新的共识算法挖掘新区块,而另一部分还是按原来的规则(译者注:与原来算法完全不兼容)挖掘时,硬分叉就出现了。此时按旧规则产生的区块在遵守新规则的矿工节点不能验证通过,反之亦然。以太坊和以太坊经典就是这样的一个例子。
半兼容型硬分叉
部分兼容硬分叉发生在新旧两套规则有部分重叠(橙色),但有部分又独立的情形
此时,矿工可以按橙色规则挖掘新区块以避免区块链产生分叉。然而,一旦一个矿工挖掘出了一个红色区块或者一个黄色区块,区块链就出现了分叉点(译注:因为采用另一套规则的节点不会承认这个区块)。注意,该分叉点有可能消除,什么时候呢?就是一个橙色区块被挖出,替代了这个红色或者黄色区块(译注:即使分叉点之后还有区块也有可能如此,举例来说,假设区块难度更高的区块会成为主链区块,只要这个橙色区块的难度超过了分叉点之后的红橙/黄橙链,那么红橙/黄橙链上的区块都会被孤儿化,但实际上,这种可能性并不高,而且这样的分叉消除并不能阻止下次分叉)
兼容型硬分叉
如果新规则是旧规则的扩充(译注:采用旧规则产生的区块完全被采用新规则的节点承认,反之不行),那么称这种分叉为兼容型硬分叉。
当有一个矿工挖出一个图中黄色规则的区块(译注:不被采用旧规则的节点承认),那么就开始了区块分叉。这种分叉会只要黄色区块链的工作量多过橙色区块链,这种分叉才成立。否则,还是存在一种可能性,就是橙色区块链的工作量多过黄色区块链,黄色区块链久会被孤儿化,分叉久失败了。所以采用黄色规则的节点一开始并不能确认分叉成功,只有当经过多个区块确认后,才能说分叉成功了。比特币XT、比特币经典(classic)和比特币无限(unlimited)便是这种例子.
软分叉
与兼容型硬分叉的规则扩大正好相反,软分叉的定义是规则紧缩,即新规则完全时旧规则的子集(黄色圈在红色圈里面,重叠部分表现为橙色)
当红色区块被挖掘出来吼,分叉便开始了。采用旧规则的用户识别红色规则下的区块,采用新规则的用户识别橙色规则下的区块。当矿工的大多数hash算力都按橙色规则挖矿时,红色链变被孤儿化了。这种分叉在比特币的历史上发生过多次,比如BIP66,CSV,CLTC和 SegWit软分叉。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。