Where the randomness comes from: Chainlink VRF, committed seeds and data providers
Check 3 of 5 · outcome
A contract can settle a bet perfectly on a number someone chose. So the source of the number matters as much as the contract. There are three answers in use: an oracle with a proof, a seed committed in advance, and for sports, a data provider with a dispute process.
Picture a perfect smart contract that pays exactly what the rules say, in full, every time. Now give it a dice roll the operator picked. The contract settles flawlessly and you lose anyway. Every decentralized casino has to answer one question: where does the number come from? The three answers in use today differ a lot in how much trust they ask for.
Oracle randomness: Chainlink VRF
With a verifiable random function, the contract asks an oracle network for a random number. The number comes back with a cryptographic proof, and the contract checks the proof on-chain before using it. If anyone tried to swap the number, the proof would fail and the bet wouldn't settle. Neither the platform nor the oracle node chooses the result.
Overtime uses Chainlink VRF v2.5 for its casino: dice, roulette, blackjack, baccarat, slots, plinko, keno, HI-LO and poker variants. For card games it uses staged VRF, drawing in steps as the hand develops. BetSwirl used Chainlink VRF on every game until it wound down, and its contracts still carry a function for withdrawing VRF fees.
The cost is small and real: each request pays the oracle, which is part of what you send with a bet. The benefit is that you don't need to trust the platform on the number at all.
Committed seeds: commit, bet, reveal
The older method, and the one account casinos call provably fair. Before you bet, the platform generates a secret server seed and publishes its hash. You add a client seed of your own. Each bet mixes the two with a counter, the nonce. Later the platform reveals the server seed, and you can hash it yourself and check it matches what was published. If it matches, the seed wasn't changed after you bet.
JustBet works this way: a 32-byte server seed with its SHA-256 hash published in advance, your client seed, and a nonce that goes up by one each bet. By default your client seed is derived from your wallet address; you can replace it. Gamba is similar, with a seed from a “Gamba RNG Provider” the operator runs, plus your client seed and a nonce.
What it proves: the result wasn't changed after your bet. What it doesn't prove: that the seed was generated fairly in the first place, or that it wasn't generated with knowledge of your client seed. That is why committed seeds earn half a point in our score and VRF earns a full one.
Provably fair at account casinos
The same method runs at account casinos, on their own games.
- Shuffle uses HMAC-SHA256 with a hashed server seed, client seed and nonce.
- BC.Game pre-generates a chain of 10 million SHA-256 hashes for its crash game, so the whole sequence is fixed before anyone bets.
- Stake claims provable fairness for Stake Originals.
It is a real feature and worth using: take the revealed seed, run the check, and you know that round wasn't altered. It covers only the platform's own games. Slots and live tables from outside studios run on the studio's own random number generator, which you can't check. And it says nothing about custody: your balance is still in the operator's account. That is why these casinos score half a point on the outcome check and nothing on the others; the comparison is on decentralized vs custodial.
CoinPoker is a useful contrast. It describes a certified RNG and a Fisher-Yates shuffle. Certified means someone else checked it. You can't.
Sports: where the result comes from
A football score isn't random, but it still has to get on-chain somehow, and whoever posts it decides who gets paid.
- Azuro uses data providers who post odds and results. Its docs say they resolve markets in good faith, with AzuroDAO acting as arbiter if there is a dispute. Data providers get 10% of protocol revenue.
- Overtime takes sportsbook odds from Chainlink oracle nodes and resolves most results automatically.
- SX Bet grades each match and pays the winner from that match's escrow.
A documented dispute process is better than none, and a named oracle is better than a single operator. For a sports protocol we give half a point when the result comes from a permissioned provider with a dispute process.
How to check a result yourself
- Find the method in the docs. VRF, committed seed, or “our RNG”.
- For VRF, open your bet in a block explorer and look for the request and fulfilment events in the logs.
- For committed seeds, rotate your seed pair after a session so the server seed is revealed, then hash it and compare it with the hash you were shown.
- For studio slots, accept that you can't check, and set your budget accordingly; safe play on-chain has the limits.
The outcome check is one of five in how we score. How each platform does on all five is on the decentralized casinos ranking.