PRO-001 PROFESSIONAL 12 min read

UniswapX RFQ Integration

AMM routing is fine for small swaps. But once you're moving $50K+, you're paying for price impact whether you see it or not. UniswapX's Request-for-Quote system lets professional fillers compete for your order — and Orkid is one of them. Here's how the plumbing works, when RFQ beats AMM, and when it doesn't.

WHAT_IS_UNISWAPX

The problem UniswapX solves

Traditional AMMs — Uniswap V2, V3, V4, Curve, Balancer — price your trade using a formula. The bigger your trade relative to pool liquidity, the worse the price. This is called price impact, and it's the dominant cost on large swaps.

Example: you want to swap $200K USDC for WETH on Base. The largest USDC/WETH V3 pool has ~$8M liquidity. Your $200K is 2.5% of the pool. The AMM formula says you eat ~30 bps in price impact. That's $600 gone to the pool — before fees, before slippage, before anything else.

UniswapX flips the model. Instead of trading against a pool, you broadcast your order to a network of professional fillers. They compete to give you the best price. The winner fills your order from their own inventory or hedges it. No price impact. No pool formula. Just a quoted price.

$200K AMM PRICE IMPACT ~30 bps ($600)
$200K RFQ SPREAD ~5–10 bps ($10–20)
SAVINGS ~20–25 bps
HOW_RFQ_WORKS

The RFQ flow, step by step

Here's what happens when you submit a swap through Orkid that's eligible for RFQ:

  1. 01

    Order signing

    You sign an EIP-712 Permit2 message authorizing the swap. No on-chain transaction yet — just a signature. This costs zero gas. The signed order specifies input token, output token, minimum output, and deadline.

  2. 02

    Quote request broadcast

    Orkid sends the signed order to the UniswapX RFQ network. The request hits the /v1/quote endpoint, which broadcasts to registered fillers. Each filler receives the order details and has ~200ms to respond with a price.

  3. 03

    Filler competition

    Multiple fillers respond with their best price. Orkid's solver compares all RFQ quotes against the best AMM route it can find. Whichever is better wins. The competition is real — if filler A quotes 5 bps spread and filler B quotes 3 bps, filler B gets the order.

  4. 04

    Fill execution

    The winning filler submits an on-chain transaction that executes the swap at the quoted price. The filler pays gas. You receive your output tokens at the agreed price — no slippage beyond what was quoted, no MEV exposure, no front-running.

ORKID_AS_FILLER

Orkid's filler address

Orkid operates as a registered UniswapX filler on Base. The filler contract lives at:

0x4808A1F195791Cc6E180cE92e1DD0A027851dFee

This is the address that submits fill transactions to the UniswapX reactor. When you swap through Orkid and the order is filled via RFQ, this is the address executing on-chain. You can verify it on Basescan — look for interactions with the UniswapX SwapRouter02 reactor contract.

As a filler, Orkid maintains inventory in major Base tokens (USDC, WETH, cbETH, DAI, USDbC) and quotes prices based on real-time market conditions. The 9 bps Orkid fee is embedded in the quote — the price you see is the price you get.

RFQ_ENDPOINT

The /v1/quote endpoint

The RFQ quote endpoint accepts signed orders and returns competing filler prices. Here's the request format:

POST /v1/quote
Content-Type: application/json

{
  "tokenIn":  "0x833589fCD6e6D0896C1dE0d0fA0Be8f3d53eB6E8",
  "tokenOut": "0x4200000000000000000000000000000000000006",
  "amountIn": "200000000000",
  "chainId":  8453,
  "recipient": "0x{user_address}",
  "deadline":  1735689600
}

The response includes the best quote across all fillers and the AMM fallback:

{
  "quoteId":     "0xabc123...",
  "filler":      "0x4808A1F195791Cc6E180cE92e1DD0A027851dFee",
  "amountOut":   "78432105500000000",
  "priceBps":    7,
  "source":      "rfq",
  "expiresAt":   1735689700
}

