HD理财全称为是分层确定性(Hierarchical Deterministic)的缩写 HD Wallets。
我们知道数字钱包是用来保存我们的密钥和地址的,而数字货币是被记录在区块链网络中的每个区块上的。因此,如何安全方便的生成、保存和备份恢复密钥才是钱包的关键。为此,钱包已经进化了三次,从最初的非确定(随机)钱包到第二代的确定性(种子)钱包,直到现在的分层确定性钱包,钱包的更新迭代经过了三个阶段。
实际上想要理解分层确定性钱包的概念也并没有我们想象的那么困难。它的原理用两句话就可以表达清楚:
首先,要用一个随机数来生成主私钥,这跟其他类型的钱包生成私钥过程没有任何区别。
然后,再用一个确定性的、不可逆的算法,基于主私钥生成任意数量的子私钥。
那为什么要用“确定、不可逆”的算法呢?因为“确定”才能保证从一个主私钥可以生成出全部的子私钥,而“不可逆”则是为了确保不能通过子私钥反推出主私钥。
之所以叫分层确定性钱包是因为私钥的衍生结构是树状结构,父密钥可以衍生一系列子密钥,每个子密钥又可以衍生出一系列孙密钥,以此类推,无限衍生。
这种结构跟公司的组织架构和家谱非常相似!
简介
HD Wallets:全称Hierarchical Deterministic Wallets,中文名称分层确定性钱包,是目前广泛使用的虚拟货币钱包标准。下面我就来给大家讲讲HD Wallets的工作机制以及开发原理。
BIPS
BIPs全名Bitcoin Improvement Proposals,是提出 Bitcoin的新功能或改进措施的文件。详情可见:
BIP32, BIP39, BIP44共同定义了目前被广泛使用的 HD Wallets,包含其理念、设计动机、实现方式、实例等。定义Hierarchical Deterministic Wallets。通过种子来生成主私钥,然后派生海量的子私钥和地址。
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次方)
BIP32
HD Wallets从一个 seed生成一个树状结构储存多组 keypairs(私钥和公钥),进而根据树状结构具体结点上的keypair生成具体的钱包(如BTC钱包、ETH钱包)。
分层是指一个seed可以生成一个有层级关系的树状结构储存多组keypairs,子节点是由父节点根据一定的算法派生出来的。例如,一个大公司可以为一级部门生成不同的私钥,一级部门可以再为自己的二级部门生成不同的私钥。由于二级部门的私钥是由所属的一级部门的私钥派生的,每个一级部门可以拥有管理自己二级部门私钥的权限,即可以花里面的币。也可以只给会计人员某个层级的公钥,让他可以看到这个部门的收支记录,但不能花里面的钱,使得财务管理更方便了。
BIP44:Multi-Account Hierarchy for Deterministic Wallets
基于 BIP32的系统,赋予树状结构中的各层特殊的意义。让同一个 seed可以支持多币种、多帐户等。
各层定义如下:
其中的 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
生成HD Wallets钱包的过程简单来说以下4步就可以搞定:
HD Wallets钱包的优势有哪些?
1)方便备份;
2)在不同的应用间使用;
3)可同时管理多个钱包;
4)可同时管理多种币;
5)支持分层的权限控制;
6)可实现私钥离线存放,更安全。