区块链系列(五)之比特币钱包

1. 钱包技术概述

钱包从广义上来讲是一个应用程序,管理密钥和地址,跟踪余额以及创建和签名交易;从狭义上来讲,钱包是指用于存储和管理用户密钥的数据结构,是私钥的容器。

比特币钱包里面不含有比特币,而是含有比特币的密钥链(即可能含有多个密钥对),比特币则是被记录在比特币网络的区块链中。用户用密钥签名交易,证明他们拥有交易输出(他们的钱币),钱币以交易输出的方式存储在区块链中。

根据钱包内的多个密钥之间是否相互关联,将钱包分为两种类型:

  • 非确定性钱包:钱包内多个密钥之间没有关联,每个密钥都是随机数产生。
  • 确定性钱包:钱包内多个密钥之间相互关联,钱包内的所有密钥都是由主密钥派生出来的,主密钥称为种子密钥,有主密钥可以生成全部密钥。种子密钥一般被编码成英文单词,称为助记词

1.1. 非确定性钱包

钱包是随机生成的密钥的集合,密钥之间没有关联,所有的密钥都需要备份它的副本,避免密钥丢失而钱包的资金丢失,非确定性钱包难以管理、备份和导入,因此不推荐使用。

1.2. 确定性钱包

确定性钱包是由种子密钥通过单向离散函数生成其他子密钥的钱包,而种子密钥是随机生成的。种子密钥可以恢复所有已经产生的密钥,因此只需要对种子密钥进行备份和管理即可。

1.3. 分层确定性钱包(HD Wallets (BIP-32/BIP-44))

分层确定性钱包又称HD钱包,HD钱包包含以树状结构衍生的密钥,使得父密钥可以衍生一系列的子密钥,子密钥衍生孙密钥。

HD钱包的优势:

  • 树状组织结构可以用来额外表达组织含义,例如一个分支用来付款,一个分支用来收款。
  • 可以创建一个公共密钥序列而不需要访问相对应的私钥,这可允许HD钱包在不安全的服务器中使用或者在每笔交易中发行不同的公共钥匙。

1.4. 种子密钥和助记词

由一系列英文单词生成种子密钥,这些英文单词被称为助记词,标准由BIP-39定义。目前大多数加密货币钱包通过助记词的方式进行备份恢复和转移。

助记词示例如下:

army van defense carry jealous true garbage claim echo media make crunch

1.5. 钱包的最佳实践

比特币钱包的常用标准:

  • 助记词,基于BIP-39
  • HD钱包,基于BIP-32
  • 多用途HD钱包结构,基于BIP-43
  • 多币种和多账户钱包,基于BIP-44

如果开发比特币钱包,一般要遵循BIP-32、BIP-39、BIP-43和BIP-44标准,构建为HD钱包,通过助记词生成种子密钥进行备份。

2. 钱包技术细节

2.1. 助记码词汇(BIP-39)

助记码词汇是英文单词序列代表用作种子对应确定性钱包的随机数,即由钱包随机生成的,单词及其顺序确定了一组助记词,通过助记词可以创建和恢复钱包及其所有私钥。BIP-39定义了助记词和种子的创建,此处分为九个步骤,1-6是创建助记词,7-9是从助记词创建种子。

2.2. 创建助记词

助记词是由钱包使用BIP-39中定义的标准化过程自动生成的。 钱包从熵源开始,增加校验和,然后将熵映射到单词列表:

1、创建一个128到256位的随机序列(熵)。

2、提出SHA256哈希前几位(熵长/ 32),就可以创造一个随机序列的校验和。

3、将校验和添加到随机序列的末尾。

4、将序列划分为包含11位的不同部分。

5、将每个包含11位部分的值与一个已经预先定义2048个单词的字典做对应。

6、生成的有顺序的单词组就是助记码。

参考:

Copyright © www.huweihuang.com 2017-2018 all right reserved,powered by GitbookUpdated at 2022-05-16 12:51:52

results matching ""

    No results matching ""