EOS映射中的顾虑

作者: 程序员在深圳 | 来源:发表于2018-04-22 20:15 被阅读85次

    离EOS结束Token的售卖,只剩差不多1个月的时间,在这之前,持有EOS-ERC20代币的同学要抓紧时间映射了,否则,过了6月1号的快照期,没有进行映射的EOS-ERC20将不会转成真正的EOS代币。

    有同学会问:可以委托交易所帮我做映射吗?当然可以,但如果你有时间的话,我还是建议你自己映射会比较好,原因有二:

    1. 因为Everipedia也是根据创世块的映射进行空投的,它是EOS Chain上的重头项目,所以后续的项目很可能会跟风,如果真是这样,你只要做好映射,就可以100%的掌控不同项目派发的「糖果」,再也不用问交易所「会不会支持XX币」这样的问题了。
    2. 现在很多钱包、例如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程序来验证公私钥,你只需按照以下步骤执行

    1. 创建钱包./cleos wallet create
    2. 导入你的私钥./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映射时,可能会产生的顾虑,分别是

    1. 我们能否把EOS全部放到一个钱包中,尤其是你拥有大量EOS的情况下
    2. 如何分散风险,且如何管理我们的私钥更好
    3. 如何验证映射的正确性

    希望能对你有帮助
    BTW,本文发布时,EOS的价格为 $11.76


    如果你喜欢本文,或你有任何问题,可以通过关注我的公众号与我取得联系
    公众号:程序员在深圳(studycode)
    微信:jingwumen777

    相关文章

      网友评论

        本文标题:EOS映射中的顾虑

        本文链接:https://www.haomeiwen.com/subject/lbyclftx.html