Architecture
How a transaction travels from the validator to a row in your database.
You do not need any of this to build an indexer. It is here because knowing where the moving parts are makes the error messages, the deploy states and the latency characteristics make sense.
The path of a transaction#
- A validator streams transactions and account updates for the programs your canvas names, at the commitment level you chose.
- Your worker pod — one container, yours alone — receives that stream and decodes the instructions and accounts you declared.
- Decoded values are passed into your WebAssembly modules, which run in a sandbox with no network and no filesystem.
- Results are written to your PostgreSQL over a pooled connection, and any triggers that pass their gate are dispatched.
What happens when you press deploy#
- The API runs the preflight checks, snapshots your canvas into a version, and records the deployment.
- It publishes a command to a message broker, which guarantees the command is delivered exactly once even if a service restarts mid-flight.
- The orchestrator consumes that command and talks to Kubernetes to create or replace your pod. Its handler is idempotent, which is why the same command serves both a cold start and a rollout.
- Pod health flows back and becomes the status you see on the logs page.
| Field | Type | Description |
|---|---|---|
| Dedicated pods | isolation | Your indexer does not share a process with anyone else's. It also means starting one has a real cost, which is what credits pay for. |
| Broker-driven deploys | durability | A deploy is a command that survives a restart. It is also why deploying is asynchronous: you get a 202 and a status to watch, not an instant result. |
| In-memory balance | credits | Your credit balance is decremented live rather than reconciled nightly, so exhaustion stops a worker promptly. |
| Wasm sandbox | safety | Transforms cannot reach the network or the filesystem. A broken transform can write wrong rows, but it cannot reach anything outside itself. |
| Direct database writes | BYODB | Rows go from your worker to your database with nothing in between holding a copy. |
The interactive blueprint#
For the full picture — every service, what it is written in, and the data flowing between them — the animated architecture page walks through the control plane, the Wasm compilation pipeline and the latency characteristics of each hop.