V4 · Return to Mainnet

IMFV4

A launch venue where every token earns its liquidity. Fixed supply. Bonded market. Locked forever.

Deploy a token. It trades on its own curve until enough is raised. The moment it does, liquidity migrates to a permanent pool — no admin, no delays, no rugs.

Bank the unbankable
Total supply
1B
fixed, minted at launch
Graduation cap
~$68K
~19.4 ETH market cap
Raised to graduate
~4ETH
≈ $14,000
Pool at graduation
100%
liquidity locked forever
§ 01 · The Curve

Every token climbs the same hill.

Price follows a fixed math curve — buyers bid it up, sellers push it back down. No team allocations, no seed rounds, no presale. When enough ETH is raised, the curve closes and liquidity becomes a permanent pool.

Market cap vs. tokens sold

x · y = k · virtual reserves
GRADUATION ~19.4Ξ · ~$68K MC 10Ξ 15Ξ 20Ξ 0 200M 400M 600M ~794.81M 1B
live price · on curve
market cap area
post-graduation · in pool
> session: v4 / mainnet class: primary issuance
§ 02 · Lifecycle

Launch. Bond. Graduate.

One path. No phases to skip, no queues to join. The token that hits the raise target in a given transaction is the token that gets its pool seeded in that same transaction.

01 Launch

Deploy a token

Pick a name, icon, and optionally arm a creator-only first-buy window (≤ 1 h, sticky once they buy). A fixed 1 B supply mints straight into the token's own market — no treasury, no team bag, no admin reach. The window gives the creator anti-snipe priority without the gas-race surface of an atomic prebuy. Every trade goes through the public curve.

02 Bond

Buyers climb the curve

Every buy nudges price up, every sell nudges it down. Creator earns 0.30% on the volume. Supply can only move through the curve until graduation.

03 Graduate

Last buyer flips the switch

The trade that crosses the target does three things in one transaction: caps itself at the target, seeds the pool, burns the LP. No waiting room.

04 Forever

Permanent liquidity

From here the token trades in a standard pool. The LP is burned at mint. Fees accrue into the burned position — depth only ever grows.

§ 03 · Anti-Snipe

The creator gets first dibs — if they want them.

Optional, per-launch. When armed, only the creator can buy until they choose to or the timer runs out. No atomic deploy-and-buy shortcut, no factory-held funds — just a configurable head start that closes the moment it's used.

Optional · creatorFirstBuy = true
default 5 min · cap 1 hour

The window closes on whichever comes first.

When a launch opts in, the factory injects the configured duration into the curve. The gate stays closed until either the time deadline expires or the creator lands their first buy. While both are open, only the current creator may call buy; everyone else reverts.

1 Time deadline
deploy CREATOR_WINDOW_END

Hard ceiling. Owner-configurable per future launch, capped at one hour by Factory.MAX_CREATOR_WINDOW.

2 First buy
deploy firstBuyDone (sticky)

The creator's first buy flips the flag. Sticky — a later sell back to zero supply does not re-arm the window.

window open ⟶ only CREATOR can buy  ·  window closed ⟶ anyone can buy
// inside BondingCurve.buy:
uint64 windowEnd = CREATOR_WINDOW_END;
if (windowEnd != 0 && block.timestamp < windowEnd && !firstBuyDone) {
    if (msg.sender != CREATOR) revert CreatorWindowActive(windowEnd);
}
// effects:
if (!firstBuyDone) firstBuyDone = true;

Opt out (creatorFirstBuy = false) and the factory injects 0 as the duration; the gate is dormant and anyone can buy from the first block. The creator's first buy, if any, is just a normal trade.

§ 04 · Terminal Trade

No overshoot. Ever.

A whale who sends 10 ETH into a curve that's one ETH from graduation does not inflate the pool. The trade is clamped to what's actually needed. The difference is refunded in the same transaction, before the token ships to them.

The clamp

Every buy is capped by whichever budget binds first — tokens left on the curve, or ETH left to the graduation target.

