Appearance
Playing without the app
The Mini App is optional. Every action in BurnBola is a public instruction on a Solana program — callable from your own code, a script, or any tool that can send Solana transactions. This page is the map for the technically inclined.
Current deployment
BurnBola currently runs on Solana devnet (public test phase) at program ID:
8HKZ6kmSbnhykw7id4vzZdzqFvfuCv8YhP5zsQhmNEHjThe Mainnet address will be published here at launch. The demo runs compressed timings (minutes instead of hours/days) so full games can be observed quickly.
The shape of the program
BurnBola is an Anchor program. Its IDL (the machine-readable interface) ships with the app bundle and decodes every account and instruction; with the IDL and @coral-xyz/anchor you get typed access to everything below.
State lives in program-derived accounts (PDAs), keyed by seeds:
| Account | Seeds | What it holds |
|---|---|---|
| Lottery config | "lottery_config" | global settings, pause flag, treasury |
| Game | "game", game_id (u64 LE) | phase, round, counts, deadlines, exit price |
| Bank vault | "bank_vault", game_id | the pot |
| Jackpot vault | "jackpot_vault", game_id | the sealed jackpot |
| Ticket registry | "ticket_registry", game_id | 2-bit status per ticket (the burn bitmap) |
| Owner record | "owner_record", game_id, wallet | your ticket ids in that game |
| Game history | "game_history", game_id | final outcome, winner, totals |
Player instructions
| Instruction | What it does |
|---|---|
initialize_game | create a game (pays rent), bundled with the first buy_ticket |
buy_ticket | buy one ticket for 0.1 SOL during Sale; optional referrer pubkey |
exit_ticket | sell one live ticket back at the round's fixed exit price |
claim_referral_earnings | withdraw accrued referral SOL (min 0.1) |
Autonomy (crank) instructions — open to anyone, paid by the contract
| Instruction | What it does |
|---|---|
advance_phase | move the game to its next legal phase (start, open/close exit windows, finish) |
trigger_vrf_switchboard_commit / _reveal | drive the oracle randomness round |
trigger_vrf_fallback_commit / _reveal | drive the SlotHashes fallback randomness |
burn_batch | execute a slice of the round's burns (paid per burn) |
finalize_winner_payout | pay the winner, record history |
cancel_idle_sale / settle_cancelled_game / refund_ticket | the refund path for stalled games |
close_game | reclaim a settled game's rent for its creator |
Phase legality, deadlines, and payouts are all enforced on-chain — a call that isn't due simply fails. The contract pays callers for autonomy instructions from its reward vault (the incentive design), so running your own crank bot is not just possible but profitable; our own "Spin" button is exactly this, wrapped in a UI.
Practical notes
- Reads: all state is plain account data —
getProgramAccountsover the program id enumerates every game; any explorer shows the vault balances. - Batching caps (transaction-size limits, measured): 15
buy_ticketper transaction (10 with a referral chain), 20exit_ticketper transaction. - No special permissions exist. The only privileged instructions are treasury withdrawal (hard-wired destination) and the new-game pause — neither affects play.
If you build something on top — a bot, an alternative UI, an analytics dashboard — you don't need our permission, and the contract won't know the difference.