Every provably fair result comes from the same three inputs: a server seed, a client seed and a nonce. A fourth item, the hashed server seed, is what lets you trust the first. If you know what each does, the verification steps in how to verify a bet are straightforward.
If you are new to the idea, start with what provably fair is.
The four terms
| Term | Who controls it | Visible when |
|---|---|---|
| Server seed | The site | Only after rotation |
| Hashed server seed | Derived from the server seed | Before you bet |
| Client seed | You (or a default the site assigns) | Always |
| Nonce | The game, counting up | Per bet |
Server seed
The site generates this random string, and it is the secret in the scheme. You cannot see it while it is active, because you could then predict every result before betting. In the HMAC-based method most sites use, it is the key that the result is computed with. HMAC is defined in RFC 2104.
Hashed server seed
The SHA-256 hash of the server seed, shown to you before you bet. This is the commitment. It looks like 64 hex characters, for example d43760ee103126a1c9e5c6806eb10e766aeaea9086380844f0b231c7325699ab. It proves nothing about the seed’s contents yet, but it locks the site to one specific seed. Later, when the real seed is revealed, you hash it and compare. A mismatch means the site changed the seed.
Client seed
You provide this string. It stops the site from choosing the result in advance. The server seed was fixed before you picked your client seed, so the combination was not known to the site when it committed. Most sites assign a random default and let you replace it.
Nonce
The nonce is a counter that usually starts at 0 or 1 for each new seed pair and rises by one with every bet. It lets two bets with the same seeds get different results. Bet 1 uses nonce 1, bet 2 uses nonce 2, and so on. Whether a site starts at 0 or 1 is a site detail. Check its fairness page.
How they combine
For dice on the scheme the Woyale verifier uses, the site calculates:
HMAC-SHA256(key = server seed, message = "clientSeed:nonce:0")
The final 0 is a cursor. It increases when a game needs more random numbers than one hash provides. The result is a 32-byte value. The game takes the first four bytes and turns them into a number between 0 and 1, then maps that to a roll. How to verify a bet works through this with real figures.
Seed rotation
You can only check past bets once the server seed is revealed. That happens when you rotate (or “change”) the seed pair. The sequence looks like this:
- You request a new seed. The site reveals the old server seed in full.
- The site starts a new server seed and shows you its hash.
- The nonce resets, normally to the start value.
- You can now verify every bet made under the old seed pair, because you have the seed, your client seed and each bet’s nonce.
If you never rotate, you never see the seed, and you cannot verify anything. A site that makes rotation hard or hides the old seed is not giving you the check. Rotate at a point that suits you: after a session, after a large bet, or whenever you want to audit.
Why set your own client seed
If the site picks your client seed and you never change it, the site has chosen all inputs except the nonce. The scheme still commits the server seed, but your own input is the part that guarantees the site could not tune the outcome to a known client seed.
There are three practical reasons to set it yourself:
- It removes any doubt about whether the default was chosen by the site.
- You can record it, which you need to verify later.
- Changing it between sessions is free and does not affect the game’s odds.
Pick any string you will remember or can write down. It does not need to be secret: the site and everyone else can see it. Length matters little. It must be saved exactly, including case and spaces, because one changed character gives a different result.
A seed you save along with the revealed server seed and the nonces is a full record of your session. This ties in with your tax records too: see records to keep.
What can go wrong
- A wrong seed or nonce is the most common reason a check fails. Copy and paste.
- If you start the nonce at 1 where the site starts at 0, every result will look wrong.
- Some sites separate values with a dash, add a prefix or use a different cursor layout. Use the site’s documentation.
Common questions
Can I see the server seed before I bet?
No. If you could, you could predict every result. You see its hash first and the seed itself only after rotation.
Does changing my client seed change my odds?
No. It changes which random numbers you get, not the probability of any result. Every possible outcome keeps the same chance.
What happens to my nonce when I rotate?
It resets for the new seed pair. Old nonces stay valid for the old pair, so keep a record of the pair and the nonce range together.
