POT MATH

The numbers.

How the pot splits

Every BurnBomb™ pot splits eight ways at settle. Winner takes the dominant share; second and third get smaller cuts; seed-phase contributors share a pro-rata pool; $BURN gets a deflation rake; the contract self-funds its own Chainlink VRF subscription; the founder payout address gets a tiny operations slice; whoever calls finalizeSettlement(roundId) earns a small keeper bounty.

RecipientShareNotes
Winner (1st closest)72.5%+ cap-rebate + dust on big pots (excess keeper roll-in)
Second closest6.5%Lower slot-index wins on ties
Third closest3.5%Same tie rule as 2nd
Seed dividend pool10%Pro-rata to seed-phase contributions
$BURN buyback rake5%Plain ETH → $BURN contract · downstream buyback() locks $BURN forever
Founder payout0.5%Two-step settable address · pull-payment like any other recipient
VRF self-funding1%Contract auto-tops its own Chainlink VRF subscription · zero operator subsidy
Keeper bountymin(1%, 0.01 Ξ)Whoever calls finalizeSettlement() · excess rolls into winner

Sum = 72.5 + 6.5 + 3.5 + 10 + 5 + 0.5 + 1 + 1 = 100%. Marketing shorthand: 5% of every pot funds $BURN deflation.

How the winner is chosen · Chainlink VRF v2.5

Randomness comes from Chainlink VRF v2.5, ETH-native (no LINK token). The contract owns its own VRF subscription, created and funded in the constructor. Each round pays 1% of the pot back into the subscription so the system is self-funding forever and survives gas-price spikes during VRF callbacks. No operator subsidy, no off-chain keeper top-ups.

settle() → VRF request → rawFulfillRandomWords (callback) → finalizeSettlement() → winners paid

Three-phase settlement keeps the on-chain surface small and honest about who knows what when:

  • settle(roundId) · permissionless. Fires the VRF request. No keeper bounty for this step itself.
  • rawFulfillRandomWords()· VRF callback. Stores the random word in contract state. Players see "random target revealed" here.
  • finalizeSettlement(roundId) · permissionless. Ranks the top 3 closest claimed slots, credits payouts to the pull-payment ledger, sends the $BURN rake. Earns the keeper bounty (capped at 0.01 Ξ).

VRF retry · capped to keep things honest. If the callback doesn't fire within 30 min, anyone can call requestRandomnessAgain(roundId) to send another VRF request and earn a 0.0001 Ξ bounty. Total Chainlink requests per round are capped at 3 (1 initial + 2 retries). If all 3 fail to deliver, the round is recovered via the 72-hour emergency refund path. The 256-block-blockhash stuck-round failure mode from older lottery designs does not exist here.

Sold-out shortcut. If all slots fill at any point (during seed, active, or final countdown), the round IMMEDIATELY jumps to ready-to-settle. No final countdown, no waiting on the timer.

How the winner is picked · step by step

Once VRF delivers the random word, the contract picks winners deterministically. Anyone can reproduce the math from on-chain data · same input, same output, every time.

  1. Compute the target slot: target = randomWord mod 100. That gives a number 0–99. The target may or may not be a claimed slot · either way is fine.
  2. Measure distance: for every CLAIMED slot, compute |slotIndex − target|. That's the slot's distance from the target. Empty slots are skipped.
  3. 1st = lowest distance. The claimed slot with the smallest distance takes 1st place. Distance of 0 means the target was actually claimed · jackpot.
  4. 2nd = next-lowest, excluding 1st. Same scan, skip the slot that already won 1st.
  5. 3rd = next-lowest, excluding 1st + 2nd. Same scan, skip both. Top 3 podium locked.

What if two slots are exactly tied?

When two claimed slots are equidistant from the target (e.g., target = #50, claimed slots are #48 and #52, both distance 2), the contract uses one rule: lower slot index wins. This applies at every podium rank.

Worked example · target = 50
claimed slots: #45, #48, #50, #52, #67
distances: 5, 2, 0, 2, 17
1st: #50 (distance 0)
2nd: #48(distance 2 · ties with #52, but #48 < #52)
3rd: #52 (distance 2, after #48 is excluded)
#45 and #67 missed the podium

Why "lower slot index wins"? Lower slot index = cheaper slot (Minnow slot prices ascend with index: 0.001 Ξ at #1, 0.100 Ξ at #100). The rule actively rewards smaller bets in ties, which biases the game toward broad participation. It's also fully deterministic · no coin flip, no off-chain tiebreaker, no operator discretion at any rank.

Active-phase EV · how each entry shifts your odds

A new entry of value v arriving while you already hold a slot changes your expected value. The math:

ΔEV = 0.725 × [N × v − P] / [N × (N+1)]

Where N = current slots claimed, P = current pot. ΔEV is positive when v > P/N (the new entry is above the average slot value).

Translation: every active-phase player benefits when the pot grows. Some run the marginal math; most just FOMO when they see a bigger pot. Both grow the bomb, both grow the seed dividend, both grow the jackpot.