Fora

Fora is a prediction market CLOB DEX on Solana. Trade YES/NO outcomes on real-world events. Permissionless, non-custodial, no KYC.

How it works

Every market is a binary question — "Will Duke win March Madness 2026?" — with two tokens: YES and NO. Each token represents a $1 claim on the outcome. YES + NO are minted 1:1 from USDC, so $1 of USDC always backs one YES + one NO. At expiry, the winner redeems for $1, the loser for $0.

Trading happens on a central limit order book, not an AMM. Orders are matched on Manifest, the formally-verified CLOB Fora is built on. Two order books per market — one for YES, one for NO — and the protocol matches buyers and sellers natively.

Cross-market matching. When a YES bid and a NO bid sum to ≥ $1.00, the protocol mints a fresh token pair from the buyers' combined collateral and fills both sides atomically. Two strangers with opposite views get matched because their combined willingness to pay covers the full $1 backing.

Permissionless lifecycle. Anyone can create, resolve, settle, and archive markets. Cleanup is crankable. No stuck markets, no stuck collateral.

Three resolution mechanisms.

  • Manual — a designated authority resolves at expiry.
  • Kalshi Oracle — markets that mirror a Kalshi event resolve automatically when the upstream Kalshi market settles.
  • Vibe — the market is its own oracle. The outcome is computed from the on-chain TWAP (time-weighted average price) at expiry. No external oracle required. See Vibe market in the glossary.

Fees

Side Rate
Taker (protocol fee) 30 bps (0.30%)
Maker (rebate) 10 bps (0.10%)
Net protocol take 20 bps

Cross-market matching surplus — when YES + NO bids combined exceed $1.00 — accrues to the protocol fee vault.

Get started

cargo install fora-cli

Then place your first trade — about 60 seconds end to end.

Where things live

Status

Fora is soft-launched on mainnet. Markets are real, USDC is real, settlements are real. The docs site is being rewritten from scratch — pages land here as they're written and verified against current code. If something looks off, open an issue.