Post statement & bond. Default answer: True.
Solana-native optimistic oracle
Post a claim, back it with USDC, and let it settle as true on its own. Anyone who disagrees pays to challenge, and the truth is decided in the open.
How it works
Post statement & bond. Default answer: True.
First dispute opens the LLM round.
Second dispute opens private voting; settlement on Resolved.
State machine
One state field tells integrators the current answer, what is still open to dispute, and when settlement is safe.
Integrator rule: ignore outcome unless state == Resolved. Every earlier state is a live claim, not a settlement signal.
Instruction flow
Every escalation is one permissioned-or-permissionless instruction on the program. No bots, no committees on the happy path.
The statement and its Resolution Spec hash go on-chain, the USDC bond is locked, and the liveness clock starts. Default answer: True.
State after call: AssertedThe statement and its Resolution Spec hash go on-chain, the USDC bond is locked, and the liveness clock starts. Default answer: True.
A bonded dispute during the liveness window moves the assertion to PendingLLM and opens the LLM resolution round.
The LLM verdict is posted and verified on-chain. The assertion becomes AssertedLLM and the challenge window opens.
A second bonded dispute challenges the LLM outcome, records what was challenged, and initializes the vote round.
Vote state is delegated to the private rollup and the voting window is set. The assertion moves from PendingVote to Voting.
Voters lock USDC behind an outcome with linear weight: one staked USDC is one vote. Ballots stay sealed while the window is open.
finalize_undisputed, finalize_llm_resolution, or finalize_vote_resolution sets the terminal outcome, settles every bond, and closes the assertion.
Economics
Truth-telling is the only strategy that doesn't lose money. Wrong assertions and wrong disputes forfeit their bonds to whoever corrected them.
Every statement is posted with a USDC bond. If nobody disputes it before the liveness deadline, it finalizes True and the bond comes back.
Disputing costs a matching bond and routes the statement to LLM resolution. An incorrect dispute is slashed; a correct one is paid from the loser.
Challenging the LLM verdict opens a private USDC-staked vote with linear weight. An outcome needs a supermajority to become final.
If the statement cannot be decided under its Resolution Spec, it settles Unresolvable: nobody is slashed and every bond is returned.
For integrators
Every earlier state is an open claim. The state machine tells you exactly what is still challengeable.
Current state, round pointers, dispute count, and the final outcome live on a single assertion PDA.
The account stores the hash of the Resolution Spec, the document that defines how the statement resolves.
A resolved assertion is never mutated. If the world changes, a new assertion carries the correction.
Audiences
Settle subjective markets only after the assertion reaches Resolved. Read the state machine and wait for the terminal outcome.
Challenge optimistic defaults or questionable LLM outputs for direct economic upside. The protocol rewards accurate disputes.
One assertion PDA exposes current state, round pointers, dispute count, and the final answer for downstream apps.
The MagicBlock integration is reserved in accounts, but v1 does not require it to be live.
FAQ
A natural-language statement posted with a USDC bond and a Resolution Spec that defines how it should be judged. It defaults to True and anyone can dispute it during the liveness window.
Default true · Disputable · Final at Resolved
Assertions finalize on their own unless someone pays to disagree. Every escalation makes the answer more expensive to fake.