Custom risk, matched peer‑to‑peer.
rfq.fi lets anyone define a custom outcome market and trade the risk on it. Makers rest signed quotes, a taker takes, and a Rust engine matches them with fractional fills from multiple counterparties. Both sides co-sign one gasless order; collateral escrows on-chain; a bonded optimistic oracle settles. Custody always lives in the escrow — the engine only matches.
From a question to a payout
The relayer prices and co-signs the vault's maker side and submits every match gaslessly; the engine matches one taker against many makers and emits an executeFills bundle. The escrow holds both sides' collateral and pays each user on redeem.
Define a custom outcome, how it resolves, and when it expires. The relayer lists it on-chain — gasless, no wallet signature.
Pick a side (long YES or short NO) and a price as a probability %. You sign one EIP-712 order; makers rest quotes, takers take.
The Rust engine sweeps the book and fills your order — fractionally, across multiple makers — at each maker's price.
Review the fill breakdown; both sides' signatures submit in a single gasless transaction and collateral locks in the escrow.
After expiry a keeper posts the outcome to a bonded optimistic oracle. A dispute window opens; anyone can finalize once it passes.
Claim your conserved payout to your free balance in one O(1) call. Withdraw free balance anytime — it's self-custodial.
The price is the probability
A market's price is a probability tick from 0 to 100%. Both sides prepay the outcome up front, so every fill is fully collateralized and the pot is always exactly the size — no leverage, no dust.
Long and short always reconstruct the size exactly, whatever the price — the money to pay the winner is locked at the moment of the fill. Fully collateralized, no dust.
Custody on-chain, matching off-chain
The engine is fast and deterministic, but it never holds funds. Everything that touches money is on-chain and verifiable.
The engine matches and emits co-signed bundles. Funds only ever move inside RiskEscrow, authorized by your signature — the relayer pays gas but can't move what you didn't sign.
Both sides prepay; long + short escrow always sum to the pot. Total redeemable equals total escrowed at every block — insolvency is impossible, not just unlikely.
The operator commits a keccak Merkle root of free balances. If it ever goes dark, you withdraw your committed balance directly against the root — no permission needed.
The order digest is byte-identical across the browser, the Rust engine, and the Solidity contract — a signature made in your wallet verifies in the engine and on-chain.
Three roles, one book
Anyone can define a custom outcome market — public for the whole book, or private via direct link. Listing is an order, not a gatekeeper.
Peer-to-peer via RFQ: makers rest signed quotes, takers take. One taker is filled fractionally by many makers, each at their own price.
A pooled LP vault can quote as one maker among others via EIP-1271 — never the forced house. LPs earn the edge; downside is capped by capital.