BIP39(Bitcoin Improvement Proposal 39)定义了助记词生成的标准,它的核心目的是通过易于记忆的助记词来表示私钥或种子。BIP39 是一种基于词汇的助记词生成方案,常用于多种加密货币钱包。
BIP39 标准的关键点:
1. 熵 (Entropy)
• BIP39 依赖于一个随机生成的熵(通常为 128 位、160 位、192 位、256 位等),熵的长度决定助记词的数量:
• 128 位熵 → 12 个助记词
• 160 位熵 → 15 个助记词
• 192 位熵 → 18 个助记词
• 256 位熵 → 24 个助记词
• 熵是一个随机生成的二进制值,用来表示信息。
2. 校验码 (Checksum)
• 在生成助记词时,BIP39 通过对熵执行SHA-256哈希,然后从哈希值中提取一定数量的位作为校验码。
• 这意味着每个助记词的选择都必须符合一定的校验规则,从而避免生成无效的助记词。
3. 词汇表 (Word List)
• BIP39 使用2048 个单词作为词汇表(通常为英文),每个单词代表 11 位二进制数据。
• 所以每个助记词能够代表 11 个二进制位。通过组合多个单词,你可以存储更多的信息。
• 如果熵的长度是 128 位,那么对应的助记词会由 12 个单词构成,每个单词代表 11 位数据,总共就是 128 位。
• BIP39 还支持其他语言(如法语、德语、日语、韩语等),每种语言都有自己的 2048 个单词的词汇表。
4. 助记词生成过程:
1. 生成熵(128 位、160 位等)。
2. 计算校验码:对熵进行 SHA-256 哈希,取哈希值的前 N 位作为校验码(N = 熵长度/32)。
3. 组合熵和校验码:将熵和校验码合并在一起。
4. 将二进制数据分割成 11 位:将合并后的二进制数据按 11 位一组切分。
5. 根据 11 位索引查找词汇表:通过将每 11 位数据映射到 2048 个单词的词汇表中,生成助记词。
5. 助记词的生成和恢复:
• 生成助记词:通过上述步骤生成的助记词可以唯一地表示私钥或种子。
• 恢复助记词:通过助记词,可以将其转换为原始的熵,再通过 BIP32 或 BIP44 等标准恢复私钥和钱包地址。
BIP39 的流程图
1. 生成熵 (128-bit, 160-bit, 192-bit, 256-bit)
2. 计算校验码:SHA-256 哈希 → 校验位
3. 将熵和校验码组合成一个二进制字符串
4. 将二进制字符串拆分成 11 位的块
5. 查找词汇表,映射到助记词
BIP39 助记词的示例
假设有 128 位熵,经过计算,生成了 12 个助记词:
pistol enact swarm jacket face hold ketchup slender rebel pork eyebrow
总结
BIP39 标准遵循以下步骤生成助记词:
1. 生成熵;
2. 计算并附加校验码;
3. 根据熵和校验码映射到一个单词列表中,每个单词代表 11 位二进制数据;
4. 最终生成合法的助记词。
通过这种方式,BIP39 将复杂的加密信息转化为一组易于记忆的单词组合,从而简化了私钥和钱包的备份和恢复过程。
BIP39 标准的关键点:
1. 熵 (Entropy)
• BIP39 依赖于一个随机生成的熵(通常为 128 位、160 位、192 位、256 位等),熵的长度决定助记词的数量:
• 128 位熵 → 12 个助记词
• 160 位熵 → 15 个助记词
• 192 位熵 → 18 个助记词
• 256 位熵 → 24 个助记词
• 熵是一个随机生成的二进制值,用来表示信息。
2. 校验码 (Checksum)
• 在生成助记词时,BIP39 通过对熵执行SHA-256哈希,然后从哈希值中提取一定数量的位作为校验码。
• 这意味着每个助记词的选择都必须符合一定的校验规则,从而避免生成无效的助记词。
3. 词汇表 (Word List)
• BIP39 使用2048 个单词作为词汇表(通常为英文),每个单词代表 11 位二进制数据。
• 所以每个助记词能够代表 11 个二进制位。通过组合多个单词,你可以存储更多的信息。
• 如果熵的长度是 128 位,那么对应的助记词会由 12 个单词构成,每个单词代表 11 位数据,总共就是 128 位。
• BIP39 还支持其他语言(如法语、德语、日语、韩语等),每种语言都有自己的 2048 个单词的词汇表。
4. 助记词生成过程:
1. 生成熵(128 位、160 位等)。
2. 计算校验码:对熵进行 SHA-256 哈希,取哈希值的前 N 位作为校验码(N = 熵长度/32)。
3. 组合熵和校验码:将熵和校验码合并在一起。
4. 将二进制数据分割成 11 位:将合并后的二进制数据按 11 位一组切分。
5. 根据 11 位索引查找词汇表:通过将每 11 位数据映射到 2048 个单词的词汇表中,生成助记词。
5. 助记词的生成和恢复:
• 生成助记词:通过上述步骤生成的助记词可以唯一地表示私钥或种子。
• 恢复助记词:通过助记词,可以将其转换为原始的熵,再通过 BIP32 或 BIP44 等标准恢复私钥和钱包地址。
BIP39 的流程图
1. 生成熵 (128-bit, 160-bit, 192-bit, 256-bit)
2. 计算校验码:SHA-256 哈希 → 校验位
3. 将熵和校验码组合成一个二进制字符串
4. 将二进制字符串拆分成 11 位的块
5. 查找词汇表,映射到助记词
BIP39 助记词的示例
假设有 128 位熵,经过计算,生成了 12 个助记词:
pistol enact swarm jacket face hold ketchup slender rebel pork eyebrow
总结
BIP39 标准遵循以下步骤生成助记词:
1. 生成熵;
2. 计算并附加校验码;
3. 根据熵和校验码映射到一个单词列表中,每个单词代表 11 位二进制数据;
4. 最终生成合法的助记词。
通过这种方式,BIP39 将复杂的加密信息转化为一组易于记忆的单词组合,从而简化了私钥和钱包的备份和恢复过程。