
先看一个区块会被谁接受
区块链软硬分叉的关键问题是:同一份区块交给升级节点和未升级节点,双方会不会给出不同的有效性结论?这里的升级,是改变了适用的共识验证规则;换个界面颜色、调整日志格式,并不当然属于这种变化。
Bitcoin开发文档把两种不一致分开:一种是新节点接受而旧节点拒绝;另一种是旧节点接受而新节点拒绝。先明确接受与拒绝的方向,再讨论网络如何采用变化,比只背“软兼容、硬不兼容”更容易理解。
软分叉收紧的是有效范围
可以用一个纯示意的检查清单来理解软分叉:旧清单允许甲、乙两类记录,新清单只允许甲。甲仍能通过旧检查,但乙已经不能通过新检查。示意中的甲乙不是某条链的真实交易类型,只用来说明限制变严格时的兼容方向。
以太坊术语表也把软分叉说明为向后兼容,并限定升级节点接受的区块仍须满足新规则。因此,向后兼容不等于旧节点已经具备新增规则的检查能力,更不等于所有由旧软件产生的区块都能继续通过。是否维持共同链,还与实际采用和区块生产情况有关。

硬分叉变化可能越出旧规则
如果新规则允许一种旧规则明确拒绝的数据,那么使用该变化的区块就可能被升级节点接受,却被旧节点判无效。以太坊Hard fork条目将未升级节点无法验证新规则区块列为典型情况,并提醒它与软件仓库的fork不是同一概念。
这并不意味着每次硬分叉升级都必然留下两个持续发展的网络。Bitcoin文档特别区分规则变更的分叉潜力与实际发生的链分歧。大家协调采用新规则,和一部分参与者坚持维护旧规则,后续局面可能不同;不能仅凭升级名称宣布已经形成新资产。
临时出现两个链头也要单独判断
在工作量证明网络里,两个有效区块可能在接近的时间产生,形成暂时的竞争链头。Bitcoin文档讨论了这种情况。它可以发生在规则没有变化的时候,因此看到同一高度有不同区块,不足以判定一次软分叉或硬分叉升级已经发生。
阅读一则分叉公告时,可以分别核对改变了什么验证条件、哪些实现支持、何时适用,以及是否观察到实际长期分歧。代码被复制到另一仓库,只能先说明软件开发关系;代币名称与交易价格也不能替代规则证据。本文讨论兼容性,不判断任何分叉资产的价值,也不提供资产领取操作。