本文作者:陈进坚
个人博客:https://jian1098.github.io
CSDN博客:https://blog.csdn.net/c_jian
简书:https://www.jianshu.com/u/8ba9ac5706b6
联系方式:jian1098@qq.com
环境搭建
去github
上下载源码,最好是2.0以后的版本,不然会有很多问题
1 | git clone https://github.com/EOSIO/eos -b v2.0.3 --recursive |
编译
1 | cd eos/scripts/ |
这个过程需要几个小时的时间,完成会出现下面的内容
1 | [100%] Built target print_floats |
安装
1 | ./eosio_install.sh |
执行之后所有可执行程序会在/root/eosio/2.0/bin
目录下
设置软连接
1 | ln -fs /root/eosio/2.0/bin/nodeos /usr/local/bin/nodeos |
查看版本
1 | nodeos -v |
同步区块
EOS
主网区块数据很大,要同步所有区块的数据需要十几天以上,这里分别介绍同步全节点和快照(snapshots
)同步的具体步骤
全节点同步
准备工作
准备至少1TB的硬盘,最好SSD
编辑配置文件
- 注意:配置文件中的
filter-on = *
参数打开的话可能会由于内存数据太大导致节点程序退出,所以最好过滤其他数据,只保留指定账号的数据,格式是filter-on = eosio.token:transfer:
,把eosio.token
换成你的账号名即可,注意后面有个冒号。
可以编辑默认的配置文件 vi ~/.local/share/eosio/nodeos/config/config.ini
,也可以自定义配置文件目录,这里我自定义在/root
目录下,将下面的配置复制保存
1 | #producer-name = !!!!YOUR_BP_NAME!!!!!!!! |
编辑genesis.json
将下面的配置复制保存
1 | vi genesis.json |
1 | { |
第一次启动
默认端口是8888
1 | nodeos --config-dir . --data-dir /mnt/omnidata --genesis-json genesis.json --delete-all-blocks |
--config-dir
:配置文件config.ini所在目录
--data-dir
:区块数据存放目录
--genesis-json
:文件目录
--delete-all-blocks
:删除所有旧区块数据
再次启动
不需要--genesis-json
和--delete-all-blocks
命令
1 | nodeos --config-dir . --data-dir /mnt/omnidata |
停止节点
如果强制关闭nodeos
,下次启动时会报错database dirty flag set (likely due to unclean shutdown): replay required
所以安全退出要使用下面的命令
1 | pkill nodeos |
如果出现上面的报错,在启动时需要加参数--hard-replay-blockchain
重放区块,会花掉很长的时间
snapshot同步
snapshot,即快照同步,当你需要快速搭建节点,不需要之前区块的历史数据的时候适用。快照同步不需要genesis.json
文件,当快照初始化完成后,区块会从快照备份的那个区块开始同步数据,包括交易和区块数据。
编辑配置文件
跟全节点同步一样。
下载快照备份文件
从以下两个网站可以下载到快照备份文件
下载完成后解压,解压得到一个.bin
文件
1 | tar -xzvf snapshot-106753286.bin.tar.gz |
初始化快照
启动命令加上--snapshot
即可,后面是解压出来的bin
文件路径
1 | nodeos --config-dir . --data-dir /mnt/omnidata --snapshot /mnt/omnidata/snapshot-106753286.bin |
大约10分钟即可初始化完成,占用硬盘约12GB
再次启动
正常启动即可
1 | nodeos --config-dir . --data-dir /mnt/omnidata |
停止节点
1 | pkill nodeos |