LaunchPools creates a new ERC-20 together with its own ZKDepth pool in one transaction, so no one can hold or trade the token before its market exists. These are contracts anyone can call; the app's own flow is the Launchpad. A launch vault lets a group buy at launch for one price, and any Pons token can get a ZKDepth pool next to it.
What one launch does
- 1Deploy the tokenA plain 18-decimal ERC-20 whose whole supply is minted once.
- 2Create and seed the poolA DAMM pool of native ETH against the token, tick spacing 60, opened at your start price. The seed holds only the token and sells it to buyers at every higher price.
- 3Buy, if you sent ETHThe ETH buys the token as the pool's first swap, so nobody can trade ahead of it.
- 4Hand out the restTokens bought and any ETH paid back go to you. The supply the pool did not take goes to the creator you named.
The token's address is unknown until the launch lands, so nobody can create the pool first. A launch cannot go through while the venue is paused.
| Name | Allowed | Default | Effect |
|---|---|---|---|
Supply | up to 10^15 | 1,000,000,000 | The whole supply, minted once. |
Seed | up to the supply | 100 % | How much the pool can sell. |
Start | multiple of 60 ticks | 10 ETH market cap | The price of the first token sold. |
Base fee | 5 - 100 bps | 100 | The fee after the anti-snipe window. |
Anti-snipe | up to 5,000 bps, 1 - 3,600 s | 2,500 bps over 600 s | The fee at the first second, and how long it takes to fall. |
Volatility control | 0 or more | 10,000 | Scales the surcharge. 0 turns it off. |
The launch buy and the launch fees
A buy inside the launch transaction pays the full start fee. But the launch position is then the pool's only liquidity, so LaunchPools pays the LP part back to the buyer. Only the protocol share stays charged, 20 % of the fee at deploy: 500 bps of the buy with the form's defaults.
LaunchPools holds the seeded position and has no function that removes it. collectFees(id) is open to anyone and pays the LP fees to the launch's fee recipient, even while the venue is paused. setFeeRecipient(id, to) lets the current recipient, and only them, hand the fees on.
Pooled buying with a launch vault
Everyone's ETH goes into one first buy, so every depositor pays the same average price.
- 1Open
LaunchVault.open(p, depositEnd)stores the launch parameters for good.depositEndmust be at most 7 days away, and the form defaults to 24 h. - 2DepositUntil
depositEndanyone can deposit ETH and withdraw any part of their own deposit. - 3LaunchFrom
depositEnduntil 3 days after, anyone can calllaunch(id), which spends the vault's whole balance as the first buy. - 4Claim, or refundAfter a launch, each depositor claims a share of the tokens and of the ETH paid back. If nobody launched in time, each refunds the whole deposit.
The unseeded supply and the position's fees go to the creator the opener named. A depositor's one cost is the protocol share of the start fee. The buy has no price limit, so the more ETH the vault holds, the higher up the curve it buys.
Pons tokens
Pons is a third-party launchpad on Robinhood Chain, and its tokens are at /launch/pons. A Pons token trades on a bonding curve until it graduates, and then in a Uniswap v4 pool. The Router takes either as a hop, under your minimum output and deadline.
Open a ZKDepth pool calls DammHook.createPool for the token against its pair token, at a start price prefilled from the live Pons price. Defaults: 100 bps base fee, 2,000 bps anti-snipe fee falling over 600 s, tick spacing 200. The pool starts empty, and only one per tick spacing can exist.
Curve trades pay the Pons curve fee and the creator tax, and buys also pay a snipe tax while one applies. ZKDepth does not list or vet tokens. The bonding-curve launchpad is a separate product, see Launch.
contracts/src/venue/launch/LaunchPools.sollaunch, preview, the launch position and its feescontracts/src/venue/launch/LaunchVault.solopen, deposit, withdraw, launch, claim, refundcontracts/src/venue/periphery/PonsAdapter.solthe Pons curve hop