第0章 引言
软分叉一样有分裂比特币区块链的风险,社区一贯认为的硬分叉才有分裂的风险是错的,因为UASF让我看清了事实。让我们认真来分析下硬分叉和软分叉的风险。
第1章 硬分叉和软分叉的定义
硬分叉和软分叉都是比特币协议升级的部署方式。
比特币协议不作更改时,即绝大多数时间里比特币系统运行时,所有节点追随最长链。请记住这一条规则,这是所有节点都应当遵守的规则,除非最长链在节点看来是包含了非法的区块。
硬分叉是指协议规则放宽。这样新规则部署后,如果有节点没有升级,针对新的规则的区块未升级的节点会认定其为非法。这个时候,旧节点就会放弃追随这条包含非法规则的链,哪怕它是最长链也一样会放弃。这种情况下,未升级的节点就会主动分裂出去。
软分叉是指协议规则收紧。这样新规则部署后,新规则是旧规则的一个子集,未升级的节点并不会认为新规则的区块是非法的。所以简单想,软分叉不升级的节点并不会主动分裂出去,并且依然追随最长链规则。
但软分叉也有可能会造成区块链分裂。只要加上追随最长链这个规则就可以想明白。
第2章 软分叉如何造成比特币区块链分裂
能造成比特币区块链分裂的因素就是共识失败,所谓的共识第一是所有节点认可的区块规则,第二条就是追随最长链。
如果所有节点对规则达成了共识,那就追随最长链,如果有两个矿工节点挖出相同的区块,那就看接下来谁是处在最长链了,这就是孤块的原理。如果对规则达不成共识,则节点会无视和自己共识不相同的最长链。
软分叉是规则收紧,即新规则是旧规则的子集。所以未升级的节点会视已经升级的节点打包的区块是合法的区块。但已升级的节点却会视未升级的节点打包的区块是非法的区块。所以未升级的节点继续坚持最长链原则,但已经升级的节点则会无视未升级的节点是否是最长链。
如果已经升级的节点的算力更大,那未升级的节点打包出的区块会因为它们追随最长链而被孤立。但如果是已经升级的节点的算力更小呢?结局就是已经升级的节点会独立挖一条链而分裂出去。
软分叉造成区块链分裂的风险主要是升级过程中支持的算力过小。只要执行软分叉的算力不占有绝对的优势,无法使用追随最长链规则孤立掉不升级的算力打包的区块,那就会分裂。
这和硬分叉造成分裂的风险是一样的。因为从原理上,硬分叉中不升级的节点就是对已经升级的节点发起的一次软分叉(规则收紧)。
避免硬分叉和软分叉造成分裂的办法也都是一样——使用更大的算力阈值才允许部署。考虑到出块幸运值的原因,至少要75%算力才可以保持安全。
第3章 软分叉和硬分叉风险
谎言说多了,相信的人就多了。现在绝大多数人都相信软分叉比硬分叉更安全,其实这句话是不对的。
要想清楚这一点,我们需要知道区块重组的概念。
重组就是区块链出现分裂后,在分裂点后,两条链看区块高度对比,我们称为短链和长链。如果短链在接下来的出块过程竟然形成了比长链更长,那长链上的算力将有可能会回到短链来挖矿,并且长链将抛弃掉分裂点到重组点的所有区块。
重组的风险是在规则更宽的那一侧。软分叉造成的分裂,重组就在原链上。硬分叉造成的分裂,重组是在发起分叉的这一侧。
这个过程类似于孤块。但孤块往往只有一个块,重组有可能孤立掉多个区块。
软分叉无论多小的算力都是可以成功发起对比特币的分裂,并且因为分裂出去本身是没有重组的风险,但分裂的另一侧则有重组的风险。
而因为硬分叉的重组风险在于发起分叉的这一侧,硬分叉除非你有绝对的算力优势,否则发起分叉就时刻有重组的风险。
从博弈论来讲,软分叉的发起方占优势,因为重组风险在于原链;而硬分叉的发起方处于劣势,因为重组的风险在自己。
第3章 结束语
这只是一个开头,接下来我会对比特币协议升级过程——包括硬分叉、软分叉、UASF——的风险做一个全面的分析。
(如果您觉得好,欢迎关注我的公众号: 闪电HSL,也欢迎加我微信号:13116885)