How it works
Exactly what Topoff does, which transactions you sign, how votes are counted, what is enforced on-chain and what isn't. If this page and the code disagree, the code is wrong.
State of the site
- Launches: not open yet. The first real launch is being tested on mainnet.
- Votes: not open yet. The first real fill is being tested on mainnet.
- The Tank: not set up yet.
- Source code: not published yet.
The idea
Most pump.fun coins that stall do it in the last stretch of the bonding curve: the coin is close to migrating and the buyers run out. Topoff pools a share of the creator fees of every coin launched here into one Tank. When a coin reaches 85% of its curve, its holders can ask the Tank to buy the rest. If they vote yes and the Tank can cover it, the Tank buys every token left on the curve, burns them, and the coin migrates.
The pour
At launch you pick a share of your coin's creator fees: 50, 75 or 100%. pump.fun charges a creator fee on every trade (0.3% on the bonding curve, read live from pump.fun's fee config). Topoff uses pump.fun's own fee sharing to send your share to the Tank's vault:
- The pour and the Tank's vault are written in the coin's metadata JSON as
"topoff": { "v": 1, "pourBps": 5000, "tank": "<vault>" }, pinned on IPFS. pump.fun stores the metadata address at creation and never changes it. - Right after the creation, a second transaction (approved in the same wallet prompt) runs
create_fee_sharing_configandupdate_fee_shareswith[Tank: pour, you: the rest]. pump.fun allows that one update and then revokes the admin, so the split is locked. - Fees accumulate in pump.fun. Pay out on any coin page runs pump.fun's permissionless distribution: the Tank and the creator get their shares. Anyone can press it.
- Each coin page reads the split on-chain and says so if it doesn't match the metadata or isn't locked. Such a coin can't call the Tank.
The launch: two transactions, one prompt
- Your image and the metadata JSON are pinned on IPFS through the site's server (Pinata).
- Your browser makes a new mint key and builds, with pump.fun's official SDK: (1)
create_v2and your dev buy in the same transaction, so nobody can buy before you; (2) the fee split above. - Your wallet signs both, then the mint key signs the first. Each is simulated before it's sent: if it would take more SOL than the review showed, it isn't sent. The fee split can only be simulated once the coin exists, so it goes second; if it fails, the coin page lets you finish it.
- The server reads the creation back from the chain before listing the coin: success, pump.fun called, SOL-quoted curve, creator paid, and the metadata names this site's Tank.
Programs the launch may call: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P, 11111111111111111111111111111111, ComputeBudget111111111111111111111111111111, TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA, TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb, ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL. The fee split: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P, pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ, 11111111111111111111111111111111, ComputeBudget111111111111111111111111111111.
The vote (rules v1)
| Who can call the Tank | Any holder of the coin, once the curve is at 85% or more, not complete, and the fee split is routed and locked. |
|---|---|
| How | A wallet signature of a plain message naming the coin and the round. Free; no transaction. |
| Length | 24 h from the call. |
| Ballot | Yes or no, a free signature. One per wallet per round: the first counts. The wallet must hold the coin. |
| Weight | The smaller of the wallet's balance when it voted and at the close, capped at 5% of the circulating supply (tokens the curve has sold). |
| Passes when | Voters weigh at least 10% of the circulating supply, and yes weighs more than no. A tie is a no. |
| After a vote that didn't pay | The coin can call again 24 h after the count. |
| The Tank pays when | The gap (SOL to buy every token left on the curve, fees included) plus 3% fits within 50% of the Tank's spendable balance. Never a partial payment. |
The count runs on the site's server, on the first request after the close: it reads every voter's balance again, the curve and the Tank. Every ballot is published on the coin page with its signature and both balances, so anyone can recount. Changing any number ships as a new rules version, never silently.
A fill
The Tank is a Squads v4 multisig. A fill is one Squads vault transaction, with two instructions run by the Tank's vault:
buy_v3of every token left on the curve, for at most the gap plus 3%. Buying the last token completes the curve, and pump.fun migrates the coin to PumpSwap.burn_checkedof exactly those tokens. The Tank never holds a coin.
On the Tank's Squads multisig, a member proposes the fill (the site prices it again and refuses if the Tank can't cover it), the others approve, one executes. The server reads the execution back: Squads called on the Tank's multisig, the vault burned this coin, the curve is complete. Members' transactions may only call SQDS4ep65T869zMMBKyuUq6aD6EgTu8psMjkvj52pCf, 11111111111111111111111111111111, ComputeBudget111111111111111111111111111111.
If someone sells into the curve between the proposal and the execution, more tokens are left than the fill buys and the curve doesn't complete; if someone buys, the price moves and the buy may fail on the margin. Either way the members propose again.
Who enforces what
The poured share of the creator fees goes to the Tank, and the split can't be edited.
Enforced on-chain by pump.fun fee sharingAt launch the creator signs pump.fun's fee-sharing setup: the Tank's vault gets the poured share, the creator the rest. pump.fun allows one update, then revokes the admin. Each coin page reads the split on-chain and says when it doesn't match.
The pour can't change after launch.
Enforced on-chain by pump.fun and IPFSThe pour and the Tank's address are written in the coin's metadata JSON, whose IPFS address pump.fun fixed at creation.
Nobody can take SOL out of the Tank alone.
Enforced on-chain by Squads v4 multisigThe Tank is a Squads multisig vault. Every spend is a proposal that needs the threshold of member signatures, and waits out the time lock if one is set. /tank shows the members, the threshold and every proposal.
A fill buys the rest of the curve and burns it, all of it or none of it.
Enforced on-chain by Solana and SquadsThe buy and the burn are two instructions of one vault transaction. If the price moved past the margin, the buy fails and nothing is spent. Buying the last token completes the curve; pump.fun then migrates the coin.
Votes are counted by the published rules.
Tracked by TopoffEach vote is a wallet signature, published with its balance at vote time and at the close. Weight is the smaller of the two, capped at 5% of the circulating supply; the vote passes with 10% turnout and more yes than no. The coin page shows every ballot so you can recount.
The Tank only pays when it can cover the whole gap.
Tracked by TopoffA fill needs the gap plus 3%, and may not use more than 50% of the Tank. The site refuses to build any other fill.
A vote that passes gets filled.
Tank signers' wordA Squads multisig can't act by itself: its members must propose, approve and execute the fill. The coin page shows how long a passed vote has waited. No program forces them.
The coin holds its price after it migrates.
NobodyFinishing a curve moves the coin to PumpSwap. It can still lose all its value in minutes.
Fees
Creating the coin
No pump.fun creation fee; about 0.02 SOL of rent for the new accounts, and network fees
Solana
Setting the fee split
Rent for pump.fun's sharing config (about 0.006 SOL) and a network fee, in the same wallet prompt
Solana
Trading on the curve
pump.fun's protocol and creator fees on every buy and sell, your dev buy included (live rate on /docs)
pump.fun
Calling the Tank, voting
Free. A message signature, not a transaction
Topoff
Paying out the fees
Anyone can press Pay out on a coin page: a network fee
Solana
A fill
Paid by the Tank. The signers pay network fees and the rent of the Squads proposal
Squads, Solana
Topoff
Nothing. No service fee, no token allocation. The Tank is not the team's wallet
Topoff
What Topoff doesn't do
- It takes no fee and no token allocation. The Tank isn't the team's wallet: it only signs fills.
- It never holds your keys. Your wallet signs everything in your browser.
- No program forces the Tank's signers to execute a passed vote. The coin page shows how long it has waited.
- Votes are counted by the site's server, not on-chain. The data to recount is public.
- It can't stop a holder from splitting a bag across wallets: that keeps the same weight, and only gets around the 5% cap.
- It can't change pump.fun's curve or fees, and lists only coins launched here.