美文网首页
HD钱包知识点指南

HD钱包知识点指南

作者: 雨影 | 来源:发表于2020-03-21 11:21 被阅读0次

    本资料用于帮助你快速了解HD钱包知识,以及区块链钱包的常用知识点和原理
    不定期更新地址:
    https://docs.qq.com/doc/DYUpaUXFoTXVZa3Bk

    知识大纲

    • 非对称加密
    • 分层确定性(BIP32)
    • 助记词(BIP39)
    • 密钥路径(BIP44)
    • 钱包创建流程
    • 交易流程(粗略)

    非对称加密

    • 非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。

    • 公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是 两个不同的密钥,所以这种算法叫作非对称加密算法。

    • 用私钥对数据加密的过程叫做签名。比特币发送的交易数据都是通过私钥签名之后的hash字符串进行广播和记录的,可以通过公钥解密(验签)验证真实性。

    • 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将公钥公开,需要向甲方发送信息的其他角色(乙方)使用该密钥(甲方的公钥)对机密信息进行加密后再发送给甲方;甲方再用自己私钥对加密后的信息进行解密。甲方想要回复乙方时正好相反,使用乙方的公钥对数据进行加密,同理,乙方使用自己的私钥来进行解密。

    分层确定性(BIP32)

    • BIP32 提案的名字是:Hierarchica- Deterministic Wallets, 就是我们所说的 HD 钱包。

    • 钱包也是一个私钥的容器,我们可以生成一堆私钥(一个人也有很多账号的需求,可以更好保护隐私),而每个私钥都需要备份就特别麻烦的。为了解决这种麻烦,就有了 BIP32 提议: 根据一个随机数种子通过分层确定性推导的方式得到 n 个私钥,这样保存的时候,只需要保存一个种子就可以,私钥可以推导出来,如图:

    image.png

    **助记词(BIP39)

    • BIP32 提案可以让我们保存一个随机数种子(通常 16 进制数表示),而不是一堆秘钥,确实方便一些,不过用户使用起来 (比如冷备份) 也比较繁琐,这就出现了 BIP39,它是使用助记词的方式,生成种子的,这样用户只需要记住 12(或 24)个单词,单词序列通过 PBKDF2 与 HMAC-SHA512 函数创建出随机种子作为 BIP32 的种子。

    • 在线助记词生成转化工具:https://iancoleman.io/bip39/

    • 协议原文:https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki

    密钥路径(BIP44)

    • 通过这种BIP32分层(树状结构)推导出来的秘钥,通常用路径来表示,每个级别之间用斜杠 / 来表示,由主私钥衍生出的私钥起始以 “m” 打头。因此,第一个母密钥生成的子私钥是 m/0。第一个公共钥匙是 M/0。第一个子密钥的子密钥就是 m/0/1,以此类推。

    • BIP44 则是为这个路径约定了一个规范的含义 (也扩展了对多币种的支持),BIP0044 指定了包含 5 个预定义树状层级的结构:

    m / purpose' / coin' / account' / change / address_index

    • m / purpose :固定为 m/44'代表,bip44协议

    • Coin type: 这个代表的是币种,0 代表比特币,1 代表比特币测试链,60 代表以太坊

    • Account: 代表这个币的账户索引,从 0 开始

    • Change: 常量 0 用于外部链,常量 1 用于内部链(也称为更改地址)。外部链用于在钱包外可见的地址(例如,用于接收付款)。内部链用于在钱包外部不可见的地址,用于返回交易变更。 (所以一般使用 0)

    • address_index*: 这就是地址索引,从 0 开始,代表生成第几个地址,官方建议,每个 account 下的 address_index 不要超过 20

    • 协议原文: https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#Change

    钱包创建流程

    • 通过BIP39生成seed(助记词)
    • 通过BIP44生成各个钱包私钥/公钥
    • 公钥钥通过一定的算法(根据主链确定)生成钱包地址

    交易流程(粗略)

    • 第一步:组装生成交易结构体(对象数据流)Data
    • 第二步:通过私钥对Data进行签名,生成签名值hash字符串
    • 第三步:通过节点服务器接口将hash只进行广播
    • 不同主链需要的交易结构体参数是不一样的,

    小结

    • HD 钱包(Hierarchica- Deterministic Wallets)是在 BIP32 中提出的为了避免管理一堆私钥的麻烦提出的分层推导方案。
    • BIP44 是给 BIP32 的分层增强了路径定义规范,同时增加了对多币种的支持。
    • BIP39 则通过定义助记词让种子的备份更友好
    • 目前我们的市面上单到的以太币、比特币钱包基本都遵循这些标准。

    开源钱包推荐**

    资料补充

    相关文章

      网友评论

          本文标题:HD钱包知识点指南

          本文链接:https://www.haomeiwen.com/subject/drwmqhtx.html