Skip to main content

Data ownership and consistency

Every state class has one authority. Derived delivery systems can be discarded only when their authority and replay procedure are intact.

Ownership matrix

Schema sources: keeper, indexer, and API control.

Consistency model

Chain to indexer

Ponder scans and handles logs in EVM order. A projection can include unfinalized blocks, so Ponder owns rollback and replay on reorg. Consumers use the returned checkpoint rather than assuming two separate reads saw the same block. No secondary service fills gaps with its own eth_getLogs loop. That would create competing event ordering, range policy, retry behavior, and reorg semantics. The auditor obtains event projections from the indexer and uses independent RPC quorum calls only for bounded state verification.

Engine to relayer

The engine commits immutable accepted terms, lifecycle state, a job, and an outbox delivery in one durable workflow. BullMQ is allowed to deliver more than once. An execution token, idempotency key, current-state simulation, and database transitions make delivery idempotent. The relayer persists signed transaction bytes and the assigned nonce before broadcast. Ambiguous RPC outcomes rebroadcast the identical bytes or a bounded same-nonce replacement. It never creates a new logical action to recover transport uncertainty.

Confirmation to indexed

confirmed means the transaction receipt met the configured confirmation policy. indexed means the indexer has correlated the canonical transaction. These are intentionally separate: indexer lag must not erase receipt status, while a reorg can still require transaction reconciliation.

Snapshot to event stream

Realtime establishes a stream boundary around an authoritative snapshot. At-least-once overlap is expected. Clients deduplicate event IDs and advance domain versions monotonically. Stream loss requires a fresh snapshot, not database reconstruction from WebSocket events.

Failure and recovery properties

Database privilege boundary

The migration job alone owns schemas. Runtime, engine, relayer, auditor, API, and indexer identities receive only their required tables, columns, sequences, and operations. Engine cannot read signed transaction ciphertext; relayer cannot rewrite accepted intent terms; auditor cannot mutate signing-role jobs or encrypted transactions; indexer cannot access coordination state. Backups must preserve the coordination and indexer logical databases as independent recovery domains even when hosted on the same managed PostgreSQL service.
Last modified on July 23, 2026