Posts tagged #tutorial

14 posts.

July 10, 2026 · 5 min read

Nonce Management for High-Throughput Senders

One stuck nonce can freeze every transaction behind it. If you're sending from a hot wallet at volume — a relayer, a market maker, a bridge — leaning on eth_getTransactionCount('pending') will eventually stall you. Here's how nonces actually work and how to manage them locally at scale.

Read →
July 6, 2026 · 4 min read

eth_getBlockReceipts: Every Receipt in a Block, One Call

Fetching every receipt in a block one transaction at a time is the N+1 problem in disguise — hundreds of round-trips per block. eth_getBlockReceipts returns all of them in a single call. Here's how it works, when to use it over JSON-RPC batching, and how to fall back when a node doesn't support it.

Read →
July 4, 2026 · 5 min read

Did It Actually Succeed? Reading eth_getTransactionReceipt

A transaction being mined does not mean it worked — a reverted transaction still lands in a block and still costs you gas. The receipt is where the truth lives: the status flag, the event logs, the real gas paid, and how many confirmations you should wait. Here's how to read one.

Read →
July 3, 2026 · 6 min read

Estimating Gas Right: eth_estimateGas, EIP-1559, and Buffers

Half of failed transactions are gas mistakes: an 'out of gas' revert or a fee too low to ever get mined. Here's how eth_estimateGas actually works, how EIP-1559 fees are built, why you buffer the gas limit, and how to put it all together without overpaying.

Read →
June 30, 2026 · 5 min read

Handling Chain Reorgs in Your Indexer

Your indexer works perfectly in testing, then a reorg silently corrupts your database with transactions that no longer exist. Here's how reorgs break indexers and two proven patterns to handle them — confirmation lag and reorg detection with rollback.

Read →
June 25, 2026 · 4 min read

Reading Historical State: eth_call at a Past Block

eth_call defaults to the latest block, but you can point it at any past block to read state as it was then — a balance last Tuesday, an oracle price at a specific block. The catch: historical state reads need an archive node. Here's how to do it in viem, ethers, and web3.py, and why a full node returns 'missing trie node'.

Read →
June 12, 2026 · 6 min read

How to Handle WebSocket Reconnections Without Losing Events

A WebSocket subscription that silently drops is worse than no subscription at all — you keep running, but events vanish into the gap. Here's how to build reconnect logic that detects the drop, backs off, re-subscribes, and backfills the missed events so your indexer never loses a log.

Read →
June 3, 2026 · 6 min read

Connecting MetaMask to Sonic, Berachain, and Monad

Three of 2025's biggest EVM chain launches, three sets of MetaMask configuration values. The exact fields to paste, why the official public RPCs aren't enough for real use, and the errors to expect when you mistype something.

Read →
June 1, 2026 · 6 min read

How `eth_getLogs` Range Caps Bite You in Production

Your indexer works fine until it hits a single dense block range, then everything stops. Here's the cap mechanics across providers, the adaptive chunking pattern that actually works, and the code to do it right.

Read →