How tox works

The mechanics and the math, sourced directly from the deployed contracts.

01 — Overview

Launch a coin, back it with stock

Anyone can launch a coin on a bonding curve, except every coin's trading fees, forever, buy real tokenized stock for its holders. Nothing's custodial: the recipe sits directly on the coin's own BasketToken, and redeem() pays out a live slice of it.

A coin has two lives: a GenesisCurve you buy directly, then once it hits its genesis target graduation into a real Uniswap V3 market whose fees keep buying more backing for as long as it trades.

bonding curve splitting into a genesis curve and a locked stock vault
02 — Mechanics

The genesis curve

Each coin's GenesisCurve is a constant-product AMM with virtual reserves on both sides sized so it drains to zero exactly at the creator's chosen genesis target.

To the curve99%
Creator (genesis fee)0.7%
Protocol (genesis fee)0.3%

1% fee on every buy, 70/30 creator/protocol. Overbuying past the target refunds the excess; hitting it fires graduation in the same transaction. It trades both ways — sell() runs the same curve in reverse, same fee, so nobody's stuck holding until graduation.

the genesis curve invariant, buy and sell meeting at the same price
03 — Mechanics

Graduation

The raised ETH splits two ways, automatically:

Buys the recipe (vault)30%
Pairs into the V3 pool70%

30% buys the recipe into the vault; 70% seeds a real Uniswap V3 market at a 1% fee tier, opening at exactly the curve's final price by construction — no gap, no arbitrage windfall. tox's own launch form fixes this at 75% curve / 25% pool supply; the contract itself supports other ratios.

graduation split — 30% into the vault, 70% into the Uniswap V3 pool
04 — Safety

Verified assets

createBasket() is permissionless, so recipe safety can't live only in a frontend list — it's enforced onchain. AssetRegistry maps each asset to a live ETH route; BasketFactory refuses anything it hasn't verified.

Routes are looked up live on every top-up, never frozen at creation — if a route is deprecated and repointed, every coin holding that asset starts buying through the new one automatically.

05 — Mechanics

The fee flywheel

Every trade against the graduated Uniswap V3 pool accrues fees on both legs of the pair — ETH and the coin — inside the position tox holds. Those fees just sit there, uncollected, until somebody calls collectAndSplit(). There's no keeper, no scheduled job, no operator with a special key — the call is open to anyone, costs only gas, and pays the caller nothing extra, so in practice it gets triggered by whoever has a reason to check: a bot, a holder confirming the coin's backing, tox's own frontend on page load. The ETH leg splits:

Creator40%
Protocol30%
Vault (buys recipe)30%

The vault's 30% buys more recipe, same as at graduation — routed through the exact same live AssetRegistry lookups used for top-ups, so the backing's composition never drifts from what the recipe defines; only its size grows. That's the flywheel end to end: trading volume throws off fees, fees buy more of the underlying recipe, a larger backing makes the coin worth holding and trading, which drives more volume — and it compounds with every single harvest, forever, permissionlessly.

The token-side leg is simpler: fees collected in the coin itself are burned outright, no swap and no split. That shrinks total supply on every single harvest, so backing-per-remaining-token rises from two directions at once — the vault growing on the ETH leg, and the denominator shrinking on this one. Only the ETH leg touches the vault, because only ETH can buy recipe assets.

the fee flywheel — trade, harvest, buy recipe, repeat
06 — Mechanics

Redeeming

Supply is fixed forever — minted once at creation, never again. Redeeming burns shares for a live pro-rata slice of the vault, so backing growth from the flywheel is actually claimable:

payout[asset] = redeemAmount × vaultBalance[asset] / totalSupply

You keep99%
Creator (redeem fee)0.7%
Protocol (redeem fee)0.3%

1% redeem fee, same 70/30 split as the genesis fee — paid in the coin itself, not burned.

redeeming — a coin burns while its vault backing pays out
07 — Reference

Contracts

BasketFactory0x782e…0FCF

Permissionless registry, graduation router, and LP-fee harvester. createBasket() deploys a coin's token + curve; graduate() and collectAndSplit() move money between the curve, the V3 pool, and the basket vault.

AssetRegistry0x584f…0F5d

Owner-curated map of asset → live ETH-to-asset swap route. Since createBasket() is permissionless, this is the only thing stopping a fake or manipulated "NVDA" recipe from ever being createable.

AssetSwapper0x502a…680e

Executes the actual ETH → recipe-asset swaps through Uniswap V4's PoolManager, at graduation and on every ongoing fee top-up, then deposits the output straight into the coin's vault.

All on Robinhood Chain (chain ID 4663). Each coin also deploys its own BasketToken (the vault + ERC-20 share) and GenesisCurve — addresses are on each coin's own page.