Harpoon Pad markHarpoon Pad Launch a coin

Docs

How the sea works

Every coin launched here is a normal pump.fun coin with a Harpoon Vault next to it. Holders stake in the vault and are paid two ways: the coin's creator fees in SOL, and the exit tax of everyone who leaves, in tokens. Leaving costs 1% to 30%, more for big exits and more in a busy hour.

Overview

What is enforced, exactly. pump.fun coins have no transfer hook and no transfer tax. The tax applies to tokens leaving the Harpoon Vault, not to a sell on pump.fun or any other venue. Tokens outside the vault trade freely and earn nothing: the tax is the price of the dividends. Splitting one dump over many wallets does not help, because the hour pressure and the crowd term are shared by everyone.

The exit tax

The program computes the tax with integer math at the moment your exit lands. The site's calculator (the throw) runs the same formula in your browser.

x    = your exits in the last 24 h INCLUDING this one, in bps of supply
G    = everyone's exits from this vault in the last 24 h, incl. this one
P    = everyone's exits in the last 60 min, incl. this one
base(y) = 100                                  if y <= 50      (0.5% of supply)
        = 3000                                 if y >= 500     (5% of supply)
        = 100 + 2900 * ((y - 50) / 450)^2      between
wallet = base(x)
crowd  = base(G / 2)
mult   = 1 + min(P, 300) / 300                 (1.00x .. 2.00x)
tax    = min(3000, max(wallet, crowd) * mult)  bps, rounded up in tokens

Worked example

You hold 2% of supply in the vault and leave with all of it on a quiet day. x = 200 bps, so base = 100 + 2900 * (150/450)^2 = 422 bps. Your own exit is the only one in the hour, so P = 200 bps and mult = 1 + 200/300 = 1.67x. Nobody else left today: G = 200, crowd = base(100) = 135 bps. Tax = 422 * 1.67 = 703 bps = 7.03%. Of it, 80% (5.62% of your exit) goes to the holders who stay, 20% (1.41%) is burned.

Leave the same 2% in four 0.5% slices in four quiet hours and you pay 1.16%, 1.57%, 2.83%, 4.92% (the 24 h total grows with each slice). Leave it after a 30% dump by someone else and the crowd term and the pressure push you toward the 30% cap.

Hour pressure

The vault keeps twelve 5-minute buckets of everyone's exits. P is their sum over the current bucket and the 11 before it. It raises the tax for everyone: the sea on the home page is drawn from it (sea state = round(2 + 7 × (mult − 1)), 2 to 9; 1.50x and up is a gale). The tide table shows each hour of the last 24 from the vault's 1-hour ring as tomorrow's expectation. It is a record, not a promise.

Where the money goes

MoneyHolders who stayDevPadBurned
pump.fun creator fees (SOL)60%25%15%-
Exit tax (tokens)80%0%0%20%
Exit tax when less than 1 token of other stake is left-0%0%100%
Launch fee (SOL)--0.02 SOL + 2.5% of the dev buy-

Creator fees are hauled in by collect, which anyone can send (the keeper does it every few seconds). If nobody is staked, the holders' share waits in the vault and drips to the first stakers over 6 hours. The exiting wallet never shares in its own tax.

Warm-up

New stake joins a warming lot and starts earning after 1 hour. Whatever the warming lot would have earned before then goes back to the vault for the others. A flash stake around a fee haul or around someone's dump earns exactly 0. Vault dividends you restake skip the warm-up.

Lifecycle

