こんにちは、Mike Kuykendallです。ソフトウェアエンジニア歴20年以上、元米国空軍曹長、2児の父、そして現在Delta Zero Labsの創設者(@_MikeKuykendall on X)です。
何年もの間、私はRPCライフを送っていました。2020年以降のクジラウォレットのすべてのERC20振替が必要ですか?10,000ブロック範囲でeth_getLogsをループするスクリプトを起動し、レート制限を処理し、429でリトライし、ページ分割し、重複排除し、ABI自体をデコードし、どこかに保存する...DEXスワップ、オラクルティック、清算についても繰り返します。
ある週末のプロジェクトが月額400ドルのAlchemy請求書と、SSDを消費する14TBのアーカイブノードに変わりました。もっと良い方法があるはずだと誓いました。
あります。
私は(そして今販売している)本番グレードの、完全にデコードされた、genesis-to-tip Parquetデータセットをイーサリアムブロックチェーンメインネット、BSC、Sepoliaで構築しました。1回のダウンロード。1つのファイル(またはクリーンなパーティションセット)。RPCは永遠にゼロ。DuckDBまたはPolarsを使用して、ラップトップで77.7億のBSCイベントまたは3.34億のSepoliaイベントを数秒でクエリできます。
これは別のインデクサーやサブグラフではありません。これは自分で抽出するはずだったデータです - しかし、すでに完了し、デコードされ、signal_typeで分類され、圧縮され、永遠に所有できる状態です。
この投稿では、2年前に欲しかった正確な手取り足取りのウォークスルーを提供します。最後には、次の方法を正確に知ることができます:
一緒にRPC税を排除しましょう。
簡単な現実チェック(あなたはすでにこれを知っていますが、痛みを定量化しましょう):
私はうんざりしました。それで、ゼロRPC抽出エンジン(特許出願中のFused Semantic Execution - FSE)を書きました。生のチェーンデータを一度読み取り、すべてのイベントをクリーンな列にデコードし、signal_typeでタグ付けし、Parquetに直接ダンプします。
結果?次のようなデータセット:
すべてParquetとして提供されます。列指向で、驚くほど圧縮され(CSVの5〜10倍小さい)、述語プッシュダウン対応、すべての最新データツールで動作します。
各行は1つのデコードされたイベントです。毎日使用するコアカラムは次のとおりです(完全な19列の仕様はダウンロードドキュメントにあります):
1行=1つの明確で分析可能なレコード。コードで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ノートブックを開くか、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〜2000ドル数時間〜数日間継続的あなたが再構築サブグラフ/The Graph無料〜有料速いが不完全プロバイダーリスクなしCryo自己抽出あなたの時間 + ノード抽出に数日間継続中はいDelta Zero Parquet1回限り999ドル以上数秒ゼロ永遠
メインネット/BSCの最初の1,000人の購入者は、チェックアウト時にコードEARLY25で25%オフになります。
質問がありますか?X @_MikeKuykendallでDMするか、サイトにリンクされているTelegramチャンネルに参加してください。私はすべてに答えます - これは退役軍人所有のソロ運営であり、あなたがデータで勝つことを本当に気にかけています。
あなたのものであるべきデータに対して家賃を支払うのをやめてください。
サンプルをダウンロード。クエリを実行。そして、もう二度とeth_getLogsを呼び出さないでください。
オンチェーン(オフライン)でお会いしましょう。
— Mike Kuykendall Delta Zero Labs P.S. 次のチェーンドロップはもうすぐです。早期アクセス + カスタムシグナルタイプが必要ですか?DMしてください。
I Ditched RPC Hell for Good: Your Complete Genesis-to-Tip Parquet Handbook for Lightning-Fast…はもともとMediumのCoinmonksで公開されました。そこでは、人々がこのストーリーをハイライトして応答することで会話を続けています。


