我永久告别 RPC 地狱:从创世区块到最新区块的完整 Parquet 手册,实现闪电般快速的链上 分析 (不再有速率限制,不再有每月 $500 的&我永久告别 RPC 地狱:从创世区块到最新区块的完整 Parquet 手册,实现闪电般快速的链上 分析 (不再有速率限制,不再有每月 $500 的&

我永久告别了RPC地狱:你的完整创世区块到最新区块Parquet手册,实现闪电般快速…

2026/02/26 23:30
阅读时长 12 分钟

我彻底摆脱了 RPC 地狱:闪电般快速链上分析的创世区块到最新区块 Parquet 完整手册

(不再有速率限制,不再有每月 $500 的账单)

嘿,我是 Mike Kuykendall — 拥有 20 多年软件工程师经验,前美国空军参谋军士,两个孩子的父亲,现在是 Delta Zero Labs 背后的那个人(@_MikeKuykendall 在 X 上)。

多年来我一直过着 RPC 生活。想要自 2020 年以来某个巨鲸钱包的所有 ERC20 转账?启动一个循环 eth_getLogs 的脚本,使用 10,000 区块范围,处理速率限制,在 429 错误时重试,分页,去重,自己解码 ABI,存储在某处……然后为 DEX 交换、预言机价格、清算重复这个过程。

一个周末项目变成了每月 $400 的 Alchemy 账单和一个吞噬我 SSD 的 14 TB 归档节点。我发誓一定有更好的方法。

确实有。

我构建(现在出售)生产级、完全解码、从创世区块到最新区块的 Parquet 数据集,涵盖以太坊主网、BSC 和 Sepolia。一次下载。一个文件(或清晰分区的集合)。永远零 RPC。使用 DuckDB 或 Polars 在你的笔记本电脑上几秒钟内查询 77.7 亿条 BSC 事件或 3.34 亿条 Sepolia 事件。

这不是另一个索引器或子图。这是你本该自己提取的数据 — 但已经完成、解码、按 signal_type 分类、压缩,并准备好永久拥有。

在这篇文章中,我将提供我两年前希望得到的详细指导。到最后,你将确切地知道如何:

  • 获取免费的 10k 行样本
  • 本地加载它
  • 回答你过去频繁使用 RPC 才能解决的任何问题
  • 扩展到完整的数十亿行数据

让我们一起消除 RPC 税。

为什么 RPC 在真实历史数据工作中会失效

快速现实检查(你已经知道这些,但让我们量化一下痛苦):

  • eth_getLogs 在付费提供商上的最大范围通常是 10k–50k 区块。
  • 完整的主网 = 今天约 2200 万个区块。
  • 对所有转账事件进行一次完整扫描?预计 200–500 次 API 调用,数小时等待,以及意外的 $87 账单。
  • 想要对 Uniswap V3 进行 3 年的 MEV 回测?祝你好运。
  • 速率限制、归档节点成本、当提供商更改模式时的数据漂移……噩梦。

我厌倦了。所以我编写了一个零 RPC 提取引擎(专利待批的融合语义执行 — FSE)。它一次性读取原始链数据,将每个事件解码为清晰的列,用 signal_type 标记它,并直接转储到 Parquet。

结果?数据集如下:

  • 以太坊主网(Chainlink 预言机 + WETH 流动 + 完整 DEX 核心):约 3.58 亿个信号,创世区块 → 最新区块,约 16 GB 压缩。终身许可证 $999(前 1,000 名买家享受 25% 折扣)。
  • BSC(77.7 亿个解码事件 — PancakeSwap、Aave、Chainlink、Wormhole,所有内容):创世区块 → 区块 8200 万+。根据子集,一次性购买价格在 $999–$9,999 范围内。
  • Sepolia 完整归档(3.34 亿+事件,每个类别):单个约 12.3 GB 的 Parquet。

全部以 Parquet 格式交付。列式存储,极度压缩(比 CSV 小 5–10 倍),支持谓词下推,适用于所有现代数据工具。

Parquet 中实际包含什么(你可以信赖的 19 列模式)

每一行都是一个解码的事件。以下是你每天都会使用的核心列(完整的 19 列规范在下载文档中):

  • block_number (int64)
  • block_hash (string)
  • timestamp (int64 — Unix 秒)
  • tx_hash (string)
  • tx_index (int32)
  • from_address (string)
  • to_address (string)
  • contract_address (string — 代币或协议合约)
  • signal_type (string — 例如 ERC20_Transfer、UniswapV3_Swap、Chainlink_PriceUpdate、AaveV3_Liquidation、WETH_Deposit、DAO_Vote 等)
  • value / amount / amount0 / amount1 (十进制或 int256 标准化)
  • price (用于预言机)
  • log_index、topic0–topic3、为高级用户准备的原始数据字段
  • 加上特定于每个 signal_type 的解码参数(池地址、tick、sqrtPriceX96 等,用于 DEX 交换)

一行 = 一个清晰明了、可供分析的记录。你的代码中再也不需要 ABI 解码。

分步指南:5 分钟内从零到查询 3 亿+行

步骤 1:获取免费样本(无需电子邮件,无需注册)

前往官方样本:

https://huggingface.co/datasets/MikeKuykendall/ethereum-signals-sample

或 Kaggle 镜像:https://www.kaggle.com/datasets/mikekuykendall/ethereum-onchain-signals

下载 Parquet 文件(约 5–10 MB,10,000 个分层行,涵盖每个 signal_type)。

步骤 2:安装工具(耗时 60 秒)

我推荐 DuckDB — 它对此非常神奇。

pip install duckdb pandas pyarrow
# 或在 Mac 上直接 brew install duckdb

步骤 3:加载和探索(复制粘贴这些)

打开 Jupyter notebook 或直接使用 DuckDB CLI。

Python + Pandas(用于小规模探索)

import pandas as pd

df = pd.read_parquet("ethereum_signals_sample.parquet")
print(df.shape) # (10000, 19)
print(df['signal_type'].value_counts())
print(df.head())

DuckDB SQL(这就是魔法发生的地方 — 对于巨大文件零内存占用)

-- 启动 DuckDB
duckdb

-- 附加样本
SELECT * FROM read_parquet('ethereum_signals_sample.parquet') LIMIT 10;

步骤 4:你可以立即回答的真实问题

"这个地址进行了多少次 ERC20 转账?"

SQL

SELECT COUNT(*) as transfers,
SUM(amount) as total_volume
FROM read_parquet('your_full_dataset.parquet')
WHERE from_address = '0x1234...'
OR to_address = '0x1234...'
AND signal_type = 'ERC20_Transfer';

"2024 年按转账次数排名前 10 的代币"

SQL

SELECT contract_address,
COUNT(*) as tx_count
FROM read_parquet('your_full_dataset.parquet')
WHERE signal_type = 'ERC20_Transfer'
AND timestamp >= 1704067200 -- 2024 年 1 月 1 日
AND timestamp < 1735689600 -- 2025 年 1 月 1 日
GROUP BY contract_address
ORDER BY tx_count DESC
LIMIT 10;

"特定池的所有 Uniswap V3 交换,包括价格影响"

SQL

SELECT timestamp,
amount0,
amount1,
sqrtPriceX96,
(amount1::double / NULLIF(amount0,0)) as price_impact
FROM read_parquet('full_dataset.parquet')
WHERE signal_type = 'UniswapV3_Swap'
AND contract_address = '0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640' -- USDC/ETH 0.05%
ORDER BY block_number DESC
LIMIT 1000;

"随时间推移的 ETH/USD Chainlink 价格变动"(非常适合回测)

SQL

SELECT
date_trunc('day', to_timestamp(timestamp)) as day,
AVG(price) as avg_eth_price
FROM read_parquet('full_dataset.parquet')
WHERE signal_type = 'Chainlink_PriceUpdate'
AND contract_address = '0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419' -- ETH/USD
GROUP BY day
ORDER BY day;

专业提示:DuckDB 也可以读取分区文件夹:

SQL

SELECT COUNT(*) FROM read_parquet('mainnet_parquets/*.parquet');

它会自动使用谓词下推 — 按 block_number 或 signal_type 过滤会跳过磁盘上 99% 的数据。你查询数十亿行的速度将比大多数人滚动 Twitter 还要快。

步骤 5:使用完整数据集

  1. 在 https://deltazerolabs.dev 购买你的许可证(主网、BSC 或 Sepolia 套装)。
  2. 即时下载链接 + 终身重新下载密钥。
  3. 解压缩(如果需要)→ 将你的查询指向 Parquet。
  4. 完成。再也不用支付月费。

存储说明:BSC 完整集很大但可压缩,在 64 GB RAM 机器上运行良好。对于更大的工作流程,只需启动一个便宜的 Hetzner 服务器,配备 128 GB RAM,DuckDB 在成本上仍然完胜云数据仓库。

我的买家正在获得的实际收益

  • MEV 搜索者在不到 2 分钟内对 4 年的 DEX 数据进行路由逻辑回测。
  • 合规团队追踪一个收藏的每笔 NFT 转账,无需受速率限制的 Etherscan。
  • 量化基金从完整的 WETH 流动 + 清算历史构建钱包健康评分。
  • 研究人员使用可重现的查询撰写论文(只需分享 SQL + 数据集版本)。

一位买家告诉我:"数据集到达的当天我就取消了每月 $1,200 的 RPC 计划。"

对比表(因为你喜欢这些)

方法成本3年历史数据速度维护所有权原始 RPC 循环$200–2000/月数小时–数天持续的你重建子图/The Graph免费–付费快速但不完整提供商风险否Cryo 自提取你的时间 + 节点提取需数天持续的是Delta Zero Parquet一次性 $999+秒零永久

准备好消除你的 RPC 账单了吗?

  1. 立即下载免费样本:https://huggingface.co/datasets/MikeKuykendall/ethereum-signals-sample
  2. 运行上述查询。感受速度。
  3. 当你准备好使用完整的创世区块到最新区块数据(主网、BSC 或 Sepolia)时,前往 https://deltazerolabs.dev/bsc 并获取你的终身许可证。

前 1,000 名购买主网/BSC 的买家在结账时使用代码 EARLY25 可享受 25% 折扣。

有问题?在 X 上私信我 @_MikeKuykendall 或加入网站上链接的 Telegram 频道。我会回答每一个问题 — 这是一个退伍军人拥有的独立运营,我真的关心你能用数据取得成功。

停止为本该属于你的数据支付租金。

下载样本。运行查询。然后再也不要调用另一个 eth_getLogs。

链上见(离线)。

— Mike Kuykendall Delta Zero Labs P.S. 下一个链的发布即将到来。想要早期访问 + 自定义信号类型?私信我。


I Ditched RPC Hell for Good: Your Complete Genesis-to-Tip Parquet Handbook for Lightning-Fast… 最初发布在 Medium 的 Coinmonks 上,人们在那里通过突出显示和回应这个故事来继续讨论。

免责声明: 本网站转载的文章均来源于公开平台,仅供参考。这些文章不代表 MEXC 的观点或意见。所有版权归原作者所有。如果您认为任何转载文章侵犯了第三方权利,请联系 [email protected] 以便将其删除。MEXC 不对转载文章的及时性、准确性或完整性作出任何陈述或保证,并且不对基于此类内容所采取的任何行动或决定承担责任。转载材料仅供参考,不构成任何商业、金融、法律和/或税务决策的建议、认可或依据。