多签中的derivation

admin2天前科学家320

在多重签名(Multisig)钱包中,Derivation Path(派生路径) 的作用与单签钱包类似,都是定义“如何从根密钥(Master Seed)一步步派生出具体的公钥和地址”。

但在多签架构下,派生路径有更严格的标准规范(如 BIP48/BIP87)以及独特的协调机制

1. 为什么多签需要特定的派生路径?

在单签(Single-sig)中,常用的派生路径标准有:

  • BIP44m/44'/0'/0' (Legacy 1...)

  • BIP84m/84'/0'/0' (Native SegWit bc1q...)

如果在多签钱包中继续使用 BIP84/BIP44,硬件钱包(如 Coldcard、Ledger、Trezor、OneKey 等)在签名时会产生混淆,无法自动判断这笔交易是普通的单签交易,还是包含多个参与方(Cosigners)的多签交易。

为了避免混淆,社区推出了专门用于多重签名的派生路径标准:

  • BIP48(最广泛使用的多签派生标准)

  • BIP87(针对结构化多签 Descriptor 钱包的新标准)

2. BIP48 标准派生路径解析

在比特币 Native SegWit(原生隔离见证,bc1q... 地址)多签中,标准的派生路径格式为:

m / 48' / 0' / 0' / 2

我们可以将该路径拆解为:

路径节点含义说明
mMaster Key根密钥
48'Purpose固定为 48',表示这是一个多重签名(Multisig)派生路径
0'Coin Type币种代码(0' 代表比特币主网 Bitcoin Mainnet;1' 代表测试网 Testnet)
0'Account账户索引(第 0 个账户)
2'Script Type

脚本类型


1' = P2SH-P2WSH(嵌套 SegWit,地址以 3... 开头)


2' = P2WSH(原生 SegWit,地址以 bc1q... 开头,最常用)

提示:从该路径派生出的扩展公钥,前缀通常为 Zpub(注意大写 Z,不同于单签 BIP84 的小写 zpub),用来向客户端表明这是一个 P2WSH 多签公钥。

3. 多签派生的核心运作机制:从 Master 到 Address

在典型的 2-of-3(3 个签名人,任意 2 个授权即可支出)多签钱包中,派生与地址生成的过程如下:

Plaintext
硬件/参与者 A (Seed A)  ───> 派生 m/48'/0'/0'/2' ───> 公钥 A (pubkey_A)
硬件/参与者 B (Seed B)  ───> 派生 m/48'/0'/0'/2' ───> 公钥 B (pubkey_B)  ───> 组合 & 排序 ───> 生成多签地址 (P2WSH)
硬件/参与者 C (Seed C)  ───> 派生 m/48'/0'/0'/2' ───> 公钥 C (pubkey_C)

步骤说明:

  1. 统一路径:所有参与多签的设备/私钥,必须在各自的树下使用完全相同的派生路径(如 m/48'/0'/0'/2')派生出属于各自的扩展公钥(Zpub/xpub)。

  2. 收集 Zpub/xpub:协调软件(如 Sparrow Wallet, Electrum, Caravan 等)收集这 3 个 Zpub/xpub 以及各自的 Master Fingerprint

  3. 确定索引派生地址:对于第 i 个接收地址,每个 Zpub 各自派生出第 i 个子公钥(例如 m/48'/0'/0'/2'/0/i):

    • 签名人 A 派生出:$\text{pubkey}_{A, i}$

    • 签名人 B 派生出:$\text{pubkey}_{B, i}$

    • 签名人 C 派生出:$\text{pubkey}_{C, i}$

  4. 按字典序排序(Lexicographical Order, BIP67):将这三个公钥进行严格排序(如 $A < B < C$),生成赎回脚本(Redeem Script),最后哈希得到该索引下的比特币多签地址(bc1q...)。

4. 多签 Derivation 中的“坑”与注意事项

① 必须严格备份公钥、路径与 Master Fingerprint

在单签中,只要有助记词,任何钱包按 BIP84 都能恢复资产。

但是在多签中,仅凭助记词是无法自动恢复资产的!

你必须记录下:

  1. 所有参与方的公钥(Zpub/xpub)

  2. 各自对应的 Master Fingerprint

  3. 使用的完整 Derivation Path(如 m/48'/0'/0'/2'

  4. 多签门限配置(如 2-of-3)

通常这些信息会保存在一份 Wallet BSMS / Output Descriptor 文件(或二维码)中。

② 硬件钱包对路径的严格校验

当你用硬件钱包对多签 PSBT 交易进行签名时,硬件钱包会检查 PSBT 中的 [Master Fingerprint / Derivation Path] 标注。如果硬件钱包发现 PSBT 请求的派生路径与设备内设定的多签路径不一致(例如软件请求了 m/84'/0'/0' 而非 m/48'/0'/0'/2'),出于安全考虑,硬件钱包会拒绝签名或弹窗报警。

③ 导出多签公钥时的路径选择

在软件钱包(Sparrow)创建多签导出配置时,需要注意为每个硬件设备选择正确的导出口(通常选择 BIP48 / P2WSH 模式),以保证生成的扩展公钥带正确的派生信息。