【一五一十】五分钟学会创建EOS最新的快照
如果准备空投,除了根据主网启动时的快照信息来做空投之外,是否能够像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上线后账号余额即是根据此快照进行分发的。
而在本文之中,我们会根据上线之后的账号信息,来创建新的快照。未来空投代币的项目方如果采用这一方式来创建快照的话,就可以照顾到新建账号的用户了。
创建快照的方法
原理
- 从 voter的表中,获取当前主网上的所有账号, 生成names.csv的文件。
- 根据names.csv文件中的账号名,遍历查询账号的余额等信息,生成csv格式的快照文件。
- 根据快照文件,进行代币空投。
操作
如果你对下面的代码命令部分感到头大,可以跳过。
地址: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需要根据你实际空投的情况,修改其中的 airdropConfig
和 eosConfig
.
4 获取账户列表
经过上述的修改之后,我们可以开始运行命令了。
node takeNames.js
会生成类似:names-1531885231583.csv
的csv文件。
将名字改为: names.csv
目前为止,主网上的账号名总量大约是: 199803个账号。
5 进行快照
node takeSnapshot.js
运行命令,会耗用较长的时间,读取names.csv
中的账号列表,并从区块链网络中查询账号的信息。
所得到的文件为 snapshot-1531891519538.csv
的文件名,内容如下:
注意,这里得到的快照文件并不能够用于下一步骤中的空投,需要整理为如下的格式:
账户名, 数量
。 其中,数量是数字,而不是字符格式。
存在名为snapshot.csv文件中。
6 空投
如果需要借助于genereos提供的这一工具进行空投,需要运行:
node paySnapshot.js
如果只是测试不是真正发出空投,则需要改动:
image.png将broadcast设置为false, 并且将mockTransactions
这一行的注释打开。
执行空投完成后,会生成:
payment-1531891529538.csv
这样格式的文件,检查一下,看看是否有遗漏的账号。
其他的玩法
对于项目方而言,可以在这一工具的基础上修改代码,从而定制自己的空投规则。
比如,可以设置为只针对账户里面拥有100个EOS的账户空投;或者,修改空投的比例,改为1:10。
另外,在前面整理snapshot.csv文件的时候,也可以根据你的实际情况,只是空投给在你的合约中登记过的账户。
这工具简化了创建EOS快照的流程,希望未来能够让更多的用户也参与进来,而不再只是根据原始的快照做空投。