PerpsHook
FEED Launch a coin

The idea

A launchpad coin usually has nothing behind it. The token is worth whatever the next buyer pays, and the fees the coin earns go to the person who launched it. PerpsHook keeps the coin exactly as it is and changes one thing: who the creator is.

A pump.fun coin already pays its creator 0.30% of every trade. If the creator is a program instead of a person, that money can be pointed somewhere. Here it is swept, swapped to USDC and posted as margin on a perpetual position picked at the mint: one market, one side, one leverage, fixed for the life of the coin. Any holder can burn their coins to take their share of what that position is worth. The coin is still a coin. It just has a balance sheet.

The short version. Volume buys margin. Margin buys exposure on Drift. Exposure moves the floor. The floor is redeemable, which is what makes it a floor rather than a claim.

The creator seat

Start with what is not possible. pump.fun runs no code of ours inside a swap. A trade on the bonding curve touches pump.fun's program and nothing else, and after graduation it touches PumpSwap and nothing else. There is no hook, no callback, no place to put an instruction of ours in somebody else's buy. So we do not take a cut of a trade, and nothing on this site should read as if we do.

What pump.fun does give is one argument. Its create_v2 instruction takes the creator as a pubkey passed in the instruction data, not as an account that has to sign. Whatever pubkey is named there is paid the creator fee for the life of the coin, and nothing checks that it is a person. It can be a program's PDA. That single fact is the whole injection point, and it is enough, because the creator fee is the only money in a pump.fun trade that is not pump.fun's.

Collecting is permissionless too. collect_creator_fee takes five accounts and not one of them signs, so anybody can sweep any creator's fees into that creator's own account and nowhere else. We simulated it against mainnet from an unrelated wallet and it came back clean. A vault's income does not depend on us running a keeper with a key, which matters, because a coin that stops working when we stop paying for a server is not backed by anything.

Two details that decide whether this works at all. create_v2 has a cashback flag: turned on, traders get a rebate and the creator earns nothing, which would leave a vault with no income for ever, so every launch here sets it false. And the fees do not land in the vault directly. pump.fun credits a fee account at ["creator-vault", creator], which is System owned and holds bare lamports. It has to stay rent exempt, so 0.00089088 SOL always stays behind. That is a measured number, off a real sweep simulation, not an estimate.

One argument, chosen once. The creator is set in the transaction that mints the coin and cannot be changed afterwards, by us or by anyone. A coin minted with a vault as its creator has that vault as its creator for good, and a coin minted without one can never be given one.

What a trade pays

On the bonding curve, a trade pays 1.25% all in: 0.95% to pump.fun and 0.30% to the creator. That 0.30% is the number this whole product is built on. Some older pump.fun documentation still says the creator gets 0.05%. That figure is wrong, it is not what the chain does, and it appears nowhere on this site.

Once a coin graduates it trades on PumpSwap and the creator's share moves with the coin's market cap in SOL. pump.fun keeps that ladder in an account of its own, so this site reads it rather than copying it down. It starts at 30 bps, steps up to 95 bps at 420 SOL of market cap, and slides back down to 5 bps by 98,240 SOL. What the simulator shows is whichever step the account actually names for the cap you set, never an interpolation between the ends.

Creator fees are paid in SOL. The vault splits what it collects:

The vault

One vault per coin, a PDA at ["vault", mint]. It is three things at the same time: the coin's pump.fun creator, so the fees are paid to it; the authority on a Drift subaccount, so those fees can hold a position; and the account holders burn against, which is what puts a floor under the coin.

One market, one side, one leverage, and the fee split, all chosen once at the mint and immutable afterwards. The vault has no ability to flip, close early or pick a different market. A holder should be able to read the position off the launch and know it will still be that position tomorrow.

The program has nine instructions. Only two of them care who is calling: creating the vault, which the launcher does, and redeeming, which a holder does. Sweeping the fees, swapping them, opening the Drift subaccount, pushing margin onto the position and paying the creator are all unsigned and open to anyone, because none of them can send money anywhere except where the vault already points.

