How it works
Bountyline is a pump.fun launcher for open-source projects. A coin is tied to one public GitHub repository, and its creator pledges a share of the coin's creator fees to bounties on merged pull requests. This page says exactly what the site does, what it signs, and what it can't do.
1. The proof file
Before a launch, the maintainer commits a file named .bountyline at the root of the repository's default branch, with one line:
wallet: <the Solana address that will launch the coin>
The site reads it from raw.githubusercontent.com when you check the repository, again on the server before uploading the coin's metadata, and again before listing the coin. Forks are refused. The coin page keeps reading the file and says if it disappears or names another wallet. Only someone with push access can add it, which is the point; it doesn't prove who that person is.
2. The launch
- The image and a metadata JSON are pinned on IPFS (Pinata). The JSON holds
createdOn: https://bountyline.fun, the coin page as its website, a line in the description, and"bountyline": { "v": 1, "repoId": <GitHub id>, "repo": "owner/name", "pledgeBps": 5000 }. The repository is kept by its numeric id, so a rename or a transfer doesn't break it. - PumpPortal builds the creation transaction (create + optional dev buy). Your browser checks that your wallet pays and that it only calls known programs, your wallet signs, a mint key made in your browser signs, and the transaction is simulated: if it would take more SOL than the review showed, it isn't sent.
- The server re-reads the creation on-chain (success, pump.fun called, SOL-quoted curve, creator = fee payer, Bountyline marker in the metadata) and the proof file on GitHub before the coin appears in the list.
3. Bounties on GitHub
An open issue is a bounty when it has the label bountyline, or a label like bounty: 0.5 SOL. The coin page lists them. To claim one, a contributor opens a pull request that fixes it and writes Bountyline: <their Solana address> in its description. The amount on a label is the maintainer's word: what counts is what gets paid.
4. A payout
The creator picks a merged pull request on the coin page, checks the contributor's wallet and the amount, and signs one transaction:
- Sweep: creator fees still held on the coin's bonding curve or PumpSwap pool move to pump.fun's creator vaults.
- Collect: the vaults pay out to the creator's wallet; PumpSwap fees arrive as WSOL and are unwrapped to SOL.
- Pay: a System transfer of the bounty from the creator to the contributor.
- Memo:
bountyline:1:<mint>:<PR number>, written by the SPL Memo program.
Steps 1 and 2 are optional: with nothing to collect, the bounty comes from the wallet's own SOL. Allowed programs: pump.fun, PumpSwap, System, Compute Budget, SPL Token, Associated Token, Memo. After signing, the transaction is simulated with a cap on the SOL it may take.
The server then re-reads it: signed by the coin's creator, exactly one Bountyline memo naming this coin, SOL to exactly one wallet that isn't the creator's, at least 0.001 SOL. It asks GitHub whether that pull request exists in the coin's repository and is merged, and records the pull request's title and author, whether the wallet matches the one in the pull request description, and whether the pull request was opened by the repository's owner account.
5. The ledger and the reward line
The site reads the creator wallet's transactions since launch (up to 500 new ones per pass, at most once a minute) and records every creator-fee collection, through a payout or not. The pledge owes its share of all of them. The reward line on each card is that rope: solid for what was paid, hatched for what is owed and not paid, one violet tick per paid pull request. Payouts the browser didn't report are found by the same scan.
Who enforces what
The repository and the pledge can't be changed after launch.
Enforced on-chain by pump.fun and IPFSBoth are written in the coin's metadata JSON. pump.fun fixes the metadata address at creation, and an IPFS address is the hash of its content: change one byte and it is another address.
The coin was launched by a wallet the repository names.
Tracked by BountylineBefore uploading anything and again before listing the coin, the site reads a .bountyline file at the root of the repository's default branch. It must name the launching wallet. Forks are refused. Only someone who can push to the repository can add that file.
A payout collects the fees and pays the contributor in one transaction.
Enforced on-chain by SolanaSweep, collect, the SOL transfer and the memo are instructions of a single transaction: all of them happen, or none. Each payout links to it on Solscan.
Every payout names the pull request it pays, on-chain.
Enforced on-chain by the SPL Memo programThe memo bountyline:1:<coin>:<PR number> is part of the transaction. Anyone can read it on Solscan without asking this site.
Only merged pull requests of the coin's repository count as payouts.
Tracked by BountylineThe server re-reads each payout: signed by the coin's creator, one memo, SOL to one other wallet. Then it asks GitHub whether that pull request exists in the repository and is merged. A transfer back to the creator's own wallet is refused.
Fees collected but not paid out show up on the coin page.
Tracked by BountylineThe site reads the creator wallet's transactions since launch, adds up every creator-fee collection, and compares the pledged share with what was paid. It reads up to 500 new transactions at a time and says so when it couldn't read them all.
The creator pays bounties regularly and fairly.
Creator's wordOnly the creator's wallet can collect the creator fees, so only the creator can pay. Bountyline can't make them do it, and can't judge whether a pull request deserved its amount: it shows what was owed and what was paid, pull request by pull request.
Nothing is signed that the review didn't show.
Tracked by BountylineTransactions are checked against a list of allowed programs and simulated after you sign: if one would take more SOL than shown, it isn't sent.
Bounties will hold the coin's price up.
NobodyPaying contributors doesn't buy anything. A coin can lose all its value in minutes, whatever its repository does.
Fees
Creating the coin
No pump.fun creation fee; about 0.02 SOL of rent for the new accounts, and network fees
Solana
Your dev buy
pump.fun's trading fees, plus PumpPortal's 0.5% fee (the service that builds the creation transaction)
pump.fun, PumpPortal
Trading on the curve
pump.fun's protocol and creator fees on every buy and sell; the creator fee is what pays bounties
pump.fun (live rate on the home page)
A payout
Network and priority fees (default 0.0001 SOL). The bounty itself goes in full to the contributor
Solana
Bountyline
Nothing. No service fee, no share of creator fees, no share of bounties
Bountyline
Limits
- Payouts aren't automatic: only the creator's wallet can collect pump.fun creator fees, so only the creator can pay.
- The site can't judge a pull request or an amount, and can't detect a creator paying a second wallet of their own.
- pump.fun keeps one fee vault per creator wallet. Several coins from one wallet share their collections; use one wallet per coin.
- If a coin's creator fees are moved to a pump.fun fee-sharing setup or a takeover, the launching wallet can't collect them any more; the coin page says so.
- GitHub's public API is rate-limited. Without a token the site can read about 60 times an hour, so lists are cached for a few minutes.
- Only SOL-quoted coins launched on this site are listed.
Questions
Where does the bounty money come from?
From the coin's creator fees: pump.fun sets one aside on every trade for the creator's wallet. The payout collects them and sends the bounty in the same transaction. The creator can also pay from the wallet's own SOL.
How does a contributor get paid?
Open a pull request that fixes a bounty issue and write “Bountyline: <your Solana address>” in its description. Once it is merged, the maintainer picks it on the coin page and pays it. No account, no sign-up.
Why does my repository need a .bountyline file?
It is how anyone can check that the coin's launcher can push to the repository. Without it, anybody could launch a coin for a famous repo. One line: wallet: <your address>, on the default branch.
What if the creator never pays?
Then the coin page shows the fees collected and the pledged share still owed. Bountyline can't pay for them: only the creator's wallet can collect creator fees.
Can the pledge or the repository change?
No. Both are in the metadata whose address pump.fun stored at creation. If the repository is renamed or moved, Bountyline follows it by its GitHub id.
Can a maintainer pay themselves?
Not to the creator wallet: those payouts are refused. Paying another wallet they own can't be detected, so each payout shows the pull request's author, and flags pull requests opened by the repository's owner account.
I launched several coins from one wallet. Whose fees get collected?
pump.fun keeps one fee vault per creator wallet, not per coin, so a payout collects the fees of all your coins. Launch each Bountyline coin from its own wallet to keep its ledger clean.
Does it work after the coin graduates?
Yes. The same payout sweeps the fees off the PumpSwap pool, collects them and unwraps them to SOL.
Does Bountyline hold my keys, my SOL or my fees?
No. Your wallet signs everything in your browser. Fees go from pump.fun's vault to your wallet and on to the contributor in the same transaction.
Is Bountyline part of pump.fun or GitHub?
No. It is an independent site built on pump.fun's public programs and GitHub's public API.