嘿,我是 Mike Kuykendall — 擁有 20 多年軟體工程師經驗,前美國空軍上士,兩個孩子的父親,現在是 Delta Zero Labs 的創辦人(@_MikeKuykendall 在 X 上)。
多年來我一直過著 RPC 生活。想要取得某個巨鯨錢包自 2020 年以來的每筆 ERC20 轉帳?啟動一個腳本,以 10,000 個區塊範圍循環 eth_getLogs,處理速率限制,在 429 錯誤時重試,分頁,去重,自己解碼 ABI,儲存到某個地方......然後對 DEX 交換、預言機刻度、清算重複這個過程。
一個週末專案變成了每月 $400 美元的 Alchemy 帳單和一個吃掉我 SSD 的 14 TB 存檔節點。我發誓一定有更好的方法。
確實有。
我建立(現在正在銷售)生產級、完全解碼、從創世區塊到最新區塊的 Parquet 資料集,涵蓋 Ethereum 主網、BSC 和 Sepolia。一次下載。一個檔案(或乾淨的分區集)。永遠零 RPC。使用 DuckDB 或 Polars 在您的筆記型電腦上以秒為單位查詢 77.7 億個 BSC 事件或 3.34 億個 Sepolia 事件。
這不是另一個索引器或子圖。這是您本來要自己提取的資料 — 但已經完成、解碼、按 signal_type 分類、壓縮,並準備好永久擁有。
在這篇文章中,我將為您提供兩年前我希望擁有的詳細手把手教學。最後您將準確地知道如何:
讓我們一起消滅 RPC 稅。
快速現實檢查(您已經知道這一點,但讓我們量化這種痛苦):
我厭倦了這一切。所以我編寫了一個零 RPC 提取引擎(專利待批的融合語義執行 — FSE)。它一次讀取原始鏈資料,將每個事件解碼為乾淨的欄位,用 signal_type 標記它,並直接轉儲到 Parquet。
結果?像這樣的資料集:
全部以 Parquet 格式交付。列式儲存,瘋狂壓縮(比 CSV 小 5-10 倍),準備好謂詞下推,適用於每個現代資料工具。
每一行都是一個解碼事件。以下是您每天會使用的核心欄位(完整的 19 欄規格在下載文件中):
一行 = 一條清晰明瞭、準備分析的記錄。您的程式碼中再也不需要 ABI 解碼。
前往官方樣本:
https://huggingface.co/datasets/MikeKuykendall/ethereum-signals-sample
或 Kaggle 映像:https://www.kaggle.com/datasets/mikekuykendall/ethereum-onchain-signals
下載 Parquet 檔案(約 5-10 MB,涵蓋每個 signal_type 的 10,000 個分層行)。
我推薦 DuckDB — 它對此非常神奇。
pip install duckdb pandas pyarrow
# 或在 Mac 上只需 brew install duckdb
打開 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;
「這個地址完成了多少次 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 的速度還快。
儲存注意事項:BSC 完整集很大但可壓縮,在 64 GB RAM 的機器上運行良好。對於更大的工作流程,只需啟動一個擁有 128 GB RAM 的便宜 Hetzner 伺服器,DuckDB 在成本上仍然遠遠勝過雲端資料倉儲。
一位買家告訴我:「資料集到達的當天,我就取消了每月 $1,200 美元的 RPC 計劃。」
方法成本3 年歷史速度維護擁有權原始 RPC 循環每月 $200-2,000 美元數小時-數天持續您重建子圖/The Graph免費-付費快速但不完整提供商風險否Cryo 自行提取您的時間 + 節點數天提取持續是Delta Zero Parquet一次性 $999 美元+秒零永遠
前 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,人們在那裡透過突出顯示和回應此故事來繼續對話。


