Skip to content
Extracash

Legal

Provably-Fair Games

Last updated July 21, 2026

1. What "provably fair" means

Extracash mini-games use a commit–reveal scheme so you can mathematically verify that every roll was determined *before* you placed it — not after. The outcome can't be changed retroactively, and you can confirm this yourself with nothing more than a SHA-256 implementation and an HMAC-SHA256 implementation.

2. The three ingredients

Every roll is determined by three values:

  • Server seed — a 256-bit random value generated by Extracash. Its SHA-256 hash is published to your account *before* you can play; the seed itself stays secret until you rotate it.
  • Client seed — a value *you* control. It defaults to a random 16-character hex string but you can edit it to anything from 8 to 64 characters in [A-Za-z0-9_-]. Use the same client seed across many rolls or change it whenever you like.
  • Nonce — a per-user counter that bumps by one with every roll. Each roll under the same seed pair gets a unique nonce.

3. How the outcome is computed

Given those three values plus the game slug, the roll bucket is:

`` roll = HMAC_SHA256(serverSeed, "{clientSeed}|{gameSlug}|{nonce}") roll_uint32 = first 4 bytes of roll as big-endian uint32 roll_bucket = roll_uint32 mod 10000 ``

The game's paytable then maps roll_bucket (0–9999) into a payout multiplier. The paytable is fixed for each game and published below.

4. How you verify

1. Open Dashboard → Fairness and copy the current serverSeedHash. 2. Play some rounds. 3. Click Rotate seed. We immediately reveal the serverSeed that was used for all of those rolls. 4. Confirm SHA256(serverSeed) === serverSeedHash you saw in step 1. 5. For any session, run the HMAC above and confirm the resulting roll_bucket matches the outcomeRoll we recorded.

You can do step 4–5 in any language — there's also a verify widget right on the game page that does it in your browser via the Web Crypto API.

5. Paytable

The v1 mock is intentionally simple: roll_bucket < 4000 pays 2× the stake, anything else loses the stake. We'll publish per-game tables here as we add more games.

6. What we commit to

  • The serverSeedHash is set at signup and never changes for a given seed.
  • The nonce is monotonic per user — we never re-use a (seed, clientSeed, nonce) triple.
  • When you rotate, the previous serverSeed is published immediately and stored alongside its hash so you can retrieve it for any past session.
  • We will never adjust an outcome after the fact. The single source of truth for any session is the four values we recorded with it: serverSeedHash, clientSeed, nonce, and outcomeRoll.