MARKET ENGINE
The market engine fills every order on Dexter — the same code path serves $49 challenge attempts, funded 90 / 10 accounts, and unsigned public flow. One vAMM, one funding schedule, one liquidation routine, one fee table at 0.020% maker / 0.060% taker on notional. There is no prop-only matching layer, no preferential queue for funded traders, and no way for an operator to widen a public user's spread to subsidize a podium finish. That symmetry is what makes a Dexter pass auditable: the +10% you produced on a $99 attempt is the same +10% a $50K public account would have produced on the identical order flow.
The engine decides whether an order may enter, the price at which it fills, how position size and cash settle, and when a market must shift from live trading into a defensive posture. Each of those decisions is owned by a single execution domain so a fill, a funding accrual, and a liquidation cannot disagree about state. The table below maps the five responsibilities — each is covered in depth on its own page in this chapter.
| Engine responsibility | What it covers |
|---|---|
| Front-door control | Agent authorization, EIP-712 signature validity, monotonic seq, createdAtTs / goodTilTs guards, and the on-chain OrderCommitRegistry anchor |
| Pricing | Liquidityless vAMM skew, spread controls, inventory caps, and per-market open-interest pressure |
| Ledger updates | Position size, entry basis, realized PnL, 0.020% maker / 0.060% taker fees, fundingAccrued, and account cash |
| Market posture | Live, reduced, close-only, session-closed, and halted — the same five states across every venue |
| Forced routines | Maintenance-margin liquidation, insurance flow, ADL selection, and rebalance after a stress event |
#How the live trading path works
Production never accepts a raw order from a public RPC. Each request arrives as an EIP-712 signed IOC payload carrying a monotonic seq, createdAtTs, and goodTilTs. Before the runtime prices anything, it confirms the signer is registered through agent authorization, the seq has not been reused, the timestamps are inside the validity window, and — when commit guard is active — the order hash has already been recorded to the on-chain OrderCommitRegistry on Base via commitOrder. Any one of those checks failing aborts the request before it reaches the matching path.
Pricing runs against a liquidityless vAMM. There is no resting maker book to lean on, so the engine quotes flow through skew-sensitive curves, hard inventory caps, and per-market open-interest pressure. A taker buying into an already long-heavy book pays a higher effective rate than a taker buying into a balanced book, and the cap on outstanding directional notional is enforced at the admission boundary rather than at fill time.
When a fill is accepted, the engine moves position size, entry basis, realized PnL, the 0.020%/0.060% fee component, and any cash settlement in a single ordered transition. Funding accrues from the same state advance, so a trader cannot observe a position whose carry has updated but whose realized PnL has not. The unfilled remainder of an IOC is cancelled immediately — there is no working order to track.
agent authorized
-> commitOrder(...) recorded on OrderCommitRegistry
-> EIP-712 signed IOC enters runtime
-> signer / seq / createdAtTs / goodTilTs checks
-> admission and posture checks
-> vAMM price quote against skew and inventory
-> fill or cancel remainder
-> position, fee, fundingAccrued, cash advance in one transition
-> publication pipeline emits new market state
#Market posture, carry, and forced routines
Every market runs inside an explicit state machine with five postures: live, reduced, close-only, session-closed, halted. These are not UI tags — they are admission rules that govern whether a fresh order can add risk, whether reduction is still open, and whether the venue is honoring an underlying session break or waiting on a cleaner price reference. Transitions are driven by reference freshness, session calendars, skew pressure, utilization, bad-debt exposure, and recovery checks after a degraded period.
Open interest, directional imbalance, and crowding are measured continuously, and they feed the same loop that sets the funding index, the skew-adjusted taker rate, and the inventory caps. Funding in Dexter is part of the engine's carry model — accruing every 8 hours into fundingAccrued — not a number reconstructed from after-the-fact reporting. The pages that follow in this chapter break down each surface in detail.
Forced reduction lives in the same execution domain. Liquidation scans, insurance-aware bad-debt handling, ADL selection, and post-stress rebalance all share state and ordering with ordinary order processing. That is what keeps stress behavior deterministic: when maintenance margin breaches the floor and a position is liquidated, the same fee, funding, and ledger transition runs that would run for a voluntary close — only the trigger is different.
#What this means for your challenge
- The same engine fills your challenge as fills the public book. A $49 or $99 attempt is not routed through a sandbox — it is priced against the production vAMM at the same skew, the same inventory cap, and the same 0.020% maker / 0.060% taker schedule. A +10% target produced here is the +10% a public $50K account would have produced on identical flow, which is why funded payouts on Base are reproducible against the chain.
- Skew costs are real costs that count against +10%. When the engine raises the effective taker rate against a crowded direction, that surcharge lands on your equity inside the same fill. Fighting the skew is the most common reason an attempt grinds out the -4% daily floor without ever touching the liquidation line.
- Funding carry is part of your PnL. Every 8 hours the funding index settles and fundingAccrued moves your equity. Holding a crowded-direction position for 30 days can quietly burn 1–3% before any directional move — check the published rate per market before sizing a multi-day hold.
- Forced routines end attempts the same bar they fire. Liquidation, ADL, and rebalance flows close positions at the mark, attach an explicit liquidation fee on top of the realized loss, and almost always cross the -4% daily or -8% total drawdown on the same bar. The engine treats them as ordinary transitions, so there is no carve-out: the loss hits the rule check immediately.
- Funded accounts run the same code path. A 90 / 10 payout account does not get a separate matching layer or a private fee schedule. Same pricing, same fees, same funding cadence, same maintenance margin — which is why a passed account behaves exactly like the attempt that earned it.