Graduation
Graduation is the hand-off from the bonding curve to the open market: everything the curve raised, plus the supply it reserved, becomes permanent liquidity on a public DEX. It is the moment the token stops being a launchpad token and becomes an ordinary, immutable ERC-20.
What triggers it
When the completion buy lands, the token enters the Completed state and curve trading stops. A platform keeper checks for completed tokens every couple of minutes and calls the graduation function for each - so the usual gap between “curve filled” and “trading on Uniswap” is minutes. The token page shows the interim state plainly rather than pretending the pool is already live.
What graduation does
- Frees the token. The transfer block on the token's canonical pool is lifted and the token contract's ownership is renounced. From this block on it is a plain ERC-20 with no owner, no mint and no pause - nobody, including Degenland, retains any power over it.
- Verifies the pool price. The Uniswap pool was created at launch (so the token could block it during bonding). Before adding liquidity, the contract checks the pool's price against the curve's end price; if someone manipulated the empty pool in the meantime, the price is re-pinned or, failing that, the whole graduation reverts rather than donating the raise to an attacker.
- Mints the position. The raised ETH is wrapped and deposited with the reserved ~26.7% of supply into a full-range Uniswap V3 position - liquidity at every price, like a v2 pool, so it can never fall out of range.
- Keeps the LP NFT. The position's NFT is held by the launchpad contract itself, permanently. That single fact is the trust story - see below.
On BNB Smart Chain the same sequence targets PancakeSwap V3, and on Solana the Meteora curve migrates to a DAMM v2 pool - venue details in Chains & venues. Steps 2-4 describe the default destination; a creator can opt into the hooked venue below instead - Uniswap V4 on Robinhood Chain, PancakeSwap Infinity on BNB Smart Chain.
The V4 venue (opt-in)
A creator can move their token's graduation to a Uniswap V4 pool - on BNB Smart Chain, to its exact analog, a PancakeSwap Infinity pool; same contracts ported, same election, same fee schedule, and everything in this section reads across - whose fee hook keeps charging the token's own creator-set swap fee (0.5%-3.35%) on every trade after graduation. Nothing about the split changes at graduation either: the creator keeps their whole chosen rate, and the platform's flat 0.30% and the referral rail's 0.05% ride on top of it exactly as they do on the curve. The pool itself charges no LP fee. On a token at the default 1% tier (total 1.35%) every trade pays 1.00% creator, 0.30% platform, 0.05% referrers - the same numbers before and after graduation, which is the point of electing the venue.
- Electing it is its own transaction, from the token page, creator-only, and only while the curve is filling - it is freely reversible until the curve completes, and binds the moment it does. It is not a launch parameter.
- The liquidity story is unchanged in substance: the raise plus the reserved supply becomes one full-range V4 position held by the platform's graduator contract forever - no path exists to withdraw it, same as the V3 LP NFT.
- The creator's post-graduation fees accrue in the hook per currency (ETH from sells, the token itself from buys) and are claimed from the token page with the creator's own wallet - there is no keeper in between and no vesting on this path. The locked position earns no LP fee to collect, so there is no crank and no second split on this path: the hook's accrual is the creator's whole post-graduation income.
On V3, a creator's income switches at graduation to a share of the pool's LP fees - roughly 0.20% of volume, whatever rate they picked. On V4 their own rate keeps running at the number buyers saw on the curve, in full and undiluted. What binds is the trade-off: V4 pools trade in the Degenland app (and on-chain), but not on external DEX frontends, which do not know the pool carries a hook, and the pool pays third-party liquidity providers nothing, so the locked position is the market.
Why a V4 pool is not on Uniswap
Every Degenland V4 pool on Robinhood Chain holds its liquidity raw in the Uniswap V4 PoolManager, not as a Uniswap PositionManager NFT. That one implementation detail answers the two questions this venue gets asked most.
- The liquidity cannot be pulled - by anyone. The launchpad contract owns the position and contains no function that removes it: not admin-gated, not time-locked, simply absent, in a contract that is not upgradeable. It is the V4 equivalent of a burned LP NFT - locked by absence of code. On launchpads that hand the position NFT to the creator (Clanker, Forge and their kind) removal is only restricted; the creator still holds the thing that could be withdrawn. Here nobody holds it, including us.
- Uniswap's own app shows nothing. A raw position has no NFT for their frontend to list, so the pool does not appear there and there is nothing to claim there. An empty Uniswap page is the expected result, not a missing pool.
The creator earns their full share either way. It accrues on-chain and is claimed in one click from the creator fee card on the token page, straight to the creator's wallet - see Claiming. What differs from a plain Uniswap position is the location of the button, never the amount.
“LP locked forever”, precisely
The launchpad contract holds the LP NFT and exposes exactly one thing that can be done with it: collecting trading fees. There is no function that withdraws the liquidity - not admin-gated, not time-locked, not upgrade-reachable in the intended deployment; it simply does not exist as a callable path. The graduated badge on a token page states a structural property of the contract, not a promise or a third-party locker's terms.
A concentrated (narrow-range) position can leave its range and stop providing liquidity. Full range cannot. Combining full range with a permanently held NFT means the floor liquidity from graduation exists at every price, forever.
LP fees after graduation
The locked position keeps earning the pool's trading fees (the 0.30% tier on Robinhood). A keeper collects them periodically and splits each side 35% platform / 65% creator:
- The ETH side of the creator's share follows the token's ETH-side fee routing - paid to the creator, buyback-and-burn, or staker rewards, exactly as during bonding.
- The token side follows the token-side routing - vested to the creator over 30 days, burned, or paid to stakers. Token-side fees only exist after graduation, because only the DEX pool earns fees in the token itself.
So a creator's income does not end at graduation; it changes source. The full arithmetic lives in Fees & earnings. A token that graduated to the hooked venue follows that section's own numbers instead: its pool charges no LP fee at all, so there is nothing for a crank to collect and no second split - the creator's own rate accrues in the hook and is claimed from the token page, without the routing destinations above.
Trading after graduation
Graduated tokens trade on the DEX, and the app is honest about that: for a V3 graduation the token page's trade panel becomes a link to the Uniswap pool rather than imitating a curve that no longer exists, and for a V4 graduation the panel trades the V4 pool directly in-app (V4 pools live in the platform's own pool manager, which external DEX frontends do not know). Charts, holders and fee claims all keep working on the token page; only the execution venue moves.
The recovery path
One failure mode needs an escape hatch: a completed curve whose graduation permanently reverts (for instance, a pool griefed beyond what the re-pin can fix). For that case an admin recovery exists, deliberately fenced:
- It only becomes callable
24 hoursafter curve completion - the keeper always gets first shot at a normal graduation, and an admin can never instantly seize a fresh curve. - It frees the token exactly like graduation would (unblocked, ownership renounced), so holders keep a fully functional ERC-20.
- The curve's raised ETH is swept to the platform treasury accrual - not to any individual - and the token is marked Recovered so its page never pretends it graduated.
This is a trusted-admin mechanism by design, which is why the admin role on mainnet is intended to be a multisig behind a timelock. It has a state of its own in the app precisely so that its use is visible, not quiet.
