恢复钱包时提示助记词无效要从词数、顺序和拼写三处查起
排查之前看一眼旧钱包还打不打得开。硬件钱包还能用 PIN 解锁、里面的币还看得到,就趁它还能用,把币转到一个新生成、备份也核对过的钱包里;旧助记词修不修得好,放到后面再说。
要修旧助记词,得分清是哪一种错。拼写错的词有迹可循:BIP-39 词表里每个词的前四个字母都不重样,写下的词在词表里查不到就是拼错了,再从表里挑最接近的那个换上试。顺序记乱了要分两种情况,一种是抄的时候就抄乱了,一种是设备本来就要求换个顺序输入。整组少了一个词的,Ledger 和 Trezor 的排查页里都找不到补回的办法。
恢复时选错词数也会被判为助记词无效
Ledger 设备恢复时可以选 12、18 或 24 个词。选的长度和手里那份对不上,比如拿 24 个词的助记词选了 18,设备就报助记词无效。碰到这条报错,头一件事是回到长度选择那一步,确认选对了。
词数在规范里不是随便定的。BIP-39 先生成一段随机数(熵),取它 SHA256 哈希值的前几位当校验和接在后面,再把整串切成每 11 位一组,每组对应词表里 0 到 2047 之间的一个编号。熵的长度定了,校验和与词数也就跟着定了:
| 熵(位) | 校验和(位) | 合计(位) | 词数 |
|---|---|---|---|
| 128 | 4 | 132 | 12 |
| 160 | 5 | 165 | 15 |
| 192 | 6 | 198 | 18 |
| 224 | 7 | 231 | 21 |
| 256 | 8 | 264 | 24 |
表里的关系是:校验和位数 = 熵 ÷ 32,词数 = (熵 + 校验和)÷ 11。以 24 个词为例,256 ÷ 32 = 8,(256 + 8)÷ 11 = 24。
Trezor 的情况要多看一层:12 个词和 24 个词的备份用的是 BIP-39 词表,20 个词的备份(单份或多份分片)属于 SLIP-39,用的是另一份词表。手里是 20 个词,就别拿 BIP-39 词表去对拼写。
抄错的单词对照 BIP-39 词表能找到最接近的那个
BIP-39 挑词时有两条讲究:输入前四个字母就能唯一确定一个词;build 和 built、woman 和 women 这种只差一点的词对尽量不收。对照时还要留意 boy 和 box、aware 和 awake 这类相近的词。
Ledger 举过一个例子:设置时抄下的是 pan,恢复时一输就报错。去词表里找,pan 不在表里,最接近的是 pen,换成 pen 再恢复,有可能就进去了。照这个思路逐词过一遍:
- 数一遍纸上的词数,和恢复界面选的长度对上。
- 打开 BIP-39 英文词表,用浏览器的页面搜索(Mac 上 Cmd+F,Windows 上 Ctrl+F)查有疑问的词。只搜单个词,别把整组词连起来敲进任何联网的地方。
- 查不到的词圈出来,在表里找前四个字母、拼法最接近的候选,先试最接近的那个。
- 候选定下来以后,全部用小写、词与词之间一个空格,按原来的顺序重新输入;硬件钱包就直接在设备上输。
- 换了词仍然报无效,回到下一节查顺序,再看有没有重复的词。
助记词本身没法编辑或更改。找到正确的词、钱包也恢复出来以后,重新抄一份干净的,原先那张写错的纸销毁掉,别留两份内容不一样的备份。
顺序记乱的助记词还能排回原来的样子吗?
要看乱在哪一环。用 Trezor Model One 恢复时,屏幕会给出要你输入的词序,这个顺序和你抄写的顺序不一样,得照屏幕的来;Safe 5、Safe 3 和 Model T 是直接在设备上按原顺序输入。用 Model One 的人照着纸上的顺序一路输下去,报错的根子就在这里。
除此之外,顺序要和生成时一模一样。偏差再小也会导致报错,或者得到一组完全不同的公钥和私钥。后一种更麻烦:钱包照常打开,里面却不是你原来的币。校验和本身很短,随机错误里每 256 个就有 1 个查不出来,也帮不上纠错的忙。
能用来排回顺序的,只有你自己留下的线索。纸上每个词前面有编号的,对着编号重排;另外保存过一份备份的,拿两份逐位对照。两样都没有,厂商也帮不上:多次尝试仍恢复不了,说明助记词本身记错了。
旧钱包还能打开就把币转走再换一份新助记词
整组少了一个词,数一下就知道:只剩 11、17 或 23 个,12、18、24 哪一档都选不上。这时能做的,取决于旧钱包还能不能打开:
| 你的处境 | 该做什么 |
|---|---|
| 硬件钱包还能用 PIN 解锁 | 把币转到另一个钱包,用设备生成一份新助记词,再用新助记词建账户 |
| 钱包里没存过币,也没用过 Trezor 密码管理器这类服务 | 清除设备,重新初始化,生成新备份;原来那份抄下来的扔掉,只留清除后生成的新备份 |
| 设备打不开,助记词又输不进去 | 厂商帮不了。丢了备份又进不了钱包,就会永久失去这个钱包的访问权 |
钱包里有币的,Trezor 给出的顺序是:
- 连上 Trezor Suite,用 PIN 解锁设备,等账户加载完。
- 把所有币发到另一个钱包。每一种币都要发,用第三方钱包存过 Trezor Suite 不原生支持的币,也要一并转走;用过 Trezor 密码管理器的,把密码另存一处。
- 逐个确认币都已经转出去。清除之后,这个钱包和里面的账户就再也打不开了。
- 清除设备,重新连接,初始化一个新钱包,生成新的备份。
- 把币从临时那个钱包发回新钱包。
转币时照币安提现到钱包的步骤核对收款地址,地址抄错一位会怎样,另见转账地址抄错一位会把币转到别人那里吗。
新助记词抄完,用 Trezor Suite 里的核对备份(也叫模拟恢复)确认每个词都写对了;清除或重置设备之前、每次升级固件之前,也都该做一次。核对没通过,先重来一遍,可能只是选错了一个词;重来还是输不对,就照上面的顺序再换一份。新备份写在纸上离线保存,别拍照、别存网盘,原因在助记词截图存在相册或网盘里,删掉就没事了吗里。
整个过程里,助记词不交给任何人。Ledger 也声明,它从不向用户索要这 24 个助记词。MetaMask 提醒「切忌与任何人分享您的私钥助记词!」,因为这组词能被拿去盗走你所有账户里的资产。不管对方是谁、说能帮你补词还是排顺序,助记词都不给。