01
One engine, two products.
Spot and perp share the matching core, the WAL, the ledger, and the audit chain. No second-tier settlement infra.
SPOT
Direct spot pairs. Same Rust core, same conservation gates, same audit chain. Settlement is bookkept the moment a fill clears the matching loop — no detached settlement layer to reconcile.
A spot product is often the place exchanges cut corners. Not here — every property of the perp engine carries over.
01
Spot and perp share the matching core, the WAL, the ledger, and the audit chain. No second-tier settlement infra.
02
The moment a fill clears the matching loop, the corresponding pair of transfers is bookkept. No batch reconciliation, no end-of-day surprises.
03
Each deposit / withdrawal is a WAL-durable transfer, hashed into the audit chain, conservation-locked end to end.
04
Capability-model RPC. No client can read another account. Your spot positions live in the same authenticated namespace as your perp positions.
The widget below is honest about itself. The mid price and the 24-hour change are real — a live public BTC-USDT feed. The depth ladder around them is a synthetic showcase, drawn around that real mid, not a claim of Inanomo liquidity.
Real · live feed
The mid price and the 24-hour change come from a live public BTC-USDT feed — those two values are external and real.
Showcase · synthetic
The order sizes, totals and depth curve are a synthetic showcase rendered around that real mid — not Inanomo’s live liquidity.
A fill on the spot book runs the same path as a perp: matched once, logged before it moves, and booked as a conserved pair.
01 · One path
Spot and perp share one matching core — a single-threaded Rust actor. Every order runs the same in-process path, so the book resolves to one price for everyone, replayable bit-for-bit from the log.
Mechanism: in-process matching path, single-threaded match core.
02 · Durable first
Each accepted order is written to an fsync’d write-ahead log before it changes any state. The log is the source of truth; the engine’s state is a deterministic replay of it, rebuilt bit-identical on recovery.
Mechanism: WAL fsync before acknowledgement, deterministic replay.
03 · Conserved
The moment a fill clears the matching loop, it is bookkept as a double-entry pair of transfers. A conservation gate checks cache against ledger in lockstep on every batch — 0 drift, by construction, not by end-of-day reconciliation.
Mechanism: double-entry ledger + conservation gate, 0 drift.
Whether the book is real, which pairs list at launch, how fees apply, and how fast an order is acknowledged.
The mid price and the 24-hour change in the widget are real — they come from a live public BTC-USDT feed. The depth ladder around them is a synthetic showcase drawn around that real mid, not a snapshot of Inanomo liquidity. The framing is deliberate: what is real is labelled real, and what is illustrative is labelled illustrative.
The commitment is 120+ spot pairs at launch, quoted in USD, USDT and USDC, with limit, market, stop and take-profit order types. The exact instrument list is confirmed nearer to launch rather than promised here — only the count and the quote currencies are stated up front.
Spot uses the same maker/taker schedule as the rest of the exchange — from 0.020% maker and 0.050% taker at the standard tier, resolved at ingress and stamped on the order. Paying fees in $INOM reduces the effective rate by up to 25%, capped, and the full tier table lives on the fees page.
Order-ack latency is 9 µs at p99 and 5 µs at p50, measured on the in-process matching path, single instrument, canary hardware — the methodology is published next to the figure, and p50 and p99 are shown together rather than just the flattering one. It is a benchmark, marked as such, not a production-traffic promise.
The perp side of the same engine, the fees that apply, and the core underneath both.