三个合伙人怎么共用一条派生路径:BIP-45 给多签钱包排的门牌号 图 1
三个合伙人怎么共用一条派生路径:BIP-45 给多签钱包排的门牌号 · 图 1

单人钱包的派生路径各管各的密钥,多方共用的钱包却要回答另一组问题:三合伙人一起开一个 2/3 收款地址,生成下一个收款地址时,需要三个人同时在场吗?每个人要交出多少密钥信息?BIP-45(状态 Complete,规范文本完整但未获广泛部署)给比特币经典的 P2SH 多签钱包定了一套标准路径,让地址生成这件事完全不需要协作。它建立在分层派生与用途前缀约定之上,路径读法可先读 ‘BIP-44 派生路径怎么读:为什么同一句助记词,导入后地址却不一样’,本文只讲多签场景独有的四个新问题。

路径四层各管什么

BIP-45 的路径形状是:主密钥、45 硬化、合作者序号、内外分支、地址序号。第一层固定填 45 且必须硬化,声明”这棵子树按本协议使用”;第二层是合作者序号,非硬化——每个合伙人占据一个序号;第三层 0 对外收款、1 找零;第四层顺序递增的地址编号。注意它和单人钱包的层级语义完全不同:这里的”账户层”被换成了”人头层”,一条路径同时定位”谁”与”第几个地址”。

座次怎么定:公钥字典序

合伙人序号不是商量出来的,是排出来的:把所有人的用途公钥(45 硬化层的扩展公钥)做字典序排序,谁排第几,谁就用几号分支。排序规则与多签脚本里公钥排序的动机同源,‘同一组公钥为什么会开出不同的多签地址:BIP67 的排序约定’ 讲过把公钥按字典序排列才造地址的约定。这样定的好处是”座次”可以从公开材料复算:只要人手一份排序后的公钥清单,任何一方单机算出的序号都一致,不会出现两户各自记账时把同一个地址算成不同人的分支。

交换什么密钥:只给硬化层,不给主密钥

协议明确:主密钥的扩展公钥不共享,共享的只是 45 硬化层派出的扩展公钥。这意味着任何一方拿到全体合伙人的这一层公钥后,能推导出所有人的收款地址(这是独立生成地址的前提),但推不出别人在兄弟用途下的密钥,更推不出别人的私钥。多签的信任切分在这里看得很清楚:协作需要的是”够用的公开材料”,不是更大的权限。开多签前核对各方的这份公钥清单本身也有标准格式,见 ‘多签开通前的那场点名:BIP-129 BSMS 怎么核对签名人名单’。

独立生成地址的完整流程

任一合伙人生成第 n 个收款地址时:用自己的私钥走各自分支签名前的部分不算,只算公钥——对每个合伙人的用途公钥各自派生”序号 i、内外分支、索引 n”的公钥,把三把公钥按字典序拼进多签脚本,再套一层脚本哈希得到 P2SH 地址。全程零通信、零签名。签名收款时才需要协作,那一步的链上流程是另一件事,见 ‘多签钱包是怎么完成一笔转账的?从发起、凑签名到执行’。协议同时要求:从外部恢复种子时,程序要遍历搜索各序号分支里用过的索引,否则地址序列会缺口。

哪些场景实际还会遇到它

BIP-45 对应的是原生链上的 P2SH 传统多签,与今天主流的以太坊 Safe 类账户抽象多签不是一回事,两者混谈是常见错误——Safe 的地址由合约部署决定,不走这条派生路径;智能合约多签的阈值管理见 ‘多签钱包换持有人:加人、减人、换人前先把阈值算清楚’。实际仍会用到的场景:老牌硬件多签方案的初始化核对、跨厂商钱包互操作测试、以及审计老金库时倒推地址序列。选 2/3 还是 3/5 这类阈值问题与路径结构正交,另见 ‘比特币多签钱包怎么选?2-of-3 与 3-of-5 的差别’。

边界与风险提示

第一,这套路径的”座次即序号”意味着合伙人换人后新组合要重新排座次,旧地址序列属于旧结构,迁移时必须保留旧路径档案,否则历史地址无法复算。第二,任何声称按 BIP-45 生成的地址,都应在多台独立设备上交叉复算一次再投入使用——协议解决的是”大家算得一样”,验证的是”你真的算得对”。第三,多签不改变私钥保管的基本面:任何一方弄丢自己分支的种子,都会让整个钱包的恢复复杂度上一个台阶,各户各自的备份纪律参照 ‘助记词12个词和24个词有区别吗?词数背后的安全边界’。