本资料用于帮助你快速了解HD钱包知识,以及区块链钱包的常用知识点和原理
不定期更新地址:
https://docs.qq.com/doc/DYUpaUXFoTXVZa3Bk
知识大纲
- 非对称加密
- 分层确定性(BIP32)
- 助记词(BIP39)
- 密钥路径(BIP44)
- 钱包创建流程
- 交易流程(粗略)
非对称加密
-
非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。
-
公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是 两个不同的密钥,所以这种算法叫作非对称加密算法。
-
用私钥对数据加密的过程叫做签名。比特币发送的交易数据都是通过私钥签名之后的hash字符串进行广播和记录的,可以通过公钥解密(验签)验证真实性。
-
非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将公钥公开,需要向甲方发送信息的其他角色(乙方)使用该密钥(甲方的公钥)对机密信息进行加密后再发送给甲方;甲方再用自己私钥对加密后的信息进行解密。甲方想要回复乙方时正好相反,使用乙方的公钥对数据进行加密,同理,乙方使用自己的私钥来进行解密。
分层确定性(BIP32)
-
BIP32 提案的名字是:Hierarchica- Deterministic Wallets, 就是我们所说的 HD 钱包。
-
钱包也是一个私钥的容器,我们可以生成一堆私钥(一个人也有很多账号的需求,可以更好保护隐私),而每个私钥都需要备份就特别麻烦的。为了解决这种麻烦,就有了 BIP32 提议: 根据一个随机数种子通过分层确定性推导的方式得到 n 个私钥,这样保存的时候,只需要保存一个种子就可以,私钥可以推导出来,如图:
**助记词(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 则通过定义助记词让种子的备份更友好
- 目前我们的市面上单到的以太币、比特币钱包基本都遵循这些标准。
开源钱包推荐**
- Imtoken:https://github.com/consenlabs
- 秘猿Cyton钱包:https://github.com/cryptape
- Essentia-iOS:https://github.com/essentiaone/Essentia-iOS
- TrustWallet:https://github.com/TrustWallet
- breadwallet:https://github.com/breadwallet
网友评论