On-chain prediction market · settled on TxLINE proofs
TornaLine
Trade a match outcome as a share, then let anyone settle the market trustlessly from a TxLINE proof — no admin, no oracle you have to trust. Built on Torna's parallel on-chain order book.
A YES share pays 1 if Spain win and 0 if not — so its price in the book reads as the implied probability (a share at 62 ≈ a 62% chance). Mint deposits 1 quote and returns an equal YES + NO pair. Resolve has TxLINE’s oracle verify a Merkle proof of the final score on-chain — the outcome comes from the proof, not from whoever clicks.
Settlement, already proven
The live market above settles the exact same way at full time. Here it is already done — on a completed match, verifiable right now.
France did not win.Proven from TxLINE's on-chain scores root and verified by txoracle validate_stat_v3 — no admin, no trusted relayer. Anyone can re-check it on-chain:
Order book & live trading
A real central limit order book on Torna — place, take, cancel are live devnet txs, read from the on-chain B+ tree. Price is the implied probability.
Connect a devnet wallet to trade as yourself and fund it from the faucet, or just use a pre-funded demo trader below. No wallet needed to try it.
Place rests a limit order on the book (you are the maker).
From a key to the exact accounts
This is what an integrating program does, not just TornaDEX. You call with a key; the SDK reads the tree and emits the exact account set. The hard parts (node indices, PDA bumps, the descent path, split spares) never leave the library. Below is a real place resolved live on devnet.
import { Tree, keys } from "torna-sdk";
const tree = new Tree(program, creator, askTreeId);
const key = keys.orderKey(Side.Ask, price, slot, maker, nonce);
// the planner reads the tree off-chain and returns the exact accounts
const { ix } = await placeIx({ reader, tree, side: ASK, price, size, ... });
// node_idx / bump / path / spares: never touched by you