Cardano 的硬分叉是怎么工作的
我研究 Cardano 时最不解的一个问题: 升级一次为什么那么久。答案很简单: 因为 Cardano 的升级不是"团队拍板", 而是全网投票投出来的。2026 年刚完成的 van Rossem 硬分叉(协议版本 11)就是活例子。这篇把它的投票机制拆开讲: 三方各自怎么投、各管什么, 以及一次硬分叉到底是怎么跑完全程的。
三个机构, 各守一道关
Cardano 的链上治理(CIP-1694 落地, 也叫 Voltaire)有三方角色, 互相制衡:
flowchart TB
A[硬分叉治理动作] --> B[宪法委员会 CC<br/>每个成员一票<br/>判断是否违宪]
A --> C[DRep 代表<br/>一 Lovelace 一票<br/>替持币者投票]
A --> D[SPO 质押池<br/>一 Lovelace 一票<br/>网络实际运营者]
B --> E[硬分叉: 三关全过]
C --> E
D --> E
E --> F[epoch 边界自动生效]宪法委员会(CC): 管"违不违宪"
宪法委员会握着第一道关, 它只回答一个问题: 这个提案违不违反 Cardano 宪法。技术方案好不好看、性价比高不高, 都不在它的职责里——它守的是底线, 判断这个改动会不会让链"出事"或越过基本规则。每个成员一票, 不按质押加权, 达到委员会设定的门槛才算通过。这道权力本身也被关在笼子里: 成员可以被"不信任动议"换掉, 委员会要是越权乱来, 持币者可以投票解散它。
DRep 代表: 替不投票的人投票
大多数持币者没空研究每个提案, 于是把投票权委托给一个 DRep, 让自己信任的人替自己做功课。投票权重是一 Lovelace 一票——一个 DRep 手里的票, 就是所有委托给它的质押之和, 质押越多话语权越大。有个细节值得记下来: 已注册的质押要是没参与投票, 默认按"反对"计; 未注册的按"弃权"计。另外还有两个预设选项, “弃权”(Abstain)和"不信任"(No Confidence), 后者等于对治理机构本身投出不信任票。
SPO 质押池: 网络的运营者
真正在跑节点、出块的是 SPO, 他们对网络的运行状况最懂, 所以在安全相关改动上有额外的话语权。投票规则同样按质押占比算。硬分叉这类动作有个特殊之处: SPO 的票按全体质押池的质押占比来计——它衡量的其实是"全网络有没有准备好", 跟某个利益集团点没点头无关。
一次硬分叉要过几道门
Cardano 的治理动作有 7 类, 从轻到重。硬分叉是最重的一类, 也最特殊: 普通改动通常两方批准就行, 但硬分叉要求 CC、DRep、SPO 三方全部批准。
门槛本身并非拍脑袋定的——它们是协议参数, 由社区投票设定。举个例子: 周报里那个"改网络参数"的动作, 要求 67% 活跃 DRep 质押 + 51% 活跃 SPO 质押; 硬分叉的门槛只会更高、更严。
整个流程是这样:
flowchart TB
A[提案: 硬分叉治理动作<br/>新版本软件已开发并测试] --> B[节点运营者先升级节点]
B --> C[SPO 投'是' = 既授权又宣告就绪]
C --> D[DRep 与 CC 分别投票]
D --> E[三方都达门槛 → 批准]
E --> F[epoch 边界自动切换协议版本]
F --> G[全网按新规则出块]把图上的顺序用文字走一遍: 新版本软件开发并测试完, 提案先上链; 节点运营者升级节点在先, 因为 SPO 投"是"既是授权, 也是在宣告"我的节点已经就绪"; 随后 DRep 与 CC 分别投票, 三方都过门槛, 提案批准; 到了 epoch 边界, 协议版本自动切换, 全网按新规则出块。
通过了之后, 是"自动"发生的
这是最容易被忽略的一点: 投票通过后, 硬分叉是自动执行的。
所有治理动作都在 epoch 边界检查一次是否达标, 达标就"生效", 不需要任何人再手动操作; 生效那一刻, 全链的协议版本号自动切换, 节点按新规则出块。为什么能做到"自动"? 因为协议版本号本身就是链上状态, 由共识层读取。这跟"团队发公告说上线了"是两码事——能不能升级, 不看有没有人宣布, 只看链上账本认不认。
链上到底是怎么"切换"的
具体到实现层面, 这个"自动切换"是怎么落地的?
Cardano 的每个大时代(era)都是一套独立的账本实现, 由共识层的 hard fork combinator(硬分叉组合器)拼起来。当链上协议版本号推进时, 共识层在 epoch 边界从旧时代的实现切到新时代的实现——出块规则换了, 但历史区块不变, 链始终是连续的一条。
软分叉允许新旧规则并行兼容; “硬"分叉是全网在同一个时间点, 一起切到新规则。名字就是这么来的, 也是为什么"事先升级软件"是硬性前提——节点没升级, 就跟不上新规则, 直接掉链。
为什么这么大的改动不出事
一次硬分叉要动整个网络的规则, 凭什么能不出事? 把 van Rossem 的时间线摊开, 我看到的是一层又一层的演练。
Cardano 有 Preview 和 Preprod 两个测试网, 分工明确: Preview 用来快速试错, Preprod 用来正式彩排, 这也是官方给开发者的用法。Preview 通常比主网提前至少 4 周跑新版本, 相当于给全网留出一段"先在沙盘上把错犯完"的缓冲。
每个硬分叉都有对应的"硬分叉就绪"节点版本。开发团队先发布候选节点, 在 Preview、Preprod 依次跑通, 再上主网。van Rossem 的实际节奏是: 5 月 8 日 Preview 切到协议版本 11, 6 月 10 日 Preprod 生效, 6 月 16 日主网提交动作, 7 月完成——一步都没跳。
第三层保险最有意思: 前面说过, SPO 的票按全体质押池的质押占比算。节点没升级的质押池, 根本投不出"是”——票数不够, 分叉就推不动。所以"全网络准备好"从来都非一句口号, 是质押投票量出来的数字。
三层下来, 主网硬分叉基本就是一次"已经演练过很多遍的例行公事"。
升级方案: 一条发布列车
最后看看它的升级节奏, 像不像一条发布列车(release train): 每个大时代拆成多次硬分叉, 一次只上有限几个功能, 把巨型改动拆成小步。刚完成的 van Rossem(协议版本 11)是一个 intra-era(时代内)硬分叉——不动时代本身, 只铺路; 真正的大时代 Dijkstra 分三个阶段上线: Nested Transactions(嵌套交易)、Linear Leios、Peras。每个阶段都有明确的节点版本、测试网验证、治理投票, 官方口径是第一、二阶段在 2026 年底前上主网。
把一个大升级切成小步、每步都过全套流程, 这就是 Cardano 把"大改动"变成"小步慢跑"的方式——改动再大, 单次上线的增量都是可控的。
为什么这么设计: 万无一失的三重保险
把"慢"拆开看, 每一道慢都是保险。第一重是防劫持: 三方制衡加门槛, 少数人改不了协议——想劫持一次硬分叉, 得同时拿下质押话语权和宪法委员会。第二重是给全网时间: 硬分叉要求"事先升级软件", 节点运营者先升级, SPO 投"是"既是在授权, 也是在宣告"我准备好了", 没有大量节点就绪, 票数就凑不齐。第三重是可追溯: 所有动作和投票都在链上, 事后能复盘是谁推动了什么。
van Rossem 这次就是活样本: 6 月 16 日提交硬分叉动作, 7 月完成; 连"这个硬分叉叫什么名字"都是投票投出来的——命名 Info 动作拿到 83.62% DRep 支持、4.44 亿 ADA。连名字都要过投票, 可见这套流程的认真程度。
长期意义
一台能自己决定自己怎么升级的链, 才是真正长期稳的链。投票门槛和流程的存在, 是把"任意时刻被少数人改掉规则"这条风险路径从根上封死。它慢, 但它慢得有底气——每次升级都是全网共同点头的结果, 而非某个团队的一纸公告。