# post graduation

A bonding curve graduates when **either** condition is met:

1. `getReserveUSDC() ≥ 10,000` USDC (the standard path), or
2. `tokensSoldFromCurve ≥ 757,500,000` (the entire curve supply has been bought).

The moment a buy or sell causes one of those to flip, `_maybeGraduate()` runs in the same transaction:

1. Redeem **all** remaining LT shares back into USDC.
2. Set `graduated = true`.
3. Emit `Graduated(finalReserveUSDC)`.
4. Send **$300 USDC** to the treasury (the `GRADUATION_TREASURY_USDC` cut).

The curve now has roughly **$9,700 USDC + 242,500,000 unsold tokens** inside it, frozen — no more buys or sells will succeed on the curve.

## Migration to Uniswap V2

The keeper bot is whitelisted as a migrator on the factory. Within seconds of graduation it calls:

```solidity
FactoryV3.migrateToUniV2(curveAddress)
```

That single transaction does, atomically:

1. Pulls `(242.5M tokens, $9,700 USDC)` from the curve into the factory.
2. Creates the Uniswap V2 pair if it doesn't exist.
3. For V2 tokens: calls `token.setPair(pair, true)` so the FOT hook activates only **after** the LP seed.
4. `IUniswapV2Router02.addLiquidity` deposits `(242.5M tokens, $9,700 USDC)` into the pair.
5. The LP tokens minted by `addLiquidity` are sent to `0x000…dEaD` — **permanently burned**.
6. Any dust USDC overshoot or leftover unsold tokens are swept to treasury / burned.

After this tx settles:

* The Uni V2 pair exists with the **exact** seed price: `$9,700 / 242,500,000 = $0.00004 per token`.
* Total supply × price = **$40,000 market cap** at graduation moment.
* LP supply is locked at `0xdead` — no one (not even the team) can withdraw it.

## What "permanent" means

* Liquidity cannot be removed. The LP NFT analog (Uni V2 ERC-20 LP token) sits in the burn address. The pair will trade until Base shuts down.
* The basefun-side fee mechanic (1% for V2 tokens) is enforced **by the token's `_update` hook**, not by the pair. No off-chain process is required to keep collecting fees — every Uni V2 swap automatically routes 1% to the keeper.

## What changes for traders

| Thing                    | Pre-grad                       | Post-grad                                    |
| ------------------------ | ------------------------------ | -------------------------------------------- |
| Where trades route       | `BondingCurveV2.buy/sell`      | Uni V2 router                                |
| Price discovery          | Virtual-liquidity AMM + LT NAV | Uni V2 reserves only                         |
| Fee in what asset        | USDC (inline split)            | Token (skimmed by FOT hook, swept by keeper) |
| Fee rate                 | 1%                             | 1% + 0.3% Uni V2 LP fee                      |
| Slippage UI              | Same                           | Same                                         |
| Underlying perp exposure | Yes, still active              | **No more** — graduation closes out the LT   |

Read [Fees post-bond](broken://pages/4a57e3da8c1f1277bc221ed972c454a8791b7fc5) to understand how the keeper turns token fees into USDC for the creator.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://basefun.gitbook.io/basefun-docs/post-graduation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
