术语表 /钱包与托管
助记词词表
- 助记词词表是什么?
- 助记词词表是钱包用来将随机比特转换为可书写词语的固定词典,BIP-39共发布了十份词表,每种受支持的语言和文字各对应一份。
规定于 BIP-39。
单词表是一本词典,而不是秘密:任何人都可以下载,您的安全取决于选了哪些单词以及它们的顺序。每份官方单词表恰好有2,048个词条,因此备份中的每个单词只承载11位,不会更多。除非有理由不这样做,否则请用英文抄写您的备份,因为规范本身强烈不建议使用其余九种语言。
运作方式
每份助记词单词表都有2,048个词条,因为2,048是2的11次方。这使得映射是算术运算,而不是查表的魔法:把钱包的熵和校验和切成每段11位的片段,把每个片段读作0至2,047之间的数字,然后输出位于该位置的词条。在英文文件中,位置0是 "abandon",位置2,047是 "zoo"。
编码器只关心位置。每个文件按字母顺序存储,使钱包可以通过二分查找或前缀树找到输入的单词,而不必逐一扫描2,048行。由于每种语言对自己的词汇排序,索引500在英文中是 "direct",在法文中是 "dauphin"。
BIP-39为一份好的单词表提出三个目标:输入四个字母就应能确定一个单词,应排除 "build" 与 "built"、"woman" 与 "women" 这类近似重复的词,并且整份表应按顺序排列。英文完全达到了第一项和第三项。词条长度为三至八个字母,2,048个词条中没有任何两个共享同一个四字母前缀。
第二个目标比听上去宽松。规范自己举的例子都得到了遵守,"build"、"woman" 和 "quick" 在文件中,而 "built"、"women" 和 "quickly" 不在,但许多只差一个字母的相邻词保留了下来:"angle" 与 "ankle"、"action" 与 "auction"、"awake" 与 "aware" 都在同一份2,048个词条的表中。抄写备份时请读完整个单词,而不是只看它的大致形状。
四字母的承诺有一个值得了解的缺口。英文词条中有103个只有三个字母,其中49个是同一文件中某个更长词条的开头:"act" 与 "action"、"actor"、"actress" 和 "actual" 相邻,"art" 与 "artefact"、"artist" 和 "artwork" 相邻。四次按键根本无法选中 "act",因此钱包必须接受空格或点选建议词。书面缩写仍然安全,因为把每个词条截成四个字母后仍有2,048个互不相同的字符串;需要分隔符的是实时输入。
除英文外还有九种翻译:日语、韩语、西班牙语、简体和繁体中文、法语、意大利语、捷克语和葡萄牙语。每种都按各自公布的规则构建。法语词条为五至八个字母,不含表示国籍的词,也不含带扬抑符或软音符的字母。意大利语排除重复的元音,并按其自身规则排除 "words that remind negative/sad/bad things"。捷克语排除所有带变音符的字母,其作者称这是最困难的任务,因为三分之一的捷克语字母带有变音符。
跨语言的冲突是无人提及的部分。西班牙语与其他任何语言都没有相同的词条,因此一个西班牙语单词就能确定整个助记词。英文和法文就没有这么整齐:有100个单词同时出现在两个文件中,其中有 "abandon"、"orange"、"piano"、"puzzle" 和 "village",而这100个单词在两个文件中没有一个位于相同的索引。"abandon" 在英文中是0,在法文中是1。
这一差异之所以重要,是因为种子来自您输入的字母,而不是背后的索引。BIP-39对连接后的句子本身进行拉伸,因此仅由这100个共有单词组成的助记词,在两种语言设置下会得到相同的种子,而根据索引计算的校验和在设置错误的语言下通常会拒绝它。真正翻译一条助记词,即把每个单词换成另一个文件中相同索引的单词,会改变句子本身,因此会得到一个完全不同的钱包。
购买比特币时为何重要
从2,048个词条的单词表中取出的二十四个单词,无论编码的是256位还是72位随机性,看上去都一模一样。单词表是一种转录格式,不能证明其背后数字的质量,这正是本站评测所述的 Coldcard 缺陷五年多未被发现的原因:自2021年3月起,一个构建错误把种子生成导向了软件随机数生成器,使有效搜索空间在 Mk2 和 Mk3 上约为40位,在 Mk4、Mk5 和 Q 上约为72位(以上为 Coinkite 给出的数字),而目标是128位。修复后的固件于2026年7月31日发布。印出的单词从未显得有任何不同,其中也没有任何东西能警示任何人。
语言问题在本站的231个国家指南中的影响各不相同。马德里、布拉格或大阪的读者可能会被钱包应用提供本地化的文件,而 BIP-39本身直言,绝大多数钱包只支持英文,并强烈不建议使用其他语言。翻译后的文件现在解决了转录问题,日后却造成恢复问题,因为提供该选项的钱包可能已经不存在,而替代的钱包可能只能读取英文。日语还有第二个陷阱:其助记词使用表意空格而不是 ASCII 空格,因此在错误的键盘上重新输入的助记词可能看上去正确,却会被错误地拆分。
本站评测的一些钱包完全回避了这一选择。Tangem 评分为3.8,以两张卡一套售价$59.90或三张卡一套售价$69.90出售,在卡内生成密钥,默认不显示任何助记词,因此没有需要挑选的文件,也没有需要拍照的手写记录。这是对单词表所造成的问题的一个真正的解答,同时也有它自己的代价,评测中有详细说明。
为何 Trezor Safe 5会给您二十个单词
Trezor Safe 5支持12、20和24个单词的备份,而20不是 BIP-39的长度。BIP-39只生成12、15、18、21和24个单词,不会生成其他长度,因此二十个单词来自 SLIP-39,即 BIP-39的作者自己提出作为后继方案的 Shamir 方案。SLIP-39有自己的单词表,恰好有1,024个单词,大小只有一半,因为它在每个单词中装入10位,而不是11位。
这两份单词表并不相互独立。SLIP-39的1,024个单词中有553个也出现在 BIP-39的英文文件中,因此无法通过阅读词汇来区分这两种方案。请改为数一数单词的个数。SLIP-39还通过规则弥补了三字母的缺口:不短于四个字母,不长于八个字母,所有词条的四字母前缀均唯一,任意两个词条之间的 Damerau-Levenshtein 距离至少为2。它只支持英文,并明确说明了这一点,指责此前的 "arbitrary wordlists" 使用户困惑并损害互操作性。
助记词词表 vs 助记词
助记词单词表是公开的,助记词不是。单词表是公开代码库中的一个文件,每个 BIP-39钱包都带有一份副本;您的助记词则是您的设备从中取出的特定的12或24个词条,并按取出的顺序排列。下载英文文件不会向攻击者透露任何信息,就像拥有一本词典并不能帮助任何人猜出一个句子。当客服账户、浏览器扩展或“钱包验证器”页面要求您对照官方单词表核对您的单词时,请记住这一区别:单词表无需核对,这种要求针对的始终只是您的助记词。