比特币钱包介绍(3)

相对随机(非确定性)钱包,HD钱包有两大优势。

第一,树结构可以用于表达额外的组织含义,比如,一个特定分支的子密钥用于接收来款交易,而另一个分支的子密钥用于支付交易的找零。不同分支的密钥同样可以用于公司财务设置,将不同的分支分配给不同的部门或子公司,用于特定用途或者会计账目。

第二,用户可以在不访问私钥的情况下创建一系列公钥。这使得HD钱包可以在不安全的服务器上使用,也可以针对每笔交易发放一个不同的公钥。公钥不需要提前预载或者派生,服务器也不需要保存用于花费资金的私钥。

从种子生成HD钱包

HD钱包从单一的根种子产生,它是一个128位、256位或者512位的随机数字。HD钱包中其他的一切东西均确定性地从这个根种子衍生而来,从种子起步重建整个兼容HD钱包而得以实现。同样地,包含成千上万密钥的钱包也更加易于备份、恢复、导出和导入,所有要做的仅仅是传输一个根种子。根种子最常见的表现形式为助记码单词序列,它使根种子的转录和保存更容易进行,在上一节“助记码词汇表”中我们已经详细描述过。

图4.10是HD钱包创建主密钥和主链码的过程。

根种子是HMAC-SHA512算法的输入,生成的哈希值用于创建主私钥(m)和主链码。通过主私钥(m)相应地生成一个主公钥(M),这个过程使用了我们之前介绍过的椭圆曲线乘法m×G。链码用于引入熵,在从父密钥创建子密钥的过程中需要用到,我们将在下节中讲述。

blob.png

图4.10 从根种子创建主密钥和链码

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