Ethereum-ETL 可将区块链数据转换为方便的格式,如 CSV 和关系数据库。

1. 安装 Ethereum ETL

pip3 install ethereum-etl

2. 命令

Options:-s, --start-block INTEGER   起始区块-e, --end-block INTEGER     结束区块(必需)-b, --batch-size INTEGER    每次要导出的块的数量-p, --provider-uri TEXT     web3提供程序的URI 例如:file://$HOME/Library/Ethereum/geth.ipc 或者 https://mainnet.infura.io-w, --max-workers INTEGER   工人的最大数量--blocks-output TEXT        块的输出文件。如果没有提供,块将不会被导出。使用“-”表示标准输出--transactions-output TEXT  事务的输出文件。如果未提供事务将不会被导出。使用“-”表示标准输出-h, --help                  显示此消息并退出

2.1 导出block和transaction

ethereumetl export_blocks_and_transactions --start-block 0 --end-block 500000 \
--provider-uri file://$HOME/Library/Ethereum/geth.ipc \
--blocks-output blocks.csv --transactions-output transactions.csv

如果你只想导出事务/块,可以省略–blocks-output或–transactions-output选项。

通过设置–batch-size、–max-workers可以调整性能。

2.2 导出token transfer

ethereumetl export_token_transfers --start-block 0 --end-block 500000 \
--provider-uri file://$HOME/Library/Ethereum/geth.ipc --output token_transfers.csv \
--tokens 0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C --tokens 0x80fB784B7eD66730e8b1DBd9820aFD29931aab03

2.3 导出收据和日志

首先从transactions.csv(用export_blocks_and_transactions导出)中提取事务散列:

ethereumetl extract_csv_column --input transactions.csv --column hash --output transaction_hashes.txt

然后导出receipt和log:

ethereumetl export_receipts_and_logs --transaction-hashes transaction_hashes.txt \
--provider-uri file://$HOME/Library/Ethereum/geth.ipc --receipts-output receipts.csv --logs-output logs.csv

更多功能请参考https://ethereum-etl.readthedocs.io/en/latest/commands/

3. 测试

启动ganache测试链

ganache-cli -p 7545

生成一笔transaction

accounts = eth.accounts
eth.sendTransaction({from:accounts[0],to:accounts[1],value:100})
# "0xe4468de59b064dd9243eb19361e6b46e701faf1ed79937d7a27d108383412b5f"

导出block和transaction

ethereumetl export_blocks_and_transactions --start-block 0 --end-block 1 \
--provider-uri http://localhost:7545 \
--blocks-output blocks.csv --transactions-output transactions.csv

查看transactions.csv

cat transactions.csv
#hash,nonce,block_hash,block_number,transaction_index,from_address,to_address,value,gas,gas_price,input,block_timestamp,max_fee_per_gas,max_priority_fee_per_gas,transaction_type
#0xe4468de59b064dd9243eb19361e6b46e701faf1ed79937d7a27d108383412b5f,57,0xd241f04650dca9527ada74078e1c123dcca454987d69f82b8d5df4c37fa787fb,60,0,0x6788994d9c3319d49b91e8736c0f948d34a7275e,0x7fe332d2b77d584909a4a6f7901d6996b0ef485b,100,90000,20000000000,0x,1667475822,,,

附:如果只想要获取原生的transfer transaction,则需要修改ethereum-etl的代码,操作比较简单

cd /usr/local/lib/python3.8/dist-packages/ethereumetl/jobs
vim export_blocks_job.py

修改其中的_export_block(self, block)方法

def _export_block(self, block):if self.export_blocks:self.item_exporter.export_item(self.block_mapper.block_to_dict(block))if self.export_transactions:for tx in block.transactions:self.item_exporter.export_item(self.transaction_mapper.transaction_to_dict(tx))

替换为

def _export_block(self, block):if self.export_blocks:self.item_exporter.export_item(self.block_mapper.block_to_dict(block))if self.export_transactions:for tx in block.transactions:# 过滤掉value为0的交易,剩下的即为原生的transfer transactionif tx.value == 0:continueself.item_exporter.export_item(self.transaction_mapper.transaction_to_dict(tx))