// 1. two caps on the trade
cap = min(
  supplyLeft,  // ETH to drain tokens
  ethToTarget  // ETH left to graduate
)

// 2. snap + refund
if (ethSent > cap):
  used   = cap
  refund = ethSent − used
  fee    = only on used

// invariant
raised ≤ target + 1 wei
§ 05 · Fees

Two pools. Three fee models.

Every venue on IMF V4 charges the same way: fees come out of the trader's input side, split between the creator, the protocol, and the pool's liquidity providers. What differs is the split.

Launch market

Flat 1.25% on every trade while the token is still on the curve. No LP here — there is no pool yet.

Creator
0.30%
Protocol
0.95%
LP
0.00%
Total
1.25%

Creator fees accrue to a claimable balance on the token — pull any time. Compatible with single-recipient or up-to-10-wallet splits.

Graduated pool · 25-tier dynamic schedule

After graduation, fees decay as market cap grows. Creators earn more on early growth; once the token is large, LPs capture most of the spread forever.

Total fee · by market-cap tier

tier 0 → 24
0 · 1.25% tier 6 tier 12 tier 18 24 · 0.30%
Tier MC (ETH) Creator Protocol LP Total
000 – 210.300%0.930%0.020%1.250%
0121 – 700.950%0.050%0.200%1.200%
0270 – 1170.900%0.050%0.200%1.150%
03117 – 1630.850%0.050%0.200%1.100%
04163 – 2090.800%0.050%0.200%1.050%
05209 – 4640.750%0.050%0.200%1.000%
06464 – 6960.700%0.050%0.200%0.950%
07696 – 9270.650%0.050%0.200%0.900%
08927 – 1,1590.600%0.050%0.200%0.850%
091,159 – 1,3900.550%0.050%0.200%0.800%
101,390 – 1,6220.500%0.050%0.200%0.750%
111,622 – 1,8540.450%0.050%0.200%0.700%
121,854 – 2,0850.400%0.050%0.200%0.650%
132,085 – 2,3170.350%0.050%0.200%0.600%
142,317 – 2,5480.300%0.050%0.200%0.550%
152,548 – 2,7790.275%0.050%0.200%0.525%
162,779 – 3,0110.250%0.050%0.200%0.500%
173,011 – 3,2430.225%0.050%0.200%0.475%
183,243 – 3,4750.200%0.050%0.200%0.450%
193,475 – 3,7060.175%0.050%0.200%0.425%
203,706 – 3,9370.150%0.050%0.200%0.400%
213,937 – 4,1680.125%0.050%0.200%0.375%
224,168 – 4,4000.100%0.050%0.200%0.350%
234,400 – 4,6310.075%0.050%0.200%0.325%
244,631+0.050%0.050%0.200%0.300%

Flat pool

Permissionless pools that opt into a simpler, fixed 0.30% split. No creator economics, no market-cap tiering — the rate never moves.

Creator
0.00%
Protocol
0.05%
LP
0.25%
Total
0.30%

Use it for tokens that should behave like any other pair — same shape as the canonical flat-fee pools on major AMMs.

§ 06 · Identity

Every token gets a name. Both ways.

When a launch deploys, its ENS subdomain — <label>.<name>.eth — is registered and the token's reverse record is wired back to the subdomain, all in one atomic transaction. Wallets and explorers display the name from the moment the token exists. Either every step lands or none of them do — there is no in-between state to confuse anyone.

deployAndRegister · five operations · one tx
+170 k gas vs. plain createToken

Five steps. One signature. All-or-nothing.

The deployer proxy bundles the token deploy, the forward record, the resolver wiring, the ownership transfer, and the reverse record into a single transaction. If any step reverts, the whole thing rolls back — including the token contract itself.

01 Deploy

Token + curve

Factory creates the (Token, BondingCurve) pair at deterministic CREATE2 addresses. Mint hits the curve. Identical to a direct factory call.

02 Forward

Subdomain claim

The proxy registers <label>.<name>.eth on the ENS Registry, sets the resolver to the canonical Public Resolver, and points the addr record at the new token.

