Back to Home

Documentation

Complete guide to V3 bet Platform

Quick Start

Get started in 3 simple steps

  1. 1

    Connect Wallet

    Connect your Web3 wallet (MetaMask, Coinbase Wallet, etc.) to Base Sepolia Testnet

  2. 2

    Get USDC

    Acquire testnet USDC tokens for betting (available on Base Sepolia faucets)

  3. 3

    Start Betting or Create Pools

    Browse available pools or create your own with custom odds

Creating Liquidity Pools

Become a market maker

Step-by-Step Guide

1. Select a Game

Choose an upcoming game from the available leagues (Premier League, La Liga, Serie A, etc.)

2. Choose the Outcome You Back

Pick the outcome you actually believe will happen — no mental inversion required. The interface lets you select your prediction directly (e.g. "Team 1 Win", "Over 2.5", "Team 1 to Score").

Only outcomes that have a clean inverse inside the on-chain bet-type enum are offered for pool creation, because the contract needs both sides to settle the market. The supported families are:

  • Match Result & Double Chance: Team 1 Win ↔ Team 2 or Draw, Team 2 Win ↔ Team 1 or Draw, Draw ↔ Either Team
  • Goals (match): Over 0.5 ↔ Under 0.5, Over 1.5 ↔ Under 1.5, Over 2.5 ↔ Under 2.5, Over 3.5 ↔ Under 3.5
  • Team Totals: Team 1 / Team 2 Over N.5 ↔ Team 1 / Team 2 Under N.5 (0.5, 1.5, 2.5)
  • Team to Score / Clean Sheet: Team 1 to Score ↔ Team 2 Clean Sheet, Team 2 to Score ↔ Team 1 Clean Sheet

Outcomes that have no natural inverse in the contract enum today (Both Teams Score, Exactly N Goals, Win by 1+/2+, Win to Nil) are not currently offered as creator pools. They become available the moment matching inverse codes are added to P2PBetting.sol; the frontend regenerates its bet-type tables from the enum on every build.

3. Set the Odds You Want Paid

Enter the multiplier you want to be paid out at when your prediction lands — not the odds opposing bettors will use. The platform converts your number to the contract odds automatically.

Conversion: contract odds = y / (y − 1), where y is the multiplier you set.
Example: you want 2.50× payout → opposing bettors stake at 1.67× (250 / 150).

Tip: Lower odds = higher probability = less risk. Higher odds = lower probability = more risk. The pool creation form previews the contract odds live as you type.

4. Provide Liquidity

Deposit USDC to cover potential payouts on the opposing side.

Formula: Max bets allowed = (Liquidity × 100) / (Contract Odds − 100)
Example: 100 USDC at contract odds 1.67× → ~149 USDC max in opposing stakes.

5. Public or Private?

Toggle Private pool in the create form to restrict betting to a list of wallets you specify (paste an address and click + to add — up to 8 per pool). Private pools:

  • • Are hidden from the public Pools tab — they only show up in My Pools for the creator.
  • • Settle the same as public pools — same odds math, same fees, same claim flow.
  • • Reject any placeBet call from a wallet that isn't on the allow list (the contract reverts with NotAllowedBettor).
  • • Are shareable via the pool's direct link — invited wallets land on the bet page; everyone else sees a "Not invited" notice.

6. Confirm & Wait

Approve USDC spending and confirm the transaction. Behind the scenes, your outcome and odds are inverted before being written to the contract; opposing bettors browsing pools see the inverted side at the inverted odds. Your pool is now live!

How the Inversion Works

The pool creator picks their preferred outcome and odds. The system flips both before writing to the contract so the on-chain pool reflects what opposing bettors will see.

  • Outcome: the UI shows your choice (e.g. "Team 1 Win"); the contract stores the opposite (e.g. "Team 2 or Draw"). Opposing bettors see — and stake on — the stored side.
  • Odds: you enter the multiplier you want to be paid (y); the contract receives y / (y − 1), which is the multiplier opposing bettors stake at.
  • Coverage: only outcomes with a natural inverse inside the contract enum are listed — Match Result ↔ Double Chance, Over ↔ Under (match and per-team), and Team-to-Score ↔ opponent Clean-Sheet. Other bet families become available when matching inverse codes are added to the on-chain enum.

