Migration
What "migrated" means, how to compute market cap and progress, and how much ETH is left to the threshold.
Straight talk
mint.fast does not migrate liquidity. There is no bonding-curve exit, no new pool, no move of LP NFT, no "graduate" transaction.
Coins trade on Uniswap v4 from block zero. In the product, migrated means the coin's ETH market cap reached a fixed milestone:
LISTING_CAP_ETH = 18.67When market cap reaches 18.67 ETH, mint.fast marks the coin as migrated. That status sticks in the app. Treat it as a badge, not a contract mechanism.
Market cap
From launchpad state:
spotPriceWad = state(token).spotPriceWad // ETH per token, 1e18 scale
marketCapEth = spotPriceWad * 1e9 / 1e18Same idea from a price feed: ethPerToken * 1_000_000_000.
Launch sits near 1.5 ETH mcap. Migrated is 18.67 ETH mcap.
Progress
progress = min(1, marketCapEth / 18.67)
percentToMigration = progress * 100Example: mcap = 9.335 ETH → progress = 0.5 → 50% of the way.
How much mcap is left
mcapLeftEth = max(0, 18.67 - marketCapEth)That is market-cap headroom in ETH terms, not "send this much ETH into a buy." A market buy moves price along the curve, so ETH spent ≠ mcap gained one-for-one.
Worked examples
Read progress from chain
const [, , spotPriceWad] = await publicClient.readContract({
address: launchpad,
abi: launchpadAbi,
functionName: "state",
args: [token],
})
const LISTING_CAP = 18.67
const marketCapEth =
(Number(spotPriceWad) / 1e18) * 1_000_000_000
const progress = Math.min(1, marketCapEth / LISTING_CAP)
const mcapLeft = Math.max(0, LISTING_CAP - marketCapEth)
console.log({
marketCapEth,
progressPct: progress * 100,
mcapLeftEth: mcapLeft,
migrated: marketCapEth >= LISTING_CAP,
})Sample table
| Spot (ETH / token) | Market cap (ETH) | Progress | Mcap left |
|---|---|---|---|
| 1.5e-9 | 1.5 | ~8.0% | 17.17 |
| 5e-9 | 5.0 | ~26.8% | 13.67 |
| 9.335e-9 | 9.335 | 50% | 9.335 |
| 1.867e-8 | 18.67 | 100% | 0 |
Spot × 1e9 = mcap because supply is 1e9 tokens.
Why 18.67?
It is a fixed product milestone used by mint.fast for the migrated badge. It is intentionally not encoded in the smart contracts, so changing it does not require a contract upgrade. It also does not move with ETH/USD. Progress is ETH-denominated.
What traders should remember
- After "migration," you keep trading the same pool the same way.
- Fee rules and locked LP do not change at the threshold.
- The badge is informational, useful for discovery tabs like "Almost migrated" and "Migrated."