分层确定性钱包(HD Wallets)
HD Wallets的全称是Hierachical Deterministic Wallets, 对应中文是 分层确定性钱包。
分层确定性的概念在BIP32提案提出。根据比特币核心开发者 Gregory Maxwell 的原始描述和讨论,Pieter Wuille 在2012 年 02月 11日整理完善提交 BIP32 。直到 2016年 6月 15 日 才被合并到 Bitcoin Core,目前几乎所有的钱包服务商都整合了该协议。BIP32 是 HD 钱包的核心提案,通过种子来生成主私钥,然后派生海量的子私钥和地址,但是种子是一串很长的随机数,不利于记录,所以我们用算法将种子转化为一串助记词 (Mnemonic),方便保存记录,这就是 BIP39,他拓展了HD钱包种子的生成算法。BIP43对BIP32树结构增加了子索引标识purpose的拓展m/purpose'/* 。BIP44是在BIP43和BIP32的基础上增加了多币种, 通过HD钱包可以派生多个地址,可以同时管理主网和测试网的比特币, BIP44提出了5层的路径建议, 如下:
m / purpose' / coin_type' / account' / change / address_index
详细的BIP44设置可以参考https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki
BIP44的规则使得HD钱包非常强大, 用户只要保存一个种子,就能控制所有币种,所有账户的钱包。
生成HD钱包及根据种子生成子私钥的步骤:
首先,生成一个
助记词
(BIP39 Mnemonic)该助记词使用PBKDF2转化为
种子
(BIP39 Seed)种子用于使用HMAC-SHA512生成
根私钥
(BIP32 Root Key)通过根私钥生成
子私钥
(参见BIP32),其中节点布局由BIP44设置
可以看出BIP39生成助记词的过程非常重要,如果一个HD钱包的助记词是12个有序单词, 单词拥有2048个不同单词的单词库中随机选择, 那么根据排列组合公式,n! / (n-r)!, 即2048!/ (2048-12)! = 5.27e+39 。地球上的沙子数量大概是1e18, 如果每秒生成一百万个助记词, 那么一年可以生成 1000000606024365 = 3.15e+13, 大概需要 1.67e+26年才能遍历所有的助记词
HD钱包生成工具
除了各主流钱包均加入了对BIP39规则的支持, github上有很多HD钱包生成工具,例如:https://github.com/iancoleman/bip39, 建议下载下来后在断网环境下使用
使用HD钱包的好处
备份更容易
传统钱包的问题是一个钱包可能存有一堆密钥地址,每个地址都有一些比特币。这样备份钱包的时候,需要备份所有的密钥。但如果之后生成了一个新地址,你就需要重新备份一次。事实上,每次生成新地址的时候,你都需要做一次备份。 HD钱包允许你从一个主(根)密钥创建海量的子密钥。这意味着,一旦你控制了主密钥,你就可以生成所有的子密钥,主密钥和子密钥形成树状结构。所以你就不需要频繁的备份钱包,你只需要在创建钱包的时候备份一次就可以了,因为你可以从主密钥重新创建所有的子密钥。
私钥离线存放更安全
HD钱包还带来了一些新特性,比如不需要任何私钥,就可以从一个父公钥生成所有的子公钥。具体来说,你的主私钥是以纸钱包的方式备份的,并且离线存放在一个安全的地方。你手头有主公钥,用这个公钥,你就可以生成所有的子公钥。 举个实际的例子,我们要开一个网店,接受比特币付款。你可以离线存放你的私钥,只把公钥放在公网的服务器上。你的网站可以使用这个公钥为网站上的每一个商品生成一个收款地址,或者给你的每个顾客生成一个唯一的地址,甚至为每次交易生成一个地址(如何使用,取决于你的想象)。 并且因为私钥是离线存放的,没人可以黑进你的服务器偷走比特币。
权限控制
HD钱包有个额外好处,它让你可以控制你的组织里谁可以控制哪些密钥。 和一个商业组织的组织结构类似,HD钱包也是以树形结构组织密钥的。你可以给你的组织里的每个分支部门创建密钥,把私钥交给这个分支部门,这个部门就可以花它的分支上的币,而你,因为有主私钥,所以你可以看到并花费整个树上的币。
记账
想让会计看到所有的交易,但不想让他花你的钱?没问题,你可以给他任何一级上的公钥,他就可以看到该级下的所有交易,并且不能花任何的币。
分层确定性钱包(HD Wallets)相关推荐
- 数字货币 分层确定性钱包(HD Wallets)
HD Wallets的全称是Hierachical Deterministic Wallets, 对应中文是 分层确定性钱包. 分层确定性的概念在BIP32提案提出. 根据比特币核心开发者 Grego ...
- 分层确定性钱包 HD Wallet 介绍
分层确定性钱包 HD Wallet 介绍 文章来源:ConsenLabs 以太坊,区块链(Blockchain), 2017/10/20 14:06 3296 钱包是用于发送和接受代币的客户端,就像我 ...
- 分层确定性钱包 HD Wallet 钱包归集
分层确定性的概念早在 BIP32 提案提出.根据比特币核心开发者 Gregory Maxwell 的原始描述和讨论,Pieter Wuille 在2012 年 02月 11日整理完善提交 BIP32, ...
- 分层确定性钱包开发的代码实现(HD钱包服务)
HD Wallets的全称是Hierachical Deterministic Wallets, 对应中文是 分层确定性钱包. 这种钱包能够使用一组助记词来管理所有的账户的所有币种,在比特币的BIP3 ...
- 分层确定性钱包-以太坊创建钱包
基本概念 所有问题大体可以分为三类:区块链基本概念,钱包安全知识以及钱包转账交易 区块链的基本特性 去中心化 因为整个网络没有中心统治者.系统依靠的是网络上多个参与者的公平约束,所以任意每几个节点的权 ...
- 千里之堤毁于蚁穴(慎用HD Wallets)
现在我们都该明白,无论怎样强调随机对于比特币的重要性都不为过,随机的确称得上是比特币的"命根子". 在过去的几篇文章中,小太已经介绍过了一些因随机问题可能导致私钥暴漏的情况,今天, ...
- 1.16. BIP39协议:使用助记词生成确定性钱包
以太坊系统学习教程: https://www.netkiller.cn/blockchain/bip39.html 1.16. BIP39协议:使用助记词生成确定性钱包 BIP:39 层:应用层 标题 ...
- 数字货币钱包 HD Wallet的助记词和种子的生成原理(BIP39)
BIP39描述了如何生成助记符,并将其转换为二进制种子.该种子可以生成确定性钱包. 如何生层助记词 我们先看看助记词范围--单词表.生成助记词的过程就是这个表里(2048个单词,记住这个数值)选 ...
- btc比特币 钱包简介
bip39协议 那么支持bip39有何重大意义呢?举个例子:你所用的钱包商跑路了,怎么办?都说钱包商拿不到你的资产,且不说这个问题.最最重要的是你怎么拿到你的资产呢?你有助记词又能怎样,它不符合bip ...
最新文章
- Java EE并发API教程
- 将IPFS 配置服务器,电脑连接远程服务器,环境配置
- Chapter7-11_Deep Learning for Question Answering (2/2)
- sci写作sci写作模板_有写作错误吗? bibisco简介
- 手把手教你用python实现决策树的策略规则挖掘
- python编写arcgis脚本_ArcGis Python脚本——批量添加字段
- 数据仓库项目管理面试题整理(十二)
- CocoaPods详解之----制作篇
- unity灯光Lightmapping、LightProbes
- opencv图像分析与处理(5)- 取样和取样函数的傅立叶变换
- 谷歌Chrome浏览器无法打开网页,提示您与此网站之间建立不安全连接【解决】
- 服务器ssd硬盘格式化,格式化没你想象的简单 格式选错了对SSD有损
- 那是什么进程 —— svchost.exe是什么? 它为何运行?
- 示波器两个重要参数 - 带宽、采样率
- 上海域格CLM920 JC3(JC5)模组安卓系统下会显示以太网图标的处理
- Unity的ScrollRect如何裁切粒子特效,以及如何使粒子特效显示在UI上
- 性能测试中常见的专业术语:QPS、TPS、并发数、响应时间(RT)、吞吐率和吞吐量【杭州多测师】【杭州多测师_王sir】...
- bzoj 2069 [ POI 2004 ] ZAW —— 多起点最短路 + 二进制划分
- 【博弈论】【第一章】博弈论导论
- 亚洲第一人,人肉扫码器,怎样提高记忆力