Worked example: back "Team 1 Win" at 2.50×, deposit 100 USDC liquidity. The contract stores a "Team 2 or Draw" pool at 1.67×. If Team 1 wins, you keep your 100 USDC plus all opposing stakes. If Team 2 wins or it's a draw, opposing bettors get paid 1.67× their stake from your liquidity.

Placing Bets

Browse Available Pools

View all active betting pools with different odds for the same game. Choose the best value for your prediction.

Check Pool Capacity

Each pool shows available capacity. If capacity is 0%, pool cannot accept more bets.

Example: Pool with 100 USDC liquidity at 2.0x can accept max 50 USDC in total bets

Place Your Bet

Enter amount, approve USDC, and confirm. You'll see potential payout before confirming.

Claim Winnings

After game finishes, visit "My Bets" tab to claim payouts. Claim button appears for winning bets.

Smart Contract

Technical details

Contract Information

Network: Base Sepolia Testnet

Token: USDC (6 decimals)

Fee: 3% on profits only

Security: ReentrancyGuard, Pausable, Ownable

Key Functions

  • createPool() - Create liquidity pool
  • placeBet() - Place bet against pool
  • claimBet() - Claim winning bet
  • claimPoolCreator() - Pool creator claims funds

Casino Games

Provably-fair single-player games — every roll, flip, and spin is settled by Chainlink VRF and paid out instantly in USDC.

Return-to-Player at a glance

GameMax payoutRTP
Coin Toss1.9× stake95.00%
Rock Paper Scissors1.9× stake96.67%
Dice5.7× stake95.00%
Roulette36× stake94.74%
Lucky Wheel8× stake95.83%
Slots10× stake~44.9%

RTP figures reflect the on-chain payout tables. They are theoretical long-run averages — short sessions can deviate dramatically. Slots in particular is a high-variance game with a meaningful house edge by design.

Coin Toss

Pick Heads or Tails, place a USDC bet, and watch the coin spin while VRF is fetched. A correct call returns 1.9× your stake; a wrong call loses the stake.

  • Probability of winning: 50%
  • Payout multiplier: 1.9×
  • RTP: 0.50 × 1.9 = 95.00%
  • Stake limits: contract-enforced min/max bet

Rock Paper Scissors

Pick Rock, Paper, or Scissors. The contract draws the house's hand from VRF. Win pays 1.9×, draw refunds your stake (1×), lose pays nothing.

  • Outcome distribution: ⅓ win, ⅓ draw, ⅓ lose
  • Expected return per stake: (⅓ × 1.9) + (⅓ × 1) + (⅓ × 0)
  • RTP: 96.67%

Dice

Choose Exact, Over, or Under a target value (1–6). VRF rolls the die. Multipliers are calibrated so every bet type has the same long-run RTP.

  • Exact (1/6 chance): pays 5.7×
  • Over 1 / Under 6 (5/6 chance): pays 1.14×
  • Over 2 / Under 5 (4/6 chance): pays 1.425×
  • Over 3 / Under 4 (3/6 chance): pays 1.9×
  • Over 4 / Under 3 (2/6 chance): pays 2.85×
  • Over 5 / Under 2 (1/6 chance): pays 5.7×
  • RTP across all bet types: 95.00%

Roulette

American roulette with 0 and 00 — 38 pockets total. Place chips on straight numbers, splits, streets, corners, six-lines, columns, dozens, or even-money bets. The wheel is rendered live and lands on the on-chain VRF result.

  • Straight number: 36× (vs true odds of 38×)
  • Split: 18×
  • Street: 12× · Corner: 9× · Six-line:
  • Column / Dozen:
  • Red/Black, Odd/Even, 1-18/19-36:
  • House edge: 5.26% · RTP: 94.74%

Lucky Wheel

Spin a 24-segment wheel. The spinning continues until VRF returns a winning index, then decelerates to land under the pointer. Outcomes are interleaved around the rim so 0× slices don't bunch on one side.

  • (lose): 12 / 24 segments — 50.00%
  • 0.6×: 3 / 24 — 12.50%
  • 0.8×: 3 / 24 — 12.50%
  • 1.3×: 2 / 24 — 8.33%
  • 1.7×: 1 / 24 — 4.17%
  • 2.5×: 1 / 24 — 4.17%
  • 4×: 1 / 24 — 4.17%
  • 8×: 1 / 24 — 4.17%
  • RTP: Σ(p × multiplier) = 95.83%

