使用reth-indexer构建您自己的高效区块链数据湖
🚀 项目简介
reth-indexer是一个强大的工具,它直接从reth数据库中读取信息,并将这些数据快速索引到传统或非传统的数据库(如Postgres和Google Cloud BigQuery)中。无需额外的设置,只需一个简单的JSON配置文件,就能暴露一个API供您查询链上数据。
🚧 免责声明
这是一项研发项目,可能存在未完善的功能和bug。在rust环境下,我们还有很多优化的空间,欢迎提交PR以使项目更快更好。
💡 为什么选择reth-indexer?
通常,获取区块链数据需要依赖Infura或Alchemy等服务,费用可能随着数据量的增长而增加,尤其是当您需要大量的事件数据时。JSONRPC协议的网络延迟问题使得大量数据的快速获取变得困难。reth-indexer解决了这些问题,通过直接与本地reth节点数据库交互,实现高速的数据索引,支持您在自有的基础设施上自由扩展。
ועדת כל צדדים מה umiejętności — מתכנתים, ניתוחי נתונים,פתחני מודלים למידה עמוקה ואנשים שמחפשים מידע התחלף בקופסא אחד לשימוש פרודוקציונלי או דיווחים.
💫 项目特点
- 自动化数据库表创建(Postgres、GCP Biquery等)
- 自动应用索引,便于快速查询
- 多存储库同步(例如,同时向Postgres和BigQuery写入索引)
- 任意合约事件索引
- 多个合约事件同步
- 过滤器支持,可对输入类型进行精细筛选
- 按区块范围快照
- 无代码需求,通过易于编辑和理解的JSON配置文件驱动
- 自建基础设施,可按需扩展
- 即插即用的API(目前仅限Postgres实现)
- 抽象化设计,方便扩展至更多数据库/数据仓库
📈 基准测试
性能因区块范围和事件频率而异,但大致如下:
- 每秒大约处理30,000个事件
- 在400毫秒内扫描约10,000个没有事件的区块
与其他解决方案相比,例如:
- 针对The Graph Hosted (Substreams),reth-indexer在执行特定任务时速度快了73.5倍!
🔍 如何工作
reth-indexer逐块扫描reth数据库,查找与配置文件中的事件映射匹配的事件,然后将数据批量写入CSV文件,最后导入到Postgres数据库(或其他已配置的数据库)。利用Bloom过滤器跳过不必要的块,并借助CSV和Postgres的COPY
语法来加速大量记录的写入速度。
🛠️ 如何使用
- 克隆项目:
git clone https://github.com/joshstevens19/reth-indexer.git
- 创建配置文件:
cp reth-indexer-config-example.json reth-indexer-config.json
- 运行
RUSTFLAGS="-C target-cpu=native" CONFIG="./reth-indexer-config.json" cargo run --profile maxperf --features jemalloc
💡 提示:您可以使用CONFIG
标志运行多个并行的索引器。
👋 API集成
除了同步数据,还可以启动一个基础API,提供REST API接口供您查询数据。虽然简单,但这可以作为查询数据的一个快捷方式。
reth-indexer 是一款强大的开源项目,专为那些希望从区块链中挖掘价值,且不想受制于高昂服务费或缓慢访问速度的人们而设计。立即尝试,释放您的数据潜能吧!