HD钱包即分层确定性钱包,是指比特币钱包的一种管理方式
具体的HD钱包内容可以参考《精通比特币》第四章
https://github.com/tianmingyun/MasterBitcoin2CN/blob/master/ch04.md
这里主要记录一下在书中没有解释的很清楚的子公钥生成部分
根据书中的介绍,HD钱包在非硬化衍生的情况下,可以在不暴漏衍化子私钥的情况下,得到衍化子公钥
衍化子私钥的过程如下图
衍化子公钥的过程如下图
这里的问题是,为什么可以得到这种效果
参考BIP0032标准
https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
衍生公钥的生成方式为:
计算
其中 的作用是将数字转化为字符串,用于做hash
则子公钥为 ,其中 为左256位
子链编码为 ,其中 为右256位
衍生私钥的生成方式为:
计算
则子私钥为
子链编码为
结合上面的内容,可以得到
即衍生子公钥与衍生子私钥是相对应的一对公私钥对
所以HD钱包可以在不暴漏衍生子私钥的情况下,无限生成衍生子公钥,可以在不安全的环境下用于首款,而子私钥则可以在安全的环境中,用于付款,增加安全性