Pre-launch. The protocol is not publicly live yet. This documentation describes the contracts as implemented; deployed addresses are published at launch.

Bonding Curve

Price discovery before graduation. A quadratic curve with a linear floor, plus a tax that decays as supply grows. Denominated in the chain's native asset; the shape is identical everywhere.

Lots, not tokens

All curve trading is denominated in lots. One lot is 1,000 × 10⁹ (1,000 tokens). The curve runs from 60,000 lots (the deployer's pre-mint) to 800,000 lots, so 800,000 − 60,000 = 740,000 lots are actually purchasable.

ConstantValue
LOT_SIZE1,000 × 10⁹ (1,000 tokens)
INITIAL_SUPPLY_LOTS60,000
MAX_SUPPLY_LOTS800,000
MIN_LOTS1
MAX_USER_LOTS36,000

Pricing

Let x be scaled supply above the floor and n the scaled trade size:

n       = delta_lots * 1000
x       = (supply_lots - INITIAL_SUPPLY_LOTS) * 1000

x_start = x            (buy)   |  x - n  (sell)
x_end   = x + n        (buy)   |  x      (sell)

quad    = PRICE_SLOPE * (x_end^2 - x_start^2) / TWO_TIMES_CAP
linear  = P_START * n
base    = quad + linear

Integrating the marginal price over the traded range in one step means a trade of any size costs exactly what the same volume would cost as a sequence of single-lot trades. There is no discount for size and no penalty.

Dynamic tax

The tax is computed from the average supply across the trade, so it is symmetric between buys and sells of the same range:

avg_supply  = min((x_start + x_end) / 2, ADDITIONAL_CAP_TOKENS_BASE)
tax_rate_bp = T_START_BP - (TAX_DECREASE_BP * avg_supply / ADDITIONAL_CAP_TOKENS_BASE)
tax_rate_bp = max(tax_rate_bp, T_END_BP)
tax         = base * tax_rate_bp / 10000
ConstantValueMeaning
T_START_BP1,200 (12%)Tax at the floor
T_END_BP120 (1.2%)Tax at and beyond the cap
TAX_DECREASE_BP1,080Total decay across the range
ADDITIONAL_CAP_TOKENS_BASE740,000,000Supply at which the tax bottoms out
TWO_TIMES_CAP1,480,000,000Quadratic denominator

Buyers pay base + tax. Sellers receive base - tax. Tax accrues to the curve and is split 90/10 between deployer and protocol at graduation — or 10% to protocol and the rest to holders if the curve refunds instead.

Per-chain curve parameters

ConstantBaseBSCPolygonRobinhoodGnosis
P_START1_200_000_0003_600_000_00028_800_000_000_0001_200_000_0002_880_000_000_000
PRICE_SLOPE8_410_810_80025_232_432_400201_859_459_200_0008_410_810_80020_185_945_920_000
DEPLOYER_INITIAL_PAYMENT0.06 ETH0.18 BNB1,440 POL0.06 ETH144 xDAI
FIXED_LIQUIDITY_NATIVE4 ETH12 BNB96,000 POL4 ETH9,600 xDAI

Trading rules

  • Exact payment. buy() asserts msg.value == total. Quote immediately before sending; there is no refund of overpayment.
  • Per-wallet cap. Post-trade balance may not exceed 36,000 lots. Checked against live balanceOf, not a stored figure.
  • Deployer cannot sell. sell() rejects the deployer address outright.
  • No selling at the floor. Supply cannot fall below 60,000 lots.
  • No per-user storage. Holdings are read from the token contract, so a first buy costs no extra storage slot.
Quotes go stale within the block

quote_buy_price() reads current supply. Any buy landing before yours changes the price and your exact-value transaction reverts with Incorrect payment. This is deliberate — it prevents overpayment being silently absorbed — but it means integrations should quote and submit tightly, and re-quote on revert.