1. 密钥树可以多层迭代

由于密钥派生关系是可以多层迭代的,因此可以使用一个密钥多层级派生,构建出树形密钥层级结构。如果是普通密钥派生关系,公钥派生子公钥的特性也可以逐层传递。

  • 密钥衍生函数CKD 详细过程见上文"比特币钱包(2) BIP32 HD钱包之生成子密钥"

1.1 内部和外部链

  • 外部密钥链: 用于生成新的公共地址
  • 内部密钥链: 用于所有其他操作(更改地址,生成地址…,任何不需要通信的操作)

扩展私钥表示为(k,c),k表示普通私钥,c表示链码;
扩展公钥表示为(K,c)K表示point(k)父级公钥,c表示链码;

2. 强化衍生Hardened Derivation

问题:扩展公钥衍生一个分支公钥有风险。 因为扩展公钥包含有链码,如果子私钥被知道或者被泄漏的话,链码就可以被用来衍生所有的其他子私钥。简单地泄露的私钥以及一个母链码,可以暴露所有的子密钥。更糟糕的是,子私钥与母链码可以用来推断母私钥

强化衍生只能从父级私钥衍生子级私钥,从而得到子级公钥

  • 强化衍生通过 0x00 这样 1Byte 拼上私钥和索引作为 Data
  • 强化衍生不会将父级链码暴露到不安全的环境下,所以相较于正常衍生更安全些。

todo:下面这句话没懂…
当某一层的密钥派生关系是“加硬”的,则这种传导关系就中止了。用公式可以表示为:
N(m/a/b/c) = N(m/a/b)/c = N(m/a)/b/c = N(m)/a/b/c = M/a/b/c.
N(m/aH/b/c) = N(m/aH/b)/c = N(m/aH)/b/c.
_H 表示加硬密钥派生 _

3. 账号表示方法

3.1. 路径通过 / 分割表示

m / iH / 0 / k对应于从主m导出的HDW的帐号i的外链的第k个密钥对。
m / iH/ 1 / k对应于从主m导出的HDW的帐号i的内部链的第k个密钥对。

3.2. 前缀有 m 和 M 之分

m: 已知子私钥
M: 已知子公钥

3.3. 索引

索引范围有 2^32 个

  • 前 2^31 表示正常衍生,通常表示为索引序号即可;
  • 后 2^31 表示强化衍生,强化衍生序号也是从 0 开始,会在序号后添加撇号表示强化衍生,eg. 0x80000000 为第一个强化衍生的序号,通常表示为 0’,钱包中有 i’=2^31+i 这样的关系。

3.4. eg.

m/0 => 母密钥生成的第一个正常衍生子私钥
m/0/1 =>第一个正常衍生子密钥的子密钥
M/0 =>母密钥生成的第一个正常衍生公钥

m/5/4’ =>子私钥 m/5 的第 4 个强化衍生的子私钥
m/5/4’/0 => 子私钥 m/5/4’ 的第 0 个正常衍生私钥

