DRep 和委员会钥匙住在派生树第几层?CIP-105 排出的三条治理路径 图 1
DRep 和委员会钥匙住在派生树第几层?CIP-105 排出的三条治理路径 · 图 1

Cardano 在 Conway 时代把治理搬上了链:社区代表(DRep)和宪法委员会成员要用链上密钥签名来表达立场,普通钱包里突然多出三类从没管过的钥匙——DRep 密钥、委员会冷密钥、委员会热密钥。CIP-105 就是给这三类钥匙排门牌号的规范,状态 Active。

三条新派生路径

CIP-105 的做法是不另起炉灶,在 CIP-1852 的既有路径上追加三个角色号:m / 1852' / 1815' / account' / 3 / address_index 派生 DRep 密钥,角色号 4 派生委员会冷密钥,角色号 5 派生委员会热密钥。三类钥匙各配各的路径,互不复用。规范还给出强烈建议:每个钱包账户最多各持有一套,实操上就是把 address_index 钉在 0。这样「同一个助记词 + 同一个账户号」在任何合规钱包里推出的治理密钥都是同一把,治理身份从此跟着助记词走,换钱包不丢人。

DRep 和委员会钥匙住在派生树第几层?CIP-105 排出的三条治理路径 图 2
DRep 和委员会钥匙住在派生树第几层?CIP-105 排出的三条治理路径 · 图 2

从公钥到凭证

钱包持有的是带链码的 BIP32-Ed25519 扩展密钥,而链上凭证不直接用公钥本体:把去掉链码的 Ed25519 公钥做 blake2b-224 摘要,得到的哈希就是 drep_credential 或 committee_cold_credential 这类凭证;因为是公钥型凭证,在 credential 数组里要标记为 0 号入口。DRep 标识符还有更细的书写规范,由 CIP-129 另行规定;本文件同时定义了 drep_vk1、cc_cold_vk1、cc_hot_vk1 等 bech32 前缀的显示形态,你在浏览器或表单里看到的 drep 开头字符串就出自这里。

一把钥匙只干一件事

为什么要给冷、热钥匙分两个角色号?规范给出的原则是「一把密钥只服务一个用途」的最佳实践。委员会热密钥日常投票、签名频繁,暴露面大;冷密钥负责授权热密钥和辞职证书这类低频高权操作,理应与热钥匙物理隔离。分路径派生让「隔离」有了可执行的定义:两把钥匙来自同一棵树的不同分支,谁也不能从一把推另一把,泄露热密钥伤不到冷密钥的权威。

这件事与普通人何干

如果你只是把投票委托给某个 DRep,你不需要派生自己的角色号 3 密钥——你核对的是对方的 DRep 标识。只有打算自己注册 DRep 或进委员会的人,才需要钱包支持这三条路径;支持与否按钱包与固件版本各有不同,注册前应先用小额测试账户验证派生结果,恢复助记词后钥匙对不上是治理参与者最输不起的事故。网页钱包桥一类的治理签名方法(如 signTx 之外的 DRep 相关调用)是另一层规范,见 网页里指挥钱包的规范层:CIP-95 给 Cardano 钱包桥补上的治理扩展;DRep 角色本身的权责边界,不投票就没人替你花钱?CIP-1694 里 DRep 的角色与边界 讲得更全。治理密钥派生的底座与 Cardano 主密钥规则同源,可读 同一句助记词恢复出不同地址?SLIP-0023 给 Cardano 主节点派立的两套规矩。

把冷热分工再拆细一层

冷、热两把钥匙的职责差在证书流里最直观:授权一把新热密钥,需要冷密钥签名出具授权证书;委员离任时由冷密钥签发辞职证书;日常投票才交给热密钥。冷密钥动用得越少,被窃的窗口越小,而角色号 4 与 5 的分轨派生让两把钥匙从种子起就分家,界面上「拿错钥匙签名」的概率随之下降。给打算登记的人补一条演练纪律:正式投入前,拿同一助记词在另一款合规钱包里重放派生,逐字比对两边的 drep_vk1 字符串——完全相同,才说明两家实现遵守的是同一份规范。

边界与风险

CIP-105 只回答「密钥从哪来、凭证怎么算」,不回答「谁有权替你投票」「委员会动作是否可信」。治理密钥的丢失或滥用会造成不可逆的治理后果(比如委员会冷密钥授权了不该授权的热密钥),参与前先读明白各证书的签名语义。对钱包开发者,这份规范还留下一句务实提醒:新增三条路径意味着扫描与恢复流程都要多走一遍角色号 3、4、5,旧版本钱包遇到登记在治理路径上的地址时,最稳妥的做法是显式提示「不支持的治理账户」,而不是静默漏显示——治理参与者的账户余额不大,但身份错位的代价不小。本文为机制说明,不构成投资建议。