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
| Call | Returns |
|---|---|
getReserves() | quote + token reserves — the price source |
phase() | 0 = bonding curve, later = graduated |
currentSnipeTaxBps | live decaying tax in basis points |
| graduation threshold | the quote amount that triggers v4 migration |
| pair token | 0x0 = 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 weipons.py --validatereads all of the above against mainnet:VALIDATION OK