两个比特币改进建议(BIPs)提供了这个复杂问的解决办法——通过创建几个 HD 钱包树的提议标准。BIP0043 提出使用第一个强化子索引作为特 殊的标识符表示树状结构的"purpose"。基于 BIP0043,HD 钱包应该使用且只用第一层级的树的分支,而且有索引号码去识别结构并且有命名空间 来定义剩余的树的目的地。举个例子,HD 钱包只使用分支 m/i'/是为了表明那个被索引号"i"定义的特殊为目地。
在 BIP0043 标准下,为了延长的那个特殊规范,BIP0044 提议了多账户结构作为"purpose"。所有遵循 BIP0044 的 HD 钱包依据只使用树的第一个分支的要求而被定义:m/44'/。
BIP0044 指定了包含 5 个预定义树状层级的结构:
m / purpose' / coin_type' / account' / change / address_index 第一层的目的地总是被设定为 44'。第二层的"coin_type"特指密码货币硬币的种类并且允许多元货币 HD 钱包中 的货币在第二个层级下有自己的亚树状结构。目前有三种货币被定义:Bitcoin is m/44'/0'、Bitcoin Testnet is m/44'/1', 以及 Litecoin is m/44'/2'。
树的第三层级是"account",这可以允许使用者为了会计或者组织目的,而去再细分他们的钱包到独立的逻辑性亚账户。举个例子,一个 HD 钱包可能包含两个比特币"账户":m/44'/0'/0' 和 m/44'/0'/1'。每个账户都是它自己亚树的根。
第四层级就是"change"。每一个 HD 钱包有两个亚树,一个是用来接收地址一个是用来创造变更地址。注意无论先前的层级是否使用是否使用强化衍生,这一层级使用的都是常规衍生。这是为了允许这一层级的树可以在可供不安全环境下,输出扩展的公共钥匙。被 HD 钱包衍生的可用的地址是第四层级的子级, 就是第五层级的树的"address_index"。比如,第三个层级的主账户收到比特币支付的地址就是 M/44'/0'/0'/0/2。表 4-9 展示了更多的例子。
HD 路径主要描述
M/44'/0'/0'/0/2 第三个收到公共钥匙的主比特币账户
M/44'/0'/3'/1/14第十五改变地址公钥的第四个比特币账户
m/44'/2'/0'/0/1 为了签署交易的在莱特币主账户的第二个私钥