#bip-39 #mnemonic #bitcoin #crypto #binary-encoding #binary-representation

no-std bip39-dict

BIP39 字典及其用于在单词和二进制表示之间转换的 API

4 个版本

0.1.3 2023 年 10 月 5 日
0.1.2 2023 年 10 月 3 日
0.1.1 2022 年 4 月 1 日
0.1.0 2022 年 3 月 24 日

#1553 in 魔法豆

Download history 37/week @ 2024-04-08 46/week @ 2024-04-15 76/week @ 2024-04-22 35/week @ 2024-04-29 58/week @ 2024-05-06 48/week @ 2024-05-13 50/week @ 2024-05-20 30/week @ 2024-05-27 45/week @ 2024-06-03 36/week @ 2024-06-10 35/week @ 2024-06-17 49/week @ 2024-06-24 63/week @ 2024-07-01 111/week @ 2024-07-08 26/week @ 2024-07-15 32/week @ 2024-07-22

238 每月下载量
2 个包中使用(通过 cardano-sdk

MIT/Apache

300KB
12K SLoC

BIP39 字典

BIP39 字典编码/解码

BIP39 字典为多种语言提供一组 2048 个顺序特定的单词。

每个单词代表一个 11 位索引,这些索引组合在一起,通过添加一些校验位(作为填充)来表示二进制编码,这允许编码任何任意数据流。

此包可以用于生成标准的 BIP39 数据,但也提供了放松标准以获得更多功能的能力。

校验和的最大长度允许为 32 字节(256 位),目前使用的校验和始终是 SHA2-256。在未来的某个时刻,这也可能被定制化。

以下关系必须成立才能进行有效的解码/编码

length_bytes(data) * 8 + checksum = number_of(words) * 11

标准 BIP39 编码使用以下值

单词 比特 完整字节 校验位
12 132 16 (128) 4
15 165 20 (160) 5
18 198 24 (192) 6
21 231 28 (224) 7
24 264 32 (256) 8

但通过放松 BIP39 标准,我们可以使校验和可变,并使所有单词组合有效

单词 比特 完整字节 剩余位 标准
1 11 1 (8) 3
2 22 2 (16) 6
3 33 4 (32) 1
4 44 5 (40) 4
5 55 6 (48) 7
6 66 8 (64) 2
7 77 9 (72) 5
8 88 11 (88) 0
9 99 12 (96) 3
10 110 13 (104) 6
11 121 15 (120) 1
12 132 16 (128) 4
... ... ... ...
... ... ... ...
15 165 20 (160) 5
... ... ... ...
... ... ... ...
18 198 24 (192) 6
... ... ... ...
... ... ... ...
21 231 28 (224) 7
... ... ... ...
... ... ... ...
24 264 32 (256) 8
24 264 33 (264) 0
... ... ... ...
... ... ... ...
27 297 37 (296) 1

谢谢

此包受到了 rust-cardano bip39 实现,以及字典数据和测试向量的影响。

依赖项

~755KB
~15K SLoC