RPC vs indexing — what's the difference?
Updated August 2026
RPC is the interface a blockchain node exposes for asking about specific, current state — a balance, a transaction, the latest block. Indexing is the process of extracting and reorganising chain data so you can query across history and aggregate it.
They are not competing options. Most applications use RPC for live lookups and writes, and an index for everything involving history, search, or aggregation.
When is RPC the right tool?
When you know exactly what you want and it concerns the present.
- What is this address's current balance?
- What is in block 19000000?
- Did this transaction succeed?
- Submitting a transaction to the network
These are point lookups. A node answers them quickly because it does not have to search.
When do you need an index?
When the question involves finding rather than fetching.
- Every swap this wallet has made in the past year
- Total volume by pool, by day
- All wallets holding more than X of a token
- A feed of every transfer of a token, as it happens
None of these map to an RPC call. Answering them over RPC means fetching a very large number of blocks and filtering client-side — which works in a script and fails in production.
| RPC | Indexing | |
|---|---|---|
| Question shape | "What is X right now?" | "Find everything matching Y" |
| Historical range | One block at a time | Full history |
| Aggregation | No | Yes |
| Latency per query | Low | Low, after indexing |
| Setup cost | None | Extraction and transformation |
| Cost at scale | Grows with query volume | Paid once during indexing |
Why not just use RPC for everything?
Because the cost is in the wrong place. Every historical question re-reads the same blocks, so you pay repeatedly for data that has not changed since it was written. That is slow, expensive, and puts load on a node that was not designed as an analytics engine.
There is also data RPC simply does not expose well. Internal transactions, state changes, and balance changes are not in event logs, so a log-based approach cannot see them regardless of how many calls you make. Extraction methods that capture full execution detail can.
What does a typical architecture look like?
RPC for writes and live point lookups. An indexed store — Postgres, ClickHouse, a GraphQL API — for everything historical or aggregated. A streaming pipeline keeps the index current.
Substreams fills the last role: it processes full history in parallel and keeps streaming at the chain head, writing into whichever store you use.
Frequently asked questions
Does indexing replace my RPC provider? No. You still need RPC to submit transactions and read current state.
Can I index without running a node? Yes. Hosted endpoints provide indexed data without you operating infrastructure.
Is an archive node an index? No. An archive node stores full historical state but still exposes it through RPC — you can ask about any block, but you still cannot search across them.
Add an index without adding infrastructure — get an API key at thegraph.market, no personal information required.
Related: What is blockchain indexing? · Do I need to run a node to index blockchain data? · Polling vs streaming blockchain data