Curve Launch: how it works

A fixed supply sold on a constant-product curve with a virtual quote reserve, then handed, at the same price and in the same transaction, to its own Uniswap v4 pool whose liquidity no one can remove.

The bonding curve

Each launch mints its entire supply S once and opens a constant-product curve against the approved quote asset. The curve trades against a quote reserve Q + vQ, the real quote held plus a virtual reserve vQ, and a token reserve R. The same rule governs the pool after graduation, so the price is continuous.

cs = floor( S × (vQ + T) / (2 · vQ + T) ) R0 = floor( cs × (vQ + T) / T ) buy with net quote n: out = floor( R × n / (Q + vQ + n) ) sell of t tokens: gross = min( Q, (Q + vQ) × t / (R + t) ), less the trade fee

cs is the supply sold on the curve, R0 the starting token reserve (larger than cs, so part of it is virtual) and T the graduation threshold in real quote, net of fees. The price on the curve is (Q + vQ) / R. A sell never pays out virtual quote. From the opening of the curve to graduation the price rises by ((vQ + T) / vQ)2.

Testnet configurationValue
Supply S1,000,000,000 tokens
Virtual quote reserve vQ / threshold T1.4 ETH / 4.2 ETH
Sold on the curve cs / seeds the pool800,000,000 (80%) / 200,000,000 (20%)
Opening price / graduation price1.3125 × 10−9 / 2.1 × 10−8 ETH per token

The virtual reserve and the threshold are set per quote asset and snapshotted per launch; values may differ on other deployments.

Graduation

  • The buy that reaches the threshold is clamped to it; any surplus is refunded inside the same trade.
  • When Q reaches T, vQ is set to zero and R to the real remaining supply S − cs: the pool holds the raised quote T and the reserved tokens, and its price T / (S − cs) equals the last curve price exactly.
  • In that transaction the graduator opens the token's Uniswap v4 pool at the exact curve price and seeds it with the raised quote and the reserved supply, as one full-range position that it holds permanently. There is no LP token and no function to remove liquidity.
  • Supply can only fall afterwards, through holder burns and the buy-and-burn.
Deferred migration. If the hand-over fails inside the graduating trade, for example because the buy ran short of gas, trading continues on the in-core pool at a continuous price until anyone completes the migration.

Opening-buy tax

For a short window after a launch, buys pay a tax on top of the trade fee. It decays with the cube of the time left, so it falls fast and reaches zero at the end of the window.

tax = s0 × ((w − t) / w)³ for t < w, and 0 afterwards

s0 is the tier's starting tax, w its window in seconds and t the seconds since launch. Fee plus tax never exceeds 99% of the spend, so the buyer always keeps at least 1%. Compiled bounds: s0 at most 99%, w at most 60 seconds. Sells pay no opening tax.

Testnet values
Testnet tiers0wTax at 5 s10 s20 s
Strict tiers, the default included90%15 s26.7%3.3%0%
Standard tier50%30 s28.9%14.8%1.9%

Where the tax goes

The opening tax is fixed by the protocol per tier and is booked to the protocol treasury only. It is not shared with the creator, the platform or a referrer, so it cannot be recycled by self-dealing.

The launcher's initial buy

A buy made inside the launch transaction itself pays no opening tax (the trade fee still applies) and can receive at most 10% of the supply. It is the only exemption in the system.

A cost, not a prohibition. A same-block buyer who accepts the cost can still buy. The threat model quantifies what the tax does and does not prevent.

Fees and the ledger

Every trade pays a basis-point fee. On the curve the fee and its split are snapshotted from the launch tier; in the pool the fee hook charges one fee fixed for the deployment and books it to the same split. Nothing is pushed during a trade: every share is credited to a ledger in RtpCore and claimed by its owner.

ItemRule enforced by contract
Trade fee on the curveSet per tier, more than 0 and at most 5%; 1% on every testnet tier.
Fee in the poolOne value for the deployment, at most 1%; 1% on testnet.
SplitThe protocol share, the platform share and the referral share are set per tier and add up to at most 100%; the creator takes the rest, so no dust leaks. Each launch keeps the split of its tier at launch. Tier values are readable on-chain.
Missing recipientsWith no platform payee, or no valid referrer, that share goes to the protocol treasury.
Launch feePaid at launch to the treasury, at most 1 ETH.

Referral integrity. A referrer equal to the trader, the recipient, the launcher or the creator key is treated as no referrer. In pool trades the hook only sees the router, so the trader is taken to be the transaction's origin.

Creator keys and verified tiers

Creator fees accrue to an address key, or to a social-handle key that is later bound to a wallet through an attested proposal with a 72-hour public notice, during which the owner or the treasury can cancel it. A balance on an unbound handle can be claimed once the handle is bound, with no deadline; there is no sweep.

A tier can require the creator key to carry an identity attestation, read from the chain's attestation registry at launch and again when the creator key is transferred.

Buy-and-burn

After a launch migrates to its pool, a share of every fee, taken from the protocol's own share, accrues to that launch's buyback reserve: 5% of the fee on testnet, and a tier's protocol share can never be smaller. RtpBuybackEngine turns the reserve into buys in the pool whose whole output is burned in the same transaction. Anyone can call it; it has no owner, no setter and no pause, and holds nothing between calls.

Price and size protection, fixed at deploymentTestnet
Reference price: mean tick over at least this window, from the fee hook's oracle30 minutes
Band: a buy may push the price at most this far above the lower of the reference and the spot price100 ticks, about 1%
Size per call: share of the reserve, and share of the pool's quote depth10%; 0.5%
Rate limit: a token bucket of the pool's depth, refilled over0.5%; 30 minutes
Cooldown between calls, scaled by how much of the size was filled600 s
Caller's tip, out of the quote spent (compiled maximum 0.5%)0.1%

A front-run that moves the price past the band leaves no fill, and the call reverts without spending anything.

Rate-limited and not guaranteed. Buybacks may not run when the market is moving, and they are not a price support. The engine is part of v1.0.0-r4 and is deployed with the next testnet instance.
The deployed testnet instance. It comes from an earlier build (deployed 22 October 2026). Until the next instance deploys v1.0.0-r4, its owner can pause new launches and change the treasury at once, an attestor change waits 2 days, unbound social-handle balances can be swept after 60 days, the owner and the treasury are one address, and the buy-and-burn engine and the lens are not deployed.