Skip to main content
Building analytics dashboards, portfolio trackers, or data feeds requires indexing on-chain data off-chain. This tutorial covers three approaches in order of complexity.

Approach 1: Simple polling script

Suitable for low-frequency monitoring or one-off analytics.

Approach 2: Historical backfill with pagination

Fetch all events from genesis (or a start block) in paginated chunks:

Approach 3: Persistent database index

For production dashboards, store events in a database as they arrive.

Schema example (PostgreSQL)

Indexer script

Query account balances from indexed data

Using the block explorer REST API

For simple lookups without running your own indexer, use the REST API:

Tips for production indexers

  • Checkpoint your progress: Store the last indexed block in the database to resume after restarts
  • Handle reorgs: On Autheo Chain, CometBFT finality means there are no reorgs — one confirmation is sufficient
  • Use WebSocket subscriptions for real-time indexing, with HTTP fallback for historical backfills
  • Rate limit awareness: Public endpoints have rate limits; implement retry with backoff
  • Deduplicate events: Use (tx_hash, log_index) as a unique key to prevent duplicates from re-indexing