Skip to main content

Fees and the 25/75 split

The fee F​

When launching, the creator picks the total zk-pad fee F, anywhere from 1% to 5% (10,000 to 50,000 pips, where 1,000,000 pips = 100%).

  • F can be set separately for each direction: pairedFee applies to buys (the quote token goes in) and tokenFee applies to sells (the launched token goes in). Each must be in [1%, 5%].
  • F can never be raised. The coin's token admin may lower it with lowerFees, but never below 1%. A token admin of address(0) (renounced) means the fee is frozen forever.

Where the fee goes​

Share of FRecipientPaid in
75% (the LP fee)The coin's beneficiary, through the locked positions, the locker and the FeeVaultThe quote token by default. Fees earned in the launched token (on sells) are converted to the quote token when collected.
25% (the hook protocol fee)The zk-pad protocol treasury (teamFeeRecipient)The quote token
There is no creator share

A creator who wants revenue from their own coin sets themselves as the (stealth) beneficiary.

PancakeSwap's protocol fee is on top. PancakeSwap Infinity charges its own protocol fee on dynamic-fee pools, by default 0.03% (300 pips; PancakeSwap governance can set it up to 0.4%). It is charged in addition to F, not taken out of it. A trader therefore pays roughly F + 0.03%.

How the split is implemented​

The hook sets the pool's LP fee for each swap (lpFeeOverride), so it accrues to the locked positions, and separately takes a protocol fee in the paired (quote) token sized at one third of the LP fee the positions actually receive (net of PancakeSwap's cut). That makes protocol to beneficiary 25:75 of everything zk-pad captures, up to rounding. Clanker v4 uses the same mechanism with "20% of the LP fee"; zk-pad changes the constant to 1/3.

  • Buys are measured on the trader's gross input. The protocol fee comes off the input before the pool charges its LP fee, so the buy LP fee is raised slightly, ceil(0.75·F / (1 − 0.25·F·(1 − pcs))), which makes protocol + LP exactly F·(1 − pcs) of what the trader pays in (pcs is PancakeSwap's protocol fee).
  • Sells earn the LP fee (0.75·F) in the launched token. The protocol fee is charged at the swap's execution price, like Clanker. The part of it above the LP fee's value at the post-swap price is split 25:75 again and 75% of it is donated back to the positions (ProtocolFeeRebated), so the split holds after the beneficiary's tokens are converted. When that conversion later realizes more than the reference value, the locker tops the protocol up to 25% of what was realized (ProtocolFeeTopUp). Where the price ends therefore cannot shrink what a seller pays, even with a flash-borrowed overshoot into a thin band. A sell that ends with no in-range liquidity keeps the whole execution-value fee for the protocol.

The same 25/75 split applies to the anti-sniper surcharge.

Worked examples​

All figures ignore price impact and rounding.

A buy with F = 1%​

A trader buys with 1 BNB (WBNB-paired coin, F = 1%).

ItemAmount
zk-pad fee F0.01 BNB
→ beneficiary (75%)0.0075 BNB
→ protocol (25%)0.0025 BNB
PancakeSwap protocol fee (~0.03%)~0.0003 BNB
Swapped into the coin~0.9897 BNB

A sell with F = 5%​

A trader sells coins worth 1,000 USDT (USDT-paired coin, F = 5%).

ItemAmount
zk-pad fee F~50 USDT worth
→ beneficiary (75%)~37.50 USDT worth. It accrues in the coin itself and is converted to USDT when collected.
→ protocol (25%)~12.50 USDT, taken from the USDT output
PancakeSwap protocol fee (~0.03%)~0.30 USDT worth
Trader receives~949.70 USDT

Daily volume​

A coin with F = 2% trades $100,000 in a day.

ItemPer day
Total zk-pad fee (2%)$2,000
Beneficiary (75%)$1,500
Protocol (25%)$500
PancakeSwap (~0.03%)~$30

Quick reference​

FBeneficiary share of volumeProtocol share of volumeTrader pays (with PancakeSwap)
1%0.75%0.25%~1.03%
2%1.50%0.50%~2.03%
3%2.25%0.75%~3.03%
4%3.00%1.00%~4.03%
5%3.75%1.25%~5.03%

Fee-exempt swaps​

The locker's own fee-conversion swaps (turning token-side LP fees into the quote token) pay no zk-pad fee. Charging the beneficiary's fees a second time would push the protocol share above 25%. To keep the exemption from becoming a fee-free route, the locker only ever converts fees that fee-paying swaps earned (the hook records them); tokens that reach the positions any other way are credited to the beneficiary as they are.

How fees reach the beneficiary​

  1. LP fees accrue in the locked positions on every swap.
  2. Before the next swap, the hook calls the locker, which "pokes" the positions to collect the fees, swaps the token-side part to the quote token in the same pool (by default, FeeIn.Paired), and calls FeeVault.depositFromLaunch(token, beneficiaryId, quote, amount), which also books the amount as that launch's credit (the bound on its creator's consolidation rights).
  3. The balance sits in the FeeVault under the opaque beneficiary id until the beneficiary claims it.

Because collection runs on every swap, only the previous swaps' fees are ever exposed to the conversion swap, which limits sandwich risk. The conversion also never runs at a price that a swap earlier in the same block pushed against it: the locker then defers collection to a later block (RewardsDeferred), so a seller cannot sell the price down and have the beneficiary's fees converted into its own buy-back within one transaction or bundle.

A launch can opt out of conversion (FeeIn.Both or Token), but then the beneficiary is paid partly in the launched token, which relayers cannot price and consolidation cannot route: that balance needs a self-funded claim from a wallet holding BNB.

Fees are credited in the asset they were collected in, usually the quote token. Turning them into USDT (the settlement asset) is a separate, on-demand step. See consolidation and shielding.