Create
Documentation
Guides

Lifecycle

A launch moves through four states. Everything an integration does depends on which one it is in, so read the phase rather than inferring it.

code
  launchToken / launchAndBuy
            |
            v
  [0] NotGraduated  ── curve.buy / curve.sell ──┐
            |                                    |
            |  sellable allocation hits zero     |
            v                                    |
  [1] Swept          NO TRADEABLE VENUE          |
            |                                    |
            |  createGraduatedPool               |
            v                                    |
  [2] PoolCreated  ── UniversalRouter ───────────┘

0 · Launch#

The factory deploys a curve and a token via CREATE2, mints the whole supply to the curve, takes the launch fee, and writes a launch record. Trading is live immediately.

The curve reserves a fraction of supply that it will never sell — that reserve is what seeds the pool at graduation, and it is why the curve has a hard stop rather than an asymptote.

1 · Curve trading#

Constant product against a virtual reserve: the curve behaves as though it already held phantomQuote of the quote asset, which sets the opening price. Every fee comes off the quote leg.

The launch is finished when the sellable allocation reaches zero, which is by construction the same moment the real reserve reaches the graduation threshold.

2 · Sweep#

factory.graduate(token) sets the curve's graduated flag, sweeps fees, and moves the reserves into the factory. Phase becomes 1.

In this phase the token has no venue. The curve is closed and the pool does not exist. Normally it lasts one instruction, because the crossing buy performs both steps — but it can persist. See Graduation.

3 · Pool seed#

factory.createGraduatedPool(token) initialises the V4 pool at the curve's closing price, registers it with the hook, mints a full-range position directly to the locker, and permanently locks the leftover supply. Phase becomes 2.

The locker has no withdrawal function of any kind. Liquidity and the burned supply are unrecoverable by anyone, including the contract owner. That is the point.

4 · Pool trading#

Ordinary V4 swaps through UniversalRouter, with the hook taking its fee on the unspecified leg of each swap. The curve is never used again.

Rescued (phase 3)#

A terminal state reached only by owner intervention, after a delay, when a swept launch cannot be seeded because the quote asset can no longer deliver an exact transfer. Reserves are released to a single recipient. It exists so that a broken quote asset cannot strand funds forever; you will not see it in normal operation.