Fair Dice Verifier

Tawletna — commit-reveal proof, checked on your device.

In the app, open a finished match's dice seal and copy the evidence. Paste it below. This page recomputes every roll from the revealed seed and shows its work — it never contacts a server.

1
Before the first roll

The whole match's dice sequence is locked in a sealed box. You get the box's fingerprint — the long code. Nobody can see inside, and the box can never be swapped for another.

80ac9c…78ff
2
While you play

Every roll — yours and your opponent's — comes out of that sealed box, one by one. Your device writes down each roll as it lands.

3
When the match ends

The box is opened: the app reveals the secret inside (the seed). Only now — revealing it earlier would let you predict every coming roll.

4
This page checks both

Does the opened box have exactly the fingerprint from step 1? And does every roll you saw match what was inside? Both yes → the dice were fixed before play and never adapted to the board.

80ac9c…78ff = 80ac9c…78ff ✓

To cheat, the app would need a different box that somehow has the same fingerprint and contains every roll you already witnessed — that means breaking SHA-256, the same math that protects banks.


What this proves

In an online match, the server published commitSha256 — a hash of its secret seed — before the first die existed. Your device then contributed a random nonce of its own. Every roll is derived from (seed, both nonces, roll index), so the server could not steer outcomes after seeing your nonce, and nobody could predict rolls before the reveal. When the match ended the server revealed the seed; if the hash matches the commitment and every derived roll matches what you witnessed, the dice were fixed before play and untampered.

Don't trust this page?

Good — you don't have to. The evidence is self-contained and the algorithm is printed inside it (the derivation field) and in this page's script, verify.js. Recompute any single row with any HMAC-SHA256 tool and compare. This page also refuses to run unless it reproduces the game engine's published test vectors — the status line below shows that check.

Self-test: running…