比特币钱包介绍(5)

HD钱包树状结构导航

HD钱包的树状结构提供了无比强大的弹性。每个父扩展密钥可以拥有40亿个子密钥:包括20亿个普通子密钥和20亿个强化子密钥。每个子密钥又拥有40亿个子密钥,以此类推。只要你愿意,这棵树可以任意扩展到无穷代。但是,正因为其弹性强,要对这棵“无限树”进行导航也变得极其困难。尤为困难的是在不同HD钱包间进行转移时,内部结构与分支及子分支间的映射关系也是无穷多的。

针对这一复杂性,两个比特币改进提案(BIPs)对HD钱包的树状结构提出了一些建议标准,提供了一些针对这个问题的解决方案。BIP0043建议第一个强化子索引作为一个特别的标识符,用于表示树结构的“目的”。基于BIP0043,HD钱包只能使用“层级1”的一个分支,通过定义索引号的目的,使用索引号来表示树的剩余部分的结构和命名空间。举例来说,一个HD钱包只使用分支m/i′/是为了标识一个特定目的,而这个目的由索引号“i”进行指定。

BIP0044扩展了上述规范,提出一种多账号结构作为BIP0043下索引号44′的“目的”。所有遵循BIP0044的结构仅使用树的一个分支:m/44′/。

BIP0044规定包含五个预定义层级的树状结构。

blob.png

第一层“目的”(purpose)总是设置为44′。第二层“币类别”(coin_type)指定加密币类型,允许多币种HD钱包,每个币种在第二层下拥有自己的子树。目前已经定义了三种货币类型:比特币m/44′/0′;比特币测试网络(Bitcoin Testnet)m/44′/1′;莱特币(Litecoin)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列出了更多的例子。

表4.9 BIP0044 HD钱包结构示例

blob.png

使用sx工具包进行HD钱包试验

使用命令行工具sx,你可以进行生成和扩展BIP0032确定性密钥的实验,并以不同格式展示它们:

blob.png

blob.png

全球主要的比特币钱包服务

服务名特征
blockchain.info世界上最有名的在线钱包,使用人数最多
Coinbase除了钱包服务,还提供结算、交易所等业务
Circle获得美国数字货币许可证(BitLicenses)的公司,允许信用卡购买比特币
BitGo提供重视安全性的密钥钱包
下面文章对您学习“比特币钱包介绍”有帮助

比特币的三种客户端

868区块链学习网为您整理《比特币钱包介绍(5)》仅供参考。