区块链研习社EOS区块链应用区块链技术文章

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

2018-07-18  本文已影响26人  荆凯_EOS42

如果准备空投,除了根据主网启动时的快照信息来做空投之外,是否能够像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快照的流程,希望未来能够让更多的用户也参与进来,而不再只是根据原始的快照做空投。

上一篇下一篇

猜你喜欢

热点阅读