用于将EOS区块链数据导出到JSON的工具

eos-etl的Python项目详细描述


EOS ETL

Join the chat at https://gitter.im/ethereum-ethBuild StatusJoin Telegram Group

安装eos etl:

pip install eos-etl

导出块、事务和操作(SchemaReference):

> eosetl export_blocks --start-block 1 --end-block 500000\
--provider-uri http://api.main.alohaeos.com \
--blocks-output blocks.json --transactions-output transactions.json --actions-output actions.json

将区块链数据连续传输到控制台:

> pip install eos-etl[streaming]
> eosetl stream -p http://api.main.alohaeos.com --start-block 500000

有关最新版本,请查看回购协议并致电

> pip install -e .[streaming] 
> python eosetl.py

目录

模式

导出区块链

  1. 安装python 3.6.0+https://www.python.org/downloads/

  2. 安装eos node或访问由其他人维护的eos node(因为运行自己的节点并不容易)。 一些文档:

  1. 通过在终端中执行,确保下载了所需的块:
curl --request POST \
  --url https://localhost:8080/v1/chain/get_info \
  --header 'accept: application/json'

您可以导出last_irreversible_block_num下面的块,无需等到完全同步

  1. 安装eos etl:

    > pip install eos-etl
    
  2. 导出块、事务和操作:

    > eosetl export_all --start 1 --end 499999\
    --provider-uri http://api.main.alohaeos.com
    

    如果路径中没有eosetl命令,请改用python -m eosetl

    结果将出现在output子目录中,以hive方式分区:

    output/blocks/start_block=00000000/end_block=00000099/blocks_00000000_00000099.csv
    output/blocks/start_block=00000100/end_block=00000199/blocks_00000100_=00000199.csv
    ...
    output/transactions/start_block=00000000/end_block=00000099/transactions_00000000_00000099.csv
    ...
    output/actions/start_block=00000000/end_block=00000099/actions_00000000_00000099.csv
    ...
    

在Docker中运行

  1. 安装dockerhttps://docs.docker.com/install/

  2. 建立Docker图像

    > docker build -t eos-etl:latest .
    > docker image ls
    
  3. 从图像中运行容器

    > MSYS_NO_PATHCONV=1 docker run -v $HOME/output:/eos-etl/output eos-etl:latest \
        export_blocks --max-workers 50 --start-block 30000000\
        --end-block 30000100 --provider-uri http://your_eos_node:node_port \
        --blocks-output ./output/blocks.csv --transactions-output ./output/transactions.csv \
        --actions-output ./output/actions.csv
    
  4. 运行流媒体到控制台或发布/订阅

    > MSYS_NO_PATHCONV=1 docker build -t eos-etl:latest-streaming -f Dockerfile_with_streaming .
    > echo"Stream to console"
    > MSYS_NO_PATHCONV=1 docker run eos-etl:latest-streaming stream -p http://api.main.alohaeos.com --start-block 500000
    > echo"Stream to Pub/Sub"
    > MSYS_NO_PATHCONV=1 docker run -v /path_to_credentials_file/:/eos-etl/ --env GOOGLE_APPLICATION_CREDENTIALS=/eos-etl/credentials_file.json eos-etl:latest-streaming stream -p http://api.main.alohaeos.com --start-block 500000 --output projects/your-project/topics/crypto_eos
    
  5. 请参阅https://github.com/blockchain-etl/blockchain-etl-streaming以将流式应用程序部署到 谷歌Kubernetes引擎。

命令参考

所有命令都接受-h参数以获取帮助,例如:

> python eosetl.py export_blocks --help
Usage: eosetl.py export_blocks [OPTIONS]

  Export blocks, transactions and actions.

Options:
  -s, --start-block INTEGER   Start block
  -e, --end-block INTEGER     End block  [required]
  -p, --provider-uri TEXT     The URI of the remote EOS node
  -w, --max-workers INTEGER   The maximum number of workers.
  --blocks-output TEXT        The output file for blocks. If not provided
                              blocks will not be exported. Use "-"for stdout
  --transactions-output TEXT  The output file for transactions. If not
                              provided transactions will not be exported. Use
                              "-"for stdout
  --actions-output TEXT       The output file for actions. If not provided
                              transactions will not be exported. Use "-"for stdout
  --help                      Show this message and exit.

对于--output参数,支持的类型是json。格式类型是从输出文件名推断出来的。

导出块

> python eosetl.py export_blocks --start-block 1 --end-block 500000\
  --provider-uri http://api.main.alohaeos.com \
  --blocks-output blocks.json --transactions-output transactions.json --actions-output actions.json

如果您只想导出事务/块/操作,请省略--blocks-output--transactions-output--actions-output选项。

您可以调整--max-workers以获得性能。

获取日期的块范围

> python eosetl.py get_block_range_for_date --provider-uri http://api.main.alohaeos.com --date=2018-06-09

全部导出

> python eosetl.py export_all --provider-uri http://api.main.alohaeos.com --start 2018-06-08 --end 2018-06-09

您可以调整--export-batch-size--max-workers以获得性能。

> python eosetl.py stream --provider-uri http://api.main.alohaeos.com --start-block 500000
  • 默认情况下,此命令将块和事务输出到控制台。
  • 使用--output选项指定发布区块链数据的google发布/子主题, 例如projects/your-project/topics/eos_blockchain
  • 该命令将其状态保存到last_synced_block.txt文件,在该文件中定期保存上次同步的块号。
  • 指定--start-block--last-synced-block-file选项。--last-synced-block-file应该指向 保存块编号的文件,从中开始对块链数据进行流式处理。
  • 使用--lag选项指定要落后于区块链头部的块数。这是最简单的方法 处理链重组-他们不太可能离头部更远一个街区。
  • 您可以调整--period-seconds--batch-size--max-workers以获得性能。

运行测试

> pip install -e .[dev]
> echo"The below variables are optional"
> exportEOSETL_PROVIDER_URI=http://api.main.alohaeos.com
> pytest -vv

进行毒性试验

> pip install tox
> tox

bigquery中的公共数据集

待办事项:https://cloud.google.com/blog/products/data-analytics/introducing-six-new-cryptocurrencies-in-bigquery-public-datasets-and-how-to-analyze-them

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
jframe为什么JAVA paint()方法不起作用?   java Guice:将ContainerRequestContext注入拦截器   java如何优雅地关闭Spring JMS MessageListenerAdapter   java如何在Spring中设置快照隔离级别   Java中的安卓平台独立信任存储路径   java无法在eclipse中运行hello world程序   java Sinch空指针问题   使用Java将JSON流式传输到BigQuery   java从“大数据”中选择什么Swing控件?   java通过对象字段过滤/排序集合?   java将数据从活动传递到另一个活动中的片段   java访问打包在jar文件中的文档   Java获取事件的大小。getDragboard()。getFiles()。流()。映射(文件::长度)。toString());   java Android libgdx:启动程序图标按下后,启动屏幕不会立即显示   java如何在Google App Engine灵活环境中配置oracle jdk   java有没有办法减少这些行?   Java:客户端socket不读取第二行,在终止符行之后保持打开状态   java以编程方式获取api 29上的所有APK文件   java ActionBar按钮不显示