Margin accumulates until it crosses 25 USDC, and then anyone can push it onto the position. Below that a push costs more in Drift taker fees and transaction fees than the exposure it buys. Entry price is Drift's own average across every push, so a coin that keeps trading keeps averaging in.

The leverage guard has no oracle in it

Push is unsigned, so the caller picks the size of the order and the program has to assume they picked it badly or maliciously. It does not read a price to check them. It checks the outcome: the notional the fill actually moved, which is the change in Drift's own quote_entry_amount, has to land within 2% of margin times leverage, and the position has to have moved the way the coin was born pointing. Too much overshoots the band, too little undershoots it, and a fill that never happened is zero and misses it entirely. All three unwind the transaction.

Nobody is in charge of the position. There is no manager key, no discretionary close, and no way to take margin out except by redeeming coins. The creator's only power is to claim their own share of the fees, to their own account.

SOL to USDC

pump.fun pays creator fees in SOL. Drift takes USDC. Something has to close that gap, and it is the one step here that needs somebody to bring something rather than just call an instruction.

There were two ways to build it: call a swap route the client hands in, or define the boundary and let somebody else fill it. This takes the second. A route is a different shape every few months and that is not a thing to put inside a program holding other people's money. So the program hands the lamports to an executor, records what the vault's USDC balance was, and requires the minimum coming back to be worth at least what those lamports are worth on Pyth's SOL mark less 2%. A second instruction checks the USDC actually turned up. Both have to be in the same transaction, and the first one reads the instructions sysvar to prove the second is there before a lamport moves. A SOL mark older than five minutes does not price a swap at all.

Anyone can be the executor and the program does not care who: it only cares that the USDC arrived. Nothing else in the program knows a swap happened, which is what makes the choice reversible later.

Drift, the venue

We do not run a perp engine. Drift does, at dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH on Solana mainnet, and a vault is an ordinary Drift subaccount with no special treatment and no agreement with them. Every number below was read off Drift's own accounts and its on-chain IDL, not off a blog.

Each market is marked by its own oracle, which Drift names on the market account. We deliberately store none of those addresses. Drift can migrate an oracle, and a stale pubkey in a file of ours would be silently wrong rather than loudly broken. The program reads the oracle Drift points at. The only price the program reads for itself is SOL/USD from Pyth, and only to bound the swap.

A crypto perp has no session, no holiday and no close. Drift matches, funds and liquidates every second of the week, so a coin here is marked every second of the week too. That is not the same claim as the oracle always answering, and anything that acts on a price still has to check how old it is.

Why crypto and not stocks

The first version of this backed coins with US equities. It is gone, and the reason is worth stating plainly, because it is a cost rather than a change of heart.

There is no equity perp on Solana for us to use. Drift's 86 market accounts contain zero of them, and listing a market is gated behind Drift's own admin key, so we could never add one. Their market list does carry an NVDA perp on devnet, so the door is not bolted for ever. It is closed today, and it is not our key.

That left one option, which was to write the perp engine ourselves. We did, and it worked, and it was not affordable. Measured, not estimated:

our own enginea vault on Drift
program size601,552 bytes238,400 bytes
rent, one copy4.1877 SOL1.6605 SOL
balance to deploy8.375 SOL3.3220 SOL

Every one of those figures came out of solana rent against the compiled binary. The last row is the conservative reading, where the upload buffer and the program are funded at the same moment, and it is the one to plan against. The difference between the two columns is the difference between shipping and not shipping, and the second column is only affordable with the deploy sized to the exact length of the program.

So the markets on the board are the markets Drift already runs. There are no stocks anywhere in this product and there is no plan to bring them back until somebody with an admin key lists one.

The floor

The number that matters is:

floorvault equity ÷ circulating supply
vault equitythe subaccount's USDC balance, plus what the position is up, plus margin not yet pushed
circulatingtotal supply − what the bonding curve or the pool is holding − what has been burned
coveredfloor ÷ market price, capped at 100%

