目前钱包分为两种:
一种是非确定性(随机)的钱包,就是随机生成多个私钥,钱包管理这些私钥。如果需要成千上万的地址,通过随机的方式来生成私钥,这就需要存储那么多无规律的私钥,这样就很麻烦不好管理。
另一种是确定性(种子)的钱包,就是通过种子可以生成无数的私钥,我们只需要记住种子就可以了。我们在使用钱包时记住的助记词可以生成种子,只要我们保管好助记词,我们的币就能找回来。用一句话来解释助记词:它是私钥的明文显示。
主要流程
1、随机生成128到258位的随机数,称作熵;
2、熵经过一定处理方法,生成助记词;
3、助记词经过密钥延伸函数PBKDF2,生成种子;
4、种子经过HMAC-SHA512算法,生成母密钥;
5、通过CKD(child key derivation)函数,母密钥生成众多子密钥。
从熵到助记词
1、生成一个128到256位的数字,叫做熵,熵的长度是32的整数倍,分别为 128, 160, 192, 224, 256,也就是我们私钥的长度。
2、熵通过SHA256哈希得到一个值,取前面的几位(熵长/32),称为校验和, 所以校验和长度可为 4,5,6,7,8