Verified on Arbitrum One

Provably Fair

Every spin is verifiable on the blockchain. No trust required. The outcome is determined by math that nobody can manipulate.

🔗

On-Chain Settlement

Every round with bets is settled directly on the Arbitrum blockchain. The smart contract generates the result and verifies fairness. Round outcomes are permanently recorded on-chain.

🎲

Dual-Source Randomness

Results are generated by combining two independent random sources: our server's secret seed and Ethereum's validator randomness (prevrandao). Neither party can predict or manipulate the outcome.

💨

Withdraw Anytime

Your balance is tracked in real-time. When you're ready to leave, hit Cash Out to withdraw your funds on-chain directly to your wallet via the smart contract. No approval needed.

How Every Round Works

1

Seed Commitment

Before any bets are placed, our server generates a random seed and publishes its hash (keccak256) on the blockchain. This hash is permanent and unchangeable -- it proves the seed existed before any bets.

commitSeed(keccak256(serverSeed))
2

Players Place Bets

During the 45-second betting window, players place their bets through our interface. Bets are collected off-chain for a seamless experience -- no wallet popups for each bet.

No gas per bet. One signature to start playing.
3

On-Chain Settlement

After betting closes, the server submits ALL bets to the smart contract in a single transaction and reveals the original seed. The contract verifies the seed matches the committed hash.

settleRound(serverSeed, bets[])
4

Result Generation

The smart contract generates the winning number by combining the server's seed with the block's prevrandao value. This is calculated entirely on-chain -- no external input.

result = keccak256(serverSeed, block.prevrandao) % 37
5

Result & Verification

The contract checks each bet against the result and emits events for every outcome. Winnings are tracked and your balance updates in real-time. When you're ready, cash out on-chain to your wallet.

Results recorded. Balances updated. Withdraw anytime via cashOut().

Why Nobody Can Cheat

🏠

The Casino Can't Cheat

  • Server commits its seed hash BEFORE seeing any bets
  • Cannot change the seed after bets are placed (hash is on-chain)
  • Does not know the block's prevrandao when committing
  • The combination makes the result unpredictable to the server
👤

Players Can't Cheat

  • Players don't know the server's seed (only the hash is public)
  • Cannot predict what prevrandao will be in the settlement block
  • Bets are locked before the result is generated
  • Smart contract enforces all payout rules automatically
⛏️

Validators Can't Cheat

  • Validators control prevrandao but don't know the server seed
  • Manipulating prevrandao costs $50,000+ in lost block rewards
  • Even with manipulation, the result is still combined with the unknown seed
  • Economic attack cost far exceeds any possible gain
📖

Open Source & Auditable

  • Smart contract is verified on Arbiscan -- read the code yourself
  • Every round's seed, prevrandao, and result are stored on-chain
  • Anyone can verify any historical round independently
  • verifyRound() function built into the contract

The Math

Server SeedRandom 32 bytes, generated before the round
Seed Hashkeccak256(serverSeed) -- committed on-chain before bets
Prevrandaoblock.prevrandao -- Ethereum validator randomness, unknown until settlement block
result = keccak256(serverSeed, block.prevrandao) % 37

The result is a number from 0 to 36, exactly like a European roulette wheel. House edge: 2.70% (1/37), same as any real casino.

Payout Table

Standard European roulette odds. Enforced by the smart contract.

Bet TypeCoveragePayout
Straight1 number36x
Split2 numbers18x
Street3 numbers12x
Corner4 numbers9x
Six Line6 numbers6x
Column / Dozen12 numbers3x
Red / Black / Odd / Even18 numbers2x
Low (1-18) / High (19-36)18 numbers2x
Voisins du Zero17 numbers3x
Tiers du Cylindre12 numbers3x
Orphelins8 numbers5x

Smart Contract

Verified and open source on Arbiscan

0x2D363533d9B82f54428720d60a6D2Fd8b49F0586
💨

Cash Out Anytime

Your balance updates in real-time as you play. Winnings and losses are tracked after each round settles on-chain. When you're ready to leave, hit the Cash Out button to withdraw your funds.

Cash Out calls cashOut() on the smart contract, which sends USDT directly to your wallet in a single transaction. There is no withdrawal queue, no manual approval from the operator.

1Play rounds
2Balance updates each round
3Cash out to wallet anytime

Frequently Asked Questions