Provably Fair

Every casino round is decided by a seed we commit to before the round starts and reveal after it ends. Nothing about the outcome can be changed in between, and you can check that yourself below, in your own browser, without trusting our server.

1

Commit

Before you bet we commit to a secret server seed by publishing only its SHA-256 hash. Solo games pair it with your own client seed and a nonce that counts your bets; shared rounds use the round ID.

2

Reveal

When you cycle your seed pair (or a shared round settles) the server seed is revealed. Hash it and it must equal the hash you saw before. That is the proof it was never swapped.

3

Verify

Recompute HMAC-SHA256(serverSeed, publicSeed:nonce). Its first 8 hex characters ÷ 0xFFFFFFFF is a number from 0 to 1: the roll. Each game turns that roll into its outcome in a fixed way, spelled out per game below.

One roll sets the crash point before the rocket moves. Solo crash draws from your seed pair. The shared LIVE round commits its hash to everyone at the start of the countdown and reveals the seed when it crashes.

  1. 1Take the roll for nonce 0.
  2. 2Crash point = (1 − 0.05) ÷ roll, floored to two decimals. The 0.05 is the 5% house edge.
  3. 3It is never below 1.00× and is capped at 1000×. A roll of exactly 0 is treated as the smallest positive number, which lands on the cap.
  4. 4You win if you cashed out at or before that point; the game shows the same number the code produces.
verify.js · run with node
const crypto = require('crypto');

// One HMAC roll → a uniform number in [0, 1]
const roll = (serverSeed, publicSeed, nonce) => {
  const h = crypto.createHmac('sha256', serverSeed).update(`${publicSeed}:${nonce}`).digest('hex');
  return parseInt(h.slice(0, 8), 16) / 0xffffffff;
};

const serverSeed = 'PASTE_SERVER_SEED';   // revealed when you cycle (solo) or when the round settles (shared)
const publicSeed = 'PASTE_PUBLIC_SEED';   // solo: clientSeed:nonce   shared: the round id
console.log('hash =', crypto.createHash('sha256').update(serverSeed).digest('hex')); // must equal the hash shown before the bet

const r = roll(serverSeed, publicSeed, 0) || Number.MIN_VALUE;
const raw = (1 - 0.05) / r;                                    // 5% edge
const crashPoint = Math.max(1, Math.min(1000, Math.floor(raw * 100) / 100));
console.log({ crashPoint });

Recent Crash rounds

newest first

For crash, crash point = (1 − house edge) ÷ r, floored to 2 decimals, never below 1.00x.

No settled rounds yet.

    Verify a crash round

    Pick a round on the left or paste seeds from your own bet history. You can also try any seeds you like. The outcome is deterministic. How crash is derived ↑ · Verify on CodePen ↗