Provably Fair

Every outcome on Vendetta Saloon is determined by math, not by us. Our provably fair system lets you verify every single result yourself — no trust required.

Dual Commit-Reveal System

Vendetta Saloon uses SHA-256 cryptographic commitments across all games. Every outcome is locked before betting opens. Server seeds are revealed after each round so you can independently verify every single result — no trust required.

How It Works

1
1
Commit

Before each round, our server generates a secret seed and publishes its SHA-256 hash — a one-way fingerprint that cannot be reversed or altered.

2
2
Play

The round plays out normally. The outcome was already determined by the committed seed — we have no way to change it after the hash is published.

3
3
Reveal & Verify

After the round ends, the original seed is revealed. Hash it yourself — if our hash matches, the result was fair. If it doesn't, we cheated. It's that simple.

We cannot manipulate outcomes after committing the seed. We cannot pick winners or losers. We cannot adjust results based on your balance, your history, or how much you have wagered. The math is set before you place your bet, and anyone can check our work.

Game-by-Game Breakdown

Price RacePlay →

The commit hash is published before the race begins. Start prices are snapshotted and included in the hash so the server cannot swap them after the fact. Once the race ends the server seed is revealed — you can recompute the hash yourself and confirm it matches.

Hash Formula
SHA256( serverSeed + JSON.stringify(startPrices) + raceNumber )
Inputs

Server seed, start prices (locked at countdown), race number

CryptoCrashPlay →

The crash point is pre-determined before any player places a bet. During betting, SHA256(serverSeed) is committed. After crash, the seed is revealed for verification. Crash point = 0.95 / r, where r is derived from the first 8 hex chars of the combined hash. Result clamped between 1.01x and 50.00x. The 0.05 factor represents the 5% house edge.

Hash Formula
SHA256( serverSeed + clientSeed + roundNumber )
Inputs

Server seed, client seed (generated at countdown), round number

Viper RunPlay →

Each bet is committed individually at placement time. The target price, resolve time, and bet ID are hashed with a server seed before you know the outcome. After resolution the seed is revealed — you can recompute the hash and confirm it matches.

Hash Formula
SHA256( serverSeed + targetPrice + resolveAt + betId )
Inputs

Server seed, target price, resolve time, bet ID

Vendetta RoulettePlay →

The winning number for each spin is calculated before the wheel turns. The ball lands where the math says it will — not where the house wants. Every spin result is independently verifiable.

Hash Formula
SHA256( serverSeed + clientSeed + roundNumber )
Inputs

Server seed, client seed (server-generated per round), round number

CryptoBrawlPlay →

Monster stat rolls, battle damage, ability triggers, and dodge/crit rolls all derive from a seeded RNG chain. The commit hash is published before pairing begins. After the result, the server seed is revealed so you can replay every roll and confirm the battle played out honestly.

Hash Formula
SHA256( serverSeed : clientSeed : roundNumber : counter )
Inputs

Server seed, client seed, round number, sequence counter

Bounty Hold'emPlay →

Bounty Hold'em uses a dual commit-reveal system. During betting, the server commits SHA-256(serverSeed) and each player commits SHA-256(theirSeed). At dealing, all player seed hashes are combined with server entropy to form the final clientSeed used to shuffle. After showdown, both server and client seeds are revealed. Players can verify their seed was included in the shuffle and that SHA-256(serverSeed) matches the committed hash. Neither side can manipulate the deck alone.

Hash Formula
SHA256( serverSeed + clientSeed + roundNumber )
Inputs

Server seed, player-committed client seeds (combined), round number

The VaultPlay →

Each key purchase produces a unique HMAC-SHA256 digest. The hit damage and Lucky Strike roll are derived from the first bytes of this digest. The server seed is committed at vault creation and revealed when the vault breaks — you can verify every individual hit replayed the same way using the revealed seed.

Hash Formula
HMAC-SHA256( serverSeed, playerId + keyIndex )
Inputs

Server seed (per-vault), player ID, key purchase index

Deadeye ShootoutPlay →

Before betting opens the server generates a secret seed and publishes SHA-256(serverSeed) as the commit hash. The hit target is determined by the combined hash — neither party can predict or influence the result. The Golden Star card is selected independently using cryptographic rejection sampling (no modulo bias). After the result phase, the server seed is revealed so you can verify the hit target and star card yourself.

Hash Formula
SHA256( serverSeed + clientSeed + roundNumber )
Inputs

Server seed, client seed, round number

PaydirtPlay →

At session start the server generates a secret seed and publishes SHA-256(serverSeed) as the commit hash. Mine positions are placed using a Fisher-Yates shuffle driven by HMAC-SHA256 with rejection sampling — no modulo bias. After the session ends (cashout or mine hit), the server seed and full mine map are revealed. You can reproduce the exact shuffle in your browser using the disclosed seed, your client seed, and the session ID — every mine position is deterministic and verifiable.

Hash Formula
HMAC-SHA256( serverSeed, clientSeed + sessionId + tileIndex ) — Fisher-Yates shuffle
Inputs

Server seed (per session), player client seed, session ID

Void ReelsPlay →

Each player has their own serverSeed cycle. Before your first spin the server publishes SHA-256(serverSeed) as the commit hash. Each reel stop is derived independently using HMAC-SHA256 with rejection sampling — no modulo bias. After the spin the original serverSeed is revealed so you can verify every reel position, then a new seed is committed for the next spin. Your client seed is mixed in, so neither party can manipulate results alone.

Hash Formula
HMAC-SHA256( serverSeed, clientSeed + ':' + nonce + ':' + reelIndex + ':' + attempt )
Inputs

Server seed (per-player session), player client seed, spin nonce, reel index

Verify It Yourself

Paste the values from any completed round to independently verify its result. This runs entirely in your browser — nothing is sent to our servers.

For Price Race: paste seed + JSON.stringify(startPrices) + raceNumber as one string, or fill in the fields below.

Appended to the seed before hashing. Use this for start prices + race number, round number, etc.

Transparent House Edge

We don't hide how we make money. The house edge is applied consistently and mathematically across all games. This is how we sustain the platform, fund jackpots, and keep the games running. There are no hidden fees, no variable edges, and no adjustments based on your play style. The edge is baked into the game math, visible in the code, and the same for everyone.

Price Race
CryptoCrash
Viper Run
Vendetta Roulette
CryptoBrawl
Bounty Hold'em
The Vault
Deadeye Shootout
Paydirt
Void Reels