How Bountypad works
Every coin on Bountypad is created with a mission written on chain: a goal, a deadline and a chest. While the coin trades, part of its income fills the chest. Whoever gets the mission done files the proof; holders who locked their tokens weigh it; if it passes, the program pays the whole chest to the wallet named in the claim.
Overview
- A mission is up to 140 characters of plain text with a deadline. A coin starts with one to three of them, in order.
- The chest belongs to the active mission. It fills with 60% of the coin's creator income, plus anything sponsors add.
- Anyone can claim. A claim is a proof link, a payee wallet and a bond of 0.1 SOL.
- Holders weigh it. Tokens locked before the claim was filed vote GO or NO GO.
- The program pays. Nobody, including the admin, can move a chest any other way.
Lifecycle
| Mission state | Meaning | What can happen |
|---|---|---|
| Queued | Written at launch, waiting its turn. | becomes Active when the one before it is paid or expires |
| Active | The chest is working for it. | fund, file claims until the deadline, votes, settle |
| Completed | A claim passed and the chest was paid. | nothing; the next mission starts |
| Expired | The deadline passed with no claim open or passing. | the chest carries to the next mission |
| Poll state | Meaning |
|---|---|
| Open | Voting until its end time. |
| Passed | Quorum met and GO at or above the pass line. A claim is paid; a new mission becomes active. |
| Rejected | More NO GO than GO. The bond goes into the chest. |
| No quorum | Not enough weight, or GO short of the pass line. The bond goes back. |
| Void | It passed, but its mission was already paid or ended. The bond goes back. |
Launching
A launch is two transactions signed by the launcher:
preparewrites the coin's record with a copy of today's rules, the quorum the launcher chose and the mission accounts.launchcreates the coin on pump.fun in the same instruction, with the program's fee account as its creator, makes the launcher's optional first buy, puts an optional seed into the chest, and starts mission 1.
The launcher chooses the quorum between 0.5% and 5% of the supply, and earns 25% of the coin's creator income.
The chest
The coin's creator income arrives at its fee account. collect_fees pulls it from pump.fun, and sync_fees splits new income: 60% moves into the chest at once, 25% is booked for the launcher and 15% for the treasury. Anyone can call both; the site has a button for it.
fund(amount) lets anyone add SOL straight to the chest of the active mission. Every deposit is an event with the funder's address.
chest balance = rent + prize + bonds of open claims
The prize is what a passed claim receives. Bonds are held apart and are never paid out as prize while their claim is open.
Claims
file_claim(mission, proof_uri, note): an https link to the proof (200 characters at most, no spaces), a one-line note, and a payee wallet. The bond goes into the chest's escrow. A claim can be filed until the mission's deadline; its vote may finish after it. At most 8 polls can be open on a coin at once.
Missions are about results you can link to (a post, a listing, a page, a transaction). Anything that pays per post is not a mission here.
Voting
Voting power is tokens of the coin locked in the program: lock(amount) moves them into the coin's vote vault, unlock(amount) takes them back. Two rules keep the vote honest:
- Locked before the claim. Your weight counts on a claim only if your last lock happened at least 24 hours before the claim was filed. Buying tokens after you see a claim does not buy its verdict. Any top-up restarts your clock.
- Locked until the vote ends. Once you vote, your tokens stay locked until that poll's end time.
One vote per wallet per poll, GO or NO GO, with all your eligible weight.
Settlement
After a poll's end time anyone calls settle. A poll passes when both are true:
GO >= quorum
GO x 10000 >= (GO + NO GO) x pass_bps (pass_bps = 6667)
A passed claim is paid the whole prize in the same transaction, the bond goes back to the filer, the mission is Completed and the next queued mission starts with a fresh deadline. If the payee could not receive it in that transaction, the payout is booked and claim_payout sends it later, only to that payee.
Missed missions
When the deadline passes and no claim is still open, anyone calls expire. The mission is marked Expired and the next queued mission starts. The prize stays in the chest: it never goes back to the launcher.
New missions
When no mission is active or queued, a holder with at least 0.1% of the supply locked can propose_mission(text, duration) with the same bond. It is voted like a claim; if it passes, it becomes the active mission and inherits the chest.
Parameters
Read live from the program. Each coin copies them at launch; a later change never touches an existing coin.
| Parameter | Value |
|---|---|
| Loading from chain | |
Program reference
Program --. Anchor 0.31, the full interface is the IDL.
| Account | Seeds | Holds |
|---|---|---|
| Config | ["config"] | admin, treasury, paused, params, coin count |
| Bounty | ["bounty", mint] | launcher, mint, rules copy, quorum, missions counters, prize, bonds, fee accounting |
| Mission | ["mission", bounty, n u16] | text, deadline, state, winner, paid |
| Chest | ["chest", bounty] | the prize SOL and open bonds |
| Fees | ["fees", bounty] | the coin's creator on pump.fun |
| Voter | ["voter", bounty, wallet] | locked amount, last lock time, locked until |
| Motion | ["motion", bounty, id u32] | a claim or a proposed mission, its votes and outcome |
| Ballot | ["ballot", motion, wallet] | one wallet's vote on one poll |
| Instruction | Who can call |
|---|---|
| prepare, launch | anyone (becomes the launcher) |
| fund, file_claim | anyone |
| lock, unlock, vote | the token holder |
| propose_mission | a holder with enough locked |
| settle, expire, claim_payout, collect_fees, sync_fees | anyone; money only goes where the rules say |
| claim_launcher_fees, collect_treasury | anyone; paid only to the launcher / treasury |
| init_config, update_config, set_* | the admin |
Errors
| Code | Name | Meaning |
|---|
Verify on chain
- The program. Open the program id in an explorer; check the upgrade authority and that the IDL matches.
- The creator. On the coin's pump.fun page, the creator is the program's Fees account for that coin, not a person.
- The chest. The Chest account's balance equals rent + prize + open bonds, as booked in the Bounty account.
- The vote. Every Ballot shows a wallet, its side and its weight; sum them and compare with the poll.
- The payout. The settle transaction moves the prize from the Chest to the payee named in the claim, and nothing else leaves the chest.
What the admin can do
| Can | Cannot |
|---|---|
| pause new launches | move a chest, a bond, locked tokens or fees |
| change the params for future coins | change an existing coin's rules or missions |
| change the treasury | vote, settle a poll a certain way or stop settlements |
| hand over the admin role | stop unlocks, refunds of bonds or payouts |
Risks
- The program is upgradeable (the upgrade authority is the project wallet) and has not been audited by a third party.
- Holders decide what counts as done. A large holder who locked early can push a verdict; the lock rule makes that visible and slow, not impossible.
- A proof is a link. The program cannot read it; holders must.
- pump.fun can reassign a coin's creator by hand; income would then stop reaching the chest.
- A coin is a market. Its price can go to zero.
FAQ
Can the launcher take the chest?
Only by completing the mission and passing the vote like anyone else.
Who gets paid if two people claim the same mission?
The first claim to be settled as passed. Any other passing claim on the same mission is void and its bond goes back.
What if nobody votes?
The quorum is not met, the bond goes back, and the mission stays open for another claim until its deadline.
Can I vote with tokens I just bought?
Lock them now: they count on claims filed after your lock is old enough.