密钥派生工具教程:BIP-44 路径探索器
分层确定性(HD)钱包是现代加密货币密钥管理的核心。从一个种子出发,HD Wallet 可以派生出完整的密钥树,在多条区块链上生成数十亿个唯一地址,并且都能通过原始助记词恢复。SafeSeed 的密钥派生工具让你可视化并探索这棵树,理解派生路径如何工作,并在钱包行为异常时进行诊断。
在 safeseed.app/tools/key-derivation/ 探索 BIP-44 派生路径,完全客户端运行,支持离线使用。
什么是密钥派生?
密钥派生是从现有密钥生成新密码学密钥的过程。在加密货币中,这一过程从你的助记词开始,并遵循 BIP-32(分层确定性钱包)定义的确定性算法,再由 BIP-44(多账户层级)进行组织。
最关键的性质是确定性:同一个种子总是产生同一棵密钥树。这意味着:
- 你只需助记词就能恢复整个钱包
- 使用同一种子的多个设备会显示相同地址
- 在初始种子生成之后不再涉及随机元素
密钥树
把密钥派生想象成一棵树:
Master Key (root)
├── Purpose 44' (Legacy)
│ ├── Bitcoin (0')
│ │ ├── Account 0'
│ │ │ ├── External (0)
│ │ │ │ ├── Address 0
│ │ │ │ ├── Address 1
│ │ │ │ └── Address 2 ...
│ │ │ └── Internal/Change (1)
│ │ │ ├── Address 0
│ │ │ └── Address 1 ...
│ │ └── Account 1'
│ │ └── ...
│ ├── Ethereum (60')
│ │ └── Account 0'
│ │ └── ...
│ └── Litecoin (2')
│ └── ...
├── Purpose 49' (SegWit)
│ └── ...
├── Purpose 84' (Native SegWit)
│ └── ...
└── Purpose 86' (Taproot)
└── ...
这棵树中的每个节点都包含私钥和公钥。地址生成器派生的是叶子节点(单个地址),而密钥派生工具允许你检查整棵树中的任意节点。
理解派生路径
派生路径是一串索引,用于描述如何从主密钥导航到特定子密钥。标准写法如下:
m / 84' / 0' / 0' / 0 / 0
下面我们完整拆解它。
路径组成
| 组件 | 含义 | 示例值 |
|---|---|---|
m | 主(根)密钥 | 始终是 m |
purpose' | 使用哪种 BIP 标准 | 44', 49', 84', 86' |
coin_type' | 使用哪种加密货币 | 0'(BTC), 60'(ETH), 2'(LTC) |
account' | 账户隔离 | 0', 1', 2' |
change | 外部/内部 | 0(收款), 1(找零) |
address_index | 地址编号 | 0, 1, 2, ... |
硬化派生与普通派生
撇号(')表示硬化派生。这是 HD Wallet 中的基础安全概念。
普通(非硬化)派生(m/0/1/2):
- 父公钥可以派生所有子公钥
- 如果子私钥和父公钥同时泄露,可以计算出父私钥
- 用于
change和address_index层级
硬化派生(m/0'/1'/2'):
- 只有父私钥可以派生子密钥
- 子密钥泄露不会暴露父密钥
- 用于
purpose、coin_type和account层级
安全逻辑是:前三层(purpose'、coin_type'、account')采用硬化派生,形成防火墙。即使攻击者拿到地址层级的某个子私钥,也无法逆推穿过硬化边界去获取你的主密钥,或其他账户/币种的密钥。
各钱包常见标准路径
不同钱包软件可能使用不同派生路径。以下是常见钱包参考:
| Wallet | Bitcoin Path | Ethereum Path | 说明 |
|---|---|---|---|
| Ledger Live | m/84'/0'/0'/0/x | m/44'/60'/0'/0/x | 默认 Native SegWit |
| Trezor Suite | m/84'/0'/0'/0/x | m/44'/60'/0'/0/x | 默认 Native SegWit |
| Electrum | m/84'/0'/0'/0/x | N/A | 默认 Native SegWit |
| MetaMask | N/A | m/44'/60'/0'/0/x | 仅 Ethereum |
| BlueWallet | m/84'/0'/0'/0/x | N/A | 默认 Native SegWit |
| Exodus | m/84'/0'/0'/0/x | m/44'/60'/0'/0/x | 多链 |
| Trust Wallet | m/84'/0'/0'/0/x | m/44'/60'/0'/0/x | 多链 |
| Coinbase Wallet | m/44'/0'/0'/0/x | m/44'/60'/0'/0/x | BTC 使用 Legacy |
| Mycelium | m/84'/0'/0'/0/x | N/A | 仅 Bitcoin |
| Wasabi | m/84'/0'/0'/0/x | N/A | 偏重隐私 |
恢复资金时,知道原钱包使用了哪条路径至关重要。密钥派生工具可以帮助你系统化地探索路径,找出密钥所在位置。
分步操作:使用密钥派生工具
第 1 步:打开工具
访问 safeseed.app/tools/key-derivation/。与所有 SafeSeed 工具一样,所有操作都在浏览器中完成。
安全提醒:如果输入的是有真实资金的助记词,请使用隔离网络(air-gapped)设备。参见 Offline Usage Guide。
第 2 步:输入助记词
输入你的 12 词或 24 词 BIP-39 助记词。可选输入 passphrase。工具会校验短语,并显示通过 PBKDF2 派生得到的主种子(512-bit hex)。
第 3 步:查看主密钥
输入有效助记词后,工具会显示主密钥信息:
- 主私钥(xprv):所有其他密钥都由它派生,是整个密钥层级中最敏感的数据。
- 主公钥(xpub):对应公钥。通过它可以派生所有子公钥(非硬化路径)。
- 主链码(Master Chain Code):派生函数中与密钥一起使用的 256-bit 值。链码为子密钥派生增加了额外不可预测性。
第 4 步:浏览派生树
密钥派生工具以交互树形式展示密钥层级。你可以:
- 点击树节点展开并查看子密钥
- 在路径输入框中输入自定义路径(例如
m/84'/0'/0'/0/0) - 切换私钥/公钥显示
- 复制任意密钥或路径用于其他工具或钱包
第 5 步:检查特定密钥
当你在树中选择一个节点时,工具会显示该密钥的完整信息:
- 派生路径:从主密钥到当前密钥的完整路径
- 私钥:该层级的密钥(扩展格式,以及适用时的 WIF)
- 公钥:对应公钥(压缩格式)
- 链码:该层级链码
- 指纹:该密钥的 4-byte 标识(用于扩展密钥序列化)
- 派生地址:加密货币地址(叶子层级密钥)
第 6 步:探索不同 purpose
在不同 BIP 标准间切换,理解同一种子如何生成不同地址类型:
BIP-44(Legacy):m/44'/0'/0'/0/0
- 生成以
1开头的 Legacy 地址 - 交易手续费最高
- 与旧系统兼容性最好
BIP-49(SegWit):m/49'/0'/0'/0/0
- 生成以
3开头的 SegWit 地址 - 交易手续费中等
- 兼容性较好
BIP-84(Native SegWit):m/84'/0'/0'/0/0
- 生成以
bc1q开头的 Native SegWit 地址 - 交易手续费较低
- 现代钱包标准
BIP-86(Taproot):m/86'/0'/0'/0/0
- 生成以
bc1p开头的 Taproot 地址 - 交易手续费最低
- 最新标准,支持高级脚本能力
深入解析:BIP-32 派生如何工作
使用工具并不需要理解密钥派生背后的数学原理,但如果你希望真正理解钱包安全机制,这些内容非常有价值。
HMAC-SHA512 子密钥派生
BIP-32 使用 HMAC-SHA512 派生子密钥。硬化与普通派生的流程不同:
普通子密钥派生:
HMAC-SHA512(
key = parent_chain_code,
data = parent_public_key || child_index
) → (child_key_data, child_chain_code)
child_private_key = parent_private_key + child_key_data (mod n)
硬化子密钥派生:
HMAC-SHA512(
key = parent_chain_code,
data = 0x00 || parent_private_key || child_index
) → (child_key_data, child_chain_code)
child_private_key = parent_private_key + child_key_data (mod n)
关键差异:硬化派生输入的是私钥,普通派生输入的是公钥。这意味着仅凭父公钥无法派生硬化子密钥。
扩展密钥序列化
扩展密钥(xprv/xpub)编码了多项信息:
| 字段 | 大小 | 描述 |
|---|---|---|
| Version | 4 bytes | 网络与密钥类型(xprv 为 0488ADE4,xpub 为 0488B21E) |
| Depth | 1 byte | 距离主密钥的层级深度 |
| Parent fingerprint | 4 bytes | 父密钥哈希的前 4 bytes |
| Child index | 4 bytes | 当前是第几个子项(含 hardened bit) |
| Chain code | 32 bytes | 链码 |
| Key data | 33 bytes | 私钥或公钥数据 |
整个结构经 Base58Check 编码后得到熟悉的 xprv... 或 xpub... 字符串。不同 version bytes 会分别生成 ypub/zpub(对应 SegWit 与 Native SegWit)。
实际应用
应用 1:排查钱包恢复问题
场景:你在新钱包中恢复了助记词,但 Bitcoin 余额显示为零。
使用密钥派生工具诊断:
- 在密钥派生工具中输入助记词
- 导航到
m/84'/0'/0'/0/0(Native SegWit,最常见现代路径) - 记录地址并在 mempool.space 查询
- 若无余额,尝试
m/44'/0'/0'/0/0(Legacy) - 尝试
m/49'/0'/0'/0/0(SegWit) - 尝试
m/86'/0'/0'/0/0(Taproot) - 仍无余额则尝试账户
1':m/84'/0'/1'/0/0 - 同时检查外部链(change=
0)和内部链(change=1)
这种系统化探索可以精确找出资金位于派生树的哪个位置。
应用 2:理解观察钱包(Watch-Only)
场景:你想搭建观察钱包,在不暴露私钥的情况下监控 Bitcoin 余额。
使用密钥派生工具:
- 在隔离网络设备上输入助记词
- 导航到账户层级:
m/84'/0'/0' - 复制该层级的扩展公钥(zpub)
- 将 zpub 导入观察钱包软件(如 Electrum、BlueWallet)
- 观察钱包可以派生该层级下所有收款与找零地址
- 它无法派生私钥或签名交易
密钥派生工具会明确展示应导出哪一层,以及扩展公钥包含的信息。
应用 3:多账户组织
场景:你想在同一助记词下把 Bitcoin 资产分到不同账户(如储蓄、交易、业务)。
使用密钥派生工具:
- 账户 0:
m/84'/0'/0'— 个人储蓄 - 账户 1:
m/84'/0'/1'— 交易 - 账户 2:
m/84'/0'/2'— 业务
每个账户都有独立地址集和扩展密钥。账户层级的硬化派生可确保某个账户密钥泄露时不影响其他账户。
应用 4:跨链密钥探索
场景:你想理解一个助记词如何同时生成 Bitcoin 和 Ethereum 地址。
使用密钥派生工具:
- 输入助记词
- 导航到
m/44'/0'/0'/0/0— 这是 Bitcoin 密钥 - 导航到
m/44'/60'/0'/0/0— 这是 Ethereum 密钥 - 观察:尽管来自同一种子,两个密钥完全不同
- 树在
coin_type层(0'vs60')发生分叉
这说明 BIP-44 层级结构在保持单种子可恢复性的同时,避免了链间密钥重叠。
应用 5:验证硬件钱包行为
场景:你想确认硬件钱包没有错误声明其控制的地址。
使用密钥派生工具:
- 在隔离网络设备上输入你初始化硬件钱包使用的助记词
- 按硬件钱包相同路径派生前 10 个地址
- 将每个地址与硬件钱包显示结果比对
- 若全部一致,说明硬件钱包正确实现了 BIP-32/44 派生
- 若不一致,可能是固件问题、passphrase 不同或派生路径不匹配
理解找零地址
对新用户而言,HD Wallet 最容易困惑的点之一是找零地址。密钥派生工具能帮助你把它讲清楚。
什么是找零地址?
在 Bitcoin(及类似 UTXO 链)中,当你从某地址花费资金时,通常会消耗该地址上的整个 UTXO。若你想发送 0.5 BTC,但 UTXO 是 1.0 BTC,则交易会创建两个输出:
- 0.5 BTC 到收款方地址
- 0.5 BTC(扣除手续费后)到你控制的找零地址
这个找零地址来自派生路径中的内部链(change = 1):
- 收款地址:
m/84'/0'/0'/0/x - 找零地址:
m/84'/0'/0'/1/x
在密钥派生工具中查看找零地址
将 change 组件设为 1 即可导航到找零链:
| Path | 类型 | 用途 |
|---|---|---|
m/84'/0'/0'/0/0 | External | 第一个收款地址 |
m/84'/0'/0'/0/1 | External | 第二个收款地址 |
m/84'/0'/0'/1/0 | Internal | 第一个找零地址 |
m/84'/0'/0'/1/1 | Internal | 第二个找零地址 |
理解找零地址对钱包恢复非常关键。如果你只扫描外部地址,可能会漏掉找零地址上的资金。密钥派生工具会同时展示两条链。
SLIP-44 币种类型
BIP-44 路径中的 coin_type 层使用 SLIP-44 已注册值。以下是最常见条目:
| Coin | SLIP-44 Type | Path Prefix |
|---|---|---|
| Bitcoin | 0' | m/84'/0'/... |
| Bitcoin Testnet | 1' | m/84'/1'/... |
| Litecoin | 2' | m/84'/2'/... |
| Dogecoin | 3' | m/44'/3'/... |
| Ethereum | 60' | m/44'/60'/... |
| Ethereum Classic | 61' | m/44'/61'/... |
| Bitcoin Cash | 145' | m/44'/145'/... |
| Stellar | 148' | m/44'/148'/... |
| Ripple (XRP) | 144' | m/44'/144'/... |
| Cardano | 1815' | m/1852'/1815'/... |
| Solana | 501' | m/44'/501'/... |
| Polkadot | 354' | m/44'/354'/... |
| Cosmos | 118' | m/44'/118'/... |
| Tron | 195' | m/44'/195'/... |
| Avalanche | 9000' | m/44'/9000'/... |
当你在密钥派生工具中选择加密货币时,会自动使用这些注册值;你也可以手动输入自定义路径。
完整列表见 Supported Blockchains。
进阶:Gap Limit 与地址发现
当钱包通过助记词恢复时,需要判断哪些地址被使用过。它会从索引 0 开始按顺序扫描地址,并检查链上交易历史。
gap limit 是钱包在停止扫描前允许的连续未使用地址数量。BIP-44 标准建议 gap limit 为 20。也就是说,如果地址 0-15 用过,而 16-35 未使用,钱包会扫描到 35(16 + 20 gap)并判断没有更多已用地址。
影响:
- 如果你在 SafeSeed 地址生成器中生成了超过 20 个连续地址,并且使用了非连续地址(例如从索引 5 跳到 30),某些钱包恢复时可能发现不了后面的地址
- 大多数钱包允许在设置中提高 gap limit
- 密钥派生工具可帮助你准确理解哪些索引已派生且可能已被使用
FAQ
BIP-32、BIP-44、BIP-49、BIP-84、BIP-86 之间是什么关系?
BIP-32 定义了分层确定性密钥派生的核心算法,即如何从父密钥得到子密钥。BIP-44 定义了派生后密钥树的标准组织方式(purpose/coin/account/change/index)。BIP-49、BIP-84、BIP-86 是扩展,它们沿用相同的 BIP-32 算法和 BIP-44 结构,但指定了不同的 purpose 值(49、84、86)以及地址编码格式(分别为 SegWit、Native SegWit、Taproot)。
我可以用密钥派生工具找回丢失的加密货币吗?
如果你有正确的助记词但不知道使用了哪条派生路径,密钥派生工具可以帮助你系统化探索所有标准路径。对每种路径组合派生地址并在区块浏览器中检查。这是钱包恢复排障中最常见的使用场景。
实际上“硬化”派生是什么意思?
硬化派生表示子密钥只能用父私钥派生。实际效果是建立安全边界:如果有人拿到硬化节点下方的子密钥,无法反推出父私钥。这也是为什么 BIP-44 路径前三层(purpose、coin_type、account)都使用硬化派生,可防止地址层泄露影响主密钥。
为什么我的钱包显示的是 zpub 而不是 xpub?
前缀(xpub、ypub、zpub)表示扩展公钥面向的地址格式。xpub 对应 Legacy(BIP-44),ypub 对应 SegWit(BIP-49),zpub 对应 Native SegWit(BIP-84)。它们都包含同类型数据(带链码的扩展公钥),只是 version byte 不同,用于标识预期地址格式。密钥派生工具会在各层级显示对应格式。
我可以用 BIP-84 路径派生 Ethereum 密钥吗?
技术上你可以在任意路径派生密钥,但按约定 Ethereum 使用 BIP-44(m/44'/60'/...)。BIP-84 是 Bitcoin 的 Native SegWit 标准。使用标准 Ethereum 路径时,密钥派生工具会正确派生 Ethereum 地址。非标准路径也会产出有效密钥,但钱包软件通常不会识别。
如果我用了错误的账户索引会怎样?
如果你派生的是账户 0' 的地址,但资金在账户 1',标准钱包扫描不会显示这些资金。密钥派生工具允许你切换不同账户索引,找出真实持币账户。大多数钱包默认用账户 0',但有些支持创建更多账户。
密钥派生工具如何处理 passphrase?
passphrase(第 25 个词)在初始种子派生阶段(BIP-39)应用,然后才进入 BIP-32 密钥派生。不同 passphrase 会产生完全不同的主种子,进而生成完全不同的密钥树。密钥派生工具会展示应用 passphrase 后的主种子,便于你核对是否使用了正确种子。
密钥派生有最大深度吗?
BIP-32 理论上支持任意深度派生,但 BIP-44 将标准化层级定义为五层(purpose/coin/account/change/index)。超过五层属于非标准做法,常见钱包软件一般不支持。密钥派生工具支持标准五层,并允许自定义路径用于高级探索。
相关指南
- SafeSeed Tools Overview — 所有 SafeSeed 工具总览
- Seed Phrase Generator Tutorial — 生成用于密钥派生的助记词
- Address Generator Tutorial — 从指定路径派生地址
- Supported Blockchains — SLIP-44 币种类型与支持链列表
- Using SafeSeed Offline — 通过隔离网络离线派生密钥,获取最高安全性