Prizes
Revenue Distribution
Every ticket purchased splits its cost into three pools:
Jackpot
50 %
Paid to players who match all 5 white numbers
Super Jackpot (seed)
30 %
Paid to players who match 5 whites + the exact gold number and position
Protocol fee
20 %
Covers operations (CCIP fees, VRF costs, server)
These splits are enforced in the smart contract constants JACKPOT_BPS = 5000, SEED_BPS = 3000, and FEE_BPS = 2000.
Prize Tiers
Jackpot — Match 5/5 Whites
Match all five white numbers drawn (order does not matter).
The Jackpot pool is shared equally among all Jackpot winners in the round.
If nobody wins, the entire Jackpot pool rolls over to the next round.
Any integer-division dust (rounding remainder) also carries over.
Super Jackpot — Match 5/5 Whites + Gold
Match all five white numbers and the gold number at the exact drawn position.
The Super Jackpot (seed) pool is shared equally among all Super Jackpot winners.
If nobody wins, the pool carries over and keeps growing across rounds.
Super Jackpot winners also receive their share of the regular Jackpot pool.
Note: The Super Jackpot can only grow — it accumulates 30 % of every ticket ever sold until someone claims it.
Payout Calculation
At settlement, the contract computes:
A Super Jackpot winner receives jackpotPrizePerWinner + superPrizePerWinner.
A Jackpot-only winner receives jackpotPrizePerWinner.
Probability
Number Space
White numbers: 5 drawn from 1–90 (order does not matter) → C(90, 5) = 43 949 268 combinations.
Gold number: 1–90 → 90 possibilities.
Gold position: 0–4 → 5 possibilities.
Odds per Ticket
Match 5/5 whites
1 / C(90, 5)
1 in ~43.9 million
Match 5/5 whites + gold number + position
1 / (C(90, 5) × 90 × 5)
1 in ~19.8 billion
These are per-ticket odds. Buying multiple tickets in a round increases your chances proportionally.
Rollover Mechanics
Jackpot won, Super not won
Paid out (minus dust)
Carries over
Neither won
Carries over
Carries over
Both won
Paid out
Paid out
Jackpot won, Super won
Paid out
Paid out
Dust from integer division always carries over to the next round's corresponding pool.
Claiming
Prizes can be claimed at any time after settlement — there is no expiry.
Use
claimPrize(roundId, ticketIndex)for a single ticket orclaimPrizeBatch(roundId, indices)for multiple tickets in one transaction.If the ETH transfer fails, the amount is queued in
pendingPayoutsand can be withdrawn later withclaimPendingPayout().
Settlement Reward
The address that triggers settlement (calls settleRound() or settleRoundBatch() for the final batch) receives 1 % of the round's fee pool (SETTLE_REWARD_BPS = 100), capped at the available ownerFees balance.
Last updated
Was this helpful?