使用EOS eos-state-history-API 导入到PostgreSQL

eos-state-history-API是eos社区新研发的history插件, 用来代替过去的history插件.

优点是分离了入库的逻辑, 不用replay就能自由的同步的其他数据库

原理是: 

nodeos ( eos-state-history-API 插件 )

=> fill-postgresql 程序

=> PostgreSQL 数据库

操作过程是:

1. 先搭建一个已经能连接主网的nodeos, 编译更新到最新版本>=1.5.0

2. 配置eos-state-history-API, 然后启动

https://github.com/acoutts/eos-state-history-API

重点是config.ini中添加

##########################################

# State History Plugin

##########################################

plugin = eosio::state_history_plugin

state-history-endpoint = 0.0.0.0:8080

trace-history = true

chain-state-history = true

##########################################

并在nodeos启动参数中追加这句话 

 –disable-replay-opts  

3. 安装,配置并启动PostgreSQL

可用最新安装包,  完成后需要配置data目录, 和用户, 为下面fill准备

4. 编译fill-postgresql

https://github.com/EOSIO/fill-postgresql

这个按它说明编译即可, 但写的略简单, 我是用centos编译,  编译过程琐碎且漫长

这里略加补充:

cmake:  直接下载最新版代码并编译

A C++17 compiler: 可直接下载gcc8版本代码并编译

Boost 1.58:  

       实际上我使用1.58是不成功的, 所以直接用了最新版Boost 1.68, 

       如果因为boost编译失败, 检查一下boost的头文件和lib库是否安装到位

       如果启动时缺乏so文件,  使用ldd  查看下一程序, 检查一下boost的so是否安装到位

       另外, 还需要修改一处fill-postgresql代码的bug, 参照:  https://github.com/EOSIO/fill-postgresql/issues/6

libpqxx: 直接最新版下载或编译

libpq:: 直接最新版下载或编译

5.启动fill-postgresql

 首先设置几个环境变量, 举例:

PGUSER=”root”

PGPASSWORD=”xxx”

PGDATABASE=”chain”

PGHOST=”127.0.0.1″

然后试着启动fill-postgresql

如果发生一些错误,  使用gdb调试,  用bt看堆栈, 尝试修改源代码.

不得不继续吐槽EOS, 好的架构是能让各种人在上面填写代码的,  显然过于强调C++会让EOS生态僵化, C++不能提高TPS也不能提高安全, 这些只是DPoS的作用范围.

这就怪不得BM寻求下个发力点了, 这就是个实验产品.

另一个例子是,使用graphql, 我没有尝试过

https://github.com/eoscafe/state-history-graphql

    原文作者:凌利新
    原文地址: https://www.jianshu.com/p/50bf6429a1ce
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞
  1. Astaldo说道:

    你好,fill-postgresql已被合并到了新的history-tools中,博主是否试过构建history-tools,github上的文档没有给出构建的方式和所需的依赖库版本,因为我最近使用nodeos 1.8的环境进行构建时出了很多的问题,大多都是版本问题,博主若有空可以尝试构建并分享下心得,因为官方已经放弃mongodb的历史插件,推荐使用state-history,将来应该会有更多的人需要看到这样的文章的。

发表评论

电子邮件地址不会被公开。 必填项已用*标注