- OneSwap 33% 12,380 USDCx
- CantonSwap 27% 10,118 USDCx
- Cantex 20% 7,488 USDCx
- CompassSwap 13% 4,861 USDCx
- RFQ desk 7% 2,616 USDCx
Illustrative example. Not live or measured data.
The problem
Canton's liquidity is spreading across AMMs, order books, and RFQ desks. Each one quotes the same pair at a different price, and there is no neutral layer comparing them. So every trade risks the wrong venue, and every team rebuilds the same routing logic. Synfin is that layer.
One standard for tokens. No standard for getting the best price. That is the layer Synfin builds.
How it works
Tell Synfin what you want to trade. It quotes every venue, splits your order for the best price, and settles the whole thing in one transaction.
Proof
Illustrative example. Not live or measured data.
OneSwap, the best quote, over the next venue
each venue sees only its own leg
Per-leg privacy is not anonymity to your own counterparty.
every leg in one transaction, proven on Canton
CIP-0056 / 0112
We adopt it, and contribute to it.
Privacy
Synfin settles the split so every venue verifies and executes only its own leg. The executor coordinates the whole atomic transaction, and no venue sees the others.
With no public mempool, there is nothing to front-run.
Per-leg privacy is not anonymity to your own counterparty. A venue does not see other venues’ legs, but it does see its own.
Illustrative example. Not live or measured data.
Settlement
The venue co-settles through the token standard’s allocation flow. Eligible for Synfin’s atomic, per-leg-private settlement.
settlementMode: 'atomic-allocation'
Quote-and-deposit venues. Synfin still aggregates their quotes, but execution is deferred and settles separately.
settlementMode: 'managed-deposit'
Atomic settlement is live on Canton today and is valid only when every leg is Mode A, which the router enforces. Most accessible venues are still managed-deposit, so the atomic path widens as venues adopt the allocation flow. CIP-0112 (Token Standard V2) brings further privacy, performance, and settlement improvements, rolling out across the network. Quote aggregation works across both modes now.
Open & neutral
The winning answer to fragmented liquidity is always an aggregation layer on top of the settlement rail: 1inch on EVM, Jupiter on Solana. Neither is a token standard. Both are neutral routers that became default infrastructure. Synfin is that layer for Canton. It adopts CIP-0056 / 0112 for settlement and contributes to it as an early implementer.
Synfin holds no liquidity and favors no venue. It is neutral infrastructure on top of the token standard.
aggregates quotes · routes to best price · settles the split atomically
token standard · CIP-0056 / 0112
Who it's for
Implement one adapter and become reachable through every Synfin integration. More flow, no new counterparties to chase.
One SDK for best-execution swaps across all of Canton’s liquidity. Drop it in and route every trade to the best price.
Best execution with settlement atomicity and per-leg confidentiality, provable to the basis point, on neutral open infrastructure.
Canton is where regulated, institutional liquidity is moving on-chain, on a common token standard. Synfin is the neutral best-execution layer on top of it.
Build
One SDK call routes across every venue, splits for the best price, and settles the whole thing atomically, with per-leg privacy. No routing logic to rebuild.
import { route } from '@synfin/router-ref';
import { isAtomicRoute } from '@synfin/spec';
import type { AssetId, Quote, SwapIntent } from '@synfin/spec';
// Sell 250,000 CC for USDCx. minReceive is enforced on-ledger,
// so a bad quote aborts the trade and never loses funds.
const intent: SwapIntent = {
intentId: 'demo-1',
taker: 'alice::canton',
give: { asset: CC, amount: '250000' },
want: { asset: USDCx, minReceive: '37000' },
maxSlippageBps: 30,
deadline: '2026-01-01T00:00:00Z',
};
// `quotes`: one Quote per venue, gathered through the VenueAdapter
// port (adapter.quote(req), each request is a single size bucket,
// so no venue ever sees the whole intent). Then route.
const result = route(intent, quotes, new Date());
if (!result.ok) throw new Error(result.reason);
const { plan } = result;
plan.legs; // OneSwap 33%, CantonSwap 27%, Cantex 20%
plan.aggregateReceive; // '37462', +11.3 bps best quote
isAtomicRoute(plan, quotes); // → true · atomic settlement via CIP-0056 / 0112 Illustrative example output.
Routing and atomicity shown. On-ledger settlement via the token standard (CIP-0056 / 0112).
Open, neutral, and built on the token standard. Read the specification, or pull the SDK and route your first trade.