Skip to Content
Provably FairOverview

Provably Fair

Every result in a Maktub game is computed from numbers the casino committed to before you bet and numbers you control. Once the commitment is revealed, you can recompute any past result yourself and check that nothing was changed after the bet.

This section explains the whole chain: how seeds become bytes (Implementation), how each game turns those bytes into its result (Game events), and how the shared rounds of Crash, Slide and Double get their randomness (Crash, Slide & Double).

The three inputs

InputWho controls itWhat it is
Server seedMaktubA random 64-character hex string, kept secret while it is in use. Only its SHA-256 hash is shown.
Client seedYouAny text. Maktub gives you a random one at the start; you can set your own at any time.
NonceThe bet counter1 for the first bet of a seed pair, 2 for the second, and so on. It never repeats within a pair.

The server seed and the client seed are paired. A bet with nonce n uses the pair’s seeds and n, nothing else. The same inputs always produce the same numbers, so the result of a bet is fixed the moment you place it and cannot be adjusted afterwards.

How a bet is protected

  1. Commitment. Before you play, the game shows the hash of the active server seed, and the hash of the next one. A hash cannot be reversed, but it pins the seed: the casino cannot swap it later without the hash changing.
  2. Your input. You choose the client seed. The server seed was already committed, so the casino cannot pick a seed that suits your client seed.
  3. Play. Each bet increments the nonce and derives its outcome from (server seed, client seed, nonce).
  4. Reveal. When you rotate the seed pair, the old server seed is revealed in full. You can then check that its hash matches the one shown before you bet, and recompute every bet it decided.

The active server seed is never shown while bets are still being placed with it. This is what stops anyone from predicting the next result. Rotating is how you close one pair and open the verification of all its bets.

Seeds in the game

Open the Provably Fair modal from the game (the fairness button). It has two tabs.

Seeds shows:

  • Active Server Seed (Hashed), the commitment for the pair in use.
  • Active Client Seed and Total Bets, which is the nonce of your last bet.
  • Rotate Seed Pair: type a new client seed and press Change. The Next Server Seed (Hashed) is shown before you confirm. Rotating reveals the old server seed and starts a new pair with the nonce reset, so the next bet uses nonce 1.
  • Previous Seeds: every pair you rotated away from, with its Server Seed (Revealed), its hash, the client seed and the nonces its bets used.

A bet’s own detail modal also shows the hashed server seed, the client seed and the nonce of that bet, and the revealed server seed once the pair has been rotated.

Verify a bet

In the game

  1. Rotate your seed pair so the server seed of the bet is revealed.
  2. Open the Provably Fair modal and go to the Verify tab. (The Verify button in a bet’s detail modal opens it with that bet’s seeds, nonce and settings already filled in.)
  3. Choose the game, paste the revealed server seed, the client seed and the nonce, then set the settings the bet used (for example the difficulty, risk, number of mines, or the operator’s RTP preset).
  4. The tab recomputes the result in your browser, nothing is sent to a server, and shows the HMAC bytes and the floats behind it, so you can see exactly where the number came from. It also shows the hash of the server seed you pasted: it must equal the hash that was displayed before the bet.

By hand

The algorithm is a few lines of standard cryptography. The Implementation page has complete code you can run, plus a worked example with every intermediate value. The Game events page gives the formula for each game.

Verified replays

Open a settled bet and press Replay: the bet plays again on screen, in the game itself for Dice, Limbo, Mines, Keno, Plinko and Wheel, and as an animated board, hand or ladder for every other game. The outcome is recomputed from the bet’s seeds each time it plays; nothing is recorded.

Share replay gives the bet a public link. Whoever opens it watches the same replay and sees the check that their own browser ran: the server seed hashes to the commitment shown before the bet, and the seeds reproduce the outcome that was paid. The link never shows who played.

The server seed is published only once the player rotates to a new seed pair, so a link shared right after a win says it is waiting for the reveal. It turns verified by itself after the rotation.

Crash, Slide and Double

These games are played in rounds shared by all players, so they cannot use a personal seed pair. Each round has its own committed server seed and takes its randomness from a public drand  beacon that nobody can know in advance. Each round is verified on its own: see Crash, Slide & Double.

EC-VRF mode

Operators can enable an alternative to the hash commitment. Instead of a secret server seed that is revealed at rotation, each bet carries a cryptographic proof that can be checked at once. See EC-VRF mode.

Last updated on