Hej, jestem Mike Kuykendall — ponad 20 lat jako inżynier oprogramowania, były sierżant sztabowy USAF, ojciec dwójki dzieci, a teraz człowiek stojący za Delta Zero Labs (@_MikeKuykendall na X).
Przez lata żyłem w świecie RPC. Chcesz każdy transfer ERC20 dla portfela wieloryba od 2020 roku? Uruchom skrypt, który pętli eth_getLogs z zakresami 10 000 bloków, obsługuj limity zapytań, ponawiaj próby przy błędach 429, stronicuj, deduplikuj, sam dekoduj ABI, przechowuj to gdzieś… i powtarzaj to dla swapów DEX, ticków wyroczni, likwidacji.
Jeden weekendowy projekt zamienił się w rachunek Alchemy za 400 USD miesięcznie i węzeł archiwum o pojemności 14 TB pożerający mój SSD. Przysiągłem, że musi być lepszy sposób.
Jest.
Zbudowałem (i teraz sprzedaję) produkcyjne, w pełni zdekodowane zestawy danych Parquet od genezy do szczytu dla Ethereum mainnet, BSC i Sepolia. Jedno pobranie. Jeden plik (lub czysty podzielony zestaw). Zero RPC na zawsze. Odpytuj 7,77 miliarda zdarzeń BSC lub 334 miliony zdarzeń Sepolia w sekundach na swoim laptopie za pomocą DuckDB lub Polars.
To nie jest kolejny indekser ani podgraf. To są dane, które sam byś wyodrębnił — ale już gotowe, zdekodowane, sklasyfikowane według signal_type, skompresowane i gotowe do posiadania na zawsze.
W tym poście przedstawiam dokładny przewodnik krok po kroku, którego życzyłbym sobie dwa lata temu. Pod koniec będziesz dokładnie wiedział, jak:
Zabijmy razem podatek RPC.
Szybka weryfikacja rzeczywistości (już to wiesz, ale skwantyfikujmy ból):
Miałem tego dość. Więc napisałem silnik ekstrakcji zero-RPC (patent w toku Fused Semantic Execution — FSE). Czyta surowe dane łańcucha raz, dekoduje każde zdarzenie do czystych kolumn, oznacza je signal_type i zrzuca prosto do Parquet.
Wynik? Zestawy danych takie jak:
Wszystko dostarczone jako Parquet. Kolumnowe, szalenie skompresowane (5–10× mniejsze niż CSV), gotowe na predicate pushdown, współpracuje z każdym nowoczesnym narzędziem danych.
Każdy wiersz to jedno zdekodowane zdarzenie. Oto podstawowe kolumny, których będziesz używać codziennie (pełna specyfikacja 19 kolumn jest w dokumentacji pobierania):
Jeden wiersz = jeden krystalicznie czysty, gotowy do analizy rekord. Nigdy więcej dekodowania ABI w swoim kodzie.
Przejdź do oficjalnej próbki:
https://huggingface.co/datasets/MikeKuykendall/ethereum-signals-sample
Lub mirror Kaggle: https://www.kaggle.com/datasets/mikekuykendall/ethereum-onchain-signals
Pobierz plik Parquet (~5–10 MB, 10 000 warstwowych wierszy obejmujących każdy signal_type).
Polecam DuckDB — to magiczne dla tego.
pip install duckdb pandas pyarrow
# lub po prostu brew install duckdb na Mac
Otwórz notatnik Jupyter lub po prostu CLI DuckDB.
Python + Pandas (do małej eksploracji)
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 (tutaj dzieje się magia — zerowa pamięć dla ogromnych plików)
-- Uruchom DuckDB
duckdb
-- Dołącz próbkę
SELECT * FROM read_parquet('ethereum_signals_sample.parquet') LIMIT 10;
"Ile transferów ERC20 wykonał ten adres?"
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';
"Top 10 tokenów według liczby transferów w 2024"
SQL
SELECT contract_address,
COUNT(*) as tx_count
FROM read_parquet('your_full_dataset.parquet')
WHERE signal_type = 'ERC20_Transfer'
AND timestamp >= 1704067200 -- 1 stycznia 2024
AND timestamp < 1735689600 -- 1 stycznia 2025
GROUP BY contract_address
ORDER BY tx_count DESC
LIMIT 10;
"Wszystkie swapy Uniswap V3 dla konkretnej puli, z wpływem na cenę"
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;
"Ticki cen Chainlink dla ETH/USD w czasie" (idealne do backtestingu)
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;
Wskazówka profesjonalisty: DuckDB może również czytać podzielone na partycje foldery:
SQL
SELECT COUNT(*) FROM read_parquet('mainnet_parquets/*.parquet');
Automatycznie używa predicate pushdown — filtrowanie po block_number lub signal_type pomija 99% danych na dysku. Będziesz odpytywał miliardy wierszy szybciej niż większość ludzi przewija Twittera.
Uwaga dotycząca przechowywania: Pełny zestaw BSC jest duży, ale kompresjowalny i działa dobrze na maszynie z 64 GB RAM. Dla większych przepływów pracy po prostu uruchom tani box Hetzner z 128 GB RAM, a DuckDB wciąż przewyższa hurtownie chmurowe pod względem kosztów.
Jeden kupujący powiedział mi: "Anulowałem mój plan RPC za 1200 USD miesięcznie tego samego dnia, gdy zestaw danych dotarł".
PodejścieKosztSzybkość dla historii 3 latKonserwacjaWłasnośćSurowe pętle RPC200–2000 USD/mieGodziny–dniStałeTy odbudowujeszPodgrafy/The GraphDarmowe–płatneSzybkie, ale niepełneRyzyko dostawcyNieCryo samo-ekstrakcjaTwój czas + węzełDni do ekstrakcjiCiągłeTakDelta Zero ParquetJednorazowo 999 USD+SekundyZeroNa zawsze
Pierwszych 1000 kupujących na mainnet/BSC otrzymuje 25% zniżki z kodem EARLY25 przy kasie.
Pytania? Napisz do mnie na X @_MikeKuykendall lub dołącz do kanału Telegram linkowanego na stronie. Odpowiadam na każde — to operacja solo należąca do weterana i naprawdę zależy mi, żebyś wygrał z danymi.
Przestań płacić czynsz za dane, które powinny być twoje.
Pobierz próbkę. Uruchom zapytania. Potem nigdy więcej nie wywołuj eth_getLogs.
Do zobaczenia on-chain (offline).
— Mike Kuykendall Delta Zero Labs P.S. Kolejny drop łańcucha nadchodzi wkrótce. Chcesz wczesny dostęp + niestandardowe typy sygnałów? Napisz do mnie.
I Ditched RPC Hell for Good: Your Complete Genesis-to-Tip Parquet Handbook for Lightning-Fast… został pierwotnie opublikowany w Coinmonks na Medium, gdzie ludzie kontynuują rozmowę, podkreślając i odpowiadając na tę historię.

