离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
如果你喜欢本文,或你有任何问题,可以通过关注我的公众号与我取得联系
公众号:程序员在深圳(studycode)
微信:jingwumen777
网友评论