fomopad
Docs / Trading

The bonding curve

How the price forms before graduation, with the numbers.

The formula

A constant product over virtual reserves, the shape every launchpad trader already knows:

(virtualEth + ethRaised) × (virtualTokens − tokensSold) = k

virtualEth    = 2 ETH
virtualTokens = 1,073,000,000
k             = fixed at launch

A buy of ethNet (after the fee) gives tokensOut = vTok − ceil(k / (vEth + ethNet)). A sell of tokensIn returns vEth − ceil(k / (vTok + tokensIn)) before the fee. The virtual reserves give the curve a non-zero starting price and a smooth shape; only the real ETH (ethRaised) ever leaves the contract.

The numbers

Default curve
Opening price≈ 0.0000000019 ETH per token
Curve supply800,000,000 tokens
Sells out when raised≈ 5.86 ETH, net of fees
Closing price≈ 0.000000029 ETH per token
Opening → closing≈ 15.5×
Market cap at close≈ 29 ETH fully diluted

The protocol owner can change the virtual reserves for future launches, within bounds. A live curve keeps the shape it launched with, forever.

Same path for everyone

The curve has no memory of who bought, only how much. Two people buying 0.5 ETH each land exactly where one person buying 1 ETH does, to the wei. There is no allocation, no whitelist and no dev supply: the creator's only edge is that their first buy, if any, happens inside the launch transaction.

Why sells always clear

A sell returns at most vEth − k/(vTok + in), which for any in ≤ tokensSold is at most the ETH the curve holds. Before graduation, the only tokens outside the contract are the ones the curve sold, so nobody can ever ask for more than is there. The contract checks it anyway, and the invariant suite hammers it with random trading. See Security.