Resolution paths, one program.
Draws use single-phase rng_v2: the rules are committed, three future slots are fixed, and the winners come from their hashes. Every path below runs on the same canonical devnet program, and any resolution transaction can be replayed from its signature.
Everything on this page runs on Solana devnet, on the canonical program 6QtLot…CP6B. Nothing is deployed to mainnet yet — these statuses compare paths against each other, not against a mainnet release.
| Path | Version | Status | What it is |
|---|---|---|---|
| single phase | v1.2 | canonical · default | prepare_rng_v2 → settle_rng_v2. Winners from three future slot hashes; used by every draw endpoint. Try it → |
| two phase | v1.3.2 | canonical · opt-in | seal_randomness → attest_winners. Anyone may seal; the operator stakes a bounty and cannot back out. |
| sortition-by-claim | v1.4.0 | canonical | Commit-reveal ticket draw. Winners claim their own ticket against a threshold checked on-chain. |
| sortition economics | v1.4.1 | canonical | Optional entry-fee and close-skim layer on top of a sortition draw. |
| conditions | fc7/fv9 | canonical · attestation-only | Score committed slips (odds × proven facts) into a ranking. The engine proves the ranking; it holds no funds and executes no payout. |
| operator seed | rng_v1 | legacy | The operator sets the seed when the runtime is created. Not used by the draw endpoints. |
| unicorn-g entropy | B8 | implemented · not deployed | Alternative entropy source: a delay-function output verified on-chain through an embedded Groth16 verifier. The canonical program is not built with it. |
It is implemented and was measured on devnet in June 2026: seal_randomness_unicorn verifies the proof on-chain, and a forged one is rejected with InvalidUnicornGProof at the pairing check. The canonical program is not built with it. Before mainnet it needs the circuit soundness fix and a trusted-setup ceremony.
Live on the canonical program since 2026-07-03. The public scorer POST /api/conditions/score is byte-identical to on-chain resolve_conditions, and a devnet attestation replays to MATCH. Payout is pro-rata over the winners and executed by the integrator — the engine proves who won, nothing more. Score a round →
Run the sortition flow
Four calls against this program — create the draw, register a ticket commitment, seal against slot hashes that do not exist yet, then claim. No key needed. It sits with the rest of the runnable examples.
Open the console