1. Masster Seed得到子公钥、子私钥

由主私钥和链码,再结合子密钥索引(索引是一个 4Byte 序号),通过 HMAC-SHA512 衍生出子密钥。

父级私钥 --> 子级公钥有两种途径

  • 父级私钥 --> 子级私钥, 子级私钥 --> 公钥
  • 父级私钥 --> 父级公钥, 父级公钥 --> 子级公钥

HMAC-SHA512(Key, data) = 64Byte子密钥 = 左侧32Byte子密钥 + 右侧32Byte ChainCode
Key: 父级的 ChainCode
data:父级公钥(33Byte)+索引拼接
链码ChainCode:用来引入确定性随机数据,使得索引不能充分衍生其他的子密钥。

2. 已知父级私钥,由父级私钥=>子级私钥=>子级公钥
Step1.1. 父级私钥->父级公钥
Step Mid. HMAC-SHA512中间过程
Step1.2. 子级私钥 = 左侧32Byte 子密钥 + 父级私钥

有个椭圆曲线和是否为零的校验;校验通过则是一个合法的子级私钥,不合法则会跳过当前索引。
Step1.3. 子级私钥->子级公钥

3. 已知父级公钥,由父级公钥 =>子级公钥

如图Step Mid, step2.1 和step2.2。

(ParentPrevKey + LeftBytes) * P = ParentPrevKey * P + LeftBytes * P

=>

子级公钥 = 父级公钥 + ECC(左侧的 32Byte子密钥)

说明:椭圆曲线是阿贝尔群, PubKey = PrevKey * P, P 是特定椭圆曲线上常数, 其中 LeftBytes * P 即为 ECC(左侧的 32Byte子密钥);

【参考】

[1] HMAC算法可参考"HMAC(2)哈希运算消息认证码HMAC"
[2] github wiki BIP 0032
[3] github bip-0032.mediawiki

比特币钱包(2) BIP32 HD钱包之生成子密钥相关推荐

  1. 比特币钱包(3) BIP32 HD钱包之密钥树

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

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

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

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

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

  4. HD钱包生成源码解读

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

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

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

  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. 以太坊钱包开发系列 - 创建钱包账号

    想知道更多关于区块链技术知识,请百度[链客区块链技术问答社区] 链客,有问必答!! 以太坊去中心化网页钱包开发系列,将从零开始开发出一个可以实际使用的钱包,本系列文章是理论与实战相结合,一共有四篇:创 ...

最新文章

  1. 不再写死,SpringBoot实现动态增删启停定时任务
  2. ssd手 和方向检测
  3. AMD Developer Center有关ATI Stream的内容
  4. java 多线程同步问题_Java多线程同步问题:一个小Demo完全搞懂
  5. html点击关闭代码,怎样开放和关闭html代码?
  6. qt-sdk-linux,在linux系统上安装qt-sdk步骤.doc
  7. __weak 修饰符
  8. 产品销售的过程中,价值是不断被定义和挖掘的
  9. 阿里云推出企业级智能协同办公方案 云桌面、云AP、云客服一应俱全
  10. 重塑层次化索引stack
  11. 关于git远程分支操作
  12. 手机解开加密excel表格xlsx,忘记excel表格xlsx密码如何找回?
  13. bilibili执行董事陈睿:我在进B站之前是一个正常人
  14. 短视频行业深度(一)快手科技:私域筑垒,公域进军.PDF
  15. Android 音视频难学?音视频(流媒体)开发学习也有套路
  16. SAP 会计凭证带税码过账
  17. 谷歌股价跌的越多,我们买的越多
  18. 计算机内存与外存有什么特点,为什么计算机要分内存与外存,内存与外存各有什么特点?...
  19. python 入门总结(一)
  20. Java基本语法——数组

热门文章

  1. 模拟六:STEMA 考试选择题模拟练习试卷(中级组)及答案 + 自我解题笔记
  2. 【Python】青少年蓝桥杯_每日一题_5.27_画菱形
  3. sql 不等于空_SQL的简单查询
  4. 动环监控系统的组成都有什么呢?
  5. IT运维服务管理中知识
  6. 综合布线成数据中心建设和运营的重要课题
  7. 6.7级地震!北海道数据中心陷最长停电危机!
  8. java什么是服务治理平台_Java | Spring Cloud 是如何实现服务治理的
  9. 成功解决D8016“/ZI”和“/Gy-”命令行选项不兼容
  10. ML之GB:GB算法相关论文、相关思路、关键步骤、代码实现、配图集合、案例应用之详细攻略