Programmatic Liquidity

Docs

Reference for how the protocol works: where fees are assigned, what the keeper does with them each minute, and how the pools behave.

The model

A constant product pool holds reserves x and y with x·y = k. Every trade moves along that curve, and how far a given trade moves the price is set entirely by how large the reserves are. Depth is the product k, and trading alone never changes it: a swap moves value between x and y while leaving k where it was.

Standard launchpads set k once at migration and never touch it again. A token that does a hundred million in volume has the same price impact on day two hundred as it did on day one. The only way k grows is if somebody deposits into both sides.

This protocol makes that deposit automatic and funds it from the token’s own creator fees. Trading generates fees, fees buy both sides, both sides are deposited, k rises. Volume becomes the thing that pays for depth.

Fee assignment

pump.fun stores a coin creator address on each bonding curve, set in the create instruction and immutable afterwards. The creator share of every trade accrues to a program account derived from it.

At launch the protocol generates a keypair for that token alone and passes its public key as the coin creator. The fees are therefore addressed to the protocol from the first trade, with no claiming step for the launcher and no way to change the assignment afterwards.

Because the address is unique to the token, its fees can only ever buy that token and its own counter asset. Nothing is commingled and nothing is routed elsewhere.

The sweep cycle

Once a minute the keeper walks every active token. For each one it reads the pending creator rewards first, which is what makes the loop affordable at launchpad scale: a token with nothing accrued costs a single account read rather than a transaction that would fail anyway.

Anything above the deployment minimum is claimed with collectCoinCreatorFee, moving the SOL into that token’s address. Cycles are serialised per token: if one overruns the interval the next is skipped rather than queued, since two concurrent runs would attempt to spend the same claimed balance.

The split

A gas reserve is withheld to pay for the transactions this cycle is about to send. The remainder is halved. One half buys the token, the other buys the counter asset.

The split has to be even, or close to it, because a CPMM deposit requires both sides in the pool’s current ratio. Buying disproportionately would leave one side stranded outside the pool.

Routing

Both halves route through the Jupiter aggregator as ordinary market buys. They are not transfers from inventory, which is why the buy pressure appears in the token’s own chart alongside everyone else’s.

Deposit amounts are taken from measured balance changes after each swap rather than from the quotes, so the protocol only ever deposits what it actually received.

Pool creation

Both sides are deposited into a Raydium CPMM pool holding the token against its counter asset, built through the Raydium SDK.

The pool address is a program-derived address of the two mints, which means there is exactly one pool per pair and it can always be found again. The first sweep creates it and its deposited ratio sets the opening price. Every sweep after deposits into that same pool at the prevailing ratio, sized from the token side so the deposit cannot revert on a ratio that moved between the swap and the deposit.

Compounding depth

The consequence of depositing rather than extracting is that k is monotonic. It never falls, and it rises in proportion to volume the token has already done.

Pool depth over 30 days

Modelled at $250k daily volume with 5 bps of it reaching the fee address, against a $12k opening pool. The flat line is every other launchpad: seeded once, unchanged forever. Illustrative, not a forecast.

Price impact

Depth is only interesting for what it does to trading. On a constant product curve a buy of size dx against reserve x moves price by dx / (x + dx), so the same trade costs less as reserves grow.

Price impact of a $2,000 buy as the pool deepens

Straight from x·y=k: impact is the trade divided by the reserve it hits, so it falls as reserves grow. Deposits do not raise the price of your token. They reduce what every future trade moves it by.

Pair selection

The counter asset is chosen by the launcher and fixed for the life of the token. Fixing it is what guarantees every sweep lands in the same pool. A pair that could rotate would spread the token across a new market each time it changed, and none of them would compound.

The suggested list is curated and ranked by on-chain liquidity, volume or 24h change. Any Solana mint can be used instead by address. Depth on the counter asset matters because the token buys it every minute indefinitely, and a thin asset drifts on that recurring flow.

Mint safety

A pool here is held indefinitely and added to forever, so the standard for a counter asset is higher than for a trade you can exit. The mint account is read directly from the chain, not from a third-party score, and a mint that cannot be read is treated as unsafe rather than waved through.

Freeze authority
The issuer can freeze token accounts, including the pool vault. The liquidity would be locked with no recourse. This is the one that matters most.
Mint authority
Supply is not fixed, so reserves can be diluted from under the pool.
Permanent delegate
A Token-2022 extension letting the issuer move balances out of any account, the pool included.
Transfer hook and transfer fee
A hook runs issuer-controlled code on every transfer. A fee taxes transfers, which breaks pool accounting. Both are checked for what is actually configured rather than whether the extension exists, since an unarmed extension slot does nothing.

Thresholds

The parameters the cycle runs against. Deployment minimums exist because trading spread is a fixed cost: below a certain claim size, buying and depositing costs more than the claim is worth.

Cycle interval
60s
How often every managed token is evaluated.
Split
50 / 50
Token buyback against counter asset, per claim.
Minimum deployment
0.02 SOL
Claims below this accrue rather than deploy, so spread does not exceed the amount.
Gas reserve
0.015 SOL
Withheld from each claim to fund that cycle's own transactions.
Slippage bound
3%
Applied to both market buys and to the deposit ratio.
Pools per pair
1
Created once, deposited into thereafter.

Risks

The part to read properly.

Impermanent loss
Liquidity paired against a volatile asset loses value when the two sides diverge. If the counter asset falls hard against the token, the position is worth less than having held both. This is inherent to providing liquidity, not something the design removes.
Positions are owned, not burned
Liquidity belongs to the token’s own protocol address. It is not burned and not locked. This is the most consequential line on the page.
The first deposit sets the opening price
Creating a pool defines its price from the amounts deposited. Mis-sized sides open a mispriced pool that is arbitraged immediately, at the token’s expense.
Automation means live keys
Signing every minute means signing keys sit on a running machine. What is exposed is fee revenue in transit, not token supply or user wallets, but it is a real attack surface.
Depth is not price
A deeper market is not a higher one. This protocol changes where fee revenue goes and makes no claim about what any token is worth. None of this is investment advice.

Glossary

Coin creator
The address stored on a pump.fun bonding curve that the creator share of trading fees accrues to. Set once, in the create instruction.
Creator rewards
The accrued fees themselves, held in a program account derived from the coin creator address until claimed.
Sweep
One run of the cycle for one token: claim, buy both sides, deposit.
Counter asset
The non-protocol side of a pool. Chosen at launch, fixed for the life of the token.
CPMM
Constant product market maker. Reserves x and y satisfy x·y = k across every trade, so k is the measure of depth.
Keeper
The process that runs the cycle for every token on the launchpad, once a minute.