# Indexing & events

Indexing is two loops: backfill and realtime. Design for retries, dedupe, and chain reorganizations (if applicable).

### Event sources

* RPC
* WebSocket
* Subgraph / custom indexer (TODO)

### Common patterns

* Backfill + realtime
* Reorg handling (if applicable)

### At a glance

<table data-view="cards"><thead><tr><th>Goal</th><th>Approach</th></tr></thead><tbody><tr><td>Transactions</td><td>Poll blocks and store receipts. Use block numbers for paging.</td></tr><tr><td>Events / logs</td><td>Subscribe via WebSocket, then confirm via RPC.</td></tr><tr><td>State snapshots</td><td>Query contract state at fixed block heights. (TODO)</td></tr></tbody></table>

### Next steps

<table data-view="cards"><thead><tr><th>Reference</th><th data-card-target data-type="content-ref">Link</th></tr></thead><tbody><tr><td>RPC methods you will use</td><td><a href="../api/json-rpc">json-rpc</a></td></tr><tr><td>Subscriptions and reconnect strategy</td><td><a href="../api/websocket">websocket</a></td></tr></tbody></table>
