B2B
比特币HD 钱包树状结构的导航
2022-01-05 09:37  浏览:363
 HD 钱包树状结构提供了极大的灵活性。每一个母扩展密钥有 40 已个子密钥:20 亿个常规子密钥和 20 亿个强化子密钥。而每个子密钥又会有 40 亿个子密钥并且以此类推。只要你愿意,这个树结构可以无限类推到无穷代。但是,又由于有了这个灵活性,对无限的树状结构进行导航就变得异常困难。尤其是对于在不 同的 HD 钱包之间进行转移交易,因为内部组织到内部分支以及亚分支的可能性是无穷的。

两个比特币改进建议(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 为了签署交易的在莱特币主账户的第二个私钥

您可能感兴趣的...