zerotracedocs

ZERO on Pons

What ZERO is, the Pons V2 terms it trades under, who receives its fees and how to check them on-chain, and how the zerotrace contracts are deployed around it.

ZERO is created by the Pons V2 launchpad on Robinhood Chain (chain 4663). zerotrace adds nothing to the token: it is a plain ERC-20, and zerotrace is a set of contracts deployed around it.

The token

ItemValue
ZERO (0x316fa3AB9A8FD8d7567a823DedecF28d9FEE2894)PonsV2LauncherToken: OpenZeppelin ERC20 + ERC20Burnable, 18 decimals, no owner, no transfer restrictions; the whole supply is minted once, in its constructor
Name, symbolzerotrace, ZERO. The name is also the vault's EIP-712 domain name
Supply1,000,000,000 ZERO, all minted to the bonding curve
Team allocationNone: no treasury, no reserve. Every ZERO starts in the curve; the team can hold ZERO only by buying it like anyone else

Its Pons terms

Pons fixes these terms when it creates a token, and they cannot change afterwards.

TermValue
Quote assetNative ETH (pairToken = address(0))
Standard fee1% of every trade (curve.feeBps()), the same on the curve and after graduation, in ETH
Pons' share30% of the standard fee (protocolFeeShareBps 3000): 0.3% of a trade
Creator tax0 (creatorTaxBps)
BuybacksOff (buybackEnabled false): the whole creator share is paid in ETH
Curve (0xE276F7E250bC2cD45f1e344d9adc9c9687c2c897)Trades ZERO for ETH until graduation. See The market
GraduationWhen the curve has collected 4.2 ETH (graduationThreshold), into a Uniswap v4 pool: native ETH / ZERO, fee 0, tick spacing 200, the Pons meme hook
Opening snipe taxPons' rule for every launch: 99% of a buy, decaying to 0 over the first 5 seconds; addresses named at launch are exempt, as Pons allows

Who receives the fees

Pons records FeeHarvester (0x8416DA7325cc619A5E560D8Ef6f413e94950CAd5) as ZERO's creator fee recipient. The creator share of every trade fee, 0.7% of the trade, goes to it in ETH, and its permissionless harvest turns that ETH into gas for the vault and ZERO for the notes. See The vault and Gas.

The wallet that made the launch has no special rights over ZERO: it cannot sweep ZERO's fees or redirect them. Only Pons' owner can change the creator fee recipient, after a 3-day timelock; see Trust model.

Check it on Pons

Everything above is in Pons' own record of the token, which anyone can read from the factory (0x7eD598BcEf8bd9Edd8C97A195C6d13f40801EC7e):

PonsLaunchedToken memory t = ponsFactory.getLaunchedToken(zero);
// t.exists              true
// t.creatorFeeRecipient the FeeHarvester
// t.pairToken           address(0): native ETH
// t.creatorTaxBps       0
// t.buybackEnabled      false
// t.curve               ZERO's bonding curve

The curve reports the same terms (feeBps, creatorTaxBps), and IERC20(zero).totalSupply() is 1,000,000,000 × 10^18. pendingCreatorFeeRecipient on the factory shows any redirect Pons' owner has started.

The harvester only accepts a token that pays it

FeeHarvester takes ZERO's address in its constructor and reads Pons' record of it. Its deployment reverts unless Pons launched the token (NotAPonsLaunch), names the harvester as creator fee recipient (NotTheFeeRecipient) and pairs it with ETH (NotAnEthPair). A harvester therefore exists only for a token whose fees it receives. See FeeHarvester.

The zerotrace deployment

Every zerotrace contract is deployed through CreateX's CREATE3 (0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed), with a salt only the deployer can use and that includes the chain ID. Its address depends only on the deployer, the chain and a salt label, so each address is fixed before anything is deployed, and nobody else can deploy at it. See Deployments.

The deployment first checks ZERO's Pons record, then, in order:

Deploys the Poseidon2 hasher and the verifier.

Deploys FeeHarvester with ZERO's address and the vault's planned address, since the vault does not exist yet. It reads ZERO's curve, pool fee, tick spacing and the factory's meme hook to build the graduated pool key.

Deploys PrivateVault with every address fixed: ZERO, the Pons factory, the curve, the PoolManager, the graduated pool ID, the verifier, the hasher, the EntryPoint, the router's planned address and the harvester.

Deploys PrivateRouter with the PoolManager, the Pons factory, the vault and ZERO.

Buys the locked seed, 0.001 ETH of ZERO on the curve, once Pons' opening snipe tax is over, and shields it with stub = keccak256("zerotrace/locked-seed") mod p and an empty ciphertext. Nobody can spend it; see The vault.

Calls vault.poke(), which sets the price average from the curve's reserves, and deposits 0.1 ETH in the EntryPoint for the vault.

The seed is the deployment's only purchase of ZERO.

What buyers see

At the startValue
Where ZERO tradesThe Pons bonding curve, until graduation
Fees on a trade1% standard fee, in ETH: 0.3% to Pons, 0.7% to the harvester
First 5 secondsThe Pons snipe tax on buys
ZERO held by zerotraceThe locked seed only
Where a purchase landsA private note through PrivateRouter.buy; public ZERO through any other route, shielded with one call. See Public ZERO and shielding

Early on few notes exist, so the set of notes a spend could come from is small; see Staying private.

On this page