The law of the arena
Rules & Guarantees
Top 30 holders fight for the SOL bank. Here is exactly how a winner is chosen — and why nobody, not even the team, can touch the vault.
How a round works
From snapshot to glory
One round every hour. Five steps, all enforced by the program.
- 1
Every hour
Snapshot
The keeper reads every holder of the token, merges accounts by owner, removes excluded wallets (dev, platform, pool vaults, program PDAs, burn) and posts the Top 30 on-chain. The program itself checks the mint, uniqueness, exclusions and that balances are sorted.
- 2
5 minutes
Challenge window
Anyone can submit a holder the keeper missed. If their balance beats place 30, the program inserts them at the right place and the last one drops out. The keeper cannot quietly leave anyone out.
- 3
Switchboard On-Demand
Randomness commit
A fresh Switchboard randomness account is bound to the round together with its seed slot. The value is unknown to everyone — including us — until it is revealed. The same account and slot must be used at settle, so a re-roll is impossible.
- 4
1 vs 3
The duel
The revealed value drafts one whale from places 1–10 and three different gladiators from places 20–30. Then it picks the victor among the four — 25% each.
- 5
Whole vault
Payout
The entire vault (minus the rent minimum of the account) is transferred to the victor’s wallet in the same instruction, and the result is written to the Round account forever.
The draft
Who can be drafted
Places 1–10
Whale tier
One whale is drafted. Big bags get a seat — but only one of them.
Places 11–19
Spectators
Not drafted this hour. Climb into the top 10 or step down to 20–30 to fight.
Places 20–30
Gladiator tier
Three gladiators are drafted from eleven places. Smaller bags, same 25% shot.
Each of the four duelists wins with equal probability: 25%.
Economics
Where the 2% goes
A fixed 2% fee on every trade on the bonding curve. Half of it builds the prize.
2%
fee per trade
The prize pool. Paid to duel winners only.
Fixed DBC protocol share.
Funds development and the keeper.
Infrastructure and RPC.
Example: 100 SOL of volume in an hour adds 1 SOL to the vault. Fees are claimed by a program-owned PDA and split on-chain — no human ever holds them. After migration to DAMM v2 the locked LP keeps feeding the vault with the same split.
Fair play
Rules that protect the arena
Anti-flash rule
The victor must still hold at least 90% of their snapshot balance at settle. Sold out? The prize passes to the next duelist who held the line. If nobody did, the vault rolls over to the next hour.
Dev excluded
The dev wallet and platform wallet are hard-coded exclusions. The program rejects any snapshot or challenge that contains them — the team can never be drafted.
Keeper can’t cheat
The snapshot is verified on-chain and anyone can challenge it for 5 minutes. The keeper cannot leave out a holder or pick the randomness result.
Verifiable randomness
Switchboard On-Demand randomness is committed before it is known and checked against its seed slot at settle. Every round links to its randomness account.
The guarantee
The vault has no back door.
There is simply no instruction in the program that lets the admin, the dev or anyone else take SOL out of the vault. The only exit is settle, which pays the drafted victor. Even sunset only stops new rounds — the remaining bank is fought for in one final duel.
| Instruction | Who | Moves SOL |
|---|---|---|
| initialize | admin (once) | creates config + vault |
| claim_fees | anyone | fees → vault / dev / platform |
| open_round | anyone | — |
| submit_snapshot | keeper | — |
| challenge | anyone | — |
| commit_randomness | keeper | — |
| settle | anyone | vault → victor only |
| sunset | admin | stops new rounds, final duel pays out |
| set_keeper | admin | — |
| withdraw_vault | nobody | does not exist |
Verify everything
Contract addresses
Placeholders until mainnet deployment. Always verify addresses from the official channels.
11111111111111111111111111111111bJV4vxUzyGExGeMnUdGrBCnBzqcQqBZbSq5hG2mH7Mt58CDQ9Qgw1ZPedjaTtwrR2MSG4EmmguHSPE2bFtyfinDAayRwUabgGqb6ZTmf1UNoz4cU81NrarvpTEUu5Vb6ZvdTBA at launchTBA at launch