Skip to main contentSkip to FAQSkip to contact
For Solvers3 min read

Quote Pipeline & Auction#

The RFQ auction engine is the core of TetraFi's execution layer. It broadcasts trade requests to qualified solvers, collects competing quotes, and selects the winner using UCCP pricing.

RFQ Flow#

RFQ Auction Flow

Mini Map
Actor
Engine
Contract
Network

RFQ Sequence

TakerRFQ EngineSolversAuctionPOST /v1/rfq/submit1WebSocket broadcast2Quote responses3Submit quotes4Winner selected5Best quote returned6
0 / 6
How this phase maps to the SDK
rfq.create.ts
const rfq = await tetrafi.rfq.create({
pair: "USDC/USDT",
side: "buy",
amount: "1000000.00",
corridor: "ethereum-optimism",
maxSlippage: 0.001,
});
console.log(`RFQ: {rfq.id}, status: {rfq.status}`);
9 linestypescript

Quote Preferences#

Four modes via quotePreference parameter:

  • Default Ranked ascending by eta - fastest fill wins
  • Taker pays small premium for speed
  • Use: urgent treasury ops, rebalancing

Swap Types#

Every RFQ is either Exact Input ("I have X, how much Y?") or Exact Output ("I need Y, how much X does it cost?"). The swap type is carried on the MandateOutput context byte and resolved by the OutputSettler at fill time.

See Settlement Flows → Order Types for the full context-byte reference, including Limit, Dutch Auction, and Exclusive variants.

Selection Strategies#

Solver selection is configured per-request via solverOptions. Three strategies control which solvers receive the RFQ:

StrategyMechanismWhen Used
AllQuery every viable solver, sorted by compatibility scoreLow solver count - maximum competition
SampledWeighted random selection with exponential decay by rankHigh solver count - reduces fan-out
PriorityOnly solvers above a configurable compatibility thresholdQuality filtering, SLA enforcement

Solver Reputation#

Solver reliability is tracked on a 24-hour rolling window. Fill rate = successful_fills / (successful_fills + repudiations).

Fill RateStatusEffect
≥ 90%ActiveFull RFQ participation
80–89%WarningLogged to evidence ledger, no ranking penalty
50–79%ProbationRanking weight reduced 50%
under 50%DisabledExcluded from RFQ, admin reset required

Batch Auction & Intent Netting#

When multiple RFQs arrive for the same corridor within a batch window, the engine can net them - offsetting flows cancel out, reducing solver capital and gas costs. Four netting modes (Simple, Batch, Intermediate, Ring) are covered in detail in the Intent Netting page.

Dutch Auction Fallback#

If no solver responds within the RFQ window, the order can fall back to a Dutch auction mode with three time-based phases:

PhaseWindowMax FeeSolver Tier
SAFE0–2 min1 bpsHighest-rated solvers only
BALANCED2–10 min3 bps (linear ramp from 1 bps)Broader solver set
FAST10+ minPremiumWidest solver set, or cancel

The fee ramps linearly between phases, attracting solvers by offering improving economics over time.

Solver Adapter Architecture#

Two-layer adapter pattern normalizes solver protocols:

  • Layer 1 (SolverAdapter) - protocol-specific → standard GetQuoteRequest/Response
  • Layer 2 (SolverAdapterTrait) - runtime config, metrics, error categorization, timeouts

TetraFi#

Native protocol. Full routes + assets. Direct WebSocket, lowest latency.

OIF#

ERC-7683 compatible. Standardized discovery via Open Intents Framework.

Across#

Bridge integration. Route-based quoting mapped to TetraFi corridors.

Timeout Configuration#

ParameterDefaultRange
per_solver_timeout_ms0ms100–30,000 ms
global_timeout_ms0ms100–60,000 ms
fill_deadline0sOn-chain deadline

The aggregator terminates early once min_quotes have been received, avoiding unnecessary wait time.

See Also#

I'm a SolverStep 3 of 7

Related topics