Hard Fork 以不兼容旧节点的方式改变区块或交易的有效性规则。节点若要跟随新的不兼容链,就必须接受新规则。仅仅宣布变更或投入更多挖矿算力,都不能强迫它这样做。
安娜和帕维尔各自运行 Full Node,也就是独立检查 Bitcoin 规则的计算机。安娜安装了允许更大区块的软件,帕维尔保留原来的上限。一个区块到来,它符合新条件,却超过旧上限。安娜接受它,帕维尔拒绝它。这不是连接出了问题,而是两人的程序对哪些内容可以进入共同历史有了分歧。 这就是 Hard Fork 的实际含义。把它叫作“升级”,不会让帕维尔的电脑忽略自己的规则。只要有人分别为两条分支出块,并且有人使用它们,两者就可能继续存在。如果参与者都转向同一套规则,则未必会留下两个活跃网络。 [1]
旧节点会拒绝不兼容的区块,以及建立在它上面的分支,但不一定从此停住。如果矿工按原规则继续构建另一条分支,它就可以继续接受那条分支的区块。没有这样的后续区块,它才会停在自己认定有效的最后一个区块。决定因素是软件的规则,而不是支持变更的人数。要跟随不兼容分支,运营者必须主动改变这些规则。 [1]
Bitcoin Cash 于 2017 年 8 月 1 日在区块高度 478559 与 Bitcoin 分离。它采用了允许区块超过当时 Bitcoin 节点接受范围的规则,形成自己的持续链。Bitcoin 节点拒绝仅符合 BCH 规则的区块,BCH 节点则跟随自己认定有效的历史。这是 Hard Fork 形成独立网络的例子,并非在原网络内直接升级 Bitcoin。 [3] [4]
想象钱包收到的一笔尚未花费的款项,Bitcoin 用 UTXO 记录这样的未花费输出。有共同过去的分支会继承这条记录,之后各自独立管理。如果你掌握所需密钥,而且两个网络仍承认该输出,通常就能花费两边对应的币。这不等于价值翻倍:它们是需求各异的不同资产。如果资金放在交易所,能否收到另一网络的币,还取决于交易所的入账政策。 [4] [6]
即使两条分支上都有币,你也可能只想在其中一条付款。如果缺少保护,别人可能复制已签名的交易并在另一网络广播,它在那里也可能有效。这就是 replay 风险。应检查具体网络的保护机制与钱包支持情况。例如,改变 sighash,也就是规定签名覆盖哪些数据的规则,可以把交易绑定到特定链。地址外观不同有助于区分网络,但本身不能提供密码学意义上的重放保护。 [3]
激活是预定开始执行新规则的时点,区块高度表示区块在链中的位置。预定日期、区块高度或矿工信号可以协调接受升级的参与者,却不能改变未接受升级的节点软件。如果经济上重要的参与者分别留在两套规则上,两条链都有可能继续运行。因此,Hard Fork 激活方案是一份包含分链风险的迁移方案。 [1]
这里的治理指参与者如何决定变更。Ticker 是资产的交易简称,例如 BTC 或 BCH。开发者可以发布代码,矿工可以调配算力,企业可以选择交易代码与充值政策,用户可以选择软件。这些行为本身都不会改变其他节点用来验证区块的规则。如果足够多的独立参与者自愿维护并认可两套规则,分链就可能长期持续;但并非所有不兼容变更都会产生两个长期运行的网络。把某条分支称为“升级”属于社会约定,并非共识规则。 [1]
网络也可能在无人打算创建新货币时分裂。2013 年 3 月,一些旧节点无法处理一个交易输入数量异常多的区块。它们触及了数据库锁数量的上限;这些锁用于防止同时执行的操作修改同一份数据。较新的 0.8 版本使用另一种数据库,因此接受了该区块。BTC Guild 和 Slush 矿池退回 0.7 版本,转而在旧节点也接受的分支上挖矿。当这条分支积累了更多工作量,新节点也转向了它。这是在修复软件意外产生的分歧,而不是像 Bitcoin Cash 那样长期维持独立网络。 [2]
Soft Fork 会收紧原有规则。因此,满足新增限制的区块也符合旧规则。旧节点即使不自行检查新增限制,也可以接受这种区块。Hard Fork 则没有这种兼容性:新软件接受的区块可能违反旧规则。要接受它,旧节点的运营者就必须改变软件执行的规则。Soft Fork 也不能保证网络永不分裂:如果矿工产生一个违反新增限制的区块,新旧节点可能对它作出不同判断。 [1]
用 V(old) 表示旧规则接受的所有区块。新软件只要接受至少一个集合之外的区块,该变更就属于 Hard Fork。虽然经常表现为扩大有效范围,决定性因素仍是兼容性:若新区块对新节点有效、对旧节点却可能无效,旧验证节点便无法在保持原规则的同时跟随新链。 [1]
Chainwork 表示一条分支上所有区块通过挖矿证明的累计工作量,Hashrate 则是挖矿计算的速度。节点只会在符合自身规则的链中,选择累计工作量最大的分支。如果某个区块违反了规则,再多工作量也不能让它变得可接受。因此,开头例子中的帕维尔不会仅仅因为大多数矿工正在一个过大的区块后继续挖矿,就接受那个区块。Proof of Work 可以在有效分支之间决定取舍,却不能替节点运营者选择规则。 [1]
先确认网络、支持的钱包和重放保护。熟悉的币名或相似的地址并不够。不要把 Seed Phrase,也就是钱包恢复词,输入承诺领取分叉币的不明服务。如果运行自己的节点,还可以检查软件版本、连接的节点、最新接受的区块,以及分叉位置区块的指纹。这个指纹叫作哈希。应与相应网络的文档核对;网页区块浏览器不能代替自己验证规则。 [5] [6]
要获得更完整的理解,请将本词条与以下词条结合阅读: Soft Fork, 共识规则, Full Node, Reorg, 区块大小之争, UTXO. 反向关联还来自: Soft Fork, BIP (Bitcoin Improvement Proposal), Reorg, 区块大小之争.