当前位置:首页 > 区块链新闻 > 正文

这些关于HD Wallets的“硬”知识,你知道多少?

来源: 互联网时间:2019-01-26 17:32:31

HD Wallets:全称Hierarchical Deterministic Wallets,中文名称分层确定性钱包,是目前广泛使用的虚拟货币钱包标准。下面小编就来给大家讲讲HD Wallets的工作机制以及开发原理。

1、简介

HD Wallets可以从一个 seed 生成一个树状结构储存多组 keypairs(私钥和公钥 ),并根据一定规则可生成多个具体的钱包(如BTC钱包、ETH钱包)。HD Wallets让同一个seed可以支持多币种、多账号、多地址。目前几乎所有的钱包客户端都支持HD Wallets。

2、相关BIPs

BIPs 全名Bitcoin Improvement Proposals,是提出 Bitcoin 的新功能或改进措施的文件。详情可见:

https://github.com/bitcoin/bips

BIP32, BIP39, BIP44 共同定义了目前被广泛使用的 HD Wallets,包含其理念、设计动机、实现方式、实例等。

BIP32:Hierarchical Deterministic Wallets

定义Hierarchical Deterministic Wallets。通过种子来生成主私钥,然后派生海量的子私钥和地址。

HD Wallets从一个 seed 生成一个树状结构储存多组 keypairs(私钥和公钥),进而根据树状结构具体结点上的keypair生成具体的钱包(如BTC钱包、ETH钱包)。

分层是指一个seed可以生成一个有层级关系的树状结构储存多组keypairs,子节点是由父节点根据一定的算法派生出来的。 例如,一个大公司可以为一级部门生成不同的私钥,一级部门可以再为自己的二级部门生成不同的私钥。由于二级部门的私钥是由所属的一级部门的私钥派生的,每个一级部门可以拥有管理自己二级部门私钥的权限,即可以花里面的币。也可以只给会计人员某个层级的公钥,让他可以看到这个部门的收支记录,但不能花里面的钱,使得财务管理更方便了。

确定性是与非确定性相对应的。比特币最早的客户端(Satoshi client)就是非确定性钱包,钱包是一堆随机生成的集合。客户端会预先生成100个私钥。每次交易使用一个私钥。私钥用完,再生成一批私钥。这种钱包难以管理和备份。每个私钥都必须单独备份。确定性钱包则不需要每次转账都要备份,确定性钱包的私钥是对种子进行单向哈希算法生成的,种子是一串随机数生成器生成的随机数。在确定性钱包中,只要有这个种子,就可以找回所有的私钥。

BIP39:Mnemonic code for generating deterministic keys

将 seed 用方便记忆和书写的单词表示。一般由 12 个单词组成,称为 mnemonic code,中文称为助记词。

符合BIP39标准的助记词可以是 3个、6个、9个、12个、15个、18个、21个和24个单词。它们所对应的强度分别是:2048(3次方) 、2048(6次方) … 2048(24次方) ,一般采用12个单词,强度为:2048(12次方)

例如:

lobster october warfare eye normal awkward blood ready safe extend army social

5cca81c65fa1e02982f3a8db097f5ffcb7a3d995a9a87749085649dac1bebd55bdc2ba42998e69bc3c5421c70ddeb72037e399ea82a873721bcde8f4c54d1f41

BIP44:Multi-Account Hierarchy for Deterministic Wallets

基于 BIP32 的系统,赋予树状结构中的各层特殊的意义。让同一个 seed 可以支持多币种、多帐户等。

各层定义如下:

m / purpose’ / coin_type’ / account’ / change / address_index

其中的 purporse’ 固定是 44′,代表使用 BIP44。而 coin_type’ 用来表示不同币种,例如Bitcoin就是 0′,Ethereum是60′。

例如:

m/44′/0′/0′/0/0代表一个BTC钱包path

m/44′/60′/0′/0/0代表一个ETH钱包path

3、生成HD Wallets钱包过程

生成HD Wallets钱包的过程简单来说以下4步就可以搞定:

1)生成一个助记词(参照BIP39);

2)该助记词使用PBKDF2转化为种子(参照BIP39);

3)种子用于使用HMAC-SHA512生成根私钥(参照BIP32);

4)通过根私钥生成子私钥(参照BIP32),其中节点布局由BIP44设置。

4、优势

说了这么多,那么HD Wallets钱包的优势到底是什么呢?

1)方便备份;

2)在不同的应用间使用;

3)可同时管理多个钱包;

4)可同时管理多种币;

5)支持分层的权限控制;

6)可实现私钥离线存放,更安全。

好了,今天的干货就讲到这里,如果大家还有什么想学习的技术性知识,欢迎留言讨论

免责声明:

1.本文内容综合整理自互联网,观点仅代表作者本人,不代表本站立场。

2.资讯内容不构成投资建议,投资者应独立决策并自行承担风险。

你可能感兴趣

    error