Learn

How bonding curves work

The formula Vectr's curves run, with the live parameters from Robinhood Chain: what sets the starting price, how each buy moves it, where the fee goes, and the exact point at which a curve graduates. Every number below is computed from GET /config at render time.

Updated

Definition

A market with no order book

A bonding curve is a contract that holds a token and its pairing asset and quotes a price from a formula. Buy, and the price of the next unit goes up; sell, and it comes down. Nobody places orders and nobody provides liquidity: the contract is the counterparty to every trade, and the pairing asset it accumulates is the raise.

On Vectr every curve is a clone of VectrBondingCurve, created by the factory in the same transaction as the token. The pairing asset is ETH or a Robinhood Stock Token; the curve is born quoted in that asset and never changes.

Formula

Constant product over virtual reserves

k = virtualQuote * virtualTokens                       // fixed at launch

buy(amountIn):
  fee       = amountIn * 97 / 10000                  // 0.97%, taken first
  net       = amountIn - fee
  tokensOut = virtualTokens - k / (virtualQuote + net)
  virtualQuote  += net;  virtualTokens -= tokensOut

sell(tokensIn):
  quoteOut  = virtualQuote - k / (virtualTokens + tokensIn)
  fee       = quoteOut * 97 / 10000                  // taken from what you receive
  virtualTokens += tokensIn;  virtualQuote -= quoteOut

spot price = virtualQuote / virtualTokens

"Virtual" means the reserves start above zero without anyone depositing anything. A fresh ETH curve behaves as if it already held 1.5 ETH and 1,073,000,191 tokens, which is what gives it a finite starting price of 1.398e-9 ETH instead of zero. The real ETH in the contract starts at zero and grows with every buy; that real balance, not the virtual one, is what graduation measures.

Parameters

The live ETH curve

Virtual quote reserve at launch
1.5 ETHquoteAssets[].virtualInit
Virtual token reserve at launch
1,073,000,191platform.launch.virtualTokensInit
Starting price
1.398e-9 ETH per token
Tokens the curve can sell
800Mof a fixed 1B supply; 200M is reserved for the graduation position
Fee per trade
0.97%0.30% creator, 0.67% Vectr
Graduation threshold
4.2 ETH raisedreached after about 790.63M tokens are sold
Sell-out
4.439 ETH grossbuys every curve token in one go, 4.396 ETH net of fee
Worked example

Two buys on a fresh curve

Buy 1: send 0.1 ETH
66.45M tokensfee 0.00097 ETH, 0.09903 ETH into the curve, 6.65% of total supply
Price after buy 1
1.589e-9 ETH+13.64% from the start
Buy 2: send 1 ETH
384.96M tokensfee 0.0097 ETH; ten times the money buys 5.8x the tokens, because the price rose as it filled
Price after buy 2
4.166e-9 ETH+198.0% from the start; the curve now holds 1.0893 ETH

Price impact is the whole point: buy 2 paid an average of 2.572e-9 ETH per token against a spot of 1.589e-9 before it started. Selling the same tokens straight back would return less than 0.9903 ETH, once from the curve moving down as the sell fills and once from the 0.97% fee on the way out. Nothing about this is hidden; getBuyQuote and getSellQuote on the curve return the exact numbers before you sign.

Supply

Where the tokens go

A fixed 1B supply is minted to the curve contract at launch: 800M is sold on the bonding curve and 200M is held back for the Uniswap liquidity position at graduation. No presale, no whitelist, no team allocation.

At the 4.2 ETH threshold about 790.63M of the 800M curve tokens have been sold. The 9.37M unsold plus the 200M reserve go into the Uniswap V3 position together with the 4.2 ETH, which prices the pool at 2.006e-8 ETH against a final curve spot of 2.019e-8 ETH: within 0.6%, so the hand-off does not gap the price.

Graduation

How the curve ends

The buy that pushes the curve's real ETH balance to the threshold, or sells its last token, is also the buy that ends it. Inside that transaction the curve hands its ETH and the remaining supply to the migrator, which creates the token/WETH pool on Uniswap V3, mints one full-range position and gives it to a locker contract with no withdrawal function. After that, buy and sell on the curve revert and trades route through Uniswap. The next guide covers every step; the graduation reference covers the tests that prove it.

Risk

What the formula does not protect you from

A curve makes the price honest, not safe. Early buyers hold tokens the next buyers pay more for, and a curve with little ETH in it moves violently in both directions. Most launches never reach the threshold. The creator earns 0.30% of every trade whether the price goes up or down. Read the risk disclosure before trading, and verify any number on this page against the contract source.

FAQ

Bonding curve questions

What is a bonding curve?

A bonding curve is a smart contract that sells and buys back a token at a price set by a formula rather than by an order book. On Vectr the formula is constant product (x * y = k) over virtual reserves: the more of the token that has been bought, the higher the next unit costs. There is no market maker and no counterparty; the contract itself is the market until graduation.

What is the starting price of a token on Vectr?

1.398e-9 ETH per token: the virtual quote reserve (1.5 ETH) divided by the virtual token reserve (1,073,000,191 tokens). Every launch starts at the same price because the virtual reserves are the same for every curve on a given pairing asset.

How much of a token's supply is sold on the curve?

A fixed 1B supply is minted to the curve contract at launch: 800M is sold on the bonding curve and 200M is held back for the Uniswap liquidity position at graduation. No presale, no whitelist, no team allocation.

How are fees charged on a bonding curve trade?

0.97% of every trade: on a buy it is taken from the ETH you send before the formula runs; on a sell it is taken from the ETH you receive. 0.30% accrues to the token's creator and 0.67% to Vectr. Rates are owner-adjustable in the FeeCollector and published live by GET /config.

When does a bonding curve graduate?

When the ETH actually held by the curve reaches 4.2 ETH (about 790.63M tokens sold), or when all 800M curve tokens are sold, whichever comes first. The buy that crosses the line also creates the Uniswap V3 pool and locks the liquidity.

Can the price on a bonding curve be manipulated?

The price is a pure function of how much has been bought, so it cannot be spoofed with fake orders, but a large buyer moves it up and a large seller moves it down exactly as the formula says. There is no liquidity beyond the curve's own reserve before graduation, so selling a big position into a thin curve is expensive. That is a property of the design, not a bug.