美文网首页
使用EOS eos-state-history-API 导入到P

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

作者: 凌利新 | 来源:发表于2018-12-10 12:24 被阅读0次

    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

    相关文章

      网友评论

          本文标题:使用EOS eos-state-history-API 导入到P

          本文链接:https://www.haomeiwen.com/subject/myjrhqtx.html