Every result on CherryBet can be checked independently — by you, in your browser, without trusting us.
Before you bet, the server picks a secret server seed and shows you its SHA-256 hash. You also have a client seed (which you can change) and a nonce that counts up by one with every bet, across all games.
Each result comes from HMAC-SHA256(serverSeed, clientSeed:nonce). Because the hash was committed before you bet, the server can't change the seed afterwards. When you rotate your seed (Dice page → "Rotate server seed"), the old one is revealed so you can check every bet it produced.
Server seed hash — compare with the hash you were shown before betting:
Only the result for the game you actually played at that nonce is meaningful — the others are shown for convenience.
Crash rounds are shared by everyone, so they use a hash chain instead of your own seeds. Before any round was played we published the chain's commitment and salt (below). After each round its hash is revealed. Hashing it with SHA-256 gives the previous round's hash, and hashing a round's hash as many times as its game number gives the commitment — so no result could have been changed afterwards.
Previous round's hash (sha256 of this one):
Published commitment:
Keno, Mines and Blackjack need more than one random number per bet, so they use a float stream: HMAC-SHA256(serverSeed, clientSeed:nonce:round) for round = 0, 1, 2… gives 32 bytes each, and every 4 bytes make one float in [0, 1) as b0/256 + b1/256² + b2/256³ + b3/256⁴.
HMAC-SHA256(key = round hash, message = salt); take the first 13 hex digits as h. If h is divisible by 33 the round crashes at 1.00×; otherwise crash = ⌊(100·252 − h) ÷ (252 − h)⌋ ÷ 100. The multiplier shown climbs as e0.00006 × ms. About a 3% house edge.Dice, Coinflip, Limbo, Plinko and Mines carry a 3% house edge, built into the payouts above. Roulette's 2.7% edge comes from the zero.