This page explains the model and the message flow. It is conceptual — for the wire formats and endpoints, see the API reference.
Why RFQ
Spot markets for tokenized assets are often thin and fragmented. RFQ lets the exchange source liquidity from many makers on demand and pick the best quote per trade, instead of requiring makers to post resting depth. The taker gets one signed, slippage-bounded outcome; the maker only commits capital when its quote is actually selected.Roles
The flow
1
Quote
The taker sends quote parameters. The server requests indicative liquidity from makers and returns a price ladder; the taker computes a
minBuyAmount floor client-side (typically from the indicative price and their chosen slippage tolerance) — it is signed into the intent, not derived server-side.2
Sign intent
The taker signs the intent (EIP-712 typed data) and returns it to the server.
3
Firm quote
The server forwards the intent to makers without
minBuyAmount, so makers cannot price against the taker’s limit. Each maker quotes the entire sellAmount; the server ranks the firm quotes by output amount and discards any below minBuyAmount.4
Submit
The server bundles the signed taker intent with the single winning firm quote and submits one transaction to the settlement contract. Every leg is atomic — all fill or none do.
Quote parameters
What the taker sends to request a quote. The server forwards the same shape to each maker.
There is no slippage parameter — slippage protection is the taker-signed
minBuyAmount on the intent, computed client-side.
Intent
The server builds the intent from maker indicative liquidity and returns it to the taker for signing.
Correlation between the intent, each maker’s firm quote, and the fill status uses a router-issued per-maker
quoteId (bytes32) — the taker does not sign it, and each maker sees only its own.
minBuyAmount is the taker’s protection against bad fills. Because it stays server-side, makers price the trade on its own merits and the server enforces the floor when ranking firm quotes.Firm quote
A firm quote is a maker’s binding response. Each maker quotes the entiresellAmount — quotes are never split — and the server settles at most one winning quote per round.
Trade terms are bound inside
signedPayload.message.witness:
chainId lives in signedPayload.domain.chainId. The Permit2 message.deadline must stay valid through settlement — makers enforce a minimum time-to-live so the server can submit before it lapses.
Settlement guarantees
- Atomic. The signed intent and the winning firm quote settle in one transaction. If any leg fails, the whole trade reverts.
- Slippage-bounded. The server only submits when the winning quote’s output meets the taker’s
minBuyAmount. - Non-custodial. Token movements are authorized by the taker’s intent signature and each maker’s Permit2 signature — no party pre-deposits funds with the exchange.