BIP39标准定义了钱包助记词和种子生成规则。
通过九个步骤即可生成钱包助记词和种子:
> 步骤 1~6 生成助记词
> 步骤 7~9 把前六步生成的助记词转化为 BIP32 种子
【BIP39-生成助记词】
1.生成一个长度为 128~256 位 (bits) 的随机序列(熵);
2.取熵哈希后的前 n 位作为校验和 (n= 熵长度/32),就可以创造一个随机序列的校验和;
3.将校验和添加在随机序列(熵)的末尾;
4.将序列化分为包含11位的不同部分;
5.将每个包含11位不分的值与一个已经预先定义2048个单词的字典作对应;
6.生成的有顺序的单词组就是助记词。
(步骤看下图:)

在上面的例子中,我们选取了长度为128位的熵,来生成了有12个单词的助记码。在实际的应用中,熵的长度越长,校验码的长度和助记词的长度也会相应的增长。下图展示了熵数据的大小和助记词的长度之间的关系:
步骤一.随机序列的长度为【128,160,192,224,256】。(熵一定是32的倍数,so熵是16进制数的序列)
步骤二.校验和的长度为【4,5,6,7,8】。(熵/32=校验和)
步骤三+步骤四:随机序列一定是11的倍数,平均划分为不同的11位倍数。
步骤五:与2048个单词的预定义字典作对应。
步骤六:生成助记词的数量:(熵+校验和)/11=助记词的数量。

BIP39标准就是为了解决助记词的需求,通过随机生成12~24个容易记住的单词,单词序列通过PBKDF2与HMAC-SHA512函数创建出随机种子作为BIP32的种子。
参考内容:
1、本文部分内容摘自《精通比特币》第一版中译本,特此说明并致谢。
网友评论