Core Concepts

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:

ReserveValue
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):

text
tokensOut = tokenReserve − k / (ethReserve + ethIn)

where  tokenReserve = VIRT_TOKEN + realTokenReserve
       ethReserve   = VIRT_ETH   + realEthReserve

Price 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:

  1. The curve closes — no more buys or sells on the launchpad.
  2. The reserved LP_SUPPLY (200,000,000 tokens, 20%) plus the 8 ETH collected are deposited into a Uniswap V2 pool.
  3. The LP tokens minted by Uniswap are sent to the burn address — liquidity is locked forever, nobody can pull it.
  4. A Graduated(token, pair, ethLiquidity, tokenLiquidity) event is emitted. Trading continues on Uniswap.
Note.A buy that would push the raise past 8 ETH is partially filled up to the graduation line and the excess ETH is refunded in the same transaction — you never overpay to graduate a token.
Tip.Graduation was verified against the real Uniswap deployment on Robinhood Chain mainnet via a fork: a genuine pair is created with 200M tokens + 8 ETH and the LP is burned.