Every tournament challenge is fixed before entries open, and you don't have to take our word for it. We publish a fingerprint of each round's seed in advance. When the round closes we release the seed itself. If the two don't match, we changed something — and anyone can catch it.
serverSeed = HMAC-SHA256(secret, roundId) ← kept secret until close commitment = SHA-256(serverSeed) ← PUBLISHED IN ADVANCE gameSeed = HMAC-SHA256(serverSeed, roundId + ":" + gameId)
The commitment is published before a round opens. It is a one-way hash, so it reveals nothing about the seed — but once the seed is released, only the original seed can produce that commitment. We cannot swap it afterwards.
/api/round?upcoming=10.
This page checks in your browser using the Web Crypto API — the maths runs on your machine, not ours. View source if you want to read it.
Published ahead of time. Save these before you play.
Loading…
Covered: the challenge content for a round was fixed before entries opened and was not altered afterwards. Every entrant faced the same challenge.
Not covered: scoring and ranking still run in the browser. Those are being moved server-side. Until that lands, this page proves the challenge was honest, not that every submitted score was.
We would rather say that plainly than let a fairness page imply more than it delivers.