Glossary

Definitions of every term that's specific to Fora — and a few inherited from Manifest, Solana, or Kalshi that show up frequently in the docs and code.

Binary market

A prediction market with two mutually exclusive outcomes — YES and NO — and a single $1 USDC backing per token pair. Every Fora market is binary. Multi-outcome events (e.g. "Who wins the championship?" with N teams) are modeled as N separate binary markets, one per outcome.

CLOB

Central limit order book. Buyers post bids, sellers post asks, the protocol matches them in price-time priority. Distinct from an AMM (automated market maker), where prices are determined by a curve over reserves. Fora is built on Manifest, a CLOB DEX.

Cross-market matching

When a YES bid at price p and a NO bid at price q satisfy p + q ≥ $1.00, the protocol mints a fresh token pair from the buyers' combined collateral and fills both sides atomically. The p + q - $1.00 surplus accrues to the protocol fee vault.

This is the mechanism that lets two strangers with opposite views — neither of whom holds an existing token — get matched. Without cross-market matching, a YES buyer could only match against an existing NO holder selling. With it, the protocol creates the token pair on demand whenever willingness-to-pay covers the full $1 backing.

Vibe market

A binary market that resolves to the on-chain TWAP (time-weighted average price) of its YES book at expiry — no external oracle. Named for the property that the market is its own oracle of itself.

Mechanics:

  • At expiry slot, anyone can crank the resolution.
  • The protocol reads the accumulated TWAP from the YES book and converts it to basis points (0–10000).
  • The market enters DETERMINED with winning_outcome = TWAP.
  • YES tokens redeem at TWAP / 10000 of $1; NO redeems at the complement.

Vibe markets require at least 10 distinct-slot fills (GIRARD_MIN_FILLS) to resolve via TWAP. With fewer fills, the market resolves as SPLIT (both sides at $0.50) — protection against manipulation on a thin book.

The design avoids the trust assumption of every other prediction market protocol: there's no oracle to bribe, no authority to capture, no settlement source to attack. The cost is that the market only works for events whose outcome is reflected in pricing during the trading window — sports outcomes don't fit; probability of an event happening by time T does fit.

See Market Lifecycle → Resolution mechanisms for the on-chain flow.

Kalshi oracle

The Fora service that resolves markets which mirror a Kalshi event. Subscribes to Kalshi's lifecycle WebSocket; when an upstream Kalshi market settles, the service submits a resolution instruction with the matching outcome. Source: kalshi-oracle/.

The on-chain instruction is permissionless once Kalshi has emitted the settlement event — anyone can crank, the oracle just races to do it first.

Lifecycle

The deterministic state machine every market moves through:

INITIALIZED → ACTIVE ⇄ PAUSED → DETERMINED → CLOSED → SETTLED → CLEANED → ARCHIVED

See the dedicated Market Lifecycle page.

Manifest

The formally-verified central limit order book that Fora builds on. Maintained by CKS Systems. Each Fora market wraps two Manifest markets — one for YES/USDC and one for NO/USDC — and adds the cross-market matching layer plus the Fora-specific lifecycle.

Maker rebate

10 basis points (0.10%) of the taker's quote-token amount, credited to the maker on every fill. Funded out of the protocol fee. See Protocol fee.

Mechanism

The resolution mechanism for a market. Stored as a u8 field on the market state:

Value Mechanism Resolved by
0 Kalshi Kalshi oracle service
1 Decentralized Reserved
2 Manual Market authority
3 Vibe On-chain TWAP at expiry

Permissionless cleanup

Every state transition after DETERMINED (CLOSED → SETTLED → CLEANED → ARCHIVED) can be cranked by any Solana account, not just the market authority. This means Fora markets can never get stuck. If the authority disappears, anyone can finish the lifecycle and recover token redemptions.

Protocol fee

30 basis points (0.30%) of the taker's quote-token amount on every fill. Of that, 10 bps is paid back to the maker as a maker rebate; the remaining 20 bps accrues to the protocol fee vault. Cross-market matching surplus also accrues to the same vault.

Seat

A Manifest concept. To place an order on a Manifest market you need a "seat" — a small account allocated for your order tracking on that book. Seats are claimed on first use and persist until the market is cleaned. The CLI command fora-cli trade seat claim allocates one.

TWAP

Time-weighted average price. Sum of price × slot_duration divided by total slot duration. On Fora, the YES book's TWAP is accumulated on-chain (twap_cumulative, twap_last_slot, twap_fill_count) and used to resolve Vibe markets.

YES / NO tokens

Token-2022 mints with PermanentDelegate extension. One YES + one NO is minted per $1 USDC of collateral; one YES + one NO can be burned to recover the $1. The permanent delegate is the protocol, which uses it to atomically settle winning redemptions without requiring user signatures.