Two markets, one ticker
Before graduation you trade the bonding curve. After graduation you trade the Uniswap V4 pool. The token page switches automatically — look for the Graduated badge.
On the curve
Open any token page, choose Buy or Sell, and pick your payment asset:
- Buy with stock — approve the underlying (e.g. AAPL) once, then buy. Works for every listed backing.
- Buy with ETH — only when the app shows an ETH route for that stock. ETH is swapped to stock first, then the curve buy runs in the same flow.
- Sell — sell tokens for stock, or for ETH when the reverse route is supported.
Slippage
The UI suggests slippage from estimated price impact. Confirm the minimum out in your wallet — curve trades revert with
Slippage if the market moves past your floor.Fee skim order (every trade)
Fees are always taken in the underlying stock, in this order:
function quoteBuy(uint256 stockInRaw)
external view
returns (uint256 tokensOut, uint256 priceUsd8After)
{
uint256 protocolCreator = protocolFeeBps() + creatorFeeBps();
uint256 feePC = (stockInRaw * protocolCreator) / BPS;
uint256 afterPC = stockInRaw - feePC;
uint256 tax = (afterPC * holderTaxBps) / BPS;
uint256 stockNetNorm = _to18(afterPC - tax);
// ... curve math on stockNetNorm ...
}- Protocol + creator (default 1% combined) come off first.
- Holder tax (if any) applies to what’s left.
- The remainder hits the curve (or V4 pool after graduation).
After graduation (Uniswap V4)
Curve buys/sells stop. The token page routes swaps through Uniswap’s Universal Router + Permit2 into the graduated pool. The pool’s LP fee is 0 — protocol, creator, and holder tax are enforced by StockBackHook so fee behavior matches the curve era.
/**
* @dev Protocol+creator on notional, then holder tax on the remainder
* (matches BondingCurve). Holder tax stock is taken to the curve
* and credited via `creditHolderTax`.
*/
function _payStockFees(...) internal returns (uint256 feeAmount) {
uint256 pcFee = (notional * pcBps) / BPS;
uint256 afterPC = notional - pcFee;
uint256 tax = (afterPC * holderTaxBps) / BPS;
// ...
}Reading the token page
- Live price — curve / Uniswap spot, refreshed continuously.
- +/- % — change vs ~24h ago from indexed price history (or since the first stored tick).
- Chart — defaults to 15m; switch intervals anytime.
- Details float — description and social links from on-chain metadata.
- Trades / Holders — recent activity and holder distribution.