The perfect memecoin
Take the word seriously for a paragraph. A memecoin cannot be perfect in the sense of being valuable, because nothing about it is productive and nothing about it promises to be. It can be perfect in a narrower, engineering sense: that the only thing it produces is fed back into the only thing it has, with no discretion anywhere in the path and no step that requires anybody to be honest a month from now.
Almost none of them are. The fee flow exists on every launchpad and in practically every case it leaves: claimed by a creator, converted, and spent somewhere the holder cannot see. Meanwhile the supply is fixed at creation and stays there, so the one number a holder actually shares with everybody else in the coin — how many tokens they are competing with — is inert. A hundred million dollars of volume moves that number by nothing at all.
There are exactly two ways to close the loop. Pay the fees out to the holders, which makes the coin a distribution and turns every holder into a recipient with an opinion about the rate. Or spend the fees buying the coin and destroy what you bought, which makes the coin an instrument whose float only ever contracts. Fibonacci is the second one, on the argument that a burn is the only version of this that nobody can undo: a treasury can be sold, a distribution can be stopped, but a token that has been burned is not coming back, and the mint that would be needed to replace it was given up before the first trade.
Velocity
Write V for volume over some interval, M for market capitalisation, and define velocity as their ratio:
It is the number the masthead reports and the only input this machine has. A coin at v = 0.1 is trading a tenth of itself a day and is, for the purposes of everything below, asleep. A coin at v = 10 is trading itself ten times over, which is ordinary for a memecoin having a day and unheard of for anything with a business behind it. Velocity is scale-free, which is what makes it the right variable: it says nothing about whether a coin is large or small, only how hard it is being traded.
Two properties matter. It is invariant to price, so a coin that halves and keeps its turnover has the same velocity it had before — and the machine below does not slow down because the chart went red. And it is the direct antecedent of revenue, since a fee charged on turnover is a fee charged on V, which by (1) is v·M. Velocity is not a proxy for the thing this protocol runs on. It is the thing.
The curve
$FIBONACCI lives on a pump.fun bonding curve. One instruction, create_v2, mints a fixed supply into the curve account under Token-2022 and discards the mint authority in the same transaction it uses it. The mint carries an empty extension set: no transfer hook, no transfer fee, no permanent delegate, no freeze authority. That is not a promise, it is a property, and one RPC call settles it.
Discarding the mint authority is what makes the rest of this document possible rather than merely plausible. A burn is only a compression if nothing can mint against it; with a live mint authority, every token destroyed here could be reissued tonight and the float would be a number that moves in both directions at somebody’s discretion. It cannot. There is no instruction anywhere that increases this supply, which is why §9 can state a direction rather than an intention.
The revenue side is equally mechanical. The creator’s share of the trading fee is a flat 0.3% of quote volume, charged to buyer and seller alike, and it does not scale with market capitalisation or stop at graduation. coin_creator is written once at creation with no instruction to reassign it, so where the fee goes was decided in the transaction that made the coin and is beyond the reach of the person who made it.
Buy, then destroy
A buyback and a burn are usually spoken of together and they are not the same act. The buyback is the market operation: fees, converted into bids, executed against whatever the book is offering. The burn is what happens to the inventory afterwards, and it is the only part that is irreversible.
Hold the tokens instead and you have a treasury. A treasury is a promise wearing the costume of an asset: it can be sold, lent, used as collateral, or quietly moved, and every holder is therefore carrying an unpriced option written by whoever holds the key. Burn them and the option does not exist. The supply on the mint is lower, the arithmetic in §9 applies to it, and the key that performed the burn has no more power over the outcome than anybody else’s.
The order matters too, and it is the reason this is a buyback and not a fee burn. The fees arrive as SOL. Burning SOL would destroy value belonging to nobody in particular; spending it on the coin first means the money is exerted as demand — a real bid, filled at whatever the market asks — and only then removed from the supply. Every burn on this page is therefore two effects rather than one: a purchase that had to be filled, and a float that is permanently smaller afterwards.
The revenue
The only money entering this system is the creator leg of the pump.fun trading fee. With φ = 0.0030 and V cumulative volume,
and that is the entire monetary base: no emission, no inflation, no treasury sale, no second round, no allocation to anybody. Note what (2) does not contain. Not price, since a fee on turnover is indifferent to direction — a coin falling on heavy volume funds exactly as much burning as one rising on the same volume. Not holders, who need do nothing. Not us.
Cadence
A fixed interval is the wrong shape for a machine driven by volume. The same number of seconds is asked of a dead market and a violent one, so the dead market spends transactions on dust while the violent one leaves revenue sitting in a vault during precisely the minutes it exists to act on.
So the interval is a function of the measured rate at which fees are arriving — volume as this protocol actually experiences it, in lamports per second, read from its own claims rather than from anybody’s API. The rungs are the sequence the coin is named after, in seconds:
and the thresholds that select between them step by the same sequence. Fast money, fast rung: a hot market burns every few seconds, a quiet one settles onto the slow end of the ladder and waits. The floor is five seconds, not one, and for an unglamorous reason: a block is several transactions and cannot confirm faster than the chain confirms them.
Be clear about which half of that is engineering. That the interval responds to velocity is the design, and it is the difference between a protocol that acts when its input arrives and one that acts when a timer says so. That the rungs are Fibonacci numbers is an aesthetic choice, and the paper would be dishonest to pretend a golden ratio makes the burning more effective. It makes it easier to name.
Inside a block
Four steps, in order, each a separate transaction signed by the same key: the wallet the coin was launched from, which pump.fun recorded as its creator and which is therefore the only key that can claim anything at all.
- Read. The unclaimed creator balance is read across both pump programs, the bonding curve and the AMM, because the revenue moves from one to the other at graduation. Below 0.003 SOL nothing is claimed, so a quiet rung costs one RPC call rather than a wasted transaction.
- Claim. The vault signs collect_coin_creator_fee and the fees arrive as SOL. After graduation the AMM pays in wrapped SOL, which is unwrapped in the same step.
- Buy. The whole balance, less a gas reserve, buys $FIBONACCI through an aggregator route bounded at 3% slippage. There is no second leg and no reserve asset: every lamport that is not needed to pay for the next transaction is spent as a bid.
- Burn. Every token the vault holds is burned, not merely what this block bought. A block that buys and then fails before burning would otherwise leave tokens in the vault permanently, and the vault holding its own supply is the single thing this design exists to avoid.
The sequencing is deliberate on the last point. Burning the balance rather than the purchase makes the step idempotent: whatever is there goes, so a failure anywhere upstream costs a block rather than stranding inventory, and the invariant a reader cares about — that the vault ends every successful block holding none of the coin — is checkable from outside on any block.
Compression
Write S for supply and b for the tokens burned in a block. The state transition is one line and there is no second one:
Now put (2) through it. A block spends φ·dV of fees buying at price P, so it destroys dQ = φ·dV/P tokens. Substituting V = v·M and M = P·S:
Read (5) slowly, because it is the whole paper. The fraction of the supply destroyed per unit of time is the fee rate times velocity, and price has cancelled out of it completely. It does not matter what the coin is worth, whether it is up or down, or how large the float is in absolute terms. At a given velocity, the float contracts at a given percentage rate, and the only way to change that rate is to trade more.
Integrated at constant velocity, that is exponential decay: S(t) = S0 · e−φvt, with a half-life of ln 2 / φv. Which gives the only forecast on this page, and it is a forecast about supply rather than price:
| Velocity | Burned per day | Half the float gone in |
|---|---|---|
| 0.5× | 0.15% | 462 days |
| 1.0× | 0.30% | 231 days |
| 3.0× | 0.90% | 77 days |
| 10.0× | 3.00% | 23 days |
A coin trading its own market capitalisation once a day burns 0.30% of its float daily and loses half of it inside a year. One trading ten times over does it in 23 days. Nothing in that arithmetic is a claim about price; it is the fee rate, the velocity, and division.
What this does and does not say
Proposition 1 (Monotone float). Sn+1 ≤ Sn for every block, with strict inequality whenever a block settles.
Proof. By (4) the only operation on supply is subtraction, and by §3 no instruction exists that adds to it: the mint authority was discarded at creation, so no account — including the one running this protocol — can issue a token. A quantity acted on only by subtraction is non-increasing.
Proposition 2 (Compression is priced in velocity, not in dollars). The fractional rate of supply destruction is φ·v, independent of price and of the size of the float.
Proof. Equation (5). The substitutions V = vM and M = PS are definitions, and P appears once in the numerator and once in the denominator.
Proposition 3 (Idleness is the worst case). If volume stops, nothing happens: no fee accrues, no block settles, no supply is burned, and the cadence settles onto its slowest rung. The failure mode is a pause.
Proof. By (2) revenue is proportional to volume, so zero volume accrues nothing, and a block with nothing to spend buys nothing and burns nothing. No other instruction touches the supply.
And the part that is not a proposition. None of this says the price rises. Supply is one side of a price and attention is the other, and a shrinking float against collapsing demand is a smaller number of tokens nobody wants — the arithmetic above is entirely compatible with the chart going to zero. It does not say the burning is large: at low velocity it is a rounding error, and (5) is honest about exactly how small. It does not say a holder is owed anything, because nothing is distributed and there is nothing to redeem. What it says is narrow, exact and checkable: the float only contracts, the rate at which it contracts is the fee rate times velocity, and every burn is a transaction anybody can read.
Who runs it
pump.fun fixes the fee destination and the aggregator executes the buy. Neither is ours. The cycle in §7 is: a keeper runs it on the ladder in §6 and holds the key to the launch wallet.
That key cannot mint, because create_v2 discarded the mint authority at creation. It cannot redirect the fees, because coin_creator is immutable in pump.fun’s program. It cannot freeze or claw back a transfer, because the mint carries no extension that would allow it. And it cannot unburn anything, which is the property that makes every block that has already run permanent regardless of what happens to this one.4
What it can do is stop, or buy and not burn. Nothing on chain compels the next block; the same key that destroys the supply could hold what it buys instead and call it a treasury. So read the propositions as describing the protocol rather than the operator: every burn already on the chain is irreversible and listed above, and every burn that has not happened yet is somebody’s intention. Until the vault is owned by a program whose only instruction is buy-and-burn, that distinction is the entire risk.
Notes
- pump.fun charges a total trading fee of which the creator leg is one part; every figure here quotes the creator leg only, the 0.3% of volume this protocol actually receives, never the total a trade pays. The bonding curve program is 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P.
- Velocity on the masthead is twenty-four hour volume over market capitalisation, both from the same market feed, so the ratio is not two providers disagreeing. It is a reported figure rather than a measured one: the cadence does not use it, and instead reads the accrual rate of the vault’s own claims, which cannot be inflated by wash trading somewhere this protocol earns nothing from.
- Supply and float are read from the mint itself on every poll, not computed from our own record of burning. Burned is the sum of what settled blocks destroyed, and the two agree by construction: what the mint says exists, plus what this ledger says was destroyed, is what the curve was seeded with.
- The cadence ladder, its thresholds, the floor and the ceiling are in src/lib/cadence.ts, and every parameter quoted in this prose is imported from the module the keeper reads, so the document cannot drift from the process it describes.
