FAQ

Frequently Asked Questions

General

What is zERC20?

zERC20 is an ERC-20 compliant token that enables private transfers on Ethereum and other EVM chains. Unlike regular tokens where all transfers are publicly visible, zERC20 hides the link between senders and recipients using zero-knowledge proofs.

How is zERC20 different from Tornado Cash?

While both use zero-knowledge proofs for privacy, they differ in key ways:

Feature
zERC20
Tornado Cash

Token type

ERC-20 wrapper (zUSDC, zETH, etc.)

ETH/ERC-20 deposits

Fixed denominations

No — any amount

Yes — fixed pool sizes

Crosschain

Yes — via LayerZero

No

Wallet UX

Standard MetaMask transfer

Requires deposit/withdraw UI

What tokens are supported?

Currently supported wrapper tokens include:

  • zUSDC (wrapped USDC)

  • zETH (wrapped ETH)

  • zBNB (wrapped BNB)

Check the frontend for the full list of supported chains.

Privacy

Can anyone see my transfer amount?

Yes, transfer and withdrawal amounts are visible on-chain. To protect amount privacy:

  • Use batch withdrawals to combine multiple transfers

  • Use partial withdrawals to avoid exact amount matching

  • Use common/round amounts when possible

Can the sender see where I withdraw to?

It depends on who generated the burn address:

  • Sender-generated: Yes, the sender knows your withdrawal address (Frontend supports this method)

  • Recipient-generated: No, the sender only sees the burn address (CLI only)

Is my IP address exposed?

zERC20 itself doesn't expose IP addresses, but:

  • Your RPC provider can see your IP when you submit transactions

  • Consider using a VPN or Tor for additional IP privacy

Fees and Rewards

Why am I being charged a fee to unwrap?

Fees are charged when unwrapping on chains with low liquidity. The fee incentivizes balanced liquidity across chains. If fees are high, consider using cross-chain unwrap to access liquidity from another chain with lower fees.

How can I avoid high unwrap fees?

Use cross-chain unwrap to unwrap via a different chain with more liquidity. The frontend shows fee comparisons for all available options.

Why did I receive bonus tokens when wrapping?

When a chain has low liquidity, you earn rewards for adding liquidity by wrapping. These rewards come from fees collected from previous unwraps.

Where do I see current fees?

Open the Wrap/Unwrap modal in the frontend and enter an amount. The interface displays the expected fee or reward before you confirm.

See Fees and Rewards for detailed information.

Transfers

How long do private transfers take?

Network
Typical Time

Mainnet

30 minutes to 1 hour

Testnet

May be longer due to LayerZero instability

Can I cancel a transfer?

Once zERC20 is sent to a burn address, it cannot be recovered or redirected. Only the intended recipient can withdraw it using the zero-knowledge proof.

What happens if I send to the wrong burn address?

The tokens are permanently locked unless the intended recipient of that burn address withdraws them. Always double-check burn addresses before sending.


Troubleshooting

My private transfer hasn't arrived

Symptoms: You sent zERC20 to a burn address but the recipient doesn't see it.

Solutions:

  1. Wait for cross-chain messaging

    • Cross-chain transfers require 30 minutes to 1 hour for LayerZero messages to propagate

    • On testnets, this may take longer due to network instability

  2. Check transaction status

    • Verify the original transaction was confirmed on the source chain

    • Check the burn address balance on a block explorer

  3. Check invoice status

    • Frontend: Refresh the page

    • CLI: Run zerc20-cli invoice status --chain-id <CHAIN_ID> --invoice-id <INVOICE_ID>

  4. Verify burn address

    • Confirm the sender used the correct burn address

    • EVM addresses are case-insensitive (e.g. 0xAbc... and 0xabc... refer to the same address), but always use the checksummed (mixed-case, EIP-55) format to catch typos

Tokens appear stuck in a burn address

Symptoms: zERC20 shows in the burn address but can't be withdrawn.

This is expected behavior. Tokens sent to a burn address remain there permanently—they are not "moved" during withdrawal. Instead, an equivalent amount is minted to the recipient using ZKP verification.

The "stuck" tokens represent the burned supply that backs the minted withdrawal.


Still Need Help?

For full support details, see the Support page.

Last updated