Real limit orders on Cardano L1, quoted by our keeper, on liquidity the client never hands over. Every fill is a public transaction, so a client can re-derive their own volume numbers straight from the chain.
On a running book, 3,419,141 ₳ of settled volume cost 1,696 ₳ in network fees. Our 0.20% operator fee adds 6,838 ₳, for 8,535 ₳ all-in. The working capital behind it was about 13,000 ₳, recycled in place 385× over. For comparison, a conventional DEX charges 0.3% in protocol fees alone, before its own gas. Our earlier one-way approach cost 0.35%.
Gas per fill depends on a single variable: how many fills share a transaction. The token makes no difference and neither does the owner; we measured both, below. That makes pooled order flow the pricing mechanism itself. Every client who joins deepens the batches every other client is already riding, and the cost per fill falls for all of them at once.
| Fills sharing one transaction | Gas per fill | Gas as % of volume | All-in with our 0.20% |
|---|---|---|---|
| 1 — a maker running alone (n=260) | 0.4088 ₳ | 0.213% | 0.413% |
| 4 — a thin book (n=22) | 0.1785 ₳ | 0.093% | 0.293% |
| 16 — a pooled book (n=906) | 0.0861 ₳ | 0.045% | 0.245% |
A maker running alone pays 0.413% all-in. Inside a pooled book the same maker pays 0.245%, our fee included, which still comes in under what a conventional DEX charges in protocol fees before it has paid a lick of gas. The gas itself is 4.75× lower for identical volume.
The mechanism is a fixed floor. Every Cardano transaction pays roughly 0.29 ₳ in base fee, Plutus bootstrap and reference-script overhead, however little it settles. A pooled transaction pays that floor once for sixteen fills instead of sixteen times, and past the floor an additional fill costs 0.063 ₳: about six cents of ₳ to settle another ~192 ₳ of volume. At scale, 5,000,000 ₳ of volume costs 2,244 ₳ pooled and 10,655 ₳ settled one fill at a time.
Percentages use the measured average fill size of ~192 ₳ and the measured per-fill gas at each depth. The 0.20% is our standard contracted rate (OperatorFeeBps = 20). It is charged on volume, so it is flat across the table by construction; all the movement in the all-in column comes from gas. Every figure comes from settled on-chain transactions.
The table above comes from a running book. Across 17,823 settled fills in 1,405 transactions quoting five tokens (ADAMMKT, iUSD, RISE, AGENT, TEST), the keeper settled 3,419,141 ₳ of volume for 1,696 ₳ of network fees: 0.0496%, the gas figure in the headline.
What makes the batches deep is worth spelling out. A transaction carrying one token averages 3.6 fills at 0.210 ₳ per fill. Carrying three tokens, it averages 16.0 fills at 0.086 ₳ per fill, 2.4× cheaper purely from mixing tokens into the same transaction. A fourth token held steady at 0.087 ₳ per fill.
| Token in the shared book | Fills | Volume | Gas per fill | Fee as % of volume |
|---|---|---|---|---|
| iUSD | 4,118 | 815,364 ₳ | 0.0862 ₳ | 0.0435% |
| RISE | 3,012 | 602,400 ₳ | 0.0863 ₳ | 0.0431% |
| AGENT | 403 | 80,580 ₳ | 0.0867 ₳ | 0.0434% |
Three tokens with very different volumes, and the cost per fill agrees to within half a percent: 0.0862, 0.0863, 0.0867 ₳. Gas belongs to the fill. A client's cost is independent of which asset they bring, because their fills ride transactions the book was already paying for.
At the measured rate that is 4.75× cheaper, a saving of ~8,410 ₳ on 5,000,000 ₳ of settled volume.
Depth has a limit. 16 fills is the measured optimum; the deepest transactions we observed (25 fills, small sample) cost more per fill as script execution units outgrew the amortization. The keeper tunes to the optimum.
Everything above rests on the claim that pooling clients costs nothing, so we settled it on chain. Each client is its own stake credential and their orders rest at different script addresses, the same way two real clients' orders would. Every hash below is live on preprod and opens in cexplorer.
| Transaction | Fills | Distinct clients | Gas | Gas per fill | vs one-per-tx |
|---|---|---|---|---|---|
| 288730cd9c2aa278277422ee6c7ea9d037013ae178a1b0a21e11e143aba7f5ad | 1 | 1 | 0.3949 ₳ | 0.3949 ₳ | 1.00× |
| a03177a5a8bd6a481418cd3b0405057f4e89982d7941fe3f08807cb3604c1bc2 | 2 | 2 | 0.5183 ₳ | 0.2592 ₳ | 1.52× |
| eb66f7a71095d5bb30f623a85412113108750593493f2462fafd2806d59356c9 | 4 | 2 | 0.8017 ₳ | 0.2004 ₳ | 1.97× |
| ab24ebff10f62da3b232b6a3baab99cc7842aff13a96acf6430bcdf45ec51378 | 8 | 2 | 1.3096 ₳ | 0.1637 ₳ | 2.41× |
| 7a58d0fc1220dfbaf33945d2e0b57b8cd75cae96bf07741b5c10ec7be00c492a | 16 | 2 | 2.5695 ₳ | 0.1606 ₳ | 2.46× |
| 63fcd2f2d7a7b9e067b0eacd5f2cea530cdbb252d768d658d27a8774553decfd — control | 16 | 1 | 2.5695 ₳ | 0.1606 ₳ | 2.46× |
Sixteen fills across two clients settled for 2.5695 ₳ in one transaction. As sixteen separate transactions they would have cost 6.3184 ₳, which makes the shared transaction 2.46× cheaper. Every figure comes from the same wallet on the same pair, so the comparison carries no hidden difference.
The last row settles the question. We ran the identical transaction with all sixteen fills under a single client as a control, and it cost exactly the same: 2.5695 ₳, byte-for-byte identical at 9,834 bytes. An order address differs between clients only in its stake credential, which has the same length either way, so the fee cannot move. Crossing clients costs nothing.
Billing holds up at the same depth. Our indexer read that sixteen-fill transaction back from chain data and attributed eight fills and 41.3466 ₳ to each client on its own. One transaction becomes two invoices with no manual reconciliation, which is what makes per-client billing on shared transactions operable.
The ladder is best read for its ratios. The test wallet holds a long tail of native assets that every change output has to carry, which inflates its per-fill cost above the 0.086 ₳ the production book runs at. The control isolates the one variable under test, one client versus two, and that difference measured zero.
Per-fill gas is token-agnostic and fills for different tokens batch into the same transactions, so the fee ratio holds near 0.04% at the margin however many tokens we serve, while volume scales with the capital each client brings. Three client projects produce roughly three times the volume at the same cost ratio.
A custodial desk cannot copy this. Its marginal client adds cost; ours adds fills to transactions we were already paying for, and the shared transaction gets more efficient as the book gets busier.
Resting orders only become volume when something fills them, so we run the taker side too: an autonomous agent that reads the live book, decides what is worth taking, and composes the multi-fill transactions the economics above depend on. The same agent family quotes the maker side, repricing as the market moves, skewing on inventory, and standing down when the spread is too thin to justify a fill.
Appetite is a setting. Each client gets their own parameter set on a shared brain: target pairs, order size and ladder shape, spread and skew targets, per-token caps, a ceiling on outflow per window, and how aggressively to chase depth. We tune those numbers per client and keep re-tuning them against measured results. Running one brain over many parameter sets also means whatever we learn tuning one client transfers to the next.
Autonomy is bounded in two independent places. The agent enforces its own risk configuration, and beneath it the on-chain validator bounds what any keeper-signed action can do at all, so even a misconfigured agent cannot move value anywhere except the client's own payout address. Every agent runs paper-first before it is allowed to sign, and a kill switch halts it without touching client funds.
Status: the taker agent is built and dress-rehearsed end to end on preprod (paper, live and kill), including a real on-chain fill, aea3d325537d7afdcdb31803088304e681404951430abc08e72970883e459edd. It ships behind an operator control with two-layer auth. Running it on mainnet is gated on that client's onboarding; the engineering is done.