简介
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)可实现私钥离线存放,更安全。
HD理财全称为是分层确定性(Hierarchical Deterministic)的缩写 HD Wallets。
我们知道数字钱包是用来保存我们的密钥和地址的,而数字货币是被记录在区块链网络中的每个区块上的。因此,如何安全方便的生成、保存和备份恢复密钥才是钱包的关键。为此,钱包已经进化了三次,从最初的非确定(随机)钱包到第二代的确定性(种子)钱包,直到现在的分层确定性钱包,钱包的更新迭代经过了三个阶段。
实际上想要理解分层确定性钱包的概念也并没有我们想象的那么困难。它的原理用两句话就可以表达清楚:
首先,要用一个随机数来生成主私钥,这跟其他类型的钱包生成私钥过程没有任何区别。
然后,再用一个确定性的、不可逆的算法,基于主私钥生成任意数量的子私钥。
那为什么要用“确定、不可逆”的算法呢?因为“确定”才能保证从一个主私钥可以生成出全部的子私钥,而“不可逆”则是为了确保不能通过子私钥反推出主私钥。
之所以叫分层确定性钱包是因为私钥的衍生结构是树状结构,父密钥可以衍生一系列子密钥,每个子密钥又可以衍生出一系列孙密钥,以此类推,无限衍生。
这种结构跟公司的组织架构和家谱非常相似!
这个最热的当然是比特币了,除了比特币还有:\x0d\x0a1、Litecoin(莱特币)\x0d\x0a与比特币相近,莱特币也是以加密数字货币,最近价格急剧攀升。它是一种P2P的开源数字货币,算得上是比特币的一个分支。但是,莱特币虽然基于比特币协议,但是并不要求极高的计算能力,使用普通电脑也可进行挖掘。莱特币的算法,源于Dr Colin Percival为Tarsnap安全在线备份服务(供Linux及其他开源操作系统备份)设计的算法。\x0d\x0a2、Namecoin\x0d\x0aNamecoin同样以比特币为基础,算的上是另外一个开源分支。Namecoin是一种分布式DNS协议——通俗来讲,就是能够将人类可理解的网站名(如ifeng.com)化为机器可以理解的地址。作为自己的DNS,这种货币能够在正常互联网外运营,因此能够脱离ICANN的管制。\x0d\x0aNamecoin的货币价值及域名存储在用户的区块链(blockchain)记录中,将总数限定在了2100万。\x0d\x0a3、Peercoin\x0d\x0aPeercoin是比特币的一种p2p变体,能够提高开采效率、安全性,并提升了保障措施从而避免群体开采——现在,群体开采已经被认为是比特币的一种潜在缺陷。根据CoinMarketCap.com对新兴货币的统计,Peercoin目前在数字货币市值中排在第四位。\x0d\x0a4、Primecoin\x0d\x0aPrimecoin是类似比特币的加密货币,但却擦用了完全独立的挖掘算法。比特币采用了Hashcash算法,而Prime币则使用了长坎宁安链(long Cunningham chains)来打造货币的价值——这是以数学家AJC坎宁安命名的质数序列。\x0d\x0a比特币挖掘过程中,随着货币量的推移难度会急剧增加。但Prime却不同,每挖掘出一枚Primecoin币,开采难度就会略有增加,这一过程要平稳得多。\x0d\x0a5、Feathercoin\x0d\x0a\x0d\x0aFeathercoin依据Litecoin设计,2013年4月发布,可以比Litecoin更频繁地调整挖矿难度。Feathercoin会经常更新,加入新功能与改进,杜绝恶意的挖矿行为。\x0d\x0a\x0d\x0a6、Novacoin\x0d\x0a\x0d\x0a另一款P2P数字加密货币。Novacoin和其他大多数货币不同的地方是,在货币核心整合了保护机制,可以识别违规挖矿的行为。\x0d\x0a\x0d\x0aNovacoin总数限定为20亿,数量相当可观。如果需要,总数还可以向上调整。\x0d\x0a\x0d\x0a7、Infinitecoin\x0d\x0a\x0d\x0a2013年6月发布。Litecoin的副产品。根据挖掘情况和货币总数,无限币可以频繁地进行挖掘难度比率调整。\x0d\x0a\x0d\x0a8、Megacoin\x0d\x0a\x0d\x0a2013年第四季季度才发布,初期模仿了比特币。Megacoin的总数限定为4200万,可以像其他虚拟货币一样被挖掘出来。它的最大卖点是品牌公开,这点正是其他数字货币所缺乏的。\x0d\x0a\x0d\x0a9、Quarkcoin\x0d\x0a\x0d\x0a2013年发布,现在尚处于初期。Quarkcoin的安全部分,部署了9个独立回路的加密,采用了6种不同的算法。
什么是比特币的子地址
比特币的钱包是建立在HD(分级确定性)框架之上的,它具有生成不同地址和管理地址的方法。你钱包的每个公开地址都会从你的钱包的 xPub(扩展公钥)中产生。
如果你每次收到 BTC时使用相同的地址,任何人都可以轻松追踪您的所有付款记录。这种地址生成方法通过在你收款时,生成一个新地址(子地址)来改善隐私。
如何找到比特币的子地址
1.首先点击"资产"页面,切换到 BTC钱包后,点击右上角的二维码样式按钮,进入收款界面。
2.Main是当前比特币钱包的主地址,点击 External即为当前钱包的子地址
如何找到比特币的子地址
1.点击"资产"页面顶部切换 BTC和 ETH钱包的按钮,选择 BTC钱包右侧的"···"按钮
2.进入"管理"界面,点击"钱包地址",进入"钱包地址"页面
3.点击"添加"按钮,添加新的比特币地址,并选择新的地址。这时候再回到【如何找到比特币的子地址】的方法,点击 External,可以看到刚才添加的比特币子地址。