Skip to content

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:

8HKZ6kmSbnhykw7id4vzZdzqFvfuCv8YhP5zsQhmNEHj

The 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:

AccountSeedsWhat 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_idthe pot
Jackpot vault"jackpot_vault", game_idthe sealed jackpot
Ticket registry"ticket_registry", game_id2-bit status per ticket (the burn bitmap)
Owner record"owner_record", game_id, walletyour ticket ids in that game
Game history"game_history", game_idfinal outcome, winner, totals

Player instructions

InstructionWhat it does
initialize_gamecreate a game (pays rent), bundled with the first buy_ticket
buy_ticketbuy one ticket for 0.1 SOL during Sale; optional referrer pubkey
exit_ticketsell one live ticket back at the round's fixed exit price
claim_referral_earningswithdraw accrued referral SOL (min 0.1)

Autonomy (crank) instructions — open to anyone, paid by the contract

InstructionWhat it does
advance_phasemove the game to its next legal phase (start, open/close exit windows, finish)
trigger_vrf_switchboard_commit / _revealdrive the oracle randomness round
trigger_vrf_fallback_commit / _revealdrive the SlotHashes fallback randomness
burn_batchexecute a slice of the round's burns (paid per burn)
finalize_winner_payoutpay the winner, record history
cancel_idle_sale / settle_cancelled_game / refund_ticketthe refund path for stalled games
close_gamereclaim 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 — getProgramAccounts over the program id enumerates every game; any explorer shows the vault balances.
  • Batching caps (transaction-size limits, measured): 15 buy_ticket per transaction (10 with a referral chain), 20 exit_ticket per 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.

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