graduation to AMM
graduation is when a token's bonding curve closes and the token migrates to a Meteora DAMM v2 pool. it's the moment hehe.fun stops being a launch venue and the token becomes a permanent asset.
interactive · graduation flow
trades on the Meteora DBC bonding curve. 2.5% total fee — Meteora skims 0.50% off the top; the 2.00% partner cut splits 80/10/10 (1.60% stakers · 0.20% creator · 0.20% treasury).
§what triggers graduation
a single condition: the curve's price climbs from its 30 SOL initial market cap up to the 400 SOL migration market cap — about ~86 SOL raised in quote-token terms.
once that threshold is hit, the next trade closes the curve atomically. Meteora DBC's program:
- takes the SOL accumulated in the curve
- takes the remaining unsold tokens (the AMM allocation, fixed at
20%of total supply on every hehe.fun launch) - seeds a new DAMM v2 pool with both as initial liquidity
- mints the LP position
- locks the partner-side LP under
permanent_lock_position— locked forever, but it keeps accruing trade fees
from this moment on, all trades happen on the DAMM v2 pool, not the curve. the curve is permanently archived.
§the migration option we pin
every hehe.fun curve is created with migration_option = MET_DAMM_V2. this is not a per-launch choice — it's a PoolConfig-level decision baked in at platform initialization.
DAMM v2 was the deciding venue because permanent_lock_position lets us lock LP forever and keep claiming the trade fees that accrue against it — same outcome as the Raydium creatorFee slot would have given us, cleaner mechanics, no platform-admin dependency.
§why DAMM v2 and not DAMM v1
Meteora exposes two AMM types via DBC's migration_option: DAMM v1 and DAMM v2. only DAMM v2 supports permanent_lock_position with ongoing fee accrual against the locked LP.
we force every hehe.fun token to migrate to DAMM v2. it's not optional in our config. this is the load-bearing decision behind our "fees forever" model — if we used DAMM v1 we'd have to choose between locking the LP (loses fee accrual) and keeping the LP unlocked (loses fair-launch property). DAMM v2 gives us both.
§how income actually flows after graduation
there are no NFTs to claim. trade fees on DAMM v2 accrue against the LP position itself, and the position-owner (our PDA) is entitled to claim them on demand:
§what stakers experience
before graduation: stakers earn from the 2.0% partner cut on every curve trade (trade × 1.60%).
after graduation: stakers earn from the same 2.0% partner cut on every DAMM v2 swap (trade × 1.60%) — the source shifts from the curve to the locked-LP claim, the math doesn't.
from the staker's POV, nothing changes. the same wallet keeps claiming the same way from the same pool. the source of SOL changes under the hood. that's a deliberate UX choice — graduation should be a milestone, not a discontinuity.
§what the token gets
graduation also unlocks:
- deeper liquidity — DAMM v2 pool has more SOL+token reserves than the curve had
- lower slippage for large trades
- AMM-compatible listing — DEX aggregators, charting tools, and bots can index the pool
- price discovery via arbitrage instead of curve-defined pricing
- permanently-locked LP keeps liquidity unwithdrawable — a fair-launch property visible to anyone reading the pool's state
§non-graduating tokens
reality check: most tokens won't graduate. the ones that don't:
- can still be held and stake-earned-from during their curve life
- when they go inactive, the staker pool stops growing (but doesn't shrink)
- existing claimable SOL remains claimable forever — no expiry
so even a "failed" token doesn't strand your stake.