Skip to content

How a game works

A game moves through a fixed sequence of phases. Everything below is enforced by the smart contract; the app just displays it.

SALE → ROUND 1 BURN → EXIT → BURN → EXIT → BURN → … → FINISHED

1. Someone starts a game

Any player can create a game. The creator pays the on-chain account rent (~0.118 SOL — a storage deposit, most of it returned when the game is cleaned up afterwards) and automatically buys ticket #1 in the same transaction. Only one game can be selling tickets at a time — a new sale can't open while another sale is running.

2. Sale

Tickets cost 0.1 SOL each, up to 100 per wallet per game. The sale has no clock at first: it waits as long as needed for the game to reach the 100-ticket minimum.

The moment the 100th ticket is sold, two things lock in:

  • the game will definitely happen — there is no way back to "undersubscribed";
  • a ~24-hour countdown starts. Tickets stay on sale during the countdown.

The game becomes ready to start when either the countdown ends or the game hits the 40 000-ticket ceiling — whichever comes first. A hot game that fills up doesn't wait out the clock. (If a game never reaches 100 tickets, it can eventually be cancelled and everyone refunded — see Cancelled games & refunds.)

One more thing: the start itself is player-triggered. Nothing happens by itself on a blockchain — someone presses Spin the BurnBola and earns an on-chain reward for it. In practice the button lights up in the app the moment the game is ready, and somebody always presses it. (Why it works this way.)

3. Round 1 — the first burn

The contract draws verifiable randomness (how) and burns exactly ⌊N/2⌋ of the live tickets. Not "about half" — exactly half, rounded down. Every live ticket has an equal chance; ticket numbers, purchase order, and wallet size make no difference.

With N live tickets, your chance to survive a round is (N − ⌊N/2⌋) / Nexactly 50% for even N, and better than 50% for odd N (at 3 live tickets it's 2/3).

Round 1 is the only round with no exit window before it: everyone who bought in faces the first burn together.

4. Exit window (~12 hours)

After every burn, the game pauses and opens an exit window. The contract computes a fixed exit price for the round:

exit price = (bank − 10% round commission) ÷ live tickets

During the window any holder can sell any number of their live tickets back at exactly that price — first come is not served better, the price doesn't move within a round. The 10% round commission mostly feeds the jackpot (75% of it), with the rest funding the lottery and the referral leaderboard. (Full money flow: Fees, bank & jackpot.)

When the window closes, the next burn becomes available — again, triggered by a player pressing Spin.

5. Burn → Exit → Burn → …

Rounds repeat: burn half, open exit window, close it, burn half again. Each round the exit price roughly doubles (half the claimants, ~90% of the bank). The longer you stay, the more you're guaranteed on exit — and the closer the jackpot looms.

6. Finished

When one live ticket remains, the next Spin finalizes the game: the winner receives the entire remaining bank + jackpot, paid straight to their wallet. The game is recorded in history, and a final cleanup transaction returns the storage rent to the game's creator.

What if zero tickets remain alive? It can happen — everyone left exits during a window, and the burns finish off the rest. With no winner, the jackpot goes to the lottery treasury. It does not roll over to the next game — every game's pot is its own. The players who exited got their guaranteed payouts; nobody's money is stranded.

How long does a game take?

Roughly: sale (24h after the minimum) + ~12h exit window per round. A 100-ticket game has ~7 rounds (100 → 50 → 25 → 13 → 7 → 4 → 2 → 1), so about 3–4 days end to end. A full 40 000-ticket game has ~16 rounds — about a week. The current demo on devnet runs compressed timings (minutes instead of hours) so a full game can be watched in one sitting.

BurnBola — every burn, every winner, on-chain.