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

Lifecycle

Mission stateMeaningWhat can happen
QueuedWritten at launch, waiting its turn.becomes Active when the one before it is paid or expires
ActiveThe chest is working for it.fund, file claims until the deadline, votes, settle
CompletedA claim passed and the chest was paid.nothing; the next mission starts
ExpiredThe deadline passed with no claim open or passing.the chest carries to the next mission
Poll stateMeaning
OpenVoting until its end time.
PassedQuorum met and GO at or above the pass line. A claim is paid; a new mission becomes active.
RejectedMore NO GO than GO. The bond goes into the chest.
No quorumNot enough weight, or GO short of the pass line. The bond goes back.
VoidIt passed, but its mission was already paid or ended. The bond goes back.

Launching

A launch is two transactions signed by the launcher:

  1. prepare writes the coin's record with a copy of today's rules, the quorum the launcher chose and the mission accounts.
  2. launch creates 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:

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.

ParameterValue
Loading from chain

Program reference

Program --. Anchor 0.31, the full interface is the IDL.

AccountSeedsHolds
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
InstructionWho can call
prepare, launchanyone (becomes the launcher)
fund, file_claimanyone
lock, unlock, votethe token holder
propose_missiona holder with enough locked
settle, expire, claim_payout, collect_fees, sync_feesanyone; money only goes where the rules say
claim_launcher_fees, collect_treasuryanyone; paid only to the launcher / treasury
init_config, update_config, set_*the admin

Errors

CodeNameMeaning

Verify on chain

  1. The program. Open the program id in an explorer; check the upgrade authority and that the IDL matches.
  2. The creator. On the coin's pump.fun page, the creator is the program's Fees account for that coin, not a person.
  3. The chest. The Chest account's balance equals rent + prize + open bonds, as booked in the Bounty account.
  4. The vote. Every Ballot shows a wallet, its side and its weight; sum them and compare with the poll.
  5. 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

CanCannot
pause new launchesmove a chest, a bond, locked tokens or fees
change the params for future coinschange an existing coin's rules or missions
change the treasuryvote, settle a poll a certain way or stop settlements
hand over the admin rolestop unlocks, refunds of bonds or payouts

Risks

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.