4249 4C4C 5320 4152 4520 5041 4944 2049 4E20 5355 5050 4C59 · 424C 4541 4B2F 5052 4F54 4F43 4F4C 2F30 31
A Solana program owns the coin's creator revenue and can do exactly one thing with it: buy that same coin back and burn what it bought. Not a policy. Not a promise. The only path the lamports have.
Every trade of the coin pays a creator fee. On pump.fun that fee is paid to whatever
address was handed in as the coin's creator at launch. One wallet deploys this
program, launches the coin, and passes the program's vault PDA as that creator.
From that instant the revenue is addressed to an account no human holds a key to.
There is no other income. No treasury behind the treasury, no emissions, no yield manufactured in a back room. When the chart is quiet the vault is thin, and a thin vault burns a small number. The machine does not have an opinion about this.
The vault deliberately stores nothing. This is not tidiness. pump.fun's buy
pays out of the buyer with a System transfer, and the System program refuses to debit an
account that carries data. A vault with a single byte of state in it could receive fees
forever and never spend one of them. The account is empty so that it can pay.
Claim, buy, burn. One instruction, one signature, atomic. Either every leg lands or the slot reverts and the vault is exactly as it was.
| leg | program | moves |
|---|---|---|
| collect_creator_fee | pump.fun | creator vault to our vault PDA |
| buyback_curve / buyback_amm | bleak | vault SOL to the same mint |
| settle | bleak | bought tokens to burn, remainder to treasury |
Two variants exist and they differ only in whose name is on the buy. cycle
has the vault PDA buy, which is airtight and shows on charts as a program address.
cycle_via_dev routes the same lamports through the dev wallet so the buy is
attributed to it everywhere a human would look. The fees cannot stop at the dev wallet: the
transfer out of the vault and the buy back into the coin are the same instruction, so one
cannot occur without the other, and the unspent remainder is swept back before the
instruction ends.
One number decides how much of each buyback is destroyed. At 10000 every
bought token burns. At 0 nothing burns and the whole buyback lands in the
treasury. Anything between splits. Nothing else about the flow changes, at any setting.
The program holds a hard rent floor. The vault will not spend itself below
reserve_lamports, because an account that falls under rent exemption stops
being an account, and a machine that can drain itself into failure will eventually do so on
the one night nobody is watching.
Something has to choose the moment. A crank process claims, buys and burns on a fixed interval, defaulting to 240 seconds, with a floor below which it does not bother, a dry run mode, and an on-chain pause that stops it from the program's side rather than the operator's.
The crank holds no power the program does not grant it. Its key is cranker,
it can call the buy legs, and it can be rotated by the authority at any time. It cannot
change the mint, the treasury, the dial, or the destination of a single lamport. The worst
a stolen crank key achieves is buying the correct coin at a bad price.
pump.fun's live launch path is create_v2, and its mints are Token-2022, not
classic SPL. The first build of this program pinned classic SPL and would have failed on any
coin launched today. It now reads the token program off the mint account itself and routes
the burn, the transfer and the buy CPI at whichever program owns it, so coins launched this
morning and coins launched two years ago both work. Wrapped SOL is always classic SPL, so
the quote side stays pinned.
TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb. create_v2 on a
mainnet fork produced a Token-2022 mint of 354 bytes. pump.fun's own documentation states
the token program account for create_v2 is hardcoded to Token-2022. Three
independent reads, one answer.
Every protocol has a list of things it promises not to do. This is the shorter list of things it is not able to do, which is a different document entirely. Each of these is checked by the program on every call, not by the process that runs it.
register_mint and checked on every buyback
against both the config and the bonding curve's own creator field. A stolen
crank key cannot point the vault's SOL at a different coin. There is no instruction that
repins it.cycle_via_dev, where both balances share one token account, the
burn is taken from the measured increase across the buy, never from the balance that was
already sitting there.Two accounts. config at seeds ["config"] holds the authority,
the cranker, the treasury, the pinned mint, the burn share and the running stats.
vault at seeds ["vault"] is the address pump.fun is handed as
creator, and holds both the SOL and the bought tokens. That is the entire state.
| instruction | who may call | what it does |
|---|---|---|
| cycle | cranker, authority | claim, buy and burn in one atomic instruction. the vault is the buyer |
| cycle_via_dev | cranker, authority | the same, but the dev wallet is the on chain buyer |
| initialize | authority | creates config, records the vault bump |
| register_mint | authority | pins the coin. once, and only once |
| set_burn_bps | authority | the dial, bounded 0 to 10000 |
| set_paused | authority | halt, from the program's side |
| set_reserve | authority | lamports the vault always keeps |
| set_cranker | authority | rotate the crank key |
| set_treasury | authority | rotate the treasury |
| set_authority | authority | hand over the keys |
| collect_curve_fees | anyone | pulls bonding curve creator fees into the vault |
| collect_amm_fees | anyone | the same after graduation. arrives as wrapped SOL |
| wrap_sol | anyone | moves value between the vault's two forms, never out |
| unwrap_wsol | anyone | the return trip |
| buyback_curve | cranker, authority | vault buys its own coin on the curve |
| buyback_amm | cranker, authority | the same on PumpSwap |
| settle | anyone | burns burn_bps of the vault's tokens, treasury takes the rest |
settle and both collect instructions are open to anyone because every
destination is already fixed by config. Handing a stranger the ability to press the button is
safe exactly when the button is wired to one place. If you want to pay the transaction fee to
make the burn happen sooner, the protocol will not stop you.
Let m be the pinned mint. Every buyback instruction asserts
ctx.mint == config.mint and, on the curve, that the curve's own
creator field resolves to the vault. Both reads are on chain accounts, neither
is supplied by the caller. Therefore for any caller, authorised or stolen, the set of
reachable destinations has cardinality one. □
Claim, buy and burn execute as inner instructions of a single top level instruction. Solana reverts a failed instruction in full. Therefore no slot exists in which the fees have been claimed and the tokens have not been bought, or bought and not settled. The intermediate states are unobservable because they are never committed. □
The authority may rotate cranker, treasury and
authority itself. None of these instructions touch the vault, and none of them
can repin the mint. Rotation changes who may press a button whose wiring is fixed.
□
Let h(t) be a wallet's balance. Its accepted shares are the integral, not the
balance. Balance is a rate; shares are what the rate accumulated.
dw/dt = h. The rate is purchasable; the integral is not. A
wallet arriving at minute forty with ten million tokens has exactly the accumulated history
of a wallet arriving at minute forty with one token: none.
□
Split a balance h across k wallets. The sum of the
integrals equals the integral of the sum. Sybils purchase bookkeeping, not shares.
□
The round meter is correct at the endpoints and theatre in between, which is true of every luck estimate ever displayed on any pool. It fills when a round ends. The settlement itself is whatever the engine actually paid, read from the ledger and nowhere else. □
owed is nondecreasing between sends and cleared only by a confirmed payout,
so no sub-threshold share is ever lost. □
Every lamport claimed sits in exactly one of the three terms. It becomes owed at a settlement and becomes paid only on a confirmed transfer, so the sum is invariant. □
The list is ranked by prior debt, and an unpaid entry keeps its debt into the next round's ranking, so a waiting debt is never written off and never re-ranked below a new share. □
Both venues are proven end to end on a mainnet fork against the real pump.fun programs.
Not a mock, not a testnet stub. The bonding curve run launched a Token-2022 coin through
create_v2 with the vault PDA as creator, generated third party volume, then ran
cycle.
| measurement | value |
|---|---|
| signatures for claim, buy and burn | 1 |
| inner instructions under one top level | 12 |
| slot | 442,390,593 |
| supply removed at burn_bps 10000 | 5,114,988,429,911 |
| deployer launch buy, untouched | 66,285,714,223,523 |
| vault remaining | 0 |
The dial was then exercised at 10000, 0 and 5000,
and the PumpSwap path was run against a real mainnet pool whose coin_creator was
rewritten to the vault, so real trades accrued real creator fees before
collect_amm_fees, buyback_amm and settle.
At every cycle the engine checks its own books against a live read of the vault and publishes the drift. Books claiming more than the chain holds is the alarm that outranks every other alarm. A number the engine derives from itself is decoration.
Nothing. No yield, no appreciation, no roadmap, no future. The protocol promises conduct: fees claimed, supply burned, records kept, failures published. Whether the coin is worth holding is a judgement this page is not equipped to make, and any page that offers to make it for you is selling something.
5468 6520 6F6E 6C79 2064 6972 6563 7469 6F6E 2069 7320 6665 7765 72 · the vanity id is not in this repository · rotate cranker before anything runs unattended