比特币钱包(3) BIP32 HD钱包之密钥树相关推荐

  1. 比特币钱包(2) BIP32 HD钱包之生成子密钥

    1. Masster Seed得到子公钥.子私钥 由主私钥和链码,再结合子密钥索引(索引是一个 4Byte 序号),通过 HMAC-SHA512 衍生出子密钥. 父级私钥 --> 子级公钥有两种 ...

  2. HD钱包(身份钱包)简介

    身份钱包学名叫做分层确定性钱包(简称:HD 钱包),最早是比特币开发者们为了解决备份私钥困难而提出的解决方案. HD钱包发展过程 最早的比特币钱包是一堆随机生成的私钥的集合:钱包会预先生成 100 个 ...

  3. 数字货币HD钱包 BIP32、BIP44、BIP39 简介

    数字钱包概念 钱包用来存钱的,在区块链中,我们的数字资产都会对应到一个账户地址上, 只有拥有账户的钥匙(私钥)才可以对资产进行消费(用私钥对消费交易签名). 私钥和地址的关系如下: (图来自精通比特币 ...

  4. 分层确定性钱包开发的代码实现(HD钱包服务)

    HD Wallets的全称是Hierachical Deterministic Wallets, 对应中文是 分层确定性钱包. 这种钱包能够使用一组助记词来管理所有的账户的所有币种,在比特币的BIP3 ...

  5. HD钱包生成源码解读

    比特币学习5-HD钱包生成源码解读 前言 本文是bip32.bip39.bip44的源码实现,主要描述了HD钱包的生成过程. HD钱包生成流程: 随机数生成助记词 助记词生成种子 种子生成主私钥 生成 ...

  6. 硬件钱包linux安装,Multibit HD钱包安装使用教程

    原标题:Multibit HD钱包安装使用教程 Multibit是bitcoin.org上面推荐的一个桌面钱包,2016年6月被硬件钱包厂商keepkey收购.目前推出的客户端是HD客户端,可以搭配硬 ...

  7. Whale Alert显示600枚比特币从Mt.Gox冷钱包转出系误报,实为f2pool钱包地址

    Whale Alert数据显示,600枚比特币从Mt.Gox冷钱包转出至未知钱包.经查询,此地址系误报,并非Mt.Gox冷钱包,实为f2pool wallet地址. 文章链接:https://www. ...

  8. 代码结构设计得最好的多链支持的 HD 钱包服务端代码

    代码库地址: https://github.com/SavourDao/savour-hd Savour HD 是 Savour 项目的钱包的 HD. 后端服务,使用 golang 编写,提供 grp ...

  9. 什么是区块链钱包?区块链钱包如何运作?

    什么是区块链钱包?区块链钱包如何运作? 加密货币曾以其暴涨的价值引起轰动.因为加密货币的价值暴涨,区块链钱包开发的需求也在增加.截至2018年底,据报道有超过3000万用户使用钱包进行数字货币交易(据 ...

最新文章

  1. JSONUtil,POJO实体类和JSON互转,
  2. PocoMaker(魅客)
  3. 第五届全国大学生智能汽车竞赛获奖名单
  4. Android之自定义一个环形进度控件
  5. java spring 过滤器_spring中过滤器与拦截器的区别
  6. 一款java代码生成器(我受够了加班),走起!
  7. 服务器2012怎么换桌面背景,2012年职称计算机Windows XP:更改桌面背景和颜色
  8. C语言学习之将一个二维数组的行和列互换,存到另一个二维数组中
  9. 进化之路:线程池来帮忙,却好心办坏事
  10. C与CPP 在线手册查找
  11. Apache Nifi 实战:多表导入实现及填坑 GitChat连接
  12. 从0到1分步实现一个出生日期的正则表达式(JavaScript)
  13. Java发送Http请求,解析html返回
  14. 常见的扫描类型有以下几种:Nmap的SYN、Connect、Null、FIN、Xmas、Maimon、ACK
  15. 自动化机器人 rpa_机器人过程自动化和机器人的出现
  16. SWFObject Flash 增强插件
  17. 夏普科学计算机标准差,夏普比率-标准差-贝他系数
  18. OS福利部落iOS15绕过激活工具,支持最新iOS15.5绕过
  19. flask怎么创建虚拟环境_在Windows OS中创建虚拟环境并在本地运行Flask应用程序
  20. 解决tp5 Could not open input file: think问题

热门文章

  1. Android --- 屏幕方向screenOrientation属性详解
  2. Push to origin/master was rejected解决方法
  3. Android --- no module 问题
  4. idea 提示vue插件_Vue + SpringBoot + MyBatis 音乐网站
  5. 浅谈DCIM平台的6化
  6. Cisco UCS 自述:我不仅仅是服务器, 更是一个完整的系统
  7. jsp九大内置对象和四大作用域_JSP学习3
  8. java arraylist 对象 删除_ArrayList实现删除重复元素(元素不是对象类型的情况)...
  9. Py之pandas:利用where、replace等函数对dataframe格式数据按照条件进行数据替换
  10. Python编程语言学习:python的列表的特殊应用之一行命令实现if判断中的两类判断