The trust problem

If a server tells you "here is a random number," how do you know it wasn't picked on purpose? Provably fair randomness solves this by letting you mathematically prove, after the fact, that the result was not chosen to favour anyone.

The three ingredients

Every provably fair outcome relies on three pieces:

The verification flow

  1. The server gives you a serverHash before you ever request a number.
  2. You request an outcome, supplying your clientSeed. The API combines server seed + client seed + a nonce and hashes the result to derive the random value.
  3. When you're ready, the server reveals the original serverSeed. You hash it yourself and confirm it matches the serverHash you were given earlier.
  4. You re-run the same hashing math locally with the revealed seeds. If you get the same outcome, the result was provably fair.

Try it now

Head to the verification page, paste a clientSeed and serverHash from any past response, and confirm the result. The page calls GET /api/verifyServerHash and tells you instantly whether the values match our records.

Further reading