Live on Solana devnet

On-chain proof
of who won.

Trust is a resource. VRE helps you earn it: commit rules on-chain before the draw — anyone replays the result from a transaction signature and verifies it themselves.

1
commit
slot 455 663 125 · rs_2e7b…9f01
locked
2
resolve
slot 455 693 113 · winner 7FHkp…3GnV
drawn
3
replay
5KJp…9vW2 · 248 ms
match · ok
VRE
≤ 300ms typical replay
Open verification SDK audit the engine yourself
0 oracles public RPC is the source
Why VRE

Commit rules. Anyone verifies.

Rules are locked on-chain before the draw. After resolution, anyone — users, auditors, regulators — can replay the outcome from a transaction signature and confirm it matches.

Rules locked before the draw

Participant list, weights, and selection function are committed on-chain before resolution. No retroactive edits.

Independently replayable

Any observer replays the outcome from public RPC data. Deterministic. Reproducible. No privileged access.

One npm package

Install the SDK, define a config, run vre resolve. Node, browser, Deno — same deterministic kernel.

Drop-in for any dApp

Rewards selection, loot tables, DAO proposals, and agent routing. Use-case-neutral primitives, not a closed box.

Use cases

Same engine. Four live proofs.

Every example below is a real transaction on Solana devnet. Click any signature to verify it yourself.

Rewards selection

Raffles and airdrops share one primitive: pick one or N recipients from a committed weighted address list.

Trading competition

Native rank_desc formula. Highest committed scores win, with deterministic tie-break by input order.

Prediction market

Native closest_to formula. Predictions nearest the committed target win and replay exposes target and scores.

Loot

Weighted outcome tables remain available alongside W3O1 formulas — same replay flow, different committed artifact surface.

Flow

Commit, resolve, verify.

Three on-chain events. Anyone can reproduce every step from public data.

vre --cluster devnet
# 1. Lock the ruleset on-chain — participants, weights, seed function $ vre commit --config raffle.json → runtime_id: rt_8a1f…c4d2 → ruleset_id: rs_2e7b…9f01 → artifact_hash: 0x14f195…b4d8d → committed at slot 455663125 # 2. When it's time, resolve — the program picks deterministically $ vre resolve --runtime-id rt_8a1f…c4d2 → outcome_id: out_9c3d…a1e7 → winner: 7FHkp…3GnV → drawn at slot 455693113 (+29,988 slots after commit) # 3. Anyone — not you — verifies. Public RPC is the source of truth. $ vre verify --sig 5KJp…9vW2 ✓ MATCH / OK rules committed before draw replay of public data reproduces the same winner

Every signature is reproducible from an RPC endpoint and the artifact hash. No sealed oracles, no off-chain state, no trust assumptions about the operator.

Get started

Commit rules, then verify.

Any outcome. Independently verifiable. Start with a devnet signature, graduate to mainnet when you're ready.

Try the demo Read the SDK docs