术语表 /地址与密钥
钱包导入格式
又称 WIF。
- 钱包导入格式是什么?
- 钱包导入格式是用于在钱包之间转移单个私钥的 Base58 编码,它用一个网络字节和一个校验和包裹原始的32个字节。
WIF 字符串是一个密钥,而不是一个钱包:导入它只会转移锁定在该密钥上的币,不会转移其他任何东西。主网密钥在对应公钥未压缩时以5开头,在已压缩时以 K 或 L 开头,长度为51或52个字符。请像对待助记词那样对待这串字符,因为任何人只要读到它就可以动用这些币。
运作方式
钱包导入格式的作用,是让原始密钥在传输时不易出现输入错误。取密钥的32个字节,在前面加上一个版本字节(主网为0x80,测试网为0xEF),如果该密钥将与压缩公钥搭配使用,则在末尾追加0x01,然后附上四个校验和字节,并将整个数据用 Base58Check 编码。版本字节决定了开头那个易于辨认的字符,而可选的压缩标志则使字符串长度从51个字符增加到52个字符。
这两种变体比看上去更重要。末尾的0x01 完全不会改变密钥本身,它只告诉导入密钥的钱包应推导哪种形式的公钥,从而应查看哪个地址。如果弄错,钱包会显示余额为零,而这些币其实安然存放在另一个地址上。
校验和可以在造成损失之前发现抄写错误。钱包解码 WIF 字符串时如果发现校验和不匹配,就会直接拒绝,因此错一个字符只会得到一条错误提示,而不是一个空钱包。校验和无法做到的,是保护一个已被他人读取过的密钥。
在哪里会遇到它
现代钱包生成的内容都不以 WIF 字符串的形式提供。遵循 BIP-32的助记词钱包管理着数以千计的密钥,没有理由导出其中某一个,因此 WIF 几乎只出现在较旧的资料中:由浏览器生成器打印的纸钱包、从2013年以前的桌面软件中取出的密钥、由密钥生成工具产生的靓号地址,以及藏在 Casascius 实物币全息图下方的字符串。
将这样的密钥导入当前钱包有两种方式,二者的区别并非无关紧要。
导入会把密钥添加到您的钱包中,并让它继续有效。钱包此后可以动用这些币,但任何见过该打印件、其照片或生成它的设备的人同样可以。清扫则会构建一笔交易,将全部余额转入由您自己的助记词推导出的新地址,此后旧密钥便不再控制任何资产。除非有具体理由,否则请选择清扫,并假定任何曾存在于纸上、截图中或云端备份里的密钥都已泄露。
还有一个习惯值得保持:输入网站的 WIF 字符串就等于丢了。要求输入它的生成器页面、余额查询工具和“钱包验证器”,其目的就是收集密钥,这些币通常在几秒内就会被转走。
钱包导入格式 vs 助记词
WIF 字符串只承载一个密钥,而助记词承载的是整个钱包的根。按照 BIP-39,12个单词的助记词编码128位熵,24个单词的助记词编码256位熵,钱包从这个根出发,沿所有推导路径推导出其将来要用到的每一个密钥,永远如此。恢复助记词可以找回整个钱包,包括您从未记录过的地址。恢复 WIF 只能找回一个密钥及其名下的币,因此导出密钥是为旧资金准备的恢复工具,而不是一种备份策略。