一套助记词,管理所有链上的所有地址。HD Wallet 是现代加密钱包的基石。
HD Wallet(Hierarchical Deterministic Wallet)即分层确定性钱包,通过一个种子(Seed)可以派生出无限数量的密钥对,形成一棵树状结构。
将随机种子编码为人类可读的 12 或 24 个英文单词。
abandon ability able about above absent absorb abstract absurd abuse access accident助记词 → 经过 PBKDF2 函数 → 生成 512 位种子(Seed)
定义了如何从主密钥(Master Key)逐层派生子密钥。
m / purpose' / coin_type' / account' / change / address_index| 层级 | 含义 | 示例 |
|---|---|---|
| purpose | 固定为 44 | 44' |
| coin_type | 链类型 | 0'=BTC, 60'=ETH, 501'=SOL |
| account | 账户索引 | 0', 1', 2'... |
| change | 0=外部地址, 1=找零地址 | 0 |
| address_index | 地址序号 | 0, 1, 2... |
graph TB
A["🎲 随机熵<br/>128/256 位"] -->|"BIP39"| B["📝 助记词<br/>12/24 个单词"]
B -->|"PBKDF2<br/>+ 可选密码"| C["🌱 种子 Seed<br/>512 位"]
C -->|"HMAC-SHA512"| D["🔑 主私钥 + 主链码<br/>Master Key + Chain Code"]
D --> E["m/44'/60'/0'/0/0<br/>ETH 第1个地址"]
D --> F["m/44'/60'/0'/0/1<br/>ETH 第2个地址"]
D --> G["m/44'/0'/0'/0/0<br/>BTC 第1个地址"]
D --> H["m/44'/501'/0'/0'<br/>SOL 第1个地址"]
style A fill:#e1f5fe
style B fill:#fff3e0
style C fill:#e8f5e9
style D fill:#f3e5f5
graph TB
M["m<br/>主密钥"] --> P44["m/44'<br/>BIP44 标准"]
P44 --> ETH["m/44'/60'<br/>Ethereum"]
P44 --> BTC["m/44'/0'<br/>Bitcoin"]
P44 --> SOL["m/44'/501'<br/>Solana"]
ETH --> EA0["m/44'/60'/0'<br/>账户 0"]
ETH --> EA1["m/44'/60'/1'<br/>账户 1"]
EA0 --> EC0["m/44'/60'/0'/0<br/>外部地址"]
EA0 --> EC1["m/44'/60'/0'/1<br/>找零地址"]
EC0 --> ADDR0["m/44'/60'/0'/0/0<br/>地址 #0"]
EC0 --> ADDR1["m/44'/60'/0'/0/1<br/>地址 #1"]
EC0 --> ADDR2["m/44'/60'/0'/0/2<br/>地址 #2"]
| 特性 | 普通派生 | 强化派生(带 ') |
|---|---|---|
| 输入 | 父公钥 + 链码 | 父私钥 + 链码 |
| 安全性 | 子密钥泄露可能推导父密钥 | 子密钥泄露无法推导父密钥 |
| 应用场景 | 只读钱包(用扩展公钥派生子公钥) | 标准钱包(更安全) |
| 路径表示 | m/44/60/0 | m/44'/60'/0' |
强化派生更安全,因此 BIP44 路径中 purpose、coin_type、account 层级都使用强化派生。