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:
- 50% to 100% of the fee becomes position margin. 80% is the default.
- The remainder is the creator's, claimable at any time, to their own account.
- There is no protocol cut. Nothing in the program pays us.
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
dRiftyHA39MWEi3m9aunc5 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.
- 86 perp market accounts, 48 of them active perpetuals. This board carries 38 of those 48. The ten left off are memecoins by Drift's own category tag, plus two more we chose not to list.
- Taker fee 3.5 bps at the base tier. That is what a push and a close pay.
- Leverage is capped per market by its initial margin: 20x on SOL, BTC, ETH and XRP, 10x on most of the board, 5x on nine markets and 2.99x on Kamino. The launch form here stops at 10x, and where Drift's own cap is lower, that is the one that binds.
- Maintenance margin is per market as well, from 2% on BTC and ETH to 16.67% on Kamino, with 22 of the 38 at 5%.
- So is the liquidator's fee: 0.50% on BTC and ETH, 0.75% on SOL, 1% on eighteen markets, and up to 2.5% on the thinnest.
- Market indexes are Drift's: SOL is 0, BTC is 1, ETH is 2.
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 engine | a vault on Drift | |
|---|---|---|
| program size | 601,552 bytes | 238,400 bytes |
| rent, one copy | 4.1877 SOL | 1.6605 SOL |
| balance to deploy | 8.375 SOL | 3.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:
| floor | vault equity ÷ circulating supply |
| vault equity | the subaccount's USDC balance, plus what the position is up, plus margin not yet pushed |
| circulating | total supply − what the bonding curve or the pool is holding − what has been burned |
| covered | floor ÷ 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:
- Equity falls by exactly the fraction redeemed.
- Circulating supply falls by exactly the fraction redeemed.
- Floor per token for everyone who stayed is unchanged.
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
| Parameter | Value |
|---|---|
| Chain | Solana, mainnet-beta |
| Launchpad | pump.fun, 6EF8rrecthR5Dkzon8Nwu78 |
| Supply | 1,000,000,000, fixed, minted by the launch itself |
| Curve trade fee | 1.25% all in: 0.95% to pump.fun, 0.30% to the creator |
| After graduation | the 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 in | SOL |
| Cashback | off. 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
| Parameter | Value |
|---|---|
| Program | not deployed. It was on mainnet for twelve minutes on 9 August 2026 and was closed again, and What is built has the transactions |
| Collateral | USDC, six decimals, Drift spot market 0 |
| To the position | 50% to 100% of the creator fee, set at the mint, 80% by default |
| Leverage | 1x to 10x, set at the mint, 3x by default |
| Minimum push | 25 USDC of pending margin |
| Push slippage | 2% of margin times leverage. This is the whole leverage guard |
| Swap slippage | 2% against Pyth's SOL mark, which has to be under five minutes old |
| Redemption fee | 0.5%, kept by the vault for the holders who stayed |
| Redemption lock | none, you can redeem the moment you hold |
| Protocol cut | none |
Drift, read off its own accounts
| Parameter | Value |
|---|---|
| Venue | Drift v2, dRiftyHA39MWEi3m9aunc5 |
| Markets | 86 perp accounts, 48 active perpetuals, zero US equities |
| On this board | 38 |
| Taker fee | 3.5 bps at the base tier |
| Leverage cap | per market. 20x on SOL, BTC, ETH and XRP, 10x on most of the board, 2.99x on Kamino |
| Maintenance | per market. 2% on BTC and ETH, 3% on SOL, 5% on 22 of the 38, 16.67% on Kamino |
| Liquidator fee | per market. 0.50% on BTC and ETH, 0.75% on SOL, up to 2.5% on the thinnest |
| Mark | each market's own oracle, read off the market account |
The simulator, and where each number in it comes from
| Number | Read off |
|---|---|
| The curve | pump.fun's Global account: the virtual reserves, the supply and the opening and graduation caps |
| Creator fee | pump.fun's FeeConfig account, every step of the ladder |
| Leverage cap | the market's own initial margin on Drift |
| Maintenance | the market's own maintenance margin on Drift |
| Liquidator fee | the market's own liquidator fee on Drift |
| Open fee | 3.5 bps of notional, Drift's base taker tier |
| Not priced | the swap from SOL to USDC. The margin shown is before it |
| Nothing | if 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.
| Account | Value |
|---|---|
| Program | 2VwErTZtJY8B6SGjsrNKyJEX, an address that can never be deployed to again |
| Program data | 666aDmqeQRxnQ3m3jaqN8qKV, gone |
| Authority that closed it | 3WztDu6kwjDquBWVbdEyJACD, one key |
| Deployed | slot 438,260,608, 19:55 UTC on 9 August 2026 |
| Closed | slot 438,262,377, 20:07 UTC the same day |
| Size while it was up | 238,400 bytes of program, in a 238,445 byte account, sized to its exact length |
| Rent | 1.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
- Nothing was ever launched through the program. It owns no accounts, so there is no vault anywhere, no fee has been swept, no swap has run and no position has ever been opened. Its address has two transactions against it: the deployment and the close.
- No CPI into Drift or pump.fun has actually run. The bytes we would send them are checked, and the accounts we would send them with are checked against Drift's own IDL, and nobody has yet watched Drift accept them. The first coin through here is the first time any of that is tested by use rather than by a test suite. Its 33 tests pass, which is not the same claim.
- The swap from SOL to USDC needs somebody to run it. The program defines the boundary and checks the USDC arrived; it does not fetch a route, and margin does not become a position until an executor turns up.
Who can change it
The deploy that has been and gone was under a single key,
3WztDu6kwjDquBWVbdEyJACD, 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.