自托管备份怎么选:纸、钢板还是 Shamir 分片
助记词不是「钱包的备份」,它是 128 或 256 比特的算术。这篇讲清词里编码了什么、校验和漏掉什么(附实测),以及今晚就能做的恢复演练。
助记词常被说成「钱包的备份」。它不是。它是 128 或 256 比特,用人类能手抄的字母表写出来;你所有的密钥和地址,都是对这些比特做的一套任何兼容设备都能重算的算术。人们把词当成秘密(确实是),却忘了它同时是一份规格说明(必须是)。下面讲:词里编码了什么、校验和真正能抓到什么、备份坏掉的三种方式,以及今晚就能跑的恢复演练。 (助记词备份指南)
词里编码了什么。 BIP39 用 2048 词表、每词 11 比特。我核对了官方英文表:2048 条、无重复、已排序,2048 个前四位字母两两不同——所以钱包会把你写的 aband 补成 abandon。12 词装 132 比特(128 熵 + 4 校验),24 词装 264(256 + 8)。短语里没有别的东西:没有钱包名、没有派生路径、没有网络。门罗走另一条路:1626 词表,1626 个前三字母也两两不同;编码器每次吃 4 字节吐 3 个词——对 little-endian 的 uint32 值 v,依次写 v mod 1626、(v div 1626 + 前一个) mod 1626、(v div 1626² + 前一个) mod 1626,就是 electrum-words.cpp 里那个循环。32 字节的花费密钥于是变成 24 词,再加第 25 个:它不是对全表的校验,而是 seed[crc32(24 个前缀) mod 24]——永远是你自己这 24 个词里的某一个。
校验和真正抓到了什么。 我按真实校验规则,对每种长度各模拟 2 万次「单个词抄错」。BIP39 12 词仍有 6.35% 通过(理论 1/16),24 词 0.395%,接近 1/256。门罗 25 词有 4.2% 通过,这是结构性的、不是 bug:索引是 crc32 mod 24,只要落在你没改动的那个词上,比较就按构造成功,概率 1/24,其余算巧合。反过来读:门罗每 25 次单词抄错有 1 次混过去,12 词 BIP39 是每 16 次 1 次。钱包收下只能证明拼写,不证明完整;校验和对语义没有意见——你手上这份自洽、但第 5 个词本该是另一个词,它照样完美通过。唯一能回答真问题的,是恢复出一个你早知道的地址。
备份坏掉的三种方式。 第一是口令:BIP39 的口令既不存进短语,也不由短语推导,敲成另一个,你会得到一个完全不同、完全合法、余额为零的钱包,毫无报错。两个拿着同样 24 词、口令不同的人,手里是两个无关的钱包,词本身不会告诉你哪个是本意。第二是只有一份、没有冗余——火灾、进水、搬家、行李落机场、后人清抽屉。助记词没有客服台可打。第三是数字副本:相册里会自动同步的照片、同步笔记里的一条、打印队列的缓存、聊天里的截图。这个最该在长期里被在意,因为助记词无法吊销;暴露之后唯一的补救是换新种子并搬走资金,代价是手续费和时间,不是一个开关。 (门罗费用机制)
选什么介质。 纸便宜、好核对,但怕水、怕火、怕揉搓,墨还会被紫外线晒淡。冲字金属能扛火和水几十年,但对「被看见」毫无办法——抽屉里那块板,就是客人能读的那块板。把 24 词拆两半分开存,密码学上成立(缺的那半留下 132 个未知比特),但只在词序保留、且恢复的人知道另外半份存在时才成立。密码管理器里的加密文件,把物理风险换成远程风险加「忘记主密码」的风险,而账号被锁和一场火一样无法挽回。有一条规则高于介质:用口令的话,它永远不和词放在一起。
Shamir 与 SLIP-39。 SLIP-39 在 GF(256) 上逐字节做 Shamir,再把每份分片编码成 1024 词表、每词 10 比特的助记词。128 比特秘密每份 20 词,256 比特每份 33 词。同一秘密的各份共享前两词,同组的各份共享前三词,所以一套分片肉眼可归类——别人捡到也能归类。每份里那个 4 字节 HMAC-SHA256 摘要,让份数不足或来源不匹配的集合直接中止,而不是生成一个错误钱包,这是「自己劈一半」没有的性质。代价是:阈值得写在不跟分片同放的地方,还有一条多数钱包并不原生支持的恢复路径。注意几何:2-of-3 里两份存在一处,就是 1-of-1 外加一堆手续。
恢复演练。 先写下你今天在用的收款地址,再加一个派生出来的第二地址——门罗子地址或比特币第二账户——这样派生路径错了,就没法靠碰巧一致蒙过去。把备份副本(不是在用设备)拿到一台离线备用机上。词用手打、不要粘贴:这也在检验你的抄写对紧张状态下的人是否可读。逐字符比对地址。门罗要把恢复高度设在第一笔交易之前或正好那笔:设高了会静默漏历史,设低了从创世块扫起,几小时。打一笔小额进去,再从恢复出来的钱包花出去,擦掉备用机,在信封上写日期。上次固件更新之后没测过的备份,是假设,不是保险。 (助记词备份指南)
这和一笔真实兑换怎么接上。 下单表单要兑出地址,退款地址可选;创建订单的接口只校验币种代码、金额和地址长度(256 字符),别的什么都不存——没有邮箱、没有账户、也没有可重置的密码。这是有意的:全部恢复责任落在你身上。种子不在了,没有工单、没有申诉能把那个兑出地址背后的密钥重建出来。时序同样不留情:订单从创建起 30 分钟内可付,本地过期后迟到入金还会被回看 6 小时,到 24 小时关闭。打进你已控制不了的地址的钱没被销毁,就在链上明摆着,但你花不了,从你的角度看和丢失没有区别。 (转错网络如何找回)
写作时的实测数字。 2026-10-26 约 18:05 UTC:100 USDT-TRC20 报 0.14772457 XMR,500 报 0.81018058,1,000 报 1.63812328,5,000 报 8.26013651——隐含 676.9、617.1、610.4、605.3 USDT 每 XMR,这个差来自每单固定下限,不是行情。10 LTC 报 0.93171887 XMR,1 XMR 报 10.21937454 LTC,0.001 BTC 报 0.12310131 XMR,该币对下限 19.704235 USDT。只是一个快照;页面实时报价才是能据以行动的数字。兑换是一次性交接,兑出只落一次,你去年测过的那份种子,是那笔钱和一个难看星期之间唯一的东西。 (XMR 换 USDT 退出路线)
反复出现的错。 口令和词写在同一块板上,或者根本没写。第一次测恢复是在钱到账之后。把交易所充值地址当退款地址——那不是你的地址,退款只在同网络退同种资产。相册里会自动同步的种子照片。一个种子同时喂手机钱包和一个本该是冷钱包的钱包。以为「校验通过」就证明副本正确。以及没有记下方案、阈值、派生路径——3-of-5 对继承人来说就是这么变废纸的。备份是自托管里唯一既不能外包、也不能事后验证的一环,所以活很小:写下两个地址,从抽屉那份恢复,逐字比对,转一笔测试金额。对上了,你就在它还便宜的时候买到了确定性。 (转错网络如何找回)