Page cover

slot-machineSlots

A 3-reel slot machine with weighted symbols, configurable payouts, and a verifiably-onchain RTP you can compute yourself before you spin.

How it works

The Overtime Slots contract implements a 3-reel slot machine. When you spin:

  1. You stake an amount in your chosen collateral

  2. The contract requests a random word from Chainlink VRF

  3. From the random word, three reels are sampled independently using the configured symbolWeights

  4. The result is checked against the pay table:

    • Triple (all three reels match) → pays the symbol's triplePayout multiplier

    • Adjacent pair (reels 1+2 match, or reels 2+3 match) → pays the symbol's pairPayout multiplier

    • Otherwise → no payout

  5. If you won, the payout is transferred immediately

Every component of this is configurable per deployment, and every component is public state.


What's onchain

Parameter
What it is

symbolCount

Number of distinct symbols on the reels

symbolWeights[i]

Weight of symbol i in the reel sampling distribution

symbolWeightsTotal

Cached sum of weights (probability of symbol i = symbolWeights[i] / symbolWeightsTotal)

triplePayout[i]

Payout multiplier for three of symbol i

pairPayout[i]

Payout multiplier for an adjacent pair of symbol i

maxPayoutMultiplier

Cap used to size the bankroll reservation

houseEdge

Public state variable, capped at MAX_HOUSE_EDGE = 5%

You can read every one of these directly from the contract. The probability of any outcome is a pure function of these public variables, meaning the expected return-to-player (RTP) of the slot is something you can calculate yourself before staking a single token.


Why this is unusual

Most online slots ask you to trust an RTP figure printed in the game info modal. There is no way to verify it. Even regulated jurisdictions only require periodic audits, not real-time verifiability.

Overtime Slots is the inverse:

  • The RTP is computable from public state. Anyone can sum weight × payout across all winning combinations and compare to the stake.

  • The house edge is hard-capped at 5%. The contract structurally cannot be configured to extract more.

  • Any payout-table change emits an event. Every spin from that block onward uses the new table, and every spinner can read it before they spin.


Limits

Parameter
Value

Minimum bet

3 USD

House edge

Configurable, capped at 5% (MAX_HOUSE_EDGE)

Maximum profit per spin

Set per deployment (maxProfitUsd)

Cancel timeout

30 seconds minimum

Supported collaterals: USDC, WETH, $OVER.


User guide

1. Open the Slots machine

Select Slots from the casino lobby. The pay table is visible in the interface and matches the on-chain configuration exactly.

[Screenshot — Slots interface with visible pay table]

2. Set your stake and collateral

Choose your collateral, enter your stake amount.

[Screenshot — stake entry]

3. Spin

Click Spin and sign the transaction. The spin enters PENDING while waiting for the VRF callback.

[Screenshot — pending spin]

4. Result

When the random word arrives, all three reels resolve at once. The contract checks for a triple match, then for adjacent pairs, and pays out accordingly.

[Screenshot — resolved spin with reel result]

5. Payout

Winning spins transfer the payout to your wallet in the same transaction. The result, the random word and the payout are all in your bet history and on a block explorer.

[Screenshot — winning spin with payout]


How to verify RTP yourself

Want to confirm the slot's RTP before you stake? At a high level:

  1. Read symbolCount, symbolWeights[], triplePayout[], pairPayout[] from the contract

  2. Compute the probability of each outcome:

    • Triple of symbol i: (weight[i] / total)^3

    • Adjacent pair of i (positions 1+2 or 2+3, third reel anything else): 2 × (weight[i] / total)^2 × ((total - weight[i]) / total)

  3. Multiply each probability by the corresponding payout multiplier

  4. Sum across all symbols → that's the expected return per unit staked

The complement of that sum is the effective house edge.

You don't have to take Overtime's word for it. You don't have to trust an audit firm. You can read the chain.


Free bets

Slots supports placeBetWithFreeBet for users with an Overtime free-bet balance. Mechanics are identical, and free-bet wins are settled through the existing Overtime free-bets infrastructure.

Last updated