How provably fair crash works: hash chains, salts and the 1% edge

By the CashoutScore testing team · Updated 27 October 2026

In crash, a multiplier climbs from 1.00x until it “crashes”; you win your stake times the multiplier if you cashed out before that moment. Unlike dice or mines, there is no client seed per player - everyone at the table sees the same crash point. So the fairness proof has to commit to every future round at once, before anyone bets. The standard way to do that is a hash chain plus a salt nobody could know in advance. This guide walks through the scheme Stake published for its crash game in July 2019, then verifies a real round. For the general seed-and-nonce model used by most other games, see what provably fair means.

The hash chain: generate forward, play backwards

The casino picks a secret starting value and hashes it over and over:

h1 = SHA256(secret)
h2 = SHA256(h1 as hex text)
...
hN = SHA256(h(N-1) as hex text)

In Stake’s bitcointalk seeding post the chain has 10,000,000 hashes, each one the SHA-256 of the hexadecimal text of the previous one. The casino publishes only the last hash first (for Stake: 78a9757d3be42b74a3f70239078ad9317125fe9ee630d5bdada46de963e56752) and then plays the chain in reverse order: each new round uses the hash just before the one used by the previous round.

Why each round locks in the next

Hashing goes one way only. Given a round’s hash, anyone can compute SHA-256 of it and check that it equals the hash of the round before it, all the way back to the published end of the chain. The casino cannot swap in a different future hash, because it would have to find another value whose SHA-256 equals the current one - a preimage, which is not feasible. Players cannot look ahead for the same reason: the next hash is the preimage of the current one. Once the end hash is public, every round in the chain is fixed.

The salt: a Bitcoin block that did not exist yet

A chain alone has a weakness: the casino generated it and knows every result. It could create many chains and publish the one that happens to pay players least. To rule that out, each result is mixed with a value chosen after the chain was committed. Stake used the hash of Bitcoin block 584,500, which, as the post says, had not been mined when the chain’s end hash was posted. Once the block was found, the operator posted the block hash as an update in the same thread: 0000000000000000001b34dc6a1e86083f95500b096231436e9b25cbdd0075c4. You can confirm that hash belongs to height 584,500 on a public explorer such as mempool.space.

The formula, line by line

From the seeding post (JavaScript, lightly reformatted):

hmac  = HMAC_SHA256(key = gameHash, message = blockHash)
hex   = first 8 hex characters of hmac
int   = parseInt(hex, 16)            // 0 … 4,294,967,295
crash = max(1, 2^32 / (int + 1) × (1 − 0.01))

Worked example with a published vector

Take the game hash 5844bf329a6334074778ab8a5f0960e24f9eec43f83bbd98ac0a9f8bcd87184e (a round from Stake’s chain used as a public test vector) and the block-584,500 salt above. Computing the HMAC with Node’s built-in crypto module gives:

HMAC-SHA2566bbea31f31e278b97c1b6f923101c2dd42b5b997a666886a739fccce912f6c59
First 8 hex6bbea31f
int1,807,655,711
2^32 / (int + 1)2.375987455735155
× 0.992.3522275811778033
Shown in the game2.35x

A player who cashed out at 2.35x or below in that round won; anyone aiming higher lost. The chain check for the same round: SHA-256 of the game hash (as text) is 59bd990a98f7d7a18395b186f4a232a1dedfd65048968b9b9a6493dcb2a0939d, which must be the game hash of the round played just before it.

How to verify a round with our tool

  1. Open the round in the casino’s game history and copy its game hash.
  2. Find the salt the casino announced (for Stake’s chain, the block-584,500 hash above).
  3. In the provably fair verifier, choose the game Crash, paste the game hash and the salt, and run it. The tool shows the HMAC, the int, the crash point and the previous-round hash. “Load public test vector” fills in the example above.
  4. Compare the crash point with the history, and the previous-round hash with the round before it. For a deeper check, hash forward repeatedly until you reach the published end hash.

The calculation runs in your browser. For seed-and-nonce games, see verify a casino round yourself.

What it does not prove

Cash-out timing and auto-cashout

The crash point is fixed before the round starts; watching the curve or clicking at a “feeling” cannot change it. With auto-cashout at a target x, you win whenever the crash point is at least x - probability about 0.99 ÷ x - and receive x times your stake:

expected return = x × 0.99 / x = 0.99 of the stake

At 1.5x you win about 66% of rounds; at 10x about 9.9%; at 100x about 0.99%. The average is 99% every time. Auto-cashout only removes the risk of reacting late; manual play can do worse (missed clicks, network lag) but never better on average. A target changes volatility, not the edge - see house edge, RTP and volatility, and set limits with the bankroll tool before you play.

FAQ

Can I predict the next crash point from the current game hash?

No. The next round uses a hash whose SHA-256 equals the current one, so predicting it means reversing SHA-256, which is not feasible. You can only check rounds after their hash is revealed.

Does auto-cashout at a low target like 1.5x reduce the house edge?

No. With the Stake formula the chance of reaching any target x is about 0.99 ÷ x, so the expected return of a cash-out at x is about 99% of the stake whatever x you pick. A lower target changes how often you win and how much, not the average.

Why do some rounds crash at 1.00x?

In the Stake formula, about 1% of possible HMAC values would give a result below 1. The max(1, ...) floor sets those rounds to 1.00x, where nobody can cash out at a profit. Those instant busts are how the 1% edge shows up on screen.

Does every crash game use this exact formula?

No. The hash-chain idea is common, but casinos differ in the chain length, the salt, how the HMAC is built and how the edge is applied. Use the formula the casino itself publishes for its game.

18+. Gambling involves risk of loss. Help and self-exclusion.