How a launch runs,
from the first buy to permanent liquidity.
Every token starts on a bonding curve that prices itself from supply alone. When that curve sells out, two public actions close it — finish graduation and seat liquidity — and from that block on the market runs on the DEX with the liquidity held in escrow.
Nothing here is a policy statement: every phase below is a function in a verified contract, and every figure in the snapshot is read from the chain when this page loads.
Four phases, one curve, and no manual bookkeeping between them.
Supply is chosen at launch and split once: 75% is sold progressively on the curve, 25% is reserved to fund the market at graduation.
The curve never depends on an oracle or an external price feed: reserves are virtual, the product of the reserves is the invariant, and the split above is fixed when the token is created.
Launch — the token and its curve are created together
CreateYou choose the supply, the opening market cap and your creator fee. The factory deploys the token and its bonding curve in one transaction, moves the entire supply onto the curve and indexes the launch. Supply is fixed at deploy: the token has no owner, no mint function and no pause.
Bonding curve — price is a function of supply
BondEvery buy and sell settles against the curve virtual reserves, so the price is a pure function of supply and reproducible by anyone. Fees are split between the platform and the creator on every fill, anti-snipe caps apply from the first block, and holders can only trade with the curve.
Curve sells out — the curve announces completion
CompleteWhen the last curve token is bought the curve flips to complete and emits CurveCompleted. The contract immediately tries to migrate on its own; if that is not possible in the same transaction it defers the migration and reports it, waiting for anyone to trigger it afterwards.
Graduation — finish, seat liquidity, open the market
GraduateTwo public actions close the curve: finish graduation buys whatever is left with any excess refunded on the spot, and seat liquidity calls migrate(), which seeds the DEX pair, mints the LP into the escrow vault and opens token transfers. From that block on, the market runs on the AMM.
Two buttons finish a launch — and anyone can press them.
Neither action is reserved to the creator. Both are open calls on the curve, so a launch can never be stalled waiting for one wallet to act.
Finish graduation
Near sold outShown while the curve is still active but effectively sold out: progress at 99.9% or a single token left. It sends a capped buy for the remainder, so the curve fills what it can and refunds the rest of your input in the same transaction — you never overpay into an empty curve. The moment the curve supply reaches zero the curve flips to complete and runs the migration in that same transaction.
Seat liquidity
Curve sold outOnce the curve is complete, migration is a single permissionless call. It creates the pair if it does not exist yet, refuses any pair that already holds outside liquidity, seeds it with the raised USDC and the LP reserve, mints the LP straight into the escrow vault, records the migration and opens token transfers for everyone.
Guardrails that ship with every curve, not with every promise.
The limits below live in the curve contract and are derived from the supply, so they are enforced from the first block of every launch.
Counted in supply terms, so the cap scales with every launch and applies from the first block.
No single wallet can hold more than the cap while the curve is live, which keeps the distribution readable.
Public buys are throttled during the opening blocks of every curve, which neutralises front-running bots.
Platform fee is bounded between 0.5% and 5% and the creator share is capped at 5%, so the two can never exceed the ceiling.
Liquidity that stays put.
At graduation the LP is minted straight into an escrow vault. The vault holds the position, streams swap fees to the creator and the platform, and has no admin path of its own.
- Permanent by default — or time-locked between 7 and 3,650 days at the creator choice.
- Permissionless harvesting — anyone can trigger fee collection, and the payout always follows the recipients recorded when the vault was created.
- Deflationary fee side — the token portion of every pool fee is burned, so the fee stream adds no sell pressure.
- Reserve floor — the vault always keeps at least a tenth of its position, so the pool is never drained and the stream stays alive.
- No admin path — the escrow has no owner, no admin function and no upgrade, so custody rules are fixed at graduation.
Creator share accrues on every curve fill
Your share is charged from the USDC side of every buy and sell, recorded on the curve and withdrawable whenever you like — no lockup and no platform approval step.
Earnings continue as real swap fees
Pool fees accumulate in the vault. Harvesting is open to anyone and always pays the recorded recipients: fees are pushed to the wallet, or queued for a pull claim if the wallet cannot accept a transfer at that moment.
A timed lock keeps a claim path, a permanent lock does not
With a lock duration the creator may withdraw the position once the lock expires, after unharvested fees are separated out first. With a permanent escrow the principal has no withdrawal path at all — the fee stream keeps running regardless.
Read the flow in the source, not in a deck.
The curve, the token and the escrow are published and verified. Every step described on this page resolves to a function you can inspect and call yourself, independently of this interface.
The snapshot reads getLaunchConfig() and getSupplyBounds() on the factory, so supply range, market-cap bounds, fee split and launch count are never hardcoded here. The live example panel reads getFrontendState() on the newest curve and derives its phase from progress, complete and migrated — the same rule the token page uses to decide between finish graduation and seat liquidity. Vault figures shown on a token page follow the same principle, reading pendingHarvest() and claim balances directly. If a read fails, the interface reports it as unavailable rather than showing a stand-in number.