Fees and Rewards
This page explains how wrap/unwrap fees and rewards work in zERC20.
Overview
zERC20 uses a dynamic fee system to maintain balanced liquidity across all supported chains. When liquidity on a chain deviates from the target level, the system applies incentives to encourage rebalancing:
Wrap
Earn rewards
No reward
Unwrap
Pay fee
No fee
Why Fees and Rewards Exist
Each chain holds a pool of underlying tokens (USDC, ETH, etc.) that back the zERC20 supply. When liquidity becomes unevenly distributed—for example, most USDC ends up on Ethereum while Arbitrum runs low—users on Arbitrum may face difficulty unwrapping.
The fee/reward system solves this by:
Rewarding deposits on chains with low liquidity (encouraging users to add liquidity where it's needed)
Charging fees on withdrawals from chains with low liquidity (discouraging draining of scarce liquidity)
How Fees Are Calculated
Fees and rewards are calculated using a linear incentive curve based on two parameters:
Target Liquidity (T): The ideal liquidity level for the chain
Incentive Strength (k): How strongly the system incentivizes rebalancing
Current Fee Settings
zUSDC
10%
Fees/rewards apply across all supported chains
zETH
10%
Fees/rewards apply across all supported chains
zBNB
—
No fees or rewards (wrap/unwrap on BNB Chain only)
Note: zBNB can be transferred across multiple chains (BNB Chain, Ethereum, Arbitrum, Base) as an OFT token. However, wrap/unwrap (converting between BNB and zBNB) is only available on BNB Chain. Since there is no cross-chain liquidity balancing for the underlying asset, no fees or rewards apply.
Target Liquidity (T) is automatically calculated by a background service:
This ensures each chain's target stays aligned with actual liquidity distribution. As liquidity flows between chains, targets adjust automatically.
The Formula
The fee/reward rate increases as liquidity drops further below the target:
The actual fee or reward is the integral (area under the curve) between your transaction's start and end liquidity levels.
Example
Suppose a chain has:
Current liquidity: 50,000 USDC
Target liquidity: 100,000 USDC
Incentive strength: 10%
Wrap 1,000 USDC: You would earn a reward of 49.5 USDC (4.95%) for adding liquidity to an under-supplied chain.
Unwrap 1,000 USDC: You would pay a fee of 50.5 USDC (5.05%) because liquidity is below target.
Fee Accumulation
Fees collected from unwraps accumulate in a surplus pool. This surplus is used to pay rewards for future wraps. When the surplus is depleted, wrap rewards are reduced accordingly.
Cross-Chain Unwrap to Reduce Fees
If a chain has low liquidity and high unwrap fees, you can use cross-chain unwrap to access liquidity from a different chain with lower fees.
How It Works
You initiate an unwrap on Chain A (where you hold zERC20)
Your zERC20 is bridged to Chain B (where liquidity is higher)
The unwrap happens on Chain B with lower fees
The underlying tokens are bridged back to Chain A
This entire process happens in a single transaction using LayerZero and Stargate.
When to Use Cross-Chain Unwrap
The unwrap fee on your current chain is high
Another chain has more liquidity (lower fees)
The bridge costs are less than the fee savings
The frontend displays both options with fee estimates, so you can compare before confirming.
Viewing Current Fees
In the frontend:
Open the Wrap / Unwrap modal
Select the UNWRAP tab
Enter an amount
The interface shows:
Same Chain: Fee amount for unwrapping on the current chain
Different Chain: Fee amounts for cross-chain unwrap options
Compare these to find the most cost-effective option.
Related
Getting Started — Basic wrap/unwrap instructions
Contract Spec: Incentive Curve — Technical details of the fee curve
Last updated