> For the complete documentation index, see [llms.txt](https://docs.useicaria.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.useicaria.xyz/protocol/rfq.md).

# RFQ settlement

How block-size trades get priced by competing makers and settled atomically on the chain.

Once a trade outgrows the vault clip, and whenever a maker simply prices better than the vault does, execution shifts to request-for-quote: makers sign short-lived prices away from the chain, and the taker settles the best of them in one atomic transaction on it. Signing costs a maker nothing, which is why quotes can stream continuously; the chain only gets paid when something actually fills.

## The quote

An EIP-712 typed message is what a maker sends:

| Field                   | Meaning                                                       |
| ----------------------- | ------------------------------------------------------------- |
| `maker`                 | The signing address, which has to carry a `MAKER` attestation |
| `tokenIn`, `tokenOut`   | The pair, always with USDG on one side                        |
| `amountIn`, `amountOut` | Exact size and exact price; nothing partial                   |
| `taker`                 | Whoever requested it, or zero to leave the quote open         |
| `expiry`                | Unix seconds, measured in seconds of life rather than minutes |
| `nonce`                 | Single-use, and cancellable in bulk                           |

Requests go out from the quote service to every maker connected, signatures come back over a few hundred milliseconds, and the best of them returns alongside the vault price. Whichever of the two favours the trader is what the router settles.

## Settlement

`RfqSettlement.settle(quote, signature)` verifies the maker's signature and attestation, the taker's `TRADER` attestation, the nonce and the expiry, and that the price implied sits inside the [oracle band](/protocol/pricing-and-spreads.md). Assets then change hands directly: `tokenIn` from taker to maker, `tokenOut` from maker to taker, and the RFQ fee into the `FeeCollector`. What the maker delivers comes out of the maker's own wallet through a standing Permit2 allowance, so Icaria is holding nothing before the fill, during it or after.

Expire the quote, spend or cancel its nonce, or let its price drift outside the band before inclusion, and the transaction reverts. Beyond whatever hedging the maker chose to put on, that costs the maker nothing.

## Why makers come

* **Hedgeable flow.** Requests arrive with the size and the direction already known, in assets whose underlying is liquid. Fill 200,000 USDG of tokenized NVDA and, with the market open, the hedge goes on within seconds; with it closed, the weekend gap can be priced deliberately.
* **The skew subsidy.** Which side a vault is willing to pay to be lifted on is [public state](/protocol/pricing-and-spreads.md). Makers watching skew earn a spread for putting inventory back where it belongs, which is the rebalancing mechanism working exactly as intended.
* **No exchange fees, no queue.** Winning takes a signature. Losing takes nothing at all.

## Failure containment

Every guard from the vault path carries over: the band caps what a bad quote can do, attestations decide who may quote at all, expiries limit how long a stale price survives, and atomic settlement means a failed leg unwinds the whole fill. A maker who has been compromised or turns hostile can fill trades inside the band and nothing more, which is also the worst an aggressive honest maker can manage.

Onboarding, tooling and the quote protocol specification are in [For market makers](/using-icaria/market-makers.md) and [API and SDK](/architecture/api.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.useicaria.xyz/protocol/rfq.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
