Skip to content

Latest commit

 

History

History
49 lines (28 loc) · 3.34 KB

ch05.md

File metadata and controls

49 lines (28 loc) · 3.34 KB

第五章 钱包

重点词汇

钱包是私钥的容器

非确定性(随机)钱包和确定性(种子)钱包

HD wallet = Hirachy Deterministic wallet (分级确定性钱包)

种子=助记词 BIP39
HD钱包 BIP32 多用途HD钱包结构,基于BIP-43
多币种和多帐户钱包,基于BIP-44

助记词的生成流程

助记词生成种子

BIP39助记词生成器

HD钱包中的子密钥,无法与非确定性密钥进行区分。(换句话说,他们长得一样)除非有链码(chain code)、密钥及密钥的索引,才能用来发现这种层级结构。

一个扩展密钥包括一个私钥(或者公钥)以及一个链码。

两种衍生子公钥的方法:或者通过子私钥,再或者就是直接通过母公钥(+链码chain code)。

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

BIP-44指定了包含5个预定义树状层级的结构:

m / purpose' / coin_type' / account' / change / address_index

  • 第一层的purpose总是被设定为44'。
  • 第二层的“coin_type”特指币种并且允许多元货币HD钱包中的货币在第二个层级下有自己的亚树状结构。目前有三种货币被定义:Bitcoin is m/44'/0'、Bitcoin Testnet is m/44'/1',以及 Litecoin is m/44'/2'。
  • 树的第三层级是“account”,这可以允许使用者为了会计或者组织目的,而去再细分他们的钱包到独立的逻辑性亚账户。 举个例子,一个HD钱包可能包含两个比特币“账户”:m/44'/0'/0' 和 m/44'/0'/1'。每个账户都是它自己亚树的根。
  • 第四层级就是“change”。每一个HD钱包有两个亚树,一个是用来接收地址一个是用来创造找零地址。注意无论先前的层级是否使用强化衍生,这一层级使用的都是常规衍生。这是为了允许这一层级的树可以在不安全环境下,输出扩展公钥。
  • 被HD钱包衍生的可用的地址是第四层级的子级,就是第五层级的树的“address_index”。比如,第三个层级的主账户收到比特币支付的地址就是 M/44'/0'/0'/0/2。表5-7展示了更多的例子。

思考题:

  1. HD