Live on Solana devnet · World Cup 2026
Markets that settle themselves.
Prediction markets where escrow is released by a cryptographic proof of the score — verified on-chain against TxODDS's anchored Merkle roots. No admin key. No oracle vote. No claim button.
- 100
- markets on-chain
- 21
- settlements proven
- $10,312
- escrowed in markets
- 112s
- whistle → all markets settled
The problem
In 2026, Polymarket logged 1,150+ disputed markets. Contested outcomes go to a token vote — not a court of facts.
FinalWhistle removes the human from settlement entirely. A market resolves if and only if a proof of the score verifies on-chain.
The whistle blows
TxODDS anchors every score batch on Solana as a Merkle root — cryptographically signed match data, updated through the game.
Anyone submits the proof
A permissionless keeper fetches the Merkle proof of the final score. The sender has no authority — validity comes from the proof.
The chain verifies it — twice
SettleKit CPIs into TxODDS's validator and independently recomputes the Merkle root with its own sha256. Two verifications, no single point of trust.
Money moves
Every market on the match settles from that one proof. Winners are paid to their wallets — nobody clicks claim.
Powered by SettleKit
A zero-authority settlement engine. FinalWhistle is the flagship market built on it.
Zero admin keys
The settlement engine has no authority accounts, no config, no pause switch. Every instruction is permissionless.
Dual attestation
Each flagship verdict is verified by CPI into TxODDS's validator and by an independent sha256 Merkle reproduction.
The trifecta
All three TxLINE validation primitives on-chain: validate_stat (settlement), validate_fixture (proven kickoffs), validate_odds (price provenance).
A general Question engine
Any predicate over the signed stat feed settles the same proven way — including binary sums like “corners A + B > 10”.
// goalshield-mini: release the payout iff the proof exists
require!(v.fixture_id == p.fixture_id, WrongVerdict);
require!(v.question_hash == p.question_hash, WrongVerdict);
require!(v.outcome, VerdictNotTrue);
// v is a SettleKit Verdict — proven against TxODDS's
// anchored Merkle root before it can exist.Verdicts are init-once accounts keyed by sha256(question). If one exists, the oracle proved it. That is the whole trust model.
The product
A live sports-trading floor
Live LMSR prices
Always a quote, buy and sell, cash out mid-match at an algorithmic price that is never suspended.
Open →Price charts from on-chain trades
Every curve is reconstructed from real trades — a book shows a number, a market shows a curve.
Open →Eight market types, one proof
Result, totals, correct score, BTTS, draw-no-bet, bands, odd/even, corners — all settled identically.
Open →Corners parametric markets
“Total corners > 10” trades as a market and pays as insurance — settled by a binary proof of two stats.
Open →Portfolio, valued by the program
Open positions priced at the exact cash-out the program would pay right now. No invented P&L.
Open →Analyst explorer + verifiable CSV
Every market, sortable, with provable movement since open. Exports carry on-chain addresses.
Open →Don't trust us — read a receipt.
Every settlement links its Merkle proof, the verifying transaction, and the init-once account that made it permanent. Here is a real one: Mexico 2–3 England, ten markets settled from a single proof.
- fw-settle (SettleKit engine)
- HJR3owk8ARzqayhwELA72S38yome3X4HWvb7HMP9AA8K
- fw-markets (LMSR)
- 3as8xHoWivvFTEcg1N6MCb81RANkahr9dt484vr1Camc
- goalshield-mini
- BaRqEqDuhqEJPsApRKgHtz3ozFtqAhEgPKLxPsipeDae
For judges
The 2-minute path
No wallet, no sign-up, no SOL. And everything below is clickable evidence, not a claim.
Launch the app
A burner wallet is created for you — no extension, no seed phrase, no SOL. One click on the faucet funds test USDC.
Trade a live market
Buy any outcome at the live LMSR quote, then watch the chart move on the trade you just wrote on-chain.
Read a receipt
Open a settled match: the proven score, the verifying transaction, and the immutable facts account — all linked.
Check our work
Dual-attestation transactions on devnet, 65 tests in CI against TxODDS's production oracle binary, the full settlement spec.