Slots

Three reels of seven symbols each (Cherry, Lemon, Orange, Plum, Bell, Bar, Seven). VRF spins all three; matching combinations pay according to the table below. Slots is the highest-variance game on the platform — most spins lose, but big paying combinations land occasionally.

CombinationProbabilityPayout
Three Sevens0.29% (1/343)10×
Three Cherries0.29% (1/343)
Three Bells0.29% (1/343)
Three Bars0.29% (1/343)
Three of Lemon / Orange / Plum0.87% (3/343)
Two Sevens + any5.25% (18/343)
Two Cherries + any5.25% (18/343)

Theoretical RTP from the paytable above: ~44.9%. Slots is intentionally high variance — long-run return is lower than the other titles, but a single Three Sevens spin pays 10× your stake.

Provably fair: every game outcome is sourced from Chainlink VRF v2.5. Bet placement, randomness fulfillment, payout calculation, and settlement all happen on-chain — the wheel, dice, coin, and reels you see are visual representations of an on-chain result that anyone can verify on Basescan.

Casino Games

Provably-fair gaming with instant payouts

Available Games

Coin Toss

50/50 odds, pick Heads or Tails

Payout: 1.96× (2% house edge)

Rock Paper Scissors

Beat the house hand in 3-way game

Payout: 2.88× on win (4% house edge)

Dice

Exact, Over, or Under - choose your risk level

Payout: Up to 96× (4% house edge)

Roulette

European wheel - Red/Black or single number

Payout: Up to 35× (2.7% house edge)

Lucky Wheel

Spin 12 segments - win multipliers or bust

Payout: Up to 10× (variable house edge)

Slots

Classic 3-reel slots with multiple paylines

Payout: Variable (slot-dependent)

How Casino Games Work

  1. 1

    Connect Wallet

    Connect your Web3 wallet with USDC balance on Base Sepolia

  2. 2

    Select Game & Bet Amount

    Choose your game and enter your bet (min 0.5 USDC)

  3. 3

    Play & Get Result

    Chainlink VRF generates provably-fair random result

  4. 4

    Instant Payout

    Winnings deposited directly to your wallet immediately

Provably Fair Technology

All casino games use Chainlink VRF (Verifiable Random Function) for cryptographically-proven randomness. Results are generated on-chain and cannot be manipulated by the platform or anyone else. Complete transparency and fairness guaranteed.

Frequently Asked Questions

How do I profit as a pool creator?

You profit when your published outcome does NOT happen. For example, if you create a "Team A Wins" pool and Team A loses, you keep all the bets placed against your prediction minus the 3% fee.

When do I lose money as a pool creator?

You lose when your published outcome happens. If you created a "Team A Wins" pool and Team A wins, you must pay out the bettors from your liquidity. The amount you lose depends on how many bets were placed at what odds.

Can I bet on multiple outcomes for the same game?

Yes! You can place bets on different pools for the same game to hedge your positions. You can also create multiple pools for different outcomes.

When can I claim my winnings?

Immediately after the game result is set by operators. Check the "My Bets" or "My Pools" tab to claim your winnings.

What if no one bets on my pool?

You can claim your original liquidity back after the game finishes. The full amount is returned to you.

What if the game is cancelled?

Cancelled games allow all participants to withdraw their funds (bets and liquidity) in full.

Is there a minimum or maximum bet?

Minimum liquidity: 1 USDC. Maximum bet per transaction depends on pool capacity. Maximum liquidity per pool depends on your wallet.

What does "provably fair" mean?

Provably fair means the randomness is generated on-chain using Chainlink VRF and cannot be manipulated. You can verify the result against the VRF proof, ensuring no cheating is possible.

How fast are casino game results?

Results are typically available within seconds. The smart contract awaits the VRF response, which usually completes quickly. Payouts are instant once the result is confirmed.

What is the minimum bet for casino games?

Minimum bet for all casino games is 0.5 USDC. Maximum bet depends on the game and available liquidity in the house wallet.

Are casino games better odds than betting against the house?

Casino games have fixed house edges (2-4% typically) while P2P betting odds depend on the pool creator. Both can be profitable depending on your skill and strategy.