美文网首页区块链研习社EOS区块链应用区块链技术文章
【一五一十】五分钟学会创建EOS最新的快照

【一五一十】五分钟学会创建EOS最新的快照

作者: 荆凯_EOS42 | 来源:发表于2018-07-18 14:18 被阅读26次

    如果准备空投,除了根据主网启动时的快照信息来做空投之外,是否能够像ETH或者BTC那样,根据最新的账号持有EOS的情况,建立快照呢?

    这样的话,新创建的EOS账号,也可以有机会得到未来糖果币的空投了。

    答案当然是肯定的。

    使用创世快照的问题

    在EOS 主网启动之前,很多人的 EOS 是放在了交易所之中。EOS的糖果空投频繁,IQ, CET等等,都是根据创世快照时候账号的记录来空投代币的。如果交易所默默的吞掉了这些糖果,不支持糖果发放,那么,就白白失去了。

    就算是新创建账号,将交易所的EOS转出到钱包中,却也未必能够得到空投,因为,目前绝大部分的空投都是根据创世快照来进行代币分发的。对于在主网启动之后才新创建账号的同学来说,这当然不公平。

    有没有别的方法呢?

    本文介绍一种方法,教你如何简单方便的创建主网快照。
    本文用到的工具由GenerEOS 节点提供,地址见:https://github.com/generEOS/airdrop-tools

    什么是快照?

    快照,就是根据某个时刻账号的信息,存储到表中,用作空投或者其他分析的参照。现在EOS的空投,几乎全部是按照创世快照中账号的信息来分发的。比如,在创世快照之中,你的账户中有1000 个 EOS,那么,按照1:1 空投某代币的时候,你就可以得到 1000 个空投的代币。

    那么,这份创世快照又是怎么来的呢?

    EOS主网启动之初,曾根据以太坊上ERC20格式的EOS代币建立了快照,称之为创世快照。EOS上线后账号余额即是根据此快照进行分发的。

    而在本文之中,我们会根据上线之后的账号信息,来创建新的快照。未来空投代币的项目方如果采用这一方式来创建快照的话,就可以照顾到新建账号的用户了。

    创建快照的方法

    原理

    1. 从 voter的表中,获取当前主网上的所有账号, 生成names.csv的文件。
    2. 根据names.csv文件中的账号名,遍历查询账号的余额等信息,生成csv格式的快照文件。
    3. 根据快照文件,进行代币空投。

    操作

    如果你对下面的代码命令部分感到头大,可以跳过。

    地址:https://github.com/generEOS/airdrop-tools
    前提:安装git,安装好nodejs.

    1 获取工具代码库

    git clone https://github.com/generEOS/airdrop-tools.git
    

    2 运行npm命令

    cd airdrop-tools
    npm install
    

    3 修改文件配置

    在继续运行接下来的命令之前,需要对airdrop-tools文件夹中的几个文件配置进行改动。

    takeNames.js

    这一文件用于获取当前主网的账号列表。

    config

    打开takeNames.js文件,将config之中的httpEndpoint参数。从默认的localhost:8080 改为:
    https://mainnet.genereos.io:443
    或者其他你知道的bp的endpoint。

    如果你想要在测试网络上进行试验,也需要改掉config中的chain id参数。

    当前的主网的chain id 是: aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906

    takeSnapshot.js

    这一文件用于建立快照。

    snapchat

    如有必要, 修改config的endpoint和chainid参数。

    这里,airgrab参数需要改为false,或者改为你自己的合约账号名称。
    为了简便起见,假设是对所有的账号空投,而不需要先行发送指令注册账号,我们将airgrab设为false.

    如果想要加以限制,比如需要用户在你的合约中登记之后才可以获得空投,那么,这里可以设定为你的合约账号的地址,比如:

    airgrab = 'yourairdrop' 这样的形式。

    paySnapshot.js

    这一文件,可以用来根据快照记录空投代币。

    image.png

    需要根据你实际空投的情况,修改其中的 airdropConfigeosConfig.

    4 获取账户列表

    经过上述的修改之后,我们可以开始运行命令了。

    node takeNames.js

    会生成类似:names-1531885231583.csv的csv文件。
    将名字改为: names.csv

    目前为止,主网上的账号名总量大约是: 199803个账号。

    5 进行快照

    node takeSnapshot.js

    运行命令,会耗用较长的时间,读取names.csv 中的账号列表,并从区块链网络中查询账号的信息。

    所得到的文件为 snapshot-1531891519538.csv 的文件名,内容如下:

    image.png

    注意,这里得到的快照文件并不能够用于下一步骤中的空投,需要整理为如下的格式:

    账户名, 数量。 其中,数量是数字,而不是字符格式。

    存在名为snapshot.csv文件中。

    6 空投

    如果需要借助于genereos提供的这一工具进行空投,需要运行:

    node paySnapshot.js
    

    如果只是测试不是真正发出空投,则需要改动:

    image.png

    将broadcast设置为false, 并且将mockTransactions这一行的注释打开。

    执行空投完成后,会生成:

    payment-1531891529538.csv
    这样格式的文件,检查一下,看看是否有遗漏的账号。

    其他的玩法

    对于项目方而言,可以在这一工具的基础上修改代码,从而定制自己的空投规则。

    比如,可以设置为只针对账户里面拥有100个EOS的账户空投;或者,修改空投的比例,改为1:10。

    另外,在前面整理snapshot.csv文件的时候,也可以根据你的实际情况,只是空投给在你的合约中登记过的账户。

    这工具简化了创建EOS快照的流程,希望未来能够让更多的用户也参与进来,而不再只是根据原始的快照做空投。

    相关文章

      网友评论

        本文标题:【一五一十】五分钟学会创建EOS最新的快照

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