Provable fairness

Committed first.
Checked after.

A casino that can pick the result after seeing your bet is not a casino, it is a decision. This is the standard trick that removes the decision — and the whole of it fits on one page.

Step one

The house commits

A random server seed is generated and you are shown its SHA-256 hash. The hash gives nothing away, but it pins the seed down — it cannot be changed later.

Step two

You stir it

You choose a client seed. It is mixed into every round together with a nonce that counts up by one each bet, so no two rounds share an input.

Step three

You check

Ask for the server seed. Hash it — it must match what you were shown first. Then recompute any round you played from the three inputs.

The whole algorithm.

Each round derives bytes from HMAC-SHA256, keyed with the server seed, over the string clientSeed:nonce:round. Bytes are consumed four at a time and read as a fraction — the first byte is worth 1/256, the second 1/65536, and so on. That gives an even number between 0 and 1, and every game is a rule applied to that number.

A coin is < 0.5. A roulette pocket is floor(n × 37). A shuffle is a Fisher–Yates pass driven by the same stream. There is nowhere in that chain for the house to put a thumb.

Verifier

On this site the seeds are generated in your own browser, so the verifier shows you the scheme rather than policing a stranger. The point is that you can read the rule, run it yourself, and recognise it when a real table offers you the same thing.