Build EVM blockchain data indexers using Ponder (ponder.sh) - an open-source TypeScript framework for indexing smart contract events, transactions, and traces into custom database schemas with type-safe APIs. Use when the user mentions ponder, blockchain/EVM indexing, onchain data pipelines, subgraph replacement, or wants to index smart contract events into a queryable database.
98
99%
Does it follow best practices?
Impact
98%
1.25xAverage score across 5 eval scenarios
Passed
No known issues
A DeFi analytics team needs to track all transfer events for the USDC token on Ethereum mainnet. They want a Ponder indexer that captures every Transfer event, stores the sender, receiver, amount, and block timestamp, and exposes the data through a standard query interface with filtering and pagination.
The USDC contract address on mainnet is 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 and it was deployed at block 6082465.
The standard ERC-20 Transfer event ABI is:
[{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true},{"name":"to","type":"address","indexed":true},{"name":"value","type":"uint256","indexed":false}]},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true},{"name":"spender","type":"address","indexed":true},{"name":"value","type":"uint256","indexed":false}]}]Create a complete Ponder project with the following files:
ponder.config.ts - Chain and contract configurationponder.schema.ts - Database schema for transfer recordssrc/index.ts - Indexing function for Transfer eventssrc/api/index.ts - API route setup for querying datatsconfig.json - TypeScript configurationpackage.json - Project dependenciesabis/ERC20Abi.ts - The ABI file.env.local - Environment variable templateThe project should be ready to run with ponder dev after providing an RPC URL.