how it works
A bond market on pump.fun creator fees, with the one guarantee that matters enforced by pump.fun's own program.
pump.fun pays the coin's creator a fee on every trade: on the bonding curve and, after graduation, on PumpSwap. The rate comes from pump.fun's on-chain fee config (tiered by market cap; a creator may also set a per-coin rate at launch). coupon reads it from chain every time; nothing is hardcoded.
pump.fun's fee-sharing config lets a creator split that fee between up to 10 addresses. The creator adds the coupon vault for their coin (a program-owned PDA) with, say, 30%. Since pump.fun's one-time policy, the split can be written exactly once: the program revokes the admin in the same instruction. Nobody, not even the creator, can edit it afterwards.
coupon's program reads the sharing config straight from the pump.fun fees program, checks it is locked and active, that the curve (and the pool) route fees to it, and that the vault holds the pledged share. Every pump account is derived from the coin mint by seeds; look-alike accounts are rejected.
The creator sells slices of the pledged share as bonds: a raise target, a unit price, a deadline, a term (30/90/180 days) and a payout cap. Buyers deposit SOL into escrow. Filled: the stream starts and the creator receives the SOL per the release schedule. Unfilled: full refunds.
Every 10 minutes a permissionless crank asks pump.fun to distribute fees (anyone can crank) and the coupon program credits bondholders pro rata with a MasterChef-style accumulator: u128 math, rounding always in the vault's favour. Holders claim whenever they like.
A bond matures at its time limit or when holders have received the cap (e.g. 2× the raise), whichever comes first. From then on, and for any slice that was never sold or whose raise failed, the vault forwards fees to the creator. The pledge never has to be unlocked.
coupon has no admin key. No one can move vault or escrow funds. The only privileged key is the program upgrade authority, which moves to a multisig and then gets burned.
- Open a bond page and click the sharing config link in the verification panel.
- The account is owned by the pump.fun fees program pfee…ojVZ. Decode it:
admin_revokedmust betrue(orversion == 1),statusActive. - The
shareholderslist must contain the vault address shown on the bond page with the locked share. - The bonding curve's
creator(and the pool'scoin_creator) must equal that sharing config address, so fees actually route through it.