离 EOS 结束 Token 的售卖, 只剩差不多 1 个月的时间, 在这之前, 持有 EOS-ERC20 代币的同学要抓紧时间映射了, 否则, 过了 6 月 1 号的快照期, 没有进行映射的 EOS-ERC20 将不会转成真正的 EOS 代币.
有同学会问: 可以委托交易所帮我做映射吗? 当然可以, 但如果你有时间的话, 我还是建议你自己映射会比较好, 原因有二:
因为 Everipedia 也是根据创世块的映射进行空投的, 它是 EOS Chain 上的重头项目, 所以后续的项目很可能会跟风, 如果真是这样, 你只要做好映射, 就可以 100% 的掌控不同项目派发的糖果, 再也不用问交易所会不会支持 XX 币这样的问题了.
现在很多钱包, 例如 imToken 等都已经支持一键映射功能, 极大的降低了操作门槛, 相信普通小白都可以独立搞定.
所以, 这篇文章肯定不是来教你如何做好映射的, 而是来谈谈在映射的前后, 你可能会顾虑的事情. 第一个顾虑是:
我把所有的 EOS 全部放在一个钱包, 这样安全吗?
这个问题的回答肯定是 -- 不够安全. 为什么? 虽然私钥很难被破解, 但并不意味着它不能被破解, 墨菲定律 (Murphy's Law) 怎么说来着
凡是可能出错的事必定会出错
这里有两层含义, 第一层是你的私钥真的被破解的可能性; 第二层是你犯错的可能性 -- 例如在公共网络遭受了中间人攻击(MITM:Man-in-the-middle attack). 这些都会让你彻底的失去你的 EOS(当然, 如果你能玩转 EOS 的账户功能, 那肯定是极好的), 所以
永远不要把鸡蛋放在一个篮子里
读过Mastering Bitcoin的同学应该知道, 作者 Andreas 也提到了分散风险这件事, 他建议在线的移动钱包里不要放超过 5% 的币, 剩下的交给硬件钱包或通过冷存储等离线方式管理.
Prudent users will keep only a small fraction, perhaps less than 5%, of their bitcoin in an online or mobile wallet as "pocket change."
以上, 你接下来会做的事情应该是再多创建几个钱包, 并把它们逐一映射, 这就会引入第 2 个顾虑:
该如何管理这些私钥?
这也是我经常会被问到的问题, 除了使用硬件钱包外, 我通常的回答是把私钥复制到文件中, 然后离线打印出来, 并把原文件从硬盘中删除. 其实这种方法好是好, 但它往往也只是一种备份方式, 实际上, 我还是会把私钥存储在硬盘中, 差别在于我会对私钥文件做一次加密, 并把加密后的文件拷贝到 U 盘和 NAS 上, 这样今后用到它的时候会方便很多, 这种方法兼顾了安全和便利两个方面. 例如, 下面是一个被加密后的公私钥对, 它们存储在 eoskey.txt 这个文件中
- $ cat eoskey.txt
- VimCrypt~01!
- 24b
9(Qcsv:Ձޡ
Rz?E?IVϵ!l 5n\_WXz:֖c'$h1K
B׃E9qՃ
除非破解我当初设置的密码, 否则你无法查看明文.
对文件加密也是一个比较简单的事情, 我采用的是 Vim 编辑器自带的加密功能, 你只需用 Vim 打开需要被加密的文件, 然后输入: X, 此时 Vim 会提示你输入密码
- Warning: Using a weak encryption method; see :help 'cm'
- Enter encryption key: **********
Enter same key again: **********
完成后,:wq 保存并退出, 这样你的文件就被加密了, 下次你想查看文件的内容时, 还是用 Vim 打开该文件, 会提示你输入当初设置的密码:
- Need encryption key for "eoskey.txt"
- Warning: Using a weak encryption method; see :help 'cm'
- Enter encryption key: *********
好了, 现在你的映射做好了, 风险被分摊了, 秘钥也安全了, 剩下的只需等待 EOS 快照了. 等等, 有一个问题一直在心中存有疑虑, 我们知道, 映射的时候是用 ETH 的公钥来映射 EOS 的公钥, 那怎么才能保证这个 EOS 公钥就是我抄下的私钥生成的呢? 又怎么能验证我没有抄错呢?
验证映射的正确性
无论是 imToken 还是其他钱包, 好像都没有教我们如何进行验证, 下面我们就来看看这个问题, 希望看到这里的小伙伴都能自己动动手, 确保万无一失. 注意, 因为验证涉及到私钥, 切勿将该事情交给他人来完成.
我们先来看下如何验证映射是否成功?, 打开
https://www.myetherwallet.com/
页面, 点击 Contract, 下拉菜单选择
EOS:Contribution 0xd0a6E...7ccf
, 点击 Access 按钮, 再选择 keys 下拉菜单, 在 address 栏填入你的 ETH 地址, 点击 READ, 就可以查看你的映射情况, 如下图所示, 说明是映射过了的.
下面我们再来看下该如何验证你的 EOS 公私钥本身是正确的, 验证公私钥没有别的办法, 只有老老实实编译 EOS 的代码, 利用编译出来的钱包程序, 向其输入私钥, 看输出的公钥是否和预期一致.
EOS3.0 代码目前已经进入测试阶段, 编译成功率比以前高了很多, 所以并没有什么难度, 把代码下载下来, 进入项目的根目录, 执行./eosio_build.sh 一键编译, 唯一的问题是耗时比较长
# 下载代码
$ git clone https://github.com/EOSIO/eos --recursive
- # 进入根目录, 编译
- $ cd eos
- $ ./eosio_build.sh
成功后会显示以下图案
编译后, 我们首先进入
build/programs/keosd
目录, 运行 ./keosd 命令
~/github/eos/build/programs/keosd $ ./keosd
然后再打开一个终端, 通过 cleos 程序来验证公私钥, 你只需按照以下步骤执行
创建钱包
./cleos wallet create
导入你的私钥
./cleos wallet import {your private key}
于是, 执行以上两条命令, 终端会输出该私钥对应的公钥, 这样你就可以比对公私钥的正确性了
$ ./cleos wallet create
Creating wallet: default
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
- $ ./cleos wallet import {your private key}
- imported private key for: EOS7W...SZ92G
总结
本文从 3 个方面谈到了我们在做 EOS 映射时, 可能会产生的顾虑, 分别是
我们能否把 EOS 全部放到一个钱包中, 尤其是你拥有大量 EOS 的情况下
如何分散风险, 且如何管理我们的私钥更好
如何验证映射的正确性
希望能对你有帮助
BTW, 本文发布时, EOS 的价格为 $11.76
我建立了一个收费的知识星球, 在这里, 我会为大家营造一个沉下心来学习的环境, 在今年, 我至少会做三件事情:
精通比特币的实现原理
精通 EOS 的实现原理, 并着手在 EOS 上建立应用
学习其他项目的白皮书, 寻找有创意, 有价值的项目
来源: https://juejin.im/entry/5adc80c26fb9a07ab83d9cfe