A coin trading at four times its floor is 25% covered. That ratio is on the board and at the top of every coin page because it is the honest summary of what the design gives you: not a guarantee, a partial one.

Coverage starts near zero and it is worth doing the arithmetic before you launch rather than after. A coin that has done $250K of volume on the curve has paid $750 in creator fees, of which $600 is margin at the default split. Against a $250K market cap that is under a quarter of one percent. It grows with volume and with the position working, and nothing about this design makes a fresh coin safe. The simulator on the front page exists so that this is obvious in advance.

Redemption

Burning coins returns the same share of vault equity as the share of supply burned, and closes the same fraction of the position in the same transaction. That second half is what makes it fair:

Redeeming needs no oracle either, which is worth showing rather than asserting. Drift keeps no separate margin: a subaccount's equity is its USDC balance plus whatever the position is up. Closing a fraction of the position and settling turns that same fraction of the unrealised profit into balance, so balance_after = balance_before + frac × unrealised. What the holder is owed is frac × (balance_before + unrealised), and that rearranges to balance_after − (1 − frac) × balance_before, with no unrealised term left in it. Nothing has to be marked to work out the payout.

A 0.5% redemption fee stays in the vault, so redeeming is very slightly accretive to the holders who do not. One honest caveat: Drift can settle a position's profit partially when a market's own settlement pool is short. That pays the redeemer less than their full share and never more, which is the right direction for the holders who stay, but it is not exact.

Liquidation

A leveraged position can be liquidated, and a vault has nobody to call for more margin. When the margin ratio falls to the maintenance floor Drift closes the position and a liquidator takes their fee out of what is left. Whatever margin had not been pushed yet survives, because it was never in the position, so the floor drops to that and no further. The coin keeps trading and new fees begin building a new position at whatever price the market is then.

This is not an edge case worth burying, so the site puts numbers on it. The model behind the simulator liquidates at 5% of notional, which is what 22 of the 38 markets on this board actually use. On that basis a 3x long goes on a 29.8% move against it, a 10x long on 5.3%, and a 3x short on 27.0%, because the two sides are not symmetric. Drift sets the real number per market, from 2% on BTC and ETH up to 16.67% on Kamino, so how far a live position can fall depends on which market you picked. Every coin page shows its liquidation price and its distance from the mark at the top of the position panel, and the launch form tells you how far a position can move against you before you sign for it.

Parameters

Four tables, because these numbers do not all come from the same place and pretending they do is how a page starts lying. The first is pump.fun's, the second is ours, the third is Drift's, and the fourth is only the model running on this site.

pump.fun, read off mainnet

ParameterValue
ChainSolana, mainnet-beta
Launchpadpump.fun, 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
Supply1,000,000,000, fixed, minted by the launch itself
Curve trade fee1.25% all in: 0.95% to pump.fun, 0.30% to the creator
After graduationthe creator's share moves with market cap in SOL: 30 bps under 420 SOL, 95 bps from 420 SOL, 5 bps by 98,240 SOL
Fees paid inSOL
Cashbackoff. On, the trader is rebated and the creator earns nothing
Fee account["creator-vault", creator], System owned, 0.00089088 SOL of rent stays behind

The vault, ours

ParameterValue
Programnot deployed. It was on mainnet for twelve minutes on 9 August 2026 and was closed again, and What is built has the transactions
CollateralUSDC, six decimals, Drift spot market 0
To the position50% to 100% of the creator fee, set at the mint, 80% by default
Leverage1x to 10x, set at the mint, 3x by default
Minimum push25 USDC of pending margin
Push slippage2% of margin times leverage. This is the whole leverage guard
Swap slippage2% against Pyth's SOL mark, which has to be under five minutes old
Redemption fee0.5%, kept by the vault for the holders who stayed
Redemption locknone, you can redeem the moment you hold
Protocol cutnone

Drift, read off its own accounts

