跳转到正文
buybitcoinsmart

术语表 /协议与升级

硬分叉

硬分叉是什么?
硬分叉是放宽或更改比特币规则,使旧版软件会拒绝的区块变为有效,因此所有节点都必须升级,否则将被留在另一条链上。

向后兼容只在一个方向上成立,而硬分叉恰好指向了错误的方向。旧版软件会把新区块视为非法,继续在自己的链上出块,因此除非几乎所有人都采用新规则,否则结果就是原本的一种币变成两种币。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 软分叉

区别在于方向,而方向决定了谁必须采取行动。硬分叉让原先无效的区块变为有效,因此每个节点都必须升级,否则就会脱离整个经济体所在的链。软分叉让原先有效的区块变为无效,因此未升级的节点仍然跟随同一条链,却察觉不到任何变化。前者要求所有人在期限前行动,后者对不参与挖矿的人没有任何要求。

请勿混淆

常见问题

比特币发生硬分叉时,我能免费获得新币吗?

如果分叉产生了一条得以延续的链,您存放在自己钱包中的币会自动在两条链上同时存在,因为两条链都继承了截至分叉区块的账本。您需要将同一助记词导入新链的软件才能使用这些币,绝不是填写领取表格。

硬分叉对我自己钱包中的币有危险吗?

对币本身没有危险,因为您的私钥在两条链上都有效。真正的风险是重放(在一条链上广播的交易在另一条链上同样有效),以及每次分叉公布后接踵而至的大批虚假领币网站。

比特币曾经完成过硬分叉吗?

仅在最初几年的紧急情况下发生过,包括修复2010年8月15日的数值溢出漏洞,以及2013年3月链分叉之后按计划切换(记录于 BIP-50)。此后没有任何改动沿这一方向更改比特币的规则。

接着阅读

相关术语

协议与升级中的更多术语

阅读本页英文版