Chains are slow, eventually-consistent dependencies. Users expect instant products. The gap between those truths is closed by the event-driven backend: indexers that mirror chain state, normalization layers that unify it, and idempotent consumers that stay correct through retries and reorgs.
Our backbones run on Kafka with TypeScript services, but the technology matters less than the properties: every consumer idempotent, every flow replayable, every balance reconstructable from events. Backfill and replay are designed operations, not emergency procedures.
Reorgs are normal weather
Each network reorganizes in its own way. Explicit finality policies per chain — how many confirmations before what kind of truth — turn reorgs from incidents into handled cases. Fault-injection tests prove the handling before production does.
Normalization matters equally. Five chains produce five shapes of the same movement; one normalization layer gives finance, product and support a single language for money in motion.
Reconciliation never sleeps
A reconciliation service continuously proves the books match the chains. Month-end becomes a report rather than a project, and on-call inherits a system that detects its own drift.
Related articles