Jumpball

Jumpball.

Live on mainnet

Provably fair randomness for Solana programs. Nobody can steer a draw: not the player, not the validator, not us.

Open source · every draw checkable from its transaction · built by WeBall

Public feed

Any Solana program

Live
Draws1
Revealed1
Settled by fallback0A missed reveal, settled from slot hashes
Failed0Refunded by the consuming program
Fee per draw5956 $BALL (50% burned)$0.10 of $BALL, repriced every 10 minutes
Secrets left999,999In the committed chain
Timing2 slotsafter the lock; fallback 8 slots after a 150-slot reveal window

9gUP1auXn32SxVUFBhmxLHRqXopMZbcbgpSJiFV431gi

Latest draws

Each links to its transaction, whose log holds everything needed to re-check it
  1. #1Revealed77a596becaf53fdc…Public feedslot 457,199,139 · 1d agoCheck it

How it works

  1. 1CommitWe generate a long chain of secrets off chain, each the hash of the next, and publish its end on chain. From then on every secret is fixed.
  2. 2LockA game locks a draw at a slot. It will use the hash of a later slot, which nobody can know yet.
  3. 3RevealOur keeper reveals the next secret. Jumpball checks it hashes to the one before it, and the result is the hash of the secret and the slot hash.
  4. 4FallbackIf a reveal never comes, anyone can settle the draw from later slot hashes. Every one is counted on chain, so a missed reveal is always visible.

One limit, stated plainly: whoever holds the secrets could skip a reveal, which re-rolls that draw once from slot hashes. They still can’t pick the outcome, and every skipped reveal shows in the fallback count above.

Addresses

Operator (reveals draws)D1B6EoZR2iiQimKJG2gAJ9S2R4FsKFT5Vk61WzfPF2sFA signing key limited to Jumpball; moves no money
Commit authority (new chains)FMNESfSXP26r64c5VPYQe7F81e3Z9zohPebVnyXUGdKyA hardware wallet, never the operator
Upgrade authorityCCYReQ6R2p8FKR8KmM5fftxaKD1KY5XGsHa1kXKgrBaHA hardware wallet

Verify the build

The program on chain is built reproducibly from the public source. Its hash should match this one:

bc51da1aa8691687b3b7fa005b8c3c61971f36804386ae6c316e25b2d66df57d

Check it yourself with solana-verify:

solana-verify verify-from-repo -u mainnet-beta --program-id HdTE57SKuE4MrzYaBSxV3BaFe6wmmaKg2ZNkj2vB6EeF https://github.com/weballdotfun/jumpball --commit-hash 383f3d6 --library-name jumpball

Use it in your program

Request a draw on the public feed from your program or client, wait for it to be revealed, read the 32-byte result, then close the draw to get its rent back. The request names the most it will pay, so a fee raised later can’t charge more. The TypeScript client and a reference crank are in the repository.

TypeScript client