Docs / Pons / The Bonding Curve

The Bonding Curve

Every Pons token trades on its own curve contract until graduation. The app's entire Live view is built on these calls — verified against a live curve.

Trading functions

buy(uint256 quoteIn, uint256 minTokensOut, address recipient) payable returns (uint256)
sell(uint256 tokensIn, uint256 minQuoteOut, address recipient) returns (uint256)

Argument order matters: quote in first, slippage floor second, recipient last. buy is payable — msg.value is the ETH in. sell requires a prior approve on the curve for the token amount (Bundle's Lock step pre-stages this).

State reads

CallReturns
getReserves()quote + token reserves — the price source
phase()0 = bonding curve, later = graduated
currentSnipeTaxBpslive decaying tax in basis points
graduation thresholdthe quote amount that triggers v4 migration
pair token0x0 = native ETH pair

Pricing

Spot price = quoteReserve / tokenReserve ETH per token. The app computes this directly — buys and sells derive their slippage floor (default 5%) from live reserves at send time, so a stale quote can never silently pass.

Events

CurveBuy(buyer, quoteIn, tokensOut) and CurveSell(seller, tokensIn, quoteOut) drive the chart candles and trade feed. The sniper table additionally scans Transfer events on the token itself.

Verified numbers

  • buy(0.001 ETH) simulation returned 545,605 tokens on a live curve — matching Pons's documented formula to the wei
  • pons.py --validate reads all of the above against mainnet: VALIDATION OK