হেই, আমি Mike Kuykendall — 20+ বছরের সফটওয়্যার ইঞ্জিনিয়ার, প্রাক্তন USAF স্টাফ সার্জেন্ট, দুই সন্তানের বাবা, এবং এখন Delta Zero Labs-এর পেছনের মানুষ (@_MikeKuykendall X-এ)।
বছরের পর বছর আমি RPC জীবন যাপন করেছি। 2020 সাল থেকে একটি whale ওয়ালেটের জন্য প্রতিটি ERC20 ট্রান্সফার চান? 10,000-ব্লক রেঞ্জ সহ eth_getLogs লুপ করে একটি স্ক্রিপ্ট চালু করুন, রেট লিমিট হ্যান্ডল করুন, 429s-এ পুনরায় চেষ্টা করুন, পেজিনেট করুন, ডিডুপ করুন, নিজে ABI ডিকোড করুন, কোথাও সংরক্ষণ করুন… DEX সোয়াপ, oracle টিক্স, লিকুইডেশনের জন্য ধুয়ে পুনরাবৃত্তি করুন।
একটি সপ্তাহান্তের প্রজেক্ট $400/মাস Alchemy বিল এবং 14 TB আর্কাইভ নোড আমার SSD খেয়ে ফেলায় পরিণত হয়েছিল। আমি শপথ করেছিলাম যে আরও ভালো উপায় থাকতে হবে।
আছে।
আমি তৈরি করেছি (এবং এখন বিক্রি করি) প্রোডাকশন-গ্রেড, সম্পূর্ণ ডিকোড করা, genesis-to-tip Parquet ডেটাসেট Ethereum মেইননেট, BSC, এবং Sepolia-এর জন্য। একটি ডাউনলোড। একটি ফাইল (অথবা পরিষ্কার পার্টিশন করা সেট)। চিরতরে শূন্য RPC। DuckDB বা Polars দিয়ে আপনার ল্যাপটপে সেকেন্ডে 7.77 বিলিয়ন BSC ইভেন্ট বা 334 মিলিয়ন Sepolia ইভেন্ট কুয়েরি করুন।
এটি আরেকটি ইন্ডেক্সার বা সাবগ্রাফ নয়। এটি সেই ডেটা যা আপনি নিজে এক্সট্র্যাক্ট করতেন — কিন্তু ইতিমধ্যে সম্পন্ন, ডিকোড করা, signal_type দ্বারা শ্রেণীবদ্ধ, সংকুচিত, এবং চিরতরে মালিকানার জন্য প্রস্তুত।
এই পোস্টে আমি আপনাকে সেই সঠিক হাতে-ধরে-দেওয়া ওয়াকথ্রু দিচ্ছি যা আমি দুই বছর আগে চাইতাম। শেষে আপনি সঠিকভাবে জানবেন কীভাবে:
চলুন একসাথে RPC ট্যাক্স মেরে ফেলি।
দ্রুত বাস্তবতা যাচাই (আপনি ইতিমধ্যে এটি জানেন, কিন্তু চলুন ব্যথাকে পরিমাপ করি):
আমি এতে ক্লান্ত হয়ে গেছি। তাই আমি একটি জিরো-RPC এক্সট্র্যাকশন ইঞ্জিন লিখেছি (পেটেন্ট-পেন্ডিং Fused Semantic Execution — FSE)। এটি একবার কাঁচা চেইন ডেটা পড়ে, পরিষ্কার কলামে প্রতিটি ইভেন্ট ডিকোড করে, signal_type দিয়ে ট্যাগ করে, এবং সরাসরি Parquet-এ ডাম্প করে।
ফলাফল? ডেটাসেট যেমন:
সবকিছু Parquet হিসাবে ডেলিভার করা হয়। কলামার, অবিশ্বাস্যভাবে সংকুচিত (CSV-এর চেয়ে 5–10× ছোট), predicate pushdown প্রস্তুত, প্রতিটি আধুনিক ডেটা টুলের সাথে কাজ করে।
প্রতিটি সারি একটি ডিকোড করা ইভেন্ট। এখানে মূল কলাম রয়েছে যা আপনি প্রতিদিন ব্যবহার করবেন (সম্পূর্ণ 19-কলাম স্পেসিফিকেশন ডাউনলোড ডকুমেন্টেশনে রয়েছে):
একটি সারি = একটি স্ফটিক-পরিষ্কার, বিশ্লেষণ-প্রস্তুত রেকর্ড। আপনার কোডে আর কখনো ABI ডিকোডিং নেই।
অফিসিয়াল নমুনায় যান:
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 কভার করে)।
আমি 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 -- Jan 1 2024
AND timestamp < 1735689600 -- Jan 1 2025
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');
এটি স্বয়ংক্রিয়ভাবে predicate pushdown ব্যবহার করে — 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 Parquetএকবার $999+সেকেন্ডশূন্যচিরতরে
মেইননেট/BSC-তে প্রথম 1,000 ক্রেতা চেকআউটে EARLY25 কোড দিয়ে 25% ছাড় পাবেন।
প্রশ্ন? X-এ আমাকে DM করুন @_MikeKuykendall অথবা সাইটে লিঙ্ক করা 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… মূলত Coinmonks-এ Medium-এ প্রকাশিত হয়েছিল, যেখানে মানুষ এই গল্পটি হাইলাইট এবং প্রতিক্রিয়া দিয়ে কথোপকথন অব্যাহত রাখছে।


