Concepts
How the zap works
The split math, min-out, and the trace line by line.
The split
A full-range position needs equal value on both sides. If you pay amount A in ETH, we swap an amount s into the coin and keep A − s. The swap pays a fee f (the pool's hook fee plus the coin's creator tax) and some price impact, so s is a little more than half:
s × (1 − f − impact) = A − s s = A ÷ (2 − f − impact)
We solve this from a fresh quote right before you sign, then the contract checks the result on chain.
Worked example: 0.5 ETH into TARDI
| You pay | 0.5 ETH on Base |
| Landed on Robinhood Chain after Relay | 0.4987 ETH |
| Fee + impact on the swap (1% + 0% tax + 0.4%) | 1.4% |
Swapped, s = 0.4987 ÷ 1.986 | 0.2511 ETH |
| Kept | 0.2476 ETH |
| Received from the swap | 2.66M TARDI (worth 0.2476 ETH) |
| Your position | 0.2476 ETH + 2.66M TARDI, full range |
TARDI price and the fee split above are example values. Your quote shows the real ones.
Slippage and min-out
Every zap carries three guards, set from the quote:
- minTokenOut: the swap reverts if it would return less than the quote minus your slippage (0.5% by default).
- minLiquidity: the mint reverts if the position would be smaller than expected.
- deadline: the whole zap reverts after it.
High creator tax
Some Pons coins set a creator tax on every swap. The swap half pays it. We warn above 2% and will refuse above a cap.
The trace, line by line
// TARDI/ETH · 0.5 ETH from Base
relay.deposit("base", 0.5)
// 0.4987 ETH landed on 4663
PoolManager.swap(TARDI/ETH, zeroForOne, -0.2511)
// got 2.66M TARDI
posm.modifyLiquidities(MINT_POSITION, SETTLE_PAIR)
emit ModifyLiquidity(tickLower: -887200, tickUpper: 887200)
// LP #4812 is yoursrelay.deposit: you sign a deposit on Base. Relay fills it on Robinhood Chain with ETH, minus its fee. Skipped when you pay on Robinhood Chain.PoolManager.swap: the swap half goes through the coin's own pool. ETH is currency0 (native ETH sorts first), so selling ETH iszeroForOne; the negative amount means exact input.posm.modifyLiquidities: the Uniswap v4 PositionManager mints the position (MINT_POSITION) and pays both sides in (SETTLE_PAIR). Leftover dust is swept back to you.ModifyLiquidity: the PoolManager event. Graduated Pons pools use tickSpacing 200, so full range is −887200 to 887200.


0.5 ETH on Base