Check us yourself
Provably fair verifier
Recompute a Havoc Originals round from its seeds. Paste the revealed server seed, your client seed and the nonce: this page shows the SHA-256 commitment, the raw HMAC bytes and floats, and the exact result our servers produced.
Everything is computed in your browser with Web Crypto. Nothing you type here is sent to us.
Games this page verifies
What a match proves
Before you play, the server commits to a secret server seed by publishing its SHA-256 hash. Each round’s result is then fixed by three inputs: that server seed, your client seed and the round’s nonce.
When the server seed is rotated out, it is revealed. If it hashes to the commitment you were shown and the result here matches your round, the result was fixed before you bet and was not changed afterwards.
You can set your own client seed, so the result also depends on a value you chose.
What it does not prove
- The house edge still applies. Verification shows a result was computed honestly, not that the odds favoured you.
- It predicts nothing. The seed you are playing on stays secret until it is rotated out, and only its hash is public.
- It checks results, not balances. Your bet history shows what was paid.
How the numbers are made
Our servers compute HMAC-SHA256 with the server seed as the key and “client seed:nonce:cursor” as the message. Each 32-byte output gives eight floats of four bytes each, float = b0/256 + b1/256² + b2/256³ + b3/256⁴, a number from 0 up to but not including 1. After eight floats the cursor goes up by one and a new block is computed.
How each game reads the floats
- Dice: roll = float × 100. Under wins below the target, over wins above it.
- Limbo: result = 0.99 ÷ float, rounded down to two decimals and never below 1.00x.
- Sky Limbo and Rocket Rush: bust = 0.98 ÷ float, never below 1.00x, shown to two decimals and capped at 1,000,000x in Sky Limbo and 5,000x in Rocket Rush.
- Mines and Gem Hunt: the 25 tiles are shuffled one bomb at a time. Bomb i, counting from 0, swaps in the tile at position i + floor(float × (25 − i)).
- Plinko: one float per row, and 0.5 or more bounces right. In Vortex, a ball that lands in the centre is dropped once more with the next floats.
- Keno and Classic Keno: 10 of the 40 numbers are drawn with the same one-at-a-time shuffle.
- Wheel: segment = floor(float × 16).
- Dragon Tower: one trap per floor for all 8 floors, column = floor(float × 4).
- Hilo: 21 cards are dealt up front, rank = 1 + floor(float × 13), where 1 is an ace and 13 a king.
Crash is a shared round
Crash runs one round for every player at once, so it does not use your seed pair. Each round gets its own random 32-byte seed. Its SHA-256 commitment is published while betting is open, and the seed is revealed once the round has crashed. The bust comes from the first 64-bit output of the ChaCha8 generator in Go’s math/rand/v2, keyed with that seed: u = top 53 bits ÷ 2⁵³, bust = 0.99 ÷ u, never below 1.00x, capped at 1,000,000x and shown to two decimals.
Where the inputs come from
- Server seed: 32 random bytes. While you play on it, only its SHA-256 hash is shown. Rotating it reveals it and starts a new one.
- Client seed: starts as a random value, and you can change it to 1–64 letters, digits, “-” or “_”.
- Nonce: starts at 0 and goes up by one for each round you play on the seed pair. Changing your client seed or rotating the server seed resets it to 0.
- One nonce covers a whole round. In Mines, Dragon Tower, Hilo and Rocket Rush the full board, deal or bust point is fixed when the round starts.
Games not listed here
Most other Havoc games, our slots included, draw from the same seed chain. Raw floats mode shows their numbers, but this page does not yet turn those numbers into their results.
Link to a verification
Every field can be filled from the address, for example /provably-fair/verify?game=golden-dice&server=…&client=…&nonce=…&target=50&over=1. Game settings use target, over, cashout, mines, risk, rows, mode, gate, picks and count. A filled link verifies as soon as it opens.