Blog

Guides

Step-by-step recipes for reading onchain data: fixing a specific error you hit, or pulling a specific value out of a protocol like Aave, Uniswap, or Chainlink. Copy the snippet, adapt the address, move on.

ENS reverse lookup — resolving wallet addresses to primary names with a REST API
GuideAugust 24, 2026

ENS Reverse Lookup: Turning Addresses Into Names Without an Indexer

Resolve ENS primary names from wallet addresses with one REST call — using the Universal Resolver, which verifies forward resolution for you. Live, tested examples.

Permit2 allowances — reading the two-layer approval system with a REST API
GuideAugust 21, 2026

Permit2 Allowances: The Second Approval Layer Most Tools Never Check

How to read Permit2's two-layer approval system with a REST API — the token-level wrapper approval, and the per-app sub-allowance that actually decides what a router can move.

ERC-4626 vault share price — convertToAssets across Yearn, Morpho, and sDAI-style vaults
GuideAugust 17, 2026

ERC-4626 Vault Share Price: convertToAssets Across Any Vault, No SDK

Read any ERC-4626 vault share price in a single REST call using convertToAssets — the vault-vs-asset decimals trap, and batching several vaults together.

Decoding Ethereum calldata into a function call and arguments without an ABI file
GuideAugust 10, 2026

How to Decode Ethereum Calldata Without an ABI File

You have a contract address and a raw 0x calldata blob, no ABI file. Here's how to decode the function call and its arguments anyway, with a worked example.

Aave V3 health factor — getUserAccountData fields, base-currency decimals, and the infinite health case
GuideAugust 5, 2026

Aave V3 Health Factor Explained: getUserAccountData, Decimals, and the Infinite Health Case

Decode Aave V3's getUserAccountData correctly: six struct fields, three decimal scales, and why a zero-debt wallet returns a healthFactor near 1.16e59.

Using Chainlink price feeds correctly: staleness, sequencer uptime, and decimals normalization
GuideAugust 5, 2026

Using Chainlink Price Feeds Correctly: Staleness, Sequencer Uptime, and Decimals

The three checks a Chainlink price feed integration needs to be correct: staleness against the heartbeat, Base sequencer uptime, and decimals normalization without hardcoding 8.

Fixing the could not decode result data (0x) error in Ethers and viem
GuideAugust 5, 2026

Fixing "could not decode result data (value="0x")" in Ethers and Viem

Ethers and viem throw could not decode result data (value=0x) for four real reasons, from unresolved proxies to wrong chains. Diagnose each one and fix it fast.

ERC-8004 trustless agents — query the Identity and Reputation registries with evmquery
GuideAugust 5, 2026

ERC-8004 Explained: Query Onchain AI Agent Identity and Reputation with a REST Call

ERC-8004 gives AI agents a portable onchain identity and reputation record. Query the live Identity and Reputation registries with evmquery — no ABI, no SDK.

Why an eth_call loop hits 429 rate limits, and how Multicall3 fixes it
GuideAugust 5, 2026

Why Your eth_call Loop Hits 429s (and How Multicall3 Fixes It)

A loop of eth_call calls works fine in dev, then throws 429 in production. Here's the real free-tier RPC limit behind it, and how Multicall3 fixes it.