The Go indexer reads Base RPC logs in bounded batches and persists canonical provenance plus derived projections in PostgreSQL.
Processing loop
- Load the durable checkpoint.
- Read chain head and subtract configured confirmations (default
6).
- Validate that the checkpoint hash remains canonical.
- Fetch logs for configured and dynamically discovered contracts.
- Discover each launch’s token, curve, and canonical pool within bounded ranges.
- Discover and match curve
Graduated with manager GraduatedV3 in the same transaction and block.
- Decode events, transaction senders, and token metadata.
- Persist the block, raw event, projections, and checkpoint atomically.
Launch events add the token, curve, and pool to future scans. The indexer also captures ERC-20 transfers for holder balances and Uniswap V3 Swap events for graduated market history.
Reorganizations and replay
If the stored checkpoint hash differs from the RPC header, recovery marks affected blocks/events/projections noncanonical, rewinds to a common canonical point, and rebuilds derived state. INDEXER_START_BLOCK seeds only a new checkpoint; it does not overwrite a durable one. A finite INDEXER_STOP_BLOCK supports controlled replay.
Application token exclusions suppress derived public projections for explicitly recorded exceptions while preserving canonical raw chain events.
The indexer is a query system, not the financial source of truth. Transaction construction must use current contract reads.