比特币史话·74 | 分道扬镳(1): 三种分叉

(杰夫·加兹克,Bloq CEO,曾免费送出15678枚比特币。图片来源于网络)
前情回顾:比特币史话·69 | 智能合约(4): 图灵完全吗?
比特币史话·70 | 智能合约(5): 停机问题
比特币史话·71 | 智能合约(6): 逆波兰式
比特币史话·72 | 智能合约(7): 多重签名
比特币史话·73 | 智能合约(8): 从人到神

正文:
比特币的区块链的分叉(fork)指的是沿着正在延长的最长链,从某个区块开始,出现了两个或多个后继区块,这些后继区块分道扬镳,各自独立延长,形成分叉链。由于所有节点默认都遵循最长链原则来选择一条主链,这种共同选择会形成谢林点,从而放弃分叉链。分叉链的形成和消失,成为比特币的区块链系统与传统数据库系统相比非常独特的一种涨落现象。
比特币的区块链有三种分叉形式,或者说分叉能力。第一种分叉就是随时发生的、由于随机性导致的自发的“图灵分叉”(Turing bifurcation),这种分叉确认了历史,形成了时间。另外两种则是人为造成的分叉,通过改变比特币客户端软件的代码来实现,一种是具有向后兼容性的,叫做“软分叉”(soft fork),另一种是没有向后兼容性的,叫做“硬分叉”(hard fork)。
所谓“向后兼容”(backward compatible),是指新版本的比特币软件可以兼容旧版本,可以正常读取和处理旧版本软件创建的区块、交易数据以及脚本,但是旧版本软件则通常很难对新版本保持“向前兼容”(forward compatible)。反过来,没有向后兼容性,就意味着新版本软件修订了旧版本的某一些核心共识参数,两个版本相互之间不再兼容,互相会判定对方的区块数据不符合共识规定从而抛弃。前者是一种改良,而后者则不啻一种涅槃
由于比特币具有““一旦0.1版本发布了,其核心设计就将在其整个生命周期中一成不变”的特性,因而通过传统的停止旧版本并用新版本覆盖和替代的方法进行功能升级或者紧急问题修复,都是一件不太容易的事情。这和比特币系统需要不断改进和演化、以保持与时俱进的灵活和创新具有天然的矛盾性。当必须要做的时候,就有软分叉硬分叉两条路径可以考虑。这两条路径,在比特币历史上都曾经反复实操过,经受住了历史的考验。
硬分叉是一把双刃剑。硬分叉可以更改任何东西,包括核心共识机制,比如更改发行量,更改出块速度、区块大小,增加新的操作符等等。但是除非万不得已,不要轻易尝试硬分叉。硬分叉之后会产生两个版本的系统,除非能确信已达成放弃旧版本的充分共识,大家齐心协力一起升级到新版本,实现共识的革命。这个革命的过程,是共识打破和重建的过程。系统无法强迫任何人参加革命,人性的幽暗面会出现,一旦出现实力派的反革命,共识的革命不成却变成了共识的破裂和社区的撕裂。
硬分叉同时也是一种博弈论的制衡机制。掌握着比特币核心开源代码的修改权力的开发者们,如果不能持续保持高质量的代码维护和响应社区最广泛的呼声,就会被社区通过硬分叉抛弃,重新选择一个开发团队维护最广泛的持币人所希望看到的比特币的样子。这一制衡会有助于保持开发团队的敬业精神,捍卫比特币的核心价值观,保持比特币的先进性。
2010年8月15日,Bloq的CEO,杰夫·加兹克(Jeff Garzik)在论坛里发帖指出比特币在块高度#74638处发现了一笔数值非常奇怪的交易输出。这笔交易输出了922亿多个比特币,远远超出了比特币的总设计发行量2100万[1]。仅仅5个小时之后,中本聪紧急发布了一个新版本0.3.10,在代码中修复了这个整数溢出的问题[2]。此后,在中本聪和社区的共同努力之下,大家完成了软件的升级和区块链的回滚,放弃了原来的主链,重新从一条新的硬分叉链开始挖矿。当所有人和算力都重新汇聚到这条新链上之后,新链的长度很快就会超过旧链,成为新的主链[3]。这宣告此次硬分叉成功升级了共识,未造成共识分裂。
相比之下,软分叉就是一种温和的升级,只需要50%以上算力支持新版本,就可以实施平滑的升级和改进,新旧版本同时工作,不会造成全网算力割裂、安全性下降。软分叉不能改变核心共识参数和机制,但仍然能够完成很多有意义的事情。比如,2012年4月1日,时间戳大于1333238400之后,BIP0013提案的P2SH(支付到脚本哈希)功能正式生效。大部分矿工用提前安装新版软件表示了对此次软分叉升级的支持,最终,软分叉升级成功。[4]
软分叉还可以用来升级比特币的公钥签名算法,把ECDSA更改为其他签名算法,比如某种合适的抗量子计算机的新签名算法[5]。虽然比特币的设计因为处处都是哈希算法,已经是具有量子抗性的了,但是仍然可以通过一个简单的软升级操作,平滑过渡到更安全的签名算法,消除这最后一个隐患。
【未完待续】(公众号:刘教链)

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇

您不能复制本页内容(。・_・。)ノI’m sorry~