如何低成本制作助记词板

熟悉加密货币的都知道,想要真正持有资产,就必须把资产转到自己的钱包里,而要长久保存钱包,就要用到 助记词板。
助记词板 的目的是,是用打孔,拼字,雕刻等手段,把一段代表着密钥的文字保存在耐火耐腐蚀的金属板上,实现长久保存的目的。
现在市面上的 助记词板,种类少,价格昂贵,动辄几百,我今天来介绍一个低成本制作 助记词板 的方法。
有人会说,你都玩币了,还在乎这点小钱么,抱歉,作者本人当前没有持有任何加密资产,过去也没赚到过一分钱,不信你看我这穷困潦倒的 B 样子。
我本人其实更多的是对 加密货币 的 加密 那一部分感兴趣,通过 密钥派生,可以派生出 GPG 密钥 和 SSH 密钥。配合 Trezor 等 硬件钱包,可以用于日常网络安全,这里先不展开讨论。
工具
我们会用到一个工具,半自动中心冲。

使用方法非常简单,尖端对准一个平面,然后用力按压。按压过程中,内部的弹簧机构会一直积蓄能量,到一定程度的时候,内部的机构会瞬间把这些能量释放出来,敲击顶部的钻头。
它顶部的钻头十分坚硬,瞬间释放的能量,可以在 不锈钢板,甚至 钛合金板 上 凿出一个坑。

编解码规则
有了坑,就有了一个比特位,可以用来代表 0/1,下一步我们需要一个 编码规则。准确来说,是 解码规则。
回到 助记词 的原理,BIP39 助记词,每个单词代表着 0~2048 之间的一个数字,也就是 11 bit 信息。常见的 24 位助记词,本质上是 256 bit 随机数据,加上 8 bit 校验数据。
我们可以把每个 助记词 代表的 11 bit 原始数据,直接用 半自动中心冲 砸在金属板上。
这里推荐 OneKey 的点图规则,它为每个助记词加上了 1,这样第一个助记词 abandon 代表的 0,变成了 1,不至于成为一行空白;同时最后一个助记词 zoo 代表的全 1,会进一位到第 12 bit,这样整体的宽度会变成 12 bit,便于规划。
当然你大可以完全忽略这些细节,翻看 Github 上 OneKey 的仓库,有对照表
https://github.com/OneKeyHQ/bip39-dotmap
如此这般,我们可以打印一张 24x12 的 网格图(加一些定位点),贴在一张紫铜板上,然后用半自动中心冲,把 助记词 和若干 定位点 凿在上面。

我选择 紫铜板 是因为对于保存数据来说,紫铜板 耐火耐腐蚀能力已经足够了,并且铜质地较软,便于冲坑。
如果在淘宝上购买,一把好的 半自动中心冲 价格在 80 左右,一块 5cmx10cm 紫铜板 才几块钱,相较于动辄几百块钱的助记词板,便宜的太多了。
此外,我还为 WioTerminal 写了一个 Arduino 程序,能够通过摇杆输入随机熵,生成 BIP39 助记词 和 点位图,24x12 网格也放在仓库的 resources 文件夹下了,欢迎来点个 Star。
https://github.com/guoyk93/wioterminal-mnemonic
最后提醒各位,任何情况下不能把助记词暴露给其他人
这也是我设计这个方案的初衷,整个步骤可以自己在家完成,其他的什么淘宝上找金属激光雕刻啊之类的,需要把助记词发给他人的,脚趾头想想就知道不安全。