How provably fair works
3 min read
Any site with a random outcome asks you to trust it. Provably fair is a way to replace most of that trust with a check you can do yourself. This article explains the idea in plain words — no background in cryptography needed.
1.The problem it solves
If a result is simply generated on the server and shown to you, you have no way to know whether it was really random or picked after the server saw your stake. Provably fair fixes the result before you play, in a way the site cannot quietly change afterwards.
2.Three ingredients
- Server seed — a long random string created by DOTAGRADE. It stays secret while you play with it.
- Client seed — a string that belongs to you. You can see it and change it to anything you like at any time.
- Game number — a counter that goes up by one with every upgrade you play on the current pair of seeds.
The result of a game is computed from these three values: HMAC-SHA256 with the server seed as the key and “client seed:game number” as the message. The first 8 hexadecimal characters of the output become a number from 0 to 100 — the roll. The upgrade wins when the roll is below your chance.
3.Why the site cannot change a result
Before you play, you are shown the hash of the server seed — its SHA-256 fingerprint. A hash works one way: it is easy to compute from the seed, but there is no practical way to get the seed back from the hash, or to find a different seed with the same hash.
That makes the hash a commitment. Once you have seen it, the server seed is locked in. If the site later swapped the seed for a more convenient one, the new seed would not match the hash you saw, and anyone could spot it.
Your client seed covers the other side. Because you choose it, the server cannot prepare a server seed that produces losing rolls for you — it does not know what the seed will be combined with. The game number makes every roll different, even on the same pair of seeds.
4.Why the server seed is hidden for a while
If you knew the server seed while playing, you could compute every future roll in advance and only play the winning ones. So the seed is revealed when you change the pair of seeds. At that moment the old server seed is shown in full, a new one is created, and you see its hash before your next game.
5.How to check a game yourself
- Open Profile → Games history and find the upgrade you want to check.
- Click the shield icon on its card. It opens the fairness page with the client seed, game number, chance and server seed hash already filled in.
- If the game was played on your current pair, its server seed is still secret. In “Your seeds” on the same page, change the seeds — the old server seed is revealed.
- Check the game again. The page hashes the server seed and compares the result with the hash you were shown, then recomputes the roll and tells you whether it was a win or a loss.
The check runs in your browser, not on our server. If you would rather not rely on our page at all, the formula is public: any HMAC-SHA256 and SHA-256 calculator gives the same result.
6.What it proves — and what it does not
Provably fair proves that a result was fixed before you played and was not adjusted afterwards. It does not change the odds: a 30% chance still loses about seven times out of ten, and no seed makes a win more likely. The chance itself, and the house edge built into it, are explained openly in our article on RTP.
