硬分叉与软分叉:区块链如何更改其规则

·阅读 4 分钟·作者:SSP Editorial Team
SSP Academy 封面:硬分叉与软分叉

硬分叉与软分叉:区块链如何更改其规则

区块链的规则并非一成不变。Bitcoin 增加了新的地址类型,Ethereum 从挖矿转向了质押,较小的链也会定期升级。但这里没有可供更新的中心服务器。每个节点都运行着自己的一份规则副本,而更改规则意味着要让成千上万的独立运营者达成一致。

实现这一点的两种方式分别称为软分叉和硬分叉。二者的区别决定了旧软件能否继续运行——有时还决定了一种币是否会变成两种。

规则、节点与共识

每个全节点都会依据自身规则检查每一个区块。违反规则的区块会被拒绝,无论它是谁挖出来的。正是这一点让区块链难以作弊——也正是这一点让修改它变得十分微妙。如果一部分节点运行新规则、另一部分运行旧规则,它们就可能在哪些区块有效的问题上产生分歧。

软分叉:规则更严格,旧节点仍可跟随

软分叉让规则变得更加严格。按新规则有效的区块在旧规则下依然有效,因此未升级的节点会继续跟随这条链;它们只是自己不执行新的限制。

Bitcoin 的重大升级都是软分叉。2017 年的 SegWit 改变了签名的存储方式,2021 年的 Taproot 则加入了 Schnorr 签名以及一种承诺脚本的新方式。旧节点即使不理解这些新交易,也会将其视为有效——这正是 Taproot 能够在不分裂网络的情况下上线的原因。

软分叉通常被认为更安全,因为对不升级的人来说什么都不会坏掉。代价是新功能必须设计得能够容纳在旧规则之内,这可能使其更加复杂。

硬分叉:新规则,旧节点被甩在后面

硬分叉会放宽或更改规则,因此按新规则有效的区块在旧规则下可能无效。未升级的节点会拒绝新区块,并停止跟随这条链。

当几乎所有人都升级时,硬分叉不过是一次协调一致的升级。许多链会按计划进行硬分叉:Ethereum 的重大升级、Zcash 的网络升级以及 Kaspa 的协议升级,都是整个生态系统一起完成的计划内硬分叉。

当一个有分量的群体拒绝升级时,结果就是链分裂:两条链在分叉点之前共享同一段历史,此后各自分道扬镳。

当分叉创造出新币

分裂催生了一些广为人知的币:

  • Ethereum 与 Ethereum Classic 于 2016 年分裂,起因是围绕是否撤销 DAO 黑客事件影响的分歧。
  • Bitcoin 与 Bitcoin Cash 于 2017 年因如何扩容而分裂——是采用更大的区块,还是采用 SegWit 等其他方案。Bitcoin Cash 作为独立的链延续至今。

分裂之后,任何在分叉时持有币的人都会在两条链上持有这些币,并由同一套密钥控制。这听起来像是白送的钱,有时也确实如此,但其中存在风险:重放攻击——除非两条链加入保护机制,否则一条链上的交易可以在另一条链上被重新广播;还有要求你提供私钥的诈骗「领取」工具。此外,分叉继承的不只是余额——同一个漏洞在两边可能产生不同的结果。

分叉对你意味着什么

  • 大多数分叉不需要你做任何事。 你的币仍在原处,你的密钥依旧控制着它们。
  • 钱包有时需要更新。 改变交易或签名格式的硬分叉,可能导致旧版钱包软件构建出被网络拒绝的交易。在已公布的升级前后,请保持钱包为最新版本。
  • 交易所可能在分叉前后暂停充值和提现。 这是正常的谨慎做法。
  • 切勿在任何「分叉领取」网站上输入你的助记词。 如果你想获得新链上的币,请先把主要资金转移到全新的密钥,然后再使用信誉良好的钱包软件访问旧密钥。
  • 在有争议的分裂之后要保持耐心。 等到重放保护和交易所支持情况都明确之后再行动。

分叉与 SSP

SSP 支持升级方式截然不同的各类链——Bitcoin 的软分叉、Zcash 等链上按计划进行的硬分叉,以及 EVM 链的定期升级。当某次升级改变了交易的构建或签名方式时,SSP Wallet 和 SSP Key 都会随之更新。

Zcash 就是一个很好的例子。每次 Zcash 网络升级都会改变一个所有交易签名都要承诺的值,因此按旧规则构建的钱包会生成被网络拒绝的签名。由于 SSP 需要两个签名,SSP Wallet 和 SSP Key 都必须针对新规则进行更新——在两者都更新之前,网络不会接受交易。

实际要点:保持两个应用都为最新版本,尤其是在已公布的网络升级前后。

坦诚的总结

软分叉收紧规则,让旧节点仍能跟随;硬分叉更改规则,因此所有人都必须升级。大多数硬分叉都是按计划进行、平稳无事的升级。只有少数会演变为链分裂,让一种币变成两种。

对持有者而言,分叉很少需要采取行动——保持钱包更新,警惕任何要求你提供助记词来「领取」分叉币的东西,并在有争议的分裂期间等尘埃落定后再转移资金。

分享本文

相关文章