Case study · launchpad · simulation
A coin launchpad, simulated
Bonding-curve launchpads let anyone start a coin in one step. A curve sets every price, and when the curve sells out the coin graduates into a pool whose liquidity can never be pulled. This case study rebuilds that design as a deterministic simulation run on play credits, then asks which launch rules hold up against sniper bots, bundled wallets and a creator who sells everything.
Play credits only. No value, may reset. No real funds. Credits never leave this page.
The curve
Each coin starts with virtual liquidity on both sides of a constant-product curve, so the product of the two sides never falls. Buying adds credits and takes coins out; selling does the reverse. The numbers copy the published curve constants of the best-known Solana launchpad (see Sources), with the credit side scaled up so it reads in whole play credits. Coin percentages are unchanged.
Chart data
| Coins sold | Credits in | Price, × first coin | Market cap |
|---|---|---|---|
| 0% | 0.00 | 1.0× | 2,795.90 |
| 12.5% | 305.39 | 1.2× | 3,394.11 |
| 25% | 680.01 | 1.5× | 4,207.05 |
| 37.5% | 1,150.40 | 1.9× | 5,351.30 |
| 50% | 1,758.67 | 2.5× | 7,034.76 |
| 62.5% | 2,575.84 | 3.5× | 9,658.26 |
| 75% | 3,731.85 | 5.0× | 14,078.20 |
| 87.5% | 5,492.56 | 8.0× | 22,405.60 |
| 100% | 8,500.54 | 14.7× | 41,088.02 |
- Supply
- 1,000,000,000 coins
- Sold on the curve
- 793,100,000 (79.31%)
- Held for the pool
- 206,900,000
- Starting market cap
- 2,795.90 cr
- Credits to graduate
- 8,500.54 cr
- Market cap at graduation
- 41,088.02 cr
- A first buy of 100 cr, after the fee
- 34,199,203 coins
- Curve fee, inside the buy
- 1.25% (0.30% creator, 0.95% house)
Two progress bars, not one. Counting coins sold makes a bar read half full when only 1,758.67 of 8,500.54 credits are in, about a fifth of the way. The board below shows both.
Four launch rules
Every run below is replayed under the plain rules most launchpads use (naked) and under a fair-launch preset that turns every defense on. One tick is one simulated second. Within a tick, orders go by priority fee and then by a seeded shuffle, which stands in for the race to land first in a block.
| Rule | Opening auction | Sniper fee | Early cap per wallet | Creator lock |
|---|---|---|---|---|
| Naked | — | — | — | — |
| Opening auction | 10 ticks, 30 cr per wallet with any priority fee inside, pro-rata fill at one price | — | — | — |
| Decaying sniper fee | — | 50% at open, falling to 0 over 60 ticks | — | — |
| Fair launch | 10 ticks, 30 cr per wallet with any priority fee inside, pro-rata fill at one price | 50% at open, falling to 0 over 60 ticks | 2% of supply for 120 ticks | cannot sell before graduation |
Four runs, naked and fair
Seed quiet-launch-1 · 1,800 ticks
A quiet launch
One coin, a small dev buy, light neighborhood trading and three patient bots. Nothing graduates; the curve just finds a level.
Nothing graduated: 2,113.46 credits came in and the risk score stayed low.
| Measure | Naked | Fair |
|---|---|---|
| PORCH status | on the curve | on the curve |
| PORCH credits in | 2,113.46 | 2,079.69 |
| PORCH holders | 33 | 33 |
| PORCH risk | low · 3 | low · 1 |
| PORCH first-minute coins held by snipers | 0% | 0% |
| Sniper fees to the house | 0.00 | 48.65 |
Seed snipe-war-1 · 900 ticks
Snipe war
Six sniper bots race for the first block of a new coin with priority fees. Run it under naked rules, then under fair rules, and compare who holds the first minute's supply.
Snipers held 46.1% of the coins bought in the first minute under naked rules, and 18.9% under fair rules.
| Measure | Naked | Fair |
|---|---|---|
| BOLT status | on the curve | on the curve |
| BOLT credits in | 2,577.25 | 2,604.89 |
| BOLT holders | 41 | 41 |
| BOLT risk | low · 10 | low · 1 |
| BOLT first-minute coins held by snipers | 46.1% | 18.9% |
| Sniper fees to the house | 0.00 | 139.17 |
Seed dev-dump-1 · 1,200 ticks
Dev dump
The creator buys close to the 5% cap, four wallets it funded buy in the same tick, and four minutes later the creator sells everything. The risk panel should say so before it happens.
Naked rules: DEV_DUMP and BUNDLED and WHALE. Fair rules: no flags — the creator lock refused the sale and the opening auction capped the bundle.
| Measure | Naked | Fair |
|---|---|---|
| SLICE status | on the curve | on the curve |
| SLICE credits in | 3,509.83 | 3,118.98 |
| SLICE holders | 45 | 46 |
| SLICE risk | high · 23DEV_DUMPBUNDLEDWHALE | low · 2 |
| SLICE first-minute coins held by snipers | 0% | 0% |
| Sniper fees to the house | 0.00 | 73.15 |
Seed graduation-run-1 · 2,400 ticks
Graduation run
A busy coin fills its curve, graduates into a pool with the liquidity tokens burned, and keeps trading there. A second coin launches later and competes for attention.
MOON graduated at tick 265 into a pool with its liquidity tokens burned, then kept trading there.
| Coin | Naked | Fair |
|---|---|---|
| MOON status | graduated, tick 265 | graduated, tick 277 |
| MOON credits in | 8,500.54 | 8,500.54 |
| MOON holders | 165 | 165 |
| MOON risk | low · 5 | low · 3 |
| MOON first-minute coins held by snipers | 0% | 0% |
| GRID status | on the curve | on the curve |
| GRID credits in | 2,790.03 | 2,808.98 |
| GRID holders | 69 | 75 |
| GRID risk | low · 3 | low · 1 |
| GRID first-minute coins held by snipers | 0% | 0% |
| Sniper fees to the house | 0.00 | 249.31 |
Credits are conserved in every run: what wallets, the curve, the pools, held creator fees and the house sinks hold at the end equals what the wallets started with. Under fair rules the sniper fee also lands on ordinary buyers in the first minute; that cost shows in the last row.
Live board
Play any of the four runs here, or launch your own coin into one. The engine, bots and screener are the same code the exhibits used. You trade from a wallet that starts with 1,000 play credits; every action you take (a launch, a trade, an approval, a kill switch, a policy edit) is a record in the run's action log, applies at the next tick, and travels in the replay link. Nothing is sent anywhere.
How the simulation works
- Whole numbers. Every amount is a whole number of micro-credits, and every division rounds toward the curve, so the curve can always buy back every coin outstanding. A test checks that across 10,000 random trades, along with quotes that equal fills.
- One price, fees inside. A buy names one amount, and the curve fee, any sniper fee and any priority fee all come out of it. Fee rates are counted in millionths, so the half-basis-point pool tiers are exact, and the creator, house and pool lines always add up to the whole fee, with the house taking the rounding.
- Graduation. The buy that sells out the curve fills what is left at curve prices; any remainder buys from the new pool at its opening price in the same step. The pool's liquidity tokens are burned, so nobody can pull the liquidity, and the price moves less than 0.1% across the switch.
- Bots only propose. Each proposal passes a policy gate that checks, in order: killed, expired, blocked coin, not permitted, cooldown, rate, per trade, window cap, position, slippage, priority fee, credits, needs approval. The first failing check is the reason on record, and every refusal is part of the logged run. Trades above a bot's approval line (25 cr by default) wait for a person: on the board they go to the approval queue under Bots & approvals (or are refused, if you choose), and a queued trade is void after 30 ticks or as soon as the bot's policy or credits change. The Stop buttons are the gate's kill switch.
- Risk. The score weighs the creator's holdings, same-tick buys from wallets the creator funded, other buys in the first five ticks, how much the top ten holders hold and how much the creator has sold. Hard flags: DEV_DUMP, BUNDLED, WHALE and WASH.
- Trending. Breadth of buying (the square root of volume per wallet cluster), distinct makers, trade count, price change, holder growth and liquidity, each compared across coins, then scaled down for concentration, warm-up and age. Every input is kept, so any rank can be explained.
- Same seed, same story. A run, its seed, its rules, its approvals mode and its action log always produce the same event log, which is what a replay link carries. Each run's log hash is pinned in the tests under every rule set and both approvals modes, and a run with no presses here ends on that same hash; configuration hash
ba27728bf58b199d.
| Bot strategy | What it does |
|---|---|
| Market maker | Keeps a ±4% band around the 60-tick average on the busiest coin: sells 2% of its holdings above the band, buys 20 cr below it. |
| Momentum | Buys 30 cr when price is up 8% over 30 ticks with buys outnumbering sells 1.5 to 1; exits on a 12% trailing stop. Its buys sit above the default approval line of 25 cr. |
| Sniper | Buys 100 cr once per coin, its priority fee inside: as an order during an opening auction, or within 60 ticks after trading opens while any sniper fee is at most 10%. Sells at 2.5× or after 300 ticks. |
| Dip buyer | Buys 20 cr when price sits 20% under its 300-tick high while holders still grow; sells at +30% over its average price. |
| Holder | Buys 20 cr of coins with a risk score under 25 once they are 30 ticks old, holds to graduation, then sells half. |
What a live version would need
This page is stage A of three in the plan (docs/plans/2026-10-19-launchpad-case-study.md). A shared version on the PointCast devnet (stage B) would need Mike's go-ahead, a house account that follows the chain, and a kill switch that really stops an agent: on the devnet that is a fresh mandate with no permitted kinds, because clearing a mandate lifts every limit. A production version (stage C) is described in the plan only as a comparison: an audited program, an indexer and wallet policies. None of that is planned or built, and nothing here would ever pay out.
Sources
- pump-fun/pump-public-docs, program README: the curve constants copied here: 30 of virtual quote liquidity, 1,073,000,000 virtual coins, 793,100,000 coins sold on the curve