术语表 /协议与升级
硬分叉
- 硬分叉是什么?
- 硬分叉是放宽或更改比特币规则,使旧版软件会拒绝的区块变为有效,因此所有节点都必须升级,否则将被留在另一条链上。
向后兼容只在一个方向上成立,而硬分叉恰好指向了错误的方向。旧版软件会把新区块视为非法,继续在自己的链上出块,因此除非几乎所有人都采用新规则,否则结果就是原本的一种币变成两种币。Bitcoin Cash 就是这样在2017年8月1日的区块478,558诞生的。
运作方式
硬分叉会扩大节点所接受的区块范围,而扩大正是无法隐藏的那个方向。
设想一项允许8 MB 区块的改动。已升级的节点既接受小区块也接受大区块,未升级的节点只接受小区块。只要没有人挖出大区块,这两组节点就无从区分,分叉只存在于纸面上。矿工一旦发布大区块,两组节点的链顶就不同了,协议中没有任何机制能再把它们合到一起,因为双方都不愿意回退一个自己认为完全有效的区块。
这就是硬分叉需要协调、而软分叉不需要的原因。这类改动会定在某个区块高度或某个日历日期,提前很久公布,并且期望所有人在此之前完成升级。错过期限,您的节点就不只是运行旧版软件,而是在跟随一条与您交易的对象已经放弃的链。
旨在产生一条长期存在的第二条链的硬分叉,还需要重放保护。没有重放保护,一笔已签名的交易在两条链上都有效,在一条链上的支出可以被重新广播到另一条链上,并在那里花掉对应的币。Bitcoin Cash 的解决办法是要求使用一种新的签名哈希类型 SIGHASH_FORKID,这使它的交易在比特币上结构无效,比特币的交易在它那里也无效。跳过这一步的分叉,让用户因意外重放而损失了币。
比特币自身只在最初几年迫不得已时,以这种方式修改过规则。2010年8月15日的数值溢出事件中,一个算术漏洞造出了一个创造1,840亿枚币的区块,修复需要一个打过补丁的客户端,外加一次有意为之、回退到该区块之前的区块链重组。2013年3月的链分裂则通过一次预定的切换得到解决,记录在 BIP-50中。此后再没有任何事件与之相近,也没有任何机制能强行推动一次:比特币上的硬分叉只是一项提议,只有整个经济体都选择跟随它才能成功。
购买比特币时为何重要
每当硬分叉被公布,都会出现两个实际问题,其中只有一个与您的币有关。
第一个是托管。您掌握密钥的钱包中的币,会自动存在于任何分叉的两侧,因为两条链在分叉区块之前继承的是同一份账本。您不需要认领、登记,也不需要把任何东西连接到某个网站。如果想使用第二种资产,请把同一组助记词导入跟随第二条链的软件,并且要在一台不存放其他任何东西的设备上操作,因为这类软件由您没有理由信任的人编写。
第二个是您的交易所。存放在平台上的币如何处理,由平台决定,而不是由您决定。2017年,本站评测的部分交易所把 Bitcoin Cash 记入了客户余额,部分在数周后才开通交易,还有部分始终没有上线,而这期间充币和提币均被暂停。这些做法在任何地方都没有合同依据。如果分叉对您很重要,需要事先把币转出平台。
诈骗层面比协议风险更糟。虚假的分叉空投是本站诈骗指南中最古老的套路之一:一个宣布新链的网站,一份领取表格,以及一个让您填写助记词的栏位。没有任何一次分叉需要这些。任何要求提供助记词才能释放分叉币的做法,都是在窃取您原有的币。
Bitcoin Cash:真正发生过的硬分叉
Bitcoin Cash 是清晰的案例,因为它所做的一切都事先公布,而它所需要的一切先在别处出了问题。
其规范把激活时间定在2017年8月1日,并规定此后的第一个区块必须超过1 MB,从而保证分叉一定发生,而不是听凭运气。区块478,558就是那个区块。新规则把基础上限提高到8 MB,拒绝采用 SegWit,并加入 SIGHASH_FORKID,使两条链永远无法重放对方的交易。
留下的教训在于随后发生的事。在证明了一群人可以带着一份账本副本离开之后,Bitcoin Cash 自己又被一个不认同其方向的派系再次硬分叉,其后续的链此后仍不断分裂。硬分叉并不是一个项目一生中只有一次的事件,而是下一次分歧可以援引的先例。
硬分叉 vs 山寨币
硬分叉继承一份账本,山寨币则从空账本开始。Litecoin 作为独立的链上线,没有任何余额,所以没有人一觉醒来就拥有了它。Bitcoin Cash 上线时,截至区块478,558的每一份比特币余额都已记入其链上,因此持有者突然被告知自己拥有了新的资产。分叉之后,这一区别在技术上不再重要,因为两者是规则各异、价格各异的独立资产,但对币是如何分发的而言,这一区别至关重要。
硬分叉 vs 软分叉
区别在于方向,而方向决定了谁必须采取行动。硬分叉让原先无效的区块变为有效,因此每个节点都必须升级,否则就会脱离整个经济体所在的链。软分叉让原先有效的区块变为无效,因此未升级的节点仍然跟随同一条链,却察觉不到任何变化。前者要求所有人在期限前行动,后者对不参与挖矿的人没有任何要求。