EOS开发者研讨会

(感谢eospark分享)

节点的搭建

编译

  • 切换到对应的 tag 然后再编译,不能直接编译 master
  • 设置 -s 资源符号
./eosio_build.sh -s EOS
  • 后续的编译进⼊ build ⽬录进⾏增量编译,如果再次运⾏ eosio_build.sh 会导致全量编译
  • 使⽤不同操作系统的备份⽂件(blocks、state)的话,在编译时需要修改下⾯的代码来绕过检测:
//vim libraries/chainbase/src/chainbase.cpp +72
if( !env.first || !( *env.first == host_env ) ) {
改成
if( false ) {

编译⾃定义插件时,需要指定环境变量:

LOCAL_CMAKE_FLAGS="-
DEOSIO_ADDITIONAL_PLUGINS=${HOME}/eos/plugins/eos_zmq_plugin"
./eosio_build.sh -s EOS
  • 绕过 mongo 插件的编译。我在 MAC 上编译遇到下⾯的问题:



    修改 eosio_build.sh 第 284 ⾏(tag:v1.7.0):


将 -DBUILD_MONGO_DB_PLUGIN 改为 false

  • 有些低配置的机器(4c8g)编译源码时会出错,⼀般都是因为 eosio_build.sh 编译的时候都是并⾏编译,CPU 吃紧后就会导致编译失败。这个时候 cd 进 build ⽬录,然后执⾏ make -j1 可以编译成功。

配置

  • 节点配置我⼀般 这⾥ 取 (https://validate.eosnation.io/mainnet/reports//endpoints.txt)
  • 为了加快追主⽹区块的速度,可以在配置⾥加上 trusted-producer 项,可以跳过⼀些交易的合法性验证,加快同步速度(这个配置对加快区块重放同样⽣效)。
  • chain-state-db-size-mb 设置⼤⼀点,我⼀般设置成 8192
  • 如果不接受交易推送,即不⽀持 push_transaction,可以设置 read-mode = read-only
  • 启动 快照节点备份 需要先删除本地的 blocks 和 state ⽂件夹,然后执⾏:
# 本命令启动完成后,⽴即 cleos get info 是不会返回任何东⻄的,⼀般要等个⼤约 3分钟才会正常返回
./start.sh --snapshot snapshots/snapshot0202490f9adbf613b2f5b426c813bc4ff582f9cd38995b93896ef108e78c8b96.bin

节点的维护

搭过 EOS 节点的同学应该都知道其中的痛苦:

  1. 追不上区块⾼度
  2. 数据极其脆弱,容易 replay
  3. 节点不稳定,经常卡死
  4. 节点各个版本接⼝的增删改

追不上区块⾼度

原因⽐较复杂,⽹络状况、节点版本、节点配置⽂件等因素都会影响到同步速度。节点对⽹速上限要求不⾼,只要稳定就⾏。

解决⽅案:

  1. 定期更新配置⽂件的 endpoint 信息,剔除经常报错重连的节点
  2. 更新最新的 nodeos 版本

节点不稳定

节点从 0 点开始,每隔 4 个⼩时就会卡顿⼏分钟,最近观察是没隔⼀个⼩时就会卡顿。或者就是莫名其妙出现节点卡顿现象。这种问题基本⽆解,有些是插件内存泄漏或者节点本身有 bug,只能等官⽅慢慢修复。
解决⽅案:

  1. 部署多个节点,做负载均衡
  2. 重启⼤法。就 EOSPark ⽬前观察的经验,⼀般节点⻓时间运⾏⼤约⼀周左右就会出现很多莫名其妙的诡异问题,⼀般都是重启下就正常了。

节点版本的接⼝变动

节点很多版本之间接⼝是不兼容的,⽐如在 1.4.x 之前的版本创建新账户的命令字叫 newaccount ,之前⾥⾯新账户的参数名叫 name ,但是在 1.4.x 变成了 newact ,然⽽在 1.5.x 之后这个参数名⼜改回name 了。

还⽐如就是查询 global 表时,返回的字段⾥有⼀个叫 last_pervote_bucket_fill 字段,之前这个字段是⼀个纯时间戳数字的字符串,但是在最近的⼀次系统合约的部署后,这个字段变成 UTC 格式的时间了。

还有很多字段本来是返回的数字,后来估计是考虑到溢出问题,换成字符串了。

再举⼀个接⼝变动的例⼦,之前有⼀个叫 get_code 的接⼝,但是后来这个接⼝被弃⽤了,⽽官⽅的版本更新⽇志上却没有提到这⼀点。
解决⽅案:

  1. 关注代码更新记录,升级新版本前阅读更新说明
  2. 灰度升级

节点微分叉

除去⽹络因素不管,当相邻两个出块节点的物理位置相隔太远时会有⼤概率出现区块回滚现象,⽐如阿根廷的节点和北京的节点。即便两个出块机器直连⼀根⽹线,互相 ping 对⽅也要花 130+ms 的时间。
⽽ EOS 必须在 500ms 内出⼀个块……

解决⽅案:节点之间做 heartbeat,按最近延迟的节点顺序出块

节点 replay

现在的节点确实很容易就 replay,⼀个全节点数据⼀旦 replay,照⽬前的量预计⾄少两周,如果选择从头同步数据则需要⼀个⽉,⾮常的痛苦。依照我现在的经验,⼀般造成脏数据导致 replay 的有以下原因:

  1. 磁盘满了
  2. kill -9
  3. 没有正常暂停节点的情况下重启机器
  4. 没有正常暂停节点的情况下运⾏ eosio_build.sh 升级节点,会⼤概率导致脏数据
  5. 其他业务抢占 cpu 迫使节点服务停掉
    解决⽅案:定时做节点数据的全量备份(blocks 和 state ⽂件)

全量备份和快照备份

全量备份(带 state)可以直接就地启动,⽆需重放,拎包⼊住。就⽬前来看,blocks ⽂件夹有220G,state ⽂件夹有 20~60G。缺点是备份和恢复复杂。

快照备份⼀般都 200~300M,备份恢复⾮常简单⽅便。缺点是获取不到历史的区块数据。假如你的快照数据是从区块⾼度为 100 的时候做的,那么⽤ cleos get block 99 就会返回错误。所以快照备份就⾮常适合不关⼼历史数据的业务场景。

其他有⽤的⼯具

  1. 查看区块软分叉的情况
    链接 http://grapher.eoscanada.com/
  2. 查看账户快照
    链接 https://www.eossnapshots.io/
  3. 节点错误码归总
    链接 https://docs.google.com/spreadsheets/d/1uHeNDLnCVygqYK-V01CFANuxUwgRkNkrmeLm9MLqu9c/edit#gid=0
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容

  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,753评论 0 5
  • 今天我们很高兴宣布下一个版本的EOSIO,V1.3.0。您可以在Github上查看详细的发行说明,并在EOSIO ...
    苗政委阅读 914评论 0 0
  • 1,摘要 【本文目标】通过本文实践,能在已编译的EOS V1.0.5版本环境上,完成私链节点启动,钱包创建,密钥导...
    笔名辉哥阅读 5,078评论 0 51
  • 晨起就近去一食堂,食堂中三三两两的人预示着即将放假的节奏,图书馆亦然。末底考试时7:30开门的图书馆,7...
    Mia冬阅读 102评论 0 0
  • 凤凰台上忆吹箫·咏水仙 作者:杨宝孝 金蕊融香,玉肌含雪,翠裳罗袜生春。是下山姑射①,涉水伊人②。犹伴冰弦一曲,音...
    文峰诗社阅读 840评论 0 1