03 Lock

Hand the subdomain to the token

The proxy transfers subnode ownership to the token contract. Token has no ENS-call code path of its own — the forward record is now immutable from the operator side.

04 Reverse

Reverse record, same tx

Token calls the canonical ENS Reverse Registrar with <label>.<name>.eth. Single-shot, locked forever. Wallets that resolve the token's address now get the name back.

forward and reverse, written in the same block, by the same operator signature
// inside IMFDeployerProxy.deployAndRegister:
(token, curve) = FACTORY.createToken{ value: msg.value }(...);
ENS_REGISTRY.setSubnodeRecord(PARENT_NODE, labelHash, address(this), resolver, 0);
PUBLIC_RESOLVER.setAddr(subnode, token);
ENS_REGISTRY.setOwner(subnode, token);
IToken(token).setEnsReverseName(string.concat(ensLabel, ".", parentName));

Authorization is one-time per parent name: the parent-name owner grants the proxy setApprovalForAll on the ENS Registry, and the factory owner authorizes the proxy via Factory.setDeployerProxy. After that, the operator runs deploys indefinitely with a single signed transaction per launch.

§ 07 · Guarantees

What the system refuses to do.

Hard invariants baked into the code. Not policies, not promises — things the contracts cannot do, to anyone, ever.

No rugs

Liquidity is burned

At graduation the pool's liquidity tokens are sent straight to an incinerator address. There is no owner, no unlock schedule, no path that returns the pool to anyone.

No admin

Every token is sealed

Protocol admin can configure future launches, not live ones. After a token deploys, its parameters are frozen. Nothing can pause it, upgrade it, or touch its balances.

No shadow pools

One market, until graduation

The token's transfer lock prevents anyone from opening a rival pool before the canonical one exists. Your bag is safe from split-liquidity shenanigans in the bonding phase.

No overshoot

Graduation price is predictable

Whale buys get clamped. The final raised amount is within a rounding wei of the target — so the pool always seeds at the same price, regardless of who finishes the curve.

No dead window

Atomic migration

The buy that crosses the target is the same transaction that seeds the pool and burns the LP. There is no in-between state for sandwichers or snipers to camp on.

No grief

Fees can never wedge trades

Creator and protocol shares pool into claimable balances, paid out on pull. A malicious fee recipient cannot block anyone else's trades — or anyone else's claim.

Forever

Creators keep royalties

The creator share follows the trader's input on every trade before and after graduation. One-shot redirect to a different wallet is allowed — then locked, by design.

Forever

Fees grow the pool

The LP portion of every post-graduation trade lands in the burned liquidity position. Depth only ever goes up. Traders sandwich themselves into a price floor.

Forever

Metadata is frozen

Name, symbol, icon, description — stamped at launch and unchangeable. No one renames the token, no one swaps the image, no one points the URI at something new.

Parity

Pump.fun economic parity

Every economic dimension matches pump.fun's 2026 schedule: 1 B supply, 1.073 B / 1.4 ETH virtual reserves, 1.25 % pre-grad split (0.30 % creator + 0.95 % protocol), 25-tier post-grad fee table, atomic graduation, creator splits up to 10 wallets, cashback mode, single-use fee-redirect lock. Two pump features absent here are launch-flow ergonomics, not economic surfaces: the mobile referrer surcharge (no mobile client) and atomic deploy-and-buy (replaced by the creator-first-buy window).

Beyond

Zero orphan dust at graduation

The curve / migration supply split (≈ 794.81 M / 205.19 M, exact wei) is mathematically tuned so the supply cap and the ETH target bind at the same moment. Every successful graduation drains the curve to literally zero tokens. Pump's clean-rounded 793.1 M / 206.9 M split orphans ≈ 60 K tokens at the curve forever.

Beyond

One-tx ENS forward + reverse

Optional: launch a token and atomically register <label>.<parent>.eth + its reverse name in a single transaction. Wallets, explorers, and aggregators see the human-readable name from the moment the token exists.