ParameterValue
VenueDrift v2, dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH
Markets86 perp accounts, 48 active perpetuals, zero US equities
On this board38
Taker fee3.5 bps at the base tier
Leverage capper market. 20x on SOL, BTC, ETH and XRP, 10x on most of the board, 2.99x on Kamino
Maintenanceper market. 2% on BTC and ETH, 3% on SOL, 5% on 22 of the 38, 16.67% on Kamino
Liquidator feeper market. 0.50% on BTC and ETH, 0.75% on SOL, up to 2.5% on the thinnest
Markeach market's own oracle, read off the market account

The simulator, and where each number in it comes from

NumberRead off
The curvepump.fun's Global account: the virtual reserves, the supply and the opening and graduation caps
Creator feepump.fun's FeeConfig account, every step of the ladder
Leverage capthe market's own initial margin on Drift
Maintenancethe market's own maintenance margin on Drift
Liquidator feethe market's own liquidator fee on Drift
Open fee3.5 bps of notional, Drift's base taker tier
Not pricedthe swap from SOL to USDC. The margin shown is before it
Nothingif any of those has not answered yet, the panel prints dashes and says which one

There is a fourth set of numbers, in js/config.js: one flat maintenance margin, one open fee and one liquidation bounty for every market. They belong to js/engine.js, a reference model that exists to hold the arithmetic to its invariants under test, and nothing you can see on this site uses them. Drift's numbers are per market, and a liquidation price worked out from a single figure would be wrong for almost every market on the board.

What is built

Deployed and exercised are two different things, and the gap between them is the whole of this section.

Deployed, then closed

The program is not on Solana mainnet. It was there for twelve minutes on 9 August 2026 and then it was closed, which refunded its rent and left the address with no code behind it. Every figure in this table was read off the chain rather than out of a deploy log, and every one of them can be read again by anyone.

AccountValue
Program2VwErTZtJY8B6SGjsrNKyJEXKiSRuqyfaXEs9oQRLJJk, an address that can never be deployed to again
Program data666aDmqeQRxnQ3m3jaqN8qKVeFK2wY2rU9hNbKaPKCyg, gone
Authority that closed it3WztDu6kwjDquBWVbdEyJACDGwRiowNE9Y3sfjVFHeJz, one key
Deployedslot 438,260,608, 19:55 UTC on 9 August 2026
Closedslot 438,262,377, 20:07 UTC the same day
Size while it was up238,400 bytes of program, in a 238,445 byte account, sized to its exact length
Rent1.66046808 SOL, locked on deploy and refunded to that key on close

Nothing on this site points at that address any longer. js/config.js carries no program id, so every surface here is back to saying there is no vault behind anything, and npm run solanacheck reads the id that is set and checks the chain for code behind it rather than taking the setting's word for it.

pump.fun and Drift were already there. A launch from this site is a real coin, the transaction is built here in dependency-free JavaScript, and both pump.fun instructions we use simulate against mainnet with no error. Run npm run solanacheck to watch it happen: it builds a create_v2 with a fresh mint, simulates it, and simulates a collect_creator_fee on a real coin's fee account. Drift is running all 38 markets on the board.

Not exercised

Who can change it

The deploy that has been and gone was under a single key, 3WztDu6kwjDquBWVbdEyJACDGwRiowNE9Y3sfjVFHeJz, and that key is what closed it. The next deploy will be the same shape unless it is changed: whoever holds the upgrade authority can replace the code that every vault runs on, including the parts that decide where money can go, and nothing on chain stands in the way. That is a real risk and it is worth knowing before a coin's fees are pointed at this. It is not multisig and it is not burned. The program has also not been audited by anyone.

One consequence to be clear about. The launch path on this site has never been pointed at the program, so a launch today names your own wallet as the creator. The coin is real, the fees are real and they are yours, and there is no vault, no position and no floor behind it.

There is no token for this project. Anything on this site that cannot be read off the chain says so rather than showing you a number: a market with no fresh price shows NO DATA, an empty board says it is empty, and the board and the simulator are a model of the vault and are labelled as one.