Dice: how the roll is derived and paid
How a Stake-scheme Dice roll (0.00 to 100.00) is computed from one HMAC float, why there are 10,001 outcomes, and where the 1% edge sits.
Disclosure: VerifyRoll is sponsored by Craze, a competitor of the operators whose published RTP appears below. Figures here are computed or taken from what operators publish, dated; nothing is estimated.
How the result is derived
Under the Stake scheme every result starts from HMAC-SHA256(server seed, “clientSeed:nonce:cursor”), read four bytes at a time into floats in [0, 1). Dice consumes one float.
- Take the first float from HMAC-SHA256(server seed, "clientSeed:nonce:0"). It lies in [0, 1).
- Multiply by 10,001 and drop the fraction. That gives an integer from 0 to 10,000, each equally likely.
- Divide by 100. The roll is a number from 0.00 to 100.00 with two decimals, so there are 10,001 possible rolls, not 10,000.
roll = floor(float × 10001) / 100
Payout rule and where the edge comes from
You bet that the roll lands under (or over) a target. The win chance is the share of the 10,001 rolls on your side of the target.
A game published at 99% RTP pays 99 ÷ (win chance in %) per unit staked. A 50% chance is paid 1.98×, not 2×; that missing 0.02 is the edge.
Source of the edge. The roll itself is uniform: the scheme adds no bias. The edge is entirely in the payout multiplier, which is set 1% below the fair value at every win chance.
Worked example
Computed on the server by the same functions the verifier runs, from the example values the verifier's “Load example values” button uses. These are not seeds from a real round.
- server seed
- 2b4d2f1a7c9e0f3b8a6d5c4e3f2a1b0c9d8e7f6a5b4c3d2e1f0a9b8c7d6e5f4a
- client seed
- verifyroll
- nonce
- 7
- HMAC-SHA256(server seed, “verifyroll:7:0”)81727d41db6b44706ddfd681ab9cd0124cc482392adbbdda8ac8ac626566bf1a
- Float (1): 0.50565322
- float = 0.5056532176677138
- roll = floor(float × 10001) / 100 = 50.57
Published RTP by operator
| Stake | Shuffle | BC.Game | Craze |
|---|---|---|---|
| 99% | 99% | 99% | — |
Checked 2026-09-23. “—” means not offered or not published. The figure in your game's info panel wins.
Questions
- Why 10,001 outcomes and not 10,000?
- Because both 0.00 and 100.00 are possible rolls. Multiplying by 10,001 and flooring gives integers 0 through 10,000 inclusive, which is 10,001 values.
- Can a roll of exactly 100.00 happen?
- Yes, when the float is at least 10000/10001, roughly 0.01% of the time. It counts as "over" any target below 100.
Next
- Losing-streak odds at 49.5%
- Verify a Dice bet of your own, or by operator: Stake Dice verifier · Shuffle Dice verifier
- Play Dice for free on PlinkoLab (play money, same derivation)
- House edge for every game and operator
last reviewed 2026-09-23 · derivation as implemented in @craze/fairness