StageWhat happensWho
Launchlaunch creates the pump.fun coin (creator = the coin's Fees PDA), its vault and your position; optional first buy, straight into the vaultthe dev
On the curvebuy_and_stake buys on the pump curve and stakes every token; sell_from_vault leaves and sells on the curveanyone
Feescollect pulls pump creator fees into the Fees PDA and books them 60/25/15anyone (keeper)
Migrationwhen the curve completes, pump migrates the coin to PumpSwap; the router and collect switch to PumpSwappump
Foreverexits and claims always work, even when the pad is pausedholders

Transactions

  1. Launch. Your picture and name are uploaded to IPFS through the site, then one transaction: the pad's launch instruction alone (compute budget aside). Fee: 0.02 SOL + 2.5% of your first buy.
  2. Buy + stake. One transaction, slippage limit 5% of the quote. The tokens land in your warming lot.
  3. Stake from wallet. Moves tokens you hold into the vault.
  4. Leave. Tokens back to your wallet (unstake) or straight to SOL (sell_from_vault). The site sends the rate you were shown as max_tax_bps and the quote minus 5% as min_sol_out: if someone leaves right before you and the rate climbs, the program refuses and nothing is spent.
  5. Haul in. claim pays SOL and token dividends; "tokens back to the vault" restakes the token part.

Every transaction is simulated first; a failing one never reaches your wallet. The same signed bytes are resent every 2 seconds until they land or expire.

Parameters

Copied into each coin at launch; they never change for that coin. The admin can change them for future coins, inside hard bounds.

ParameterValueBound
Launch fee0.02 SOL + 2.5% of the dev buy<= 0.5 SOL, <= 5%
Creator fee split60 / 25 / 15 (holders / dev / pad)holders >= 40%, dev <= 50%, pad <= 20%
Warm-up1 h10 min .. 7 d
Unassigned drip6 h1 h .. 30 d
Minimum stake1 token<= 1M tokens
Exit tax1% .. 30%min 0.1% .. 10%, max <= 30% (hard cap)
Curve knees0.5% and 5% of supply1 bps .. 50%
Full pressure3% of supply in 60 min0.1% .. 50%
Crowd divisor20 (off) .. 20
Burned part of the tax20%10% .. 100%

Program

Program id Hrpz6owrGy1VMhuF56XuwDs21aN9a8hVZUuThdu2Euqt. Anchor 0.31. No attestor, no oracle, no off-chain service: everything is on chain.

AccountSeedsHolds
Config["config"]admin, treasury, paused, coin counter, params for new coins
Coin["coin", mint]params copy, totals, dividend accumulators, 12 x 5-min pressure ring, 24 x 1-h day ring
Position["pos", mint, owner]warm + warming lots, reward debts, owed, claimed, the wallet's 24 x 1-h exit ring
Fees["fees", mint]the coin's pump creator; holds the coin's SOL; owns the vault
VaultATA(Fees, mint)staked tokens + token dividends owed
InstructionWho can callWhat
launchanyone (the dev)pump create_v2 + vault + dev position; optional dev buy
stakethe ownerwallet → vault (warming lot)
buy_and_stakethe ownerpump curve or PumpSwap buy, every token into the vault
unstakethe ownerleave with tax, tokens to the wallet (max_tax_bps guard)
sell_from_vaultthe ownerleave with tax + sell the rest, SOL to the wallet
claimthe ownerSOL + token dividends, optional restake
pokeanyonematures a due warming lot
collectanyonehauls in and books creator fees
claim_dev / collect_treasuryanyonepays the dev share to coin.dev / the pad share to the treasury, nowhere else
transfer_devthe devmoves the dev role
close_positionthe ownerempty position, no exit inside the 24 h window; rent back
quote_exitanyone (simulate)returns the tax an exit would pay now
init_config / update_config / set_treasury / set_paused / propose_admin / accept_adminadminsee Admin powers

Errors

Read from the program's IDL. The site shows these messages when the program refuses a transaction.

CodeNameMessage
Reading the IDL.

Verify on chain

  1. The coin's pump.fun creator is its Fees PDA ["fees", mint], not a person: open the bonding curve account and compare.
  2. The vault is the Fees PDA's token account: tokens can leave it only to a position owner or be burned.
  3. Coin account: params never change after launch; tax_to_stakers_total + burned_total = taxed_total.
  4. fees_total = holders_total + dev (paid + pending) + treasury (paid + pending).
  5. Mint supply = 1,000,000,000 tokens − burned_total.
  6. Simulate quote_exit(owner, amount) and compare with the site: same tax, to the bps.

Admin powers

The admin canThe admin cannot
pause new launches and new depositsblock exits or claims (they always work)
change params for future coins, inside the bounds abovechange any existing coin's tax, split or warm-up
set the pad treasury (a funded wallet)move any coin's SOL or tokens, ever
hand the admin role over (two steps)take any part of the exit tax

Closing the pad (sunset) means pausing launches and deposits. Every vault stays open for exits and claims, and the site keeps a banner saying so.

Risks

FAQ

Can I just sell on pump.fun?

Yes, tokens in your wallet trade anywhere with no tax. They also earn nothing. The tax is only for leaving the vault.

Does the dev get the tax?

No. 80% of it goes to the holders who stay and 20% is burned. There is no instruction that sends it anywhere else.

Why did my tax go up between the quote and the click?

Someone left in between: the hour pressure and the crowd term rose. The program never charges more than the rate you were shown: it refuses and nothing is spent. Look at the new rate and try again.

What if I am the last one in the vault?

Then there is nobody to pay: if less than 1 token of other stake is in the vault, the whole tax is burned.