Wheel games are a staple of crypto casinos, offering a simple interface where a wheel spins and lands on a segment. The operator declares the weight (probability) of each segment. In a provably fair system, the player can verify that the outcome was generated from those declared weights — not from a different set of probabilities. This article explains the exact steps a skeptical player can take to perform that verification, covering seed-based RNG, cumulative distribution mapping, and on-chain smart contract approaches.
How Wheel Outcomes Are Generated
Most provably fair wheel games use a seeded random number generator. The typical process:
- Server seed — a secret string chosen by the casino, hashed and revealed before the round.
- Client seed — a string the player can set (or is provided by the casino).
- Nonce — an incrementing counter (0, 1, 2, …) for each spin.
The casino combines these three inputs into a single string, hashes it (e.g., SHA-256), and takes a portion of the resulting hex to produce a number between 0 and 1. That number is then mapped to a wheel segment using the declared weights.
For example, a wheel with three segments — A (50%), B (30%), C (20%) — the mapping is:
- If random number < 0.5 → segment A
- If 0.5 ≤ random number < 0.8 → segment B
- If 0.8 ≤ random number < 1.0 → segment C
The player can verify this mapping at any time by recomputing the hash and checking which segment the actual number falls into. The declared weights are what the player checks against.
Verifying Segment Weighting
Verification can be done at two levels: single-round verification and statistical verification over many rounds.
Single-round verification
After a spin, the casino reveals the server seed (or the hash of the seed prior to the round). The player can then:
- Take the server seed, client seed, and nonce used for that round.
- Concatenate them in the order specified by the casino’s algorithm (often
server_seed:client_seed:nonce). - Compute the SHA-256 hash.
- Convert the first, say, 8 hex characters to a decimal number and divide by 2^32 to get a pseudorandom value in [0,1).
- Compare that value against the cumulative sum of the declared segment weights to see which segment it lands in.
If the result matches the displayed segment, the weighting for that single round is consistent with the declared weights. However, this does not prove that the declared weights are the true ones — it only proves that the outcome was generated from those weights. If the casino had secretly used different weights for that spin, the mapping would be different, and the player would see a mismatch.
Statistical verification over many rounds
To confirm that the declared weights are the actual probabilities used over time, the player can aggregate outcomes across many spins. For each spin, record the segment landed. After N spins, compare the observed frequency of each segment to the declared probability. The expected frequency is N * weight. The standard deviation is sqrt(N * weight * (1 – weight)). If the observed frequencies fall within 2–3 standard deviations of the expected, there is no evidence of manipulation.
Because the player can verify each individual spin’s mapping, any deviation from the declared weights would be detectable. The only caveat: the casino could change the declared weights between spins, but that would be visible in the game’s UI or in the seed history. Most verifiable casinos let you download a seed history logs.
Example table for a wheel with segments A (50%), B (30%), C (20%) after 1000 spins:
| Segment | Declared Weight | Expected Count (1000) | Observed Count (example) | Deviation (std dev) |
|---|---|---|---|---|
| A | 0.50 | 500 | 512 | +0.76σ |
| B | 0.30 | 300 | 289 | −0.67σ |
| C | 0.20 | 200 | 199 | −0.07σ |
All deviations are within 1σ, consistent with expected variance. If a deviation exceeds 3σ, the player should investigate whether the declared weights changed or if the seed was manipulated.
On-Chain Verification
Some casinos run wheel games on smart contracts (e.g., on Ethereum, Solana, or a layer-2). In these cases, the segment weights are stored in the contract state and are immutable after deployment. The player can read the contract’s vertex (the weight array) directly from the blockchain. The random number is generated using a verifiable random function (VRF), often using Chainlink VRF or a blockhash-based scheme. The player can check the VRF proof and compute the segment selection from the contract’s code.
Steps for on-chain verification:
- Locate the contract address and the transaction ID of the spin call.
- Read the contract’s stored weight array (e.g., via a block explorer).
- Obtain the VRF proof and the random number from the transaction logs.
- Replicate the contract’s segment selection logic (usually a loop summing weights until the random number is less than the cumulative sum).
- Confirm that the result matches the on-chain record of the landed segment.
Because the weights are on-chain and immutable, the player can be confident that every spin uses the same multipliers. The smart contract can audited for correctness.
Operational Considerations
To trust the verification, the player must trust that the casino does not change the server seed after seeing the nonce. The standard provably fair protocol requires the casino to commit to a server seed before the player uses it (by providing a hash). The player checks that the seed used matches the hash. If the casino attempts to change the seed mid-session, the player can detect it because the seed history will show a new seed without a prior hash commitment.
Similarly, the player should verify that the nonce increments correctly. Some casinos allow the player to set the client seed. If the casino can reset the nonce arbitrarily, it could re-roll outcomes. The player should check that nonces are sequential and not reused. Most crypto casinos show the nonce in the UI or in the seed verification page.
For further reading on provably fair verification techniques, see our comprehensive guides on provably fair gambling. To compare casinos that offer verifiable wheel games, consult our casino reviews. For managing bankroll while performing verification, the bankroll management section provides risk-control strategies. Stay updated on verification developments in the news section.
FAQ
How do I verify a wheel game outcome?
You need the server seed, client seed, and nonce for that spin. Use the casino’s published algorithm (e.g., SHA-256 of server_seed:client_seed:nonce), convert the hash to a number in [0,1), then look up which segment that number falls into based on the cumulative sum of declared segment weights. If the result matches the displayed segment, the outcome is consistent with the declared weights.
Can I verify the segment weights before playing?
Yes, if the casino publishes the current server seed’s hash and the list of segment weights. You can compute the possible outcomes for a given nonce in advance (if the client seed is also known). For on-chain games, the weights are stored on the blockchain and can be read at any time. However, you cannot verify the outcome of a spin before it happens because the random number is only generated after the spin is initiated.
What if the operator changes the segment weights between spins?
If the operator changes the declared weights, the UI will show the new weights. You can verify that the outcome for the next spin matches the new weights. However, if the operator changes weights without updating the UI, you would detect a mismatch because the cumulative sum in the verification would not match the segment you saw. Some operators also change the server seed when weights change; the seed history can reveal such changes. Always check that the server seed used for the round matches the hash that was committed before the round.







