Five paths, one program.
Replay-by-signature is the default: recompute an outcome from a transaction signature and compare. The paths below are alternatives selected per draw, and they all run on the same canonical devnet program — there is no second, isolated deployment.
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 |
|---|---|---|---|
| replay-by-signature | v1.3.2 | canonical · default | Recompute an outcome locally from a transaction signature, including the global-Ω resolve. Try it → |
| 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. |
| unicorn-g entropy | B8 | implemented · opt-in | Alternative entropy source: a delay-function output verified on-chain through an embedded Groth16 verifier. |
It is built and it runs on devnet: seal_randomness_unicorn verifies the proof on-chain, and a forged one is rejected with InvalidUnicornGProof at the pairing check. Two things keep it opt-in rather than default. The circuit: the Groth16 setup was done against a devnet RSA modulus, and a composite l still passes the in-circuit primality check. And the replay path: a Unicorn-G draw derives its randomness from the delay-function output rather than from slot hashes, which the public verifier does not implement yet — such a draw does not reproduce through /verify today. Until both land, SlotHashes stays the default and Unicorn-G is selected explicitly, per draw.
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