1) Commit (Preâannounce the hash)
SHAâ256(ServerSeed)
. Share the hash before the draw. After the draw, reveal the seed; anyone can check that SHA-256(revealed)
equals this hash.
2) Generate Draft Order (Reveal stage)
Chosen publicly (e.g., a timestamp, league name, or oracle). It mixes with the Server Seed so the commissioner canât target an outcome.
Use 0 for the first draw; increment for reârolls.
Entries hash:
â
Using RNG: HMACâSHA256(ServerSeed, `${ClientSeed}:${Nonce}:${i}`)
Draft Order
No results yet. Enter seeds and teams, then click Generate Order.
3) Verify / Audit Checker
Anyone can validate the fairness by pasting the revealed Server Seed, the public Client Seed, the Nonce, and the exact team list. The checker will recompute the order deterministically.
No verification yet.
How the Provably Fair Shuffle Works
- Commit: The commissioner creates a secret Server Seed and publishes its
SHAâ256
hash (not the seed itself). This prevents the seed from being changed later without detection. - Client Seed: The league publicly agrees on a Client Seed (e.g., a UTC timestamp or phrase). This ensures the commissioner cannot target a specific outcome, because they canât predict the client value at commit time.
- Reveal & Shuffle: After commit, the commissioner reveals the Server Seed. We generate random numbers using
HMACâSHA256(ServerSeed, `${ClientSeed}:${Nonce}:${i}`)
and perform a FisherâYates shuffle. The result is deterministic given the inputs. - Verify: Anyone can recompute the
SHAâ256(ServerSeed)
to match the published hash and reârun the shuffle with the same parameters to confirm the order is identical.