详解区块链HD钱包

区块链

Winter

2021-09-06

了解区块链的同学,应该都接触过钱包。我们在区块链上收发资产都需要通过钱包来完成。要了解HD钱包我们要知道为什么会出现HD钱包,现在有很多的单币种钱包,例如如elctron-bch,它只针对bch,那么你需要记住bch的一串私钥。然而面对海量的链,如果每条链用户都需要去存一份私钥的话,那对用户会产生极大的困扰。因此HD钱包就孕育而生,它的出现让用户只需要记住一串12或者24个单词组成的字符串就可以让用户操控所有的链,操控所有的币。

 

首先我们先了解下面的概念,可以帮助大家更好的去理解:

公钥:相当于钱包的地址,可理解成银行账户

私钥:非常重要,相当于银行卡号+银行卡密码

助记词: 等于私钥=银行卡号+银行卡密码

 

什么是HD钱包?HD 钱包全称为是分层确定性(Hierarchical Deterministic)钱包,何为分层确定性,直观的就是,在你使用钱包的时候,你仅仅使用了一串助记词就可以操控所有的币。

它的原理就是,一个助记词生成所有的币种的私钥,再由私钥生成对应的地址,然后钱包再对某个币种进行转账的时候,使用相应的私钥去签名再发送交易。

以上的步骤,简单的可以按照如下概括:

  1. 1. 从2048个固定的单词列表中,取12或这个24个单词组成你需要的助记词
  2. 2. 通过助记词生成种子
  3. 3. 使用种子生成主密钥
  4. 4. 使用主密钥按照各个链的规定路径推导生成子秘钥
  5. 5. 使用生成子秘钥推导生成孙秘钥,生成的第一个一般都是大家的持有账户了

 

所以如果你有一串助记词的话,那么你到所有的HD钱包生成所有链的地址都是相同的,因为每个链都有固定的推导路径,比如:Btc:m/44'/0'/0’

Eth:m/44'/60'/0'

 

在JS中也有相对应的库来处理这些功能:

■BIP39

主要处理助记词相关:生成助记词,校验助记词,从助记词生成种子…

■BIP32

种子处理,推导公私钥

 

在各个环节中推导作用如下所示:

第4289篇《详解区块链HD钱包》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

0条评论