ethereum-etl拉取以太坊数据相关推荐

  1. 用Web3.py、Infura和Graph查询以太坊数据

    本文我们将使用Web3.py这个Python库直接查询以太坊数据.Web3.py是一个为与Ethereum区块链交互而建立的Python库.有了它,我们可以为去中心化的应用程序建立各种核心功能.我们可 ...

  2. 分片提升容量难度大,时间长,故而Vitalik提出使用BCH或者ETC作为以太坊数据层

    7月25日晚,莱比特矿池CEO江卓尔在巴比特在线直播节目She Knows中表示,分布式系统(去中心化系统)有一个不可能三角,称为分布式系统CAP定理,指的是在一个分布式系统中,Consistency ...

  3. V神建议使用BCH区块链用于以太坊“数据层”

    在以太坊社区论坛Ethresear.ch中,以太坊联合创始人Vitalik Buterin发布了一篇题为<BCH:以太坊的短期数据可用层?>的文章,他在文中提出了一个关于解决以太坊短期网络 ...

  4. python爬虫拉取豆瓣Top250数据

    python爬虫拉取豆瓣Top250数据 利用request和正则表达式抓取豆瓣电影Top250的相关内容,提取出电影的名称.时间.评分和图片等信息,提取的站点url为https://movie.do ...

  5. 以太坊数据上链和展示智能合约

    以太坊数据上链和展示智能合约 1. 首先定义上链数据的基本结构(推荐使用结构体) 2. 定义全局变量和判定的一些变量 3. 定义接受数据和展示数据的函数 4. 将数据传入,使用memory定义接受变量 ...

  6. 一键“拉取”链上数据 海淀区应用遍地开花

    近日,北京市首台运用区块链等新技术的政务服务终端亮相海淀区政务服务中心,为办事企业和群众提供自助政务服务.9月1日,<证券日报>记者前往海淀政务服务中心,实地体验了基于区块链等技术的自助便 ...

  7. 北京首台区块链政务终端亮相 一键“拉取”链上数据

    近日,北京市首台运用区块链等新技术的政务服务终端亮相海淀区政务服务中心,为办事企业和群众提供自助政务服务.9月1日,<证券日报>记者前往海淀政务服务中心,实地体验了基于区块链等技术的自助便 ...

  8. 以太坊数据同步常见问题集锦

    以太坊数据同步是新手入门的必经阶段,在技术讨论群中(659809063)经常重复的被提问到.这篇博文就给大家整理一下常见的问题列表,以便大家学习. 常见问题列表 区块差几十块始终同步不完,怎么办? 这 ...

  9. 爬虫:爬取以太坊区块链浏览器数据

    步骤索引 爬取网址 :https://eth.btc.com/home 首页(输入代币代号) 数据页(点击翻页按钮测试请求:F12-Headers-Response) 获取到Header URL 获取 ...

最新文章

  1. 【 Linux 】Vim学习指南
  2. 我司那产品经理丨第一期
  3. linux虚拟机桥接网络配置
  4. Spring Boot缓存注解@Cacheable、@CacheEvict、@CachePut使用
  5. 报表控件NCreport教程:子查询系统设计
  6. This time, ZTE has released the world‘s first
  7. mysql 怎样更新数据库_MySQL数据库更新语句update使用详解
  8. linu重置root密码(CentOS7)
  9. 方阵求值——上三角行列式、定义(康拓展开求值)
  10. linux 设备树 usb控制器,linux 设备树中 dwc3 节点的phys参数含义
  11. 一佳门户多商户多行业v3.0.0
  12. oracle 根据符号分列,oracle 树结构数据层次分列显示
  13. opencv+hough直线检测+fitline直线拟合
  14. 关于ext4文件系统概述
  15. 【街道可步行性】步行通达性对街区空间活力与交往的影响 | 上海城市规划
  16. 牧牛区块链生态,区块链应用于金融领域的优势
  17. WordPress有新评论时微信通知站长
  18. 安富莱v6开发板网口通讯_【安富莱】各种开发板和模块的资料下载汇总贴(2020-04-06)...
  19. 淘宝特价版在美国谷歌应用商店下载量飙升,7月下载量已达4万次
  20. bios设置计算机用户密码,怎样在在BIOS中设置电脑开机密码

热门文章

  1. 转: include android instant app support 是什么?
  2. 10_求解斐波那契数列
  3. 鸟叔的linux私房菜+大数据(Hardoop/Spark/Hive) 电子书分享
  4. 高级程序猿是如何练成的
  5. 把自己当成人物是最傻的表现zz
  6. 面包屑的实现+tag功能实现+form表单
  7. Adobe LiveCycle Designer
  8. 强联通分量与双连通分量
  9. 迁移学习前沿探究探讨:低资源、领域泛化与安全迁移
  10. 如何加强幼儿园安全管理