Bonding curve & graduation
Each token trades against a constant-product bonding curve with virtual reserves until it raises 8 ETH, at which point it graduates to Uniswap.
The invariant
Pricing uses the same constant-product rule as an AMM, x · y = k, but seeded with virtual reserves so the curve has a sane starting price and no early-buyer can drain it:
| Reserve | Value |
|---|---|
Virtual token reserve (VIRT_TOKEN) | 200,000,000 |
Virtual ETH reserve (VIRT_ETH) | 2 ETH |
Real token reserve at launch (CURVE_SUPPLY) | 800,000,000 |
Constant k | (VIRT_TOKEN + CURVE_SUPPLY) · VIRT_ETH |
The token side of the curve is VIRT_TOKEN + realTokenReserve and the ETH side is VIRT_ETH + realEthReserve. Their product is held constant across every trade.
Buying
A buy adds ETH to the pool and removes tokens. For an input of ethIn (after the 0.5% fee is skimmed):
tokensOut = tokenReserve − k / (ethReserve + ethIn)
where tokenReserve = VIRT_TOKEN + realTokenReserve
ethReserve = VIRT_ETH + realEthReservePrice rises with every buy because each unit of ETH buys fewer tokens than the last. Preview it without sending a transaction via quoteBuy(token, ethIn) or GET /api/v1/quote.
Selling
A sell is the mirror image: tokens go in, ETH comes out, the 0.5% fee is taken from the ETH. You must approve the launchpad to move your tokens first (a standard ERC-20 approve). Quote it with quoteSell(token, tokenAmount).
Why these exact numbers
The virtual reserves are chosen so that selling the entire 800M curve supply collects exactly the graduation target:
graduation = VIRT_ETH × CURVE_SUPPLY / VIRT_TOKEN = 2 × 800M / 200M = 8 ETH
So "the curve is sold out" and "the token graduates" are the same moment by construction.
Graduation
When cumulative real ETH reaches GRADUATION_ETH (8 ETH), the next trade triggers graduation automatically:
- The curve closes — no more buys or sells on the launchpad.
- The reserved
LP_SUPPLY(200,000,000 tokens, 20%) plus the 8 ETH collected are deposited into a Uniswap V2 pool. - The LP tokens minted by Uniswap are sent to the burn address — liquidity is locked forever, nobody can pull it.
- A
Graduated(token, pair, ethLiquidity, tokenLiquidity)event is emitted. Trading continues on Uniswap.