The priceBps field shows the effective spread in basis points. If source is "rfq", a filler won. If it's "amm", the AMM route was better and no filler could beat it. The expiresAt timestamp gives you the quote validity window — typically 10–15 seconds.

ADAPTIVE_SLIPPAGE_RFQ

Adaptive slippage with RFQ

One of the advantages of RFQ is that slippage is largely eliminated — the filler quotes a fixed price and executes at that price. But Orkid still applies adaptive slippage logic as a safety net.

Here's why: the filler quotes a price, but between quote and on-chain execution, the filler's hedge could move. If the filler's hedge fails, the order might revert. Orkid's adaptive slippage sets a minimum output that's slightly below the quoted price — tight enough to not leave money on the table, loose enough to allow the filler to execute without reverting.

For RFQ orders, the adaptive algorithm typically uses the minimum buffer: 0.01 bps base, since there's only one hop (filler → user) and no pool staleness factor. The cap of 1.25 bps almost never triggers for RFQ. Compare this to a 4-hop AMM route with stale pool data, which might need 0.01 + 1.6 + 0.2 + 0.3 = 2.11 bps (capped at 1.25 bps).

RFQ SLIPPAGE BUFFER ~0.01 bps
AMM 4-HOP BUFFER 1.25 bps (capped)
TYPICAL PLATFORMS 50 bps
RFQ_VS_AMM

When RFQ wins, when AMM wins

RFQ isn't always better. Here's the decision matrix:

Order Size RFQ AMM Winner
< $5K 5–10 bps spread 1–3 bps impact AMM
$5K – $50K 5–10 bps spread 5–15 bps impact Tie
$50K – $500K 5–12 bps spread 20–50 bps impact RFQ
> $500K 8–15 bps spread 50–150 bps impact RFQ

The crossover is around $20K–$30K on Base. Below that, AMM routing is cheaper because pool liquidity is sufficient and RFQ fillers need a minimum spread to cover their hedging costs. Above that, price impact dominates and RFQ wins by a widening margin.

Orkid's solver runs both paths in parallel — RFQ and AMM — and picks the winner automatically. You don't need to choose. The quote you see already reflects the better option.

FAQ

How do I become a UniswapX filler?

To become a filler, you need to deploy a filler contract that implements the IReactorCallback interface, register with the UniswapX reactor, and maintain sufficient inventory to fill orders. You also need to run an off-chain service that monitors the UniswapX order pool and submits signed orders. The technical bar is real — you need low-latency infrastructure, inventory management, and MEV-aware execution. Orkid operates as a filler with address 0x4808A1F195791Cc6E180cE92e1DD0A027851dFee on Base.

What is the latency requirement for RFQ responses?

UniswapX RFQ expects responses within ~200ms of a quote request. In practice, competitive fillers respond in 50–100ms. If you're slower than 200ms, the order may be filled by another filler or routed to AMM pools instead. Orkid's solver infrastructure is co-located with Base RPC nodes to keep response times under 80ms on average.

How does Orkid's RFQ compare to 1inch?

1inch uses a pathfinder algorithm that aggregates AMM pools — it's AMM routing, not RFQ. Orkid's RFQ integration goes through UniswapX, which means orders are filled by professional market makers who quote prices directly, not by pulling from AMM pools. For large orders (>$50K), RFQ typically beats AMM routing by 15–40 bps because market makers can offer tighter spreads than what AMM liquidity depth allows. For small orders (<$5K), the difference is negligible and AMM routing is fine.

Which chains does UniswapX RFQ support?

UniswapX is currently live on Ethereum mainnet, Base, Arbitrum, Optimism, Polygon, and BNB Chain. Orkid's RFQ integration is active on Base and Ethereum mainnet. The filler address (0x4808A1F195791Cc6E180cE92e1DD0A027851dFee) operates on both chains. Support for additional chains depends on UniswapX deployment and liquidity provider participation.