用于将EOS区块链数据导出到JSON的工具
eos-etl的Python项目详细描述
EOS ETL
安装eos etl:
pip install eos-etl
> 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
目录
模式
导出区块链
安装python 3.6.0+https://www.python.org/downloads/
安装eos node或访问由其他人维护的eos node(因为运行自己的节点并不容易)。 一些文档:
- https://developers.eos.io/eosio-nodeos/docs/
- https://eosnode.tools/
- https://github.com/CryptoLions/EOS-MainNet
- 通过在终端中执行,确保下载了所需的块:
curl --request POST \ --url https://localhost:8080/v1/chain/get_info \ --header 'accept: application/json'
您可以导出last_irreversible_block_num
下面的块,无需等到完全同步
安装eos etl:
> pip install eos-etl
导出块、事务和操作:
> 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中运行
安装dockerhttps://docs.docker.com/install/
建立Docker图像
> docker build -t eos-etl:latest . > docker image ls
从图像中运行容器
> 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
运行流媒体到控制台或发布/订阅
> 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
请参阅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