Roulette
European single-zero roulette, fully onchain. Every spin is resolved by a single Chainlink VRF random word.
Roulette
European single-zero roulette, fully onchain. Every spin is resolved by a single Chainlink VRF random word.
How it works
The Overtime Roulette contract implements a European wheel with 37 pockets (0 through 36). When you place a bet, the contract:
Pulls your collateral and validates your selection
Reserves the worst-case payout against the bankroll
Requests a random word from Chainlink VRF
On fulfillment, computes the result as
randomWords[0] % 37Pays out winning bets and transfers them to your wallet immediately
There is no PRNG seed managed by the operator. There is no "house variance adjustment." 0 through 36, uniformly, sourced from a decentralized oracle network.
Bet types and payouts
Straight
A single number, 0–36
35 : 1
36× stake
Red / Black
Color
1 : 1
2× stake
Odd / Even
Parity (excluding 0)
1 : 1
2× stake
Low / High
1–18 or 19–36
1 : 1
2× stake
Dozen
1–12, 13–24, or 25–36
2 : 1
3× stake
Column
1st, 2nd or 3rd column
2 : 1
3× stake
A spin of 0 loses every outside bet (Red/Black, Odd/Even, Low/High, Dozen, Column). Only a Straight bet on 0 wins on a zero spin.
Multi-pick bets
You can place up to 10 picks on a single spin, all sharing one Chainlink VRF request. This is the equivalent of dropping multiple chips on the felt before the dealer waves their hand.
For example, in one bet you can stake:
10 USDC on Red
5 USDC on Dozen 1
2 USDC Straight on number 17
When the wheel result is revealed, every pick is evaluated against it. Winning legs are paid, losing legs are not. The contract correctly handles cases where mutually exclusive picks (e.g. Dozen 1 + Dozen 2) appear in the same multi-bet — the bankroll reservation only covers the maximum possible payout across all 37 outcomes, not the sum of all picks.
Limits
Minimum bet
3 USD per pick (normalized via Chainlink price feed)
Maximum picks per multi-bet
10
Maximum profit per bet
Set per deployment (maxProfitUsd)
Cancel timeout
30 seconds minimum (in case of VRF stall)
Supported collaterals: USDC, WETH, $OVER.
User guide
1. Log In to Overtime
Visit overtimemarkets.xyz/casino and Log In.
2. Pick the Roulette table
Select Roulette from the casino lobby.
3. Choose your collateral
Switch between USDC, WETH and $OVER from the collateral selector. The minimum-bet floor is enforced in USD, so the equivalent collateral amount adjusts automatically based on the Chainlink price feed.

4. Input your desired buy-in amount per chip
In the Enter amount input field, enter the buy-in amount you want to bet with per chip.
5. Place chips on the table
Click any betting area on the roulette layout: a number for a Straight bet, a color box for Red/Black, the dozen or column markers for outside bets. Each click drops a chip equal to your selected stake amount. You can stack up to 10 picks on a single spin.

6. Spin
Hit Spin.
After the bet is confirmed onchain, your bet enters PENDING while the contract waits for the VRF callback. This typically takes a few seconds.
7. Result
When Chainlink fulfills the randomness, the wheel result is revealed. Winning picks pay out automatically in the same transaction. You can see the resolved bet and the payout in your bet history, and on a block explorer if you want to verify it directly.
Cancelling a stuck bet
If a spin somehow doesn't resolve within the cancel timeout (very rare, but possible if Chainlink fulfillment is delayed), you can cancel the bet from your bet history and recover your full stake. No customer support ticket required.
Free bets
If you have an Overtime free-bet balance, the Roulette interface will offer a "Use free bet" toggle on supported collaterals. Free-bet roulette bets work identically to staked bets — they call placeBetWithFreeBet instead of placeBet, and any winnings are settled through the existing Overtime free-bets infrastructure.
Last updated
