与普通人想像的不同,钱包里面没有比特币,有的只是含私钥/公钥对的密钥链。用户使用密钥签名交易,从而证明他们拥有交易输入,钱币以交易输出的形式存储在区块链中。 比特币中有两种类型的钱包,一种称为非确定性钱包,一种称为确定性钱包,它们的区别在于前者保存的多个密钥没有相互关联,而后者所有的密钥都是从一个主密钥派生而来,这个主密钥即为种子。 确定性钱包中所有密钥都相互关联,如果有原始种子,则可以再次生成全部密钥。确定性钱包中使 用了许多不同的密钥推导方法。最常用的推导方法是使用树状结构,称为分级确定性钱包或 HD钱包。
引子
《十篇文章带你精通比特币》通过十篇主题文章带你更加系统的理解比特币,这篇文章我们就从助记词讲起。只所以从助记词开始,是因为大部分都需要用到钱包,在使用钱包过程中首先要遇到的就是助记词。1、关于助记词
HD钱包具有管理多个密钥和地址的强大机制。由一系列英文单词生成种子是个标准化的方法,这样易于在钱包中转移、导出和导入,如果 HD钱包与这种方法相结合,将会更加有用。这些英文单词被称为助记词,标准由BIP-39 定义。
助记码词汇是英文单词序列代表用作种子对应所确定性钱包的随机数。单词的序列足以重新创建种子,并且从种子那里重新创造钱包以及所有私钥。
在首次创建钱包时,带有助记码的、运行确定性钱包的钱包的应用程序将会向使用者展示一个 12 至 24 个词的顺序。单词的顺序就是钱包的备份。它也可以被用来恢复以及重新创造应用程序相同或者兼容的钱包的密钥。
BIP-39 定义了助记符码和种子的创建过程,该过程分为两部分: 1-6步是创建助记词,7-9步是从助记词到种子。
2、创建助记词
钱包从熵源开始,增加校验和,然后将熵映射到单词列表:1、创建一个 128 到 256 位的随机序列(熵)。
2、对随机序列进行 SHA256
运算,取前 熵长/ 32
位,作为随机序列的校验和。
3、将校验和添加到随机序列的末尾。
4、将序列划分为包含 11 位的不同部分。
5、将每个包含 11 位部分的值与一个已经预先定义 2048 个单词的字典做对应。
6、生成的有顺序的单词组就是助记码。
下图展示了如何用熵来生成助记词
熵数据的大小和助记词的长度之间的关系
熵(bits) | 校验和(bits) | 熵+校验和(bits) | 助记词长度(words) |
---|---|---|---|
128 | 4 | 132 | 12 |
160 | 5 | 165 | 15 |
192 | 6 | 198 | 18 |
224 | 7 | 231 | 21 |
256 | 8 | 264 | 24 |
作者:乔疯