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

本文转自:猎豹区块链研究中心

        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,包含其理念、设计动机、实现方式、实例等。

这些关于HD Wallets的“硬”知识,你知道多少?_第1张图片
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)可实现私钥离线存放,更安全。

       最后推荐一款Dapp浏览器,目前已经支持云斗龙等优质的Dapp,可以直接在手机端运行,不需要下载或在PC端安装插件。新版本增加交易所搬砖神器,合约安全检测功能 。

猛戳链接:https://www.cmcmbc.com/zh-cn/blockchainlab/?from=channel_e

        二维码:

这些关于HD Wallets的“硬”知识,你知道多少?_第2张图片

你可能感兴趣的:(这些关于HD Wallets的“硬”知识,你知道多少?)