HD 钱包全称为是分层确定性(Hierarchical Deterministic)钱包的缩写 HD Wallets。
我们知道数字钱包是用来保存我们的密钥和地址的,而数字货币是被记录在区块链网络中的每个区块上的。因此,如何安全方便的生成、保存和备份恢复密钥才是钱包的关键。为此,钱包已经进化了三次,从最初的非确定(随机)钱包到第二代的确定性(种子)钱包,直到现在的分层确定性钱包,钱包的更新迭代经过了三个阶段
一.分层确定性钱包:
根据协议可以分:
BIP32 一个seed管理全部私钥
BIP39 一个助记词管理一个seed管理全部私钥
BIP44 一个seed管理多个币种账号
BIP32
-
1. 解决每个私钥都要备份特别麻烦
-
2.保存一个随机数种子(通常16进制数表示),全部私钥可以推导出来。
BIP39
-
1.出现的原因:BIP32 提案保存一个随机数种子,,不过用户使用起来(比如冷备份)也比较繁琐,这就出现了BIP39
-
2.使用助记词的方式,生成种子的,这样用户只需要记住12(或24)个单词
-
生成助记词
-
助记词生成的过程是这样的:先生成一个128位随机数,再加上对随机数做的校验4位,得到132位的一个数,然后按每11位做切分,这样就有了12个二进制数,然后用每个数去查BIP39定义的单词表,这样就得到12个助记词
-
BIP39就是:通过定义助记词让种子的备份更友好
BIP44
-
BIP44:基于 BIP32 的系统, 一个seed可以支持多个币种,多账户
-
总结
-
HD钱包(Hierarchical Deterministic Wallets)是在BIP32中提出的为了避免管理一堆私钥的麻烦提出的分层推导方案。
-
而BIP44是给BIP32的分层增强了路径定义规范,同时增加了对多币种的支持。
-
BIP39则通过定义助记词让种子的备份更友好。
二.钱包概念:
-
生成顺序
-
助记词 > 种子seed > 私钥 > 公钥 > 地址
-
助记词
助记词一般由12或24个单词构成,这些单词都来源于一个固定词库(2048 个单词的单词表),是由私钥根据一定算法得来,所以私钥与助记词之间的 转换是互通的,助记词实际上就是私钥的另一种表现形式//
助记词种子例子:
candy maple cake ***** pudding ***** honey rich *** crumble sweet treat
-
种子(只存在确定性钱包)
BIP32 协议中的种子是128位字符(通常16进制数表示)
/ / 随机数种子090ABCB3A6e1400e9345bC60c78a8BE7
-
私钥
私钥本质上是一个包含64位的随机数:
私钥是随机生成的,这个随机数的可能由2的256次方种
-
公钥
公钥由私钥通过椭圆曲线加密算法生成的,变换后是一个65个byte的数组,一般是通过16进制处理后显示
-
地址
地址是通过公钥进行BASE58进行编码最后生成一串0x开头的42位字符串
-
KeyStore
KeyStore看上去就是JSON 格式的字符串, 一般以文件形式存储。Keystore的本质是加密后的私钥,Keystore必须配合你的钱包密码来使用才有效
三.确定性和非确定性钱包区别
-
由于私钥不同的生成方法对应着不同的钱包结构,我们把钱包分为非确定性钱包和确定性钱包。
-
好处:
种子能恢复所有的私钥,值得注意的是,确定性钱包随机产出的种子是通过一系列确定、不可逆的运算来派生出一系列的密钥对。为什么要强调确定和不可逆?因为确定可以保证从一个种子中可以生成出全部的子密钥对,而“不可逆”则是为了确保不能通过子密钥对反推出种子HD钱包的衍生过程同样遵循确定、不可逆的原则。