144 / 736PATH

Derivation Path

密钥派生路径

一份备份可以生成钱包中的许多账户和地址。Derivation Path 指定在这套结构中走到哪里,帮助恢复软件找回原来使用的密钥。

Derivation Path 是钱包从起始密钥派生某个具体密钥时遵循的准确步骤。可以把它想成电脑里的文件夹路径:磁盘正确,但打开的文件夹不对,也找不到目标。不过,钱包的密钥是通过数学计算得到的,并不是从已有文件中查出来的。相同的起始数据和路径会得到相同结果。另一条路径可能通往同一钱包的另一个部分。它不是付款地址、密码,也不能替代备份。

安娜正在恢复钱包,软件却要求填写一条她以前从没留意过的路径。钱包是接收和发送比特币的应用程序或设备。m/0/7 看似复杂,按顺序读就容易了:m 是主私有节点,从它派生子节点 0,再从这个子节点派生 7。这里的节点是密钥树中的位置,不是比特币网络上的电脑。数字是索引,也就是顺序位置,不是金额或交易编号。BIP 32 标准使用扩展密钥,除了密钥本身还带有 chain code,即派生后代所需的额外数据。所以,只有路径文字、没有起始密钥,并不能给付款签名。 [1] [10]

来看 m/84'/0'/0'/0/7。m 后第一段表示原生 SegWit 的 BIP 84 约定,这是一种构建地址和花费资金的方法。之后依次是 Bitcoin mainnet,也就是真正流通比特币的主网,账户 0、外部收款分支 0,以及索引 7。这是第八个地址位置,因为从零开始计数。账户把资金分组,分支说明地址的用途。在 BIP 44 的结构中,分支 1 用于自己的找零,即付款后仍属于发送者的金额。前三步带单引号,属于 hardened 派生;后两步是普通派生。这个标记究竟改变了什么? [2] [5]

私钥是钱包用来生成数字签名、授权花费资金的秘密数值。Hardened 指一种需要父级私钥的派生方式。普通步骤可以用 xpub,也就是扩展公钥,派生公开子密钥。配合相应的脚本类型,就能构建地址,但不能签署付款。仅凭 xpub 无法跨过 hardened 步骤。按 BIP 380,0' 与 0h 含义相同,都不是普通的 0。给技术读者补充:BIP 32 把 32 位索引分为普通的 0 到 2^31−1,以及 hardened 的 2^31 到 2^32−1;标记把零映射到索引 2^31。抄写时漏掉它,改变的是计算,不只是外观。 [1] [7] [10]

BIP 43 把第一层 hardened 称为 purpose,表示结构的用途。约定好的值帮助钱包理解一条分支通常怎么使用。作为对照,44' 表示传统 P2PKH,用公钥哈希保护付款;49' 表示 P2SH-P2WPKH,即为了兼容性把 SegWit 放进旧式封装;84' 表示原生 P2WPKH;86' 表示 single-key P2TR,一种使用单个内部密钥的 Taproot 构造。这些都是设置资金花费条件的不同方式。一个数字不会自动把路径变成相应脚本,也不会通过网络共识强制实现它。软件仍须真正构建正确的输出。并不是所有钱包都采用这些约定。 [3] [2] [4] [5] [6]

安娜也可能只导入一个账户的 xpub 来查看收款,而不是连接整个钱包。如果它来自 m/84'/0'/0',它已经处于账户层。要到达前面的例子,只需剩余的相对后缀 /0/7。再次拼接完整的根路径,会从错误的位置开始另一轮派生;其中的 hardened 步骤本来就无法用 xpub 完成。导出的扩展密钥包含树中的深度以及父级 fingerprint,也就是简短的识别指纹,但不包含之前所有步骤的完整记录。因此,缺失的原始路径并不总能直接从 xpub 中读出来。 [1] [7]

Descriptor 描述密钥和花费条件,让软件构建要跟踪的输出。BIP 380 允许在密钥前的方括号中写入其来源 fingerprint 和路径,这些步骤已经完成。密钥后面的后缀则指定接下来要进行的派生;星号 * 可以表示一系列后代。Fingerprint 只有四字节,可能碰撞:不同密钥可能具有相同的短指纹。它既不是身份证明,也不能替代密钥。Bitcoin Core 29.0 通过节点的编程接口 RPC 提供 deriveaddresses。它由 descriptor 和指定的范围计算地址;单纯计算地址并不查询余额,也不发送资金。 [7] [1] [9]

没有起始数据,路径本身无法生成你的密钥。分享 xpub 则不同:接收者可以派生可访问分支的公钥,并配合正确的脚本类型跟踪其地址。这不赋予花钱的权限,却可能损害隐私。BIP 32 还指出一个不易察觉的风险:如果掌握父级 xpub,同时获得一把泄露的、可通过普通步骤到达的后代私钥,就可能推算出父级扩展私钥。Hardened 边界阻断的是这条回到父级的特定路线,并不会让已经泄露的密钥失效,也不能挽救由该密钥控制的资金。 [1]

回到恢复过程。Seed Phrase 是备份助记词。按 BIP 39,助记词和可选的 passphrase 一起生成 seed,也就是生成密钥的起始秘密数据。Passphrase 是额外的秘密文本,不是应用程序的普通密码。换了 seed,同一路径会得到不同密钥。网络、账户、分支和脚本类型也必须吻合。软件还须搜索足够的地址和历史:Gap Limit 会在连续一段未使用地址后停止查找。因此,余额为零本身不能证明密钥丢失。安娜可以用已知收款地址和旧付款核对结果。软件接受路径,只说明它能处理这条路径,不代表已经找回整个原钱包。 [8] [2] [7]

要获得更完整的理解,请将本词条与以下词条结合阅读: HD Wallet, Extended Public Key (xpub), Gap Limit, Output Descriptor, BIP 39, Seed Phrase. 反向关联还来自: HD Wallet, Watch-only Wallet, Change Address, Extended Public Key (xpub).

DOC · 001BIP 32 — Hierarchical Deterministic Wallets规范 DOC · 002BIP 44 — Multi-Account Hierarchy规范 DOC · 003BIP 43 — Purpose Field规范 DOC · 004BIP 49 — P2WPKH nested in P2SH规范 DOC · 005BIP 84 — Native P2WPKH derivation规范 DOC · 006BIP 86 — Single Key P2TR Outputs规范 DOC · 007BIP 380 — Output Script Descriptors规范 DOC · 008BIP 39 — From mnemonic to seed规范 DOC · 009Bitcoin Core 29.0 — deriveaddresses RPC文档 DOC · 010Bitcoin Developer Guide — Wallets文档
修订日期: 来源优先 · 非投资建议