一文系列之EOS主网快速同步

文章于EOS主网块高度30673871编写

0. 全节点配置要求

最低16G内存,磁盘200GB,最好SSD,如果有查历史交易就是get_transaction或者get_actions需求,最好准备大一些,比如1T,但这也只是只能存储部分数据,主要看是什么存储方案MongoDB或者其他,以下会详细讲解。

1. 直接编译https://github.com/EOSIO/eos代码进行安装(推荐,后续说明原因),或者通过安装包
1.png
2. 到https://eosnode.tools/blocks网站下载打包好的区块数据,由于EOS出块速度太快,如果直接从0块开始P2P追的话会花很长时间,所以可以直接下载现有的块,replay然后在P2P追,这里要说明一点,到2000w块之后交易数量增大,replay的速度会变慢
2.png

敲黑板,启动之前,先配置一下config.ini,如果不知道config.ini在哪里可以直接在终端里nodeos,然后ctrl+c看一下日志就可以看到config.ini的位置了,当然也可以使用--config-dir 指定位置,然后修改(避免同步到中间出错)


chain-state-db-size-mb = 65536
reversible-blocks-db-size-mb = 2048

# 下载
wget $(wget --quiet "https://eosnode.tools/api/blocks?limit=1" -O- | jq -r '.data[0].s3') -O blocks_backup.tar.gz

# 解压
tar xvzf blocks_backup.tar.gz

# 创建 start.sh
vim start.sh

# 把命令写到start.sh中 --truncate-at-block 22643600 是指定哪个块结束重放
nohup nodeos --hard-replay-blockchain --wasm-runtime wabt  --truncate-at-block 22643600 --data-dir /eosdata --config-dir "xxx" > ./logs/eos.log 2>&1 &

# 创建logs目录
mkdir logs
mkdir eosdata

# 启动重放
bash start.sh 

# 查看日志
tail -f logs/eos.log

#日志大概是这样的,就是正在重放
2018-08-13T09:42:10.168 initializing chain plugin
2018-08-13T09:42:10.170 Hard replay requested: deleting state database
2018-08-13T09:42:10.171 Recovering Block Log...
2018-08-13T09:42:10.171 Moved existing blocks directory to backup location: '/mnt/blocks-2018-08-13T09:42:10.171'
2018-08-13T09:42:10.172 Reconstructing '/mnt/blocks/blocks.log' from backed up block log
2018-08-13T09:44:33.490 Existing block log was undamaged. Recovered all irreversible blocks up to block number 10887835.
2018-08-13T09:44:33.493 Reversible blocks database was not corrupted. Copying from backup to blocks directory.
2018-08-13T09:44:38.833 Log is nonempty
2018-08-13T09:44:38.833 Index is empty
2018-08-13T09:44:38.833 Reconstructing Block Log Index...
...
2018-08-13T09:47:12.722 No head block in fork db, perhaps we need to replay
2018-08-13T09:47:12.722 Initializing new blockchain with genesis state
2018-08-13T09:47:12.755 existing block log, attempting to replay 10887835 blocks
    140700 of 10887835
3. replay完成之后使用pkill nodes,然后接下来就是开启p2p同步节点数据了,那么这时候又要开始修改config.ini了,因为默认的配置里是没有p2p节点的,这里推荐大家使用以下这个配置,替换一下我们原有的config.ini
https://github.com/CryptoLions/EOS-MainNet/blob/master/config.ini

如果没有get_transaction和get_actions需求,基本就结束了

4. get_transaction和get_actions需求,由于history插件非常的消耗内存,所以基本上现在的超级节点都是关闭的,只有寥寥几家是在开启的状态,如果有打量的数据分析需求建议自己搭建history数据全节点,有以下几种方案:
https://github.com/EOSIO/eos/blob/master/plugins/COMMUNITY.md
3.png

我以官方的MongoDB的方案介绍一下整个过程,这就是为什么我推荐自己编译eos来安装全节点,这样在编译安装过程中会根据本机的配置和eos版本安装MongoDB,我首次使用的是安装包安装,然后要独立安装配置MongoDB,各种配置水土不服

1. 安装MongoDB(最好是3.6.3)版本,如果是编译安装eos代码的忽略,选择自己平台的配置,如果是centos7 选择Linux 64-bit legacy x64, version选3.6.9,然后下载的时候修改一下改成3.6.3,细节好请大家自行百度,原因是系统类型太多ubuntu可以直接apt安装,centos不能直接yum,比较费劲
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.3.tgz
4.png

主要要看mongodb的配置Ubuntu在/etc/mongod.conf,查看dbpath的位置,修改成我们自己想要存储的位置,还有注意bind_ip参数是不是127.0.0.1,启动MongoDB到27017端口就可以了

2. 修改config.ini文件(https://github.com/CryptoLions/EOS-mongo-history-API
plugin = eosio::mongo_db_plugin
mongodb-uri = mongodb://127.0.0.1:27017/EOS
mongodb-filter-on = *
#mongodb-filter-out = spammer::
mongodb-filter-out = eosio:onblock:
mongodb-filter-out = gu2tembqgage::
mongodb-filter-out = blocktwitter::
mongodb-queue-size = 2048
abi-serializer-max-time-ms = 5000
mongodb-block-start = 1
mongodb-store-block-states = false
mongodb-store-blocks = false
mongodb-store-transactions = false
mongodb-store-transaction-traces = true
mongodb-store-action-traces = true

read-mode = read-only

然后创建索引,照着https://github.com/CryptoLions/EOS-mongo-history-API执行就可以了
3. 启动nodeos
nohup nodeos --data-dir /eosdata --config-dir /xxxx > ./logs/eos_run.log 2>&1 &

tail -f logs/eos_run.log

查看有没有异常,然后查看MongoDB的log
在mongod.conf中可以找到log的问题
tial -f xxx看一下 ,这里会有插入的数据的log打出来的
4. 以上数据同步到MongoDB上之后,可以写代码连接MongoDB,读取数据,也可以直接部署https://github.com/CryptoLions/EOS-mongo-history-API
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,137评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,824评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,465评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,131评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,140评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,895评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,535评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,435评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,952评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,081评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,210评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,896评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,552评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,089评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,198评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,531评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,209评论 2 357

推荐阅读更多精彩内容