The three components
- Server seed — generated by the site, kept secret until reveal.
- Client seed — chosen by you (or defaulted).
- Nonce — increments per roll so each result is unique.
The commitment
Before any roll, the site publishes SHA-256(server_seed). This hash uniquely identifies the server seed without revealing it. If the site changes the seed later, the hash won't match.
The roll
Result = decode(HMAC-SHA256(server_seed, client_seed + nonce)) → 2d6.
The reveal
When the seed rotates (you can force this any time), the site publishes the server seed. You hash it, confirm it matches the earlier commitment, and recompute every roll yourself.
Want the deep-dive?
See Provably fair explained for the full walkthrough with verification examples.