Build with VRE
On-chain proof of who won. Send participants and a formula, the VRE operator runs the draw on devnet, anyone verifies it from the transaction signature.
Three steps. One request. One replay path.
You send one HTTP request; the operator commits your rules, waits for future Solana slots and settles the draw on-chain. The canonical program binds only rules approved by its admin key, so draws run through the API; verification needs nothing.
Send participants
Participants, a formula and the number of winners go in one request with your partner key. The rules are committed on-chain before any randomness exists.
Winners from future slots
prepare_rng_v2 fixes three slots 8, 16 and 24 slots ahead; once they exist, settle_rng_v2 picks the winners from their hashes. The request returns in 12–45 seconds.
Share & verify
You get a signature. Paste it at /verify, run vre verify or call verifyOutcome(). Anyone can replay the same outcome from public RPC data.
One npm package. Replay any result.
Participants in. Signature out. Replay anywhere.
One POST request. Outcome committed on-chain.
No SDK required. Send participants and a formula — get back a transaction signature and a public replay URL. One request takes 12–45 seconds because it waits for future Solana slots. One draw per 10 seconds per key.
| Field | Required | Description |
|---|---|---|
| formula | yes | weighted_random, rank_desc, rank_asc, first_n, closest_to |
| participants | yes | At least 2, about 100 at most (8 KB of rules). Unique id up to 64 printable ASCII bytes; optional weight for weighted_random, required score for rank_desc, rank_asc and closest_to; first_n keeps the order you send |
| winners_count | no | Integer 1–10. Defaults to 1 |
| target | closest_to only | Signed integer. The value participants are ranked by proximity to |
| label | no | Free-form string for your records |
| use_case | no | raffle, airdrop or competition; informational |
Committed rules. Single or multi-winner outcomes.
Same request shape: participants and a formula in, a signature anyone can replay out.
Raffle
weighted_random. One winner from a committed weighted participant list.
Rewards Selection
weighted_random with several winners. Replay returns the full ordered outcome_ids.
Trading Competition
rank_desc. Signed scores and stable input order produce deterministic top-N winners.
Prediction Market
closest_to. Replay includes the committed target, signed scores and stable order.
Get an API key
Verification is open to everyone and needs no key: the replay endpoint, the SDK verifier and the verify page are public. A partner key is what unlocks the write side — server-side draws, the sortition flow and the conditions endpoints. Tell us in Telegram what you are building and the volume you expect.
Running at scale? Platforms can deploy the engine under a partner agreement with their own program ID.