Over the past months our team has been deeply involved in building full-stack privacy infrastructure on Base, and I’d like to share some context on why we believe a Dual-Mode Token standard is necessary.
Before exploring dual-mode tokens, we built two complete privacy systems:
- Native Privacy Assets (Zcash-style on Ethereum)
We implemented a fully private asset system similar to Zcash but deployed on EVM chains.
These assets have their own value representation, and all transfers occur entirely in the private domain with ZK proofs, commitments, nullifiers, encrypted notes, etc.
This proved that Zcash-level privacy can run natively on Ethereum without L1 protocol changes.
- A Wrapping-Based Privacy Layer (ZeroLayer)
We then built a full wrapping model:
Any ERC20 or ETH can be shielded into a private asset
Private transfers use ZK-SNARKs
Unshield back to public ERC20/ETH at any time
This system is fully deployed and functional today on Base Sepolia.
Through this work we discovered several limitations of the wrapping model, including:
fragmented UX (two tokens: public + wrapped-private)
inconsistency between transparent and private supply
added trust and complexity around the wrapper contract
increased friction when integrating with DeFi
These limitations motivated the idea that privacy should be native to the token itself, not an external wrapper.
Why This Led to Dual-Mode Tokens
After building both native-private assets and wrapped-private assets, the natural next step became clear:
A token shouldn’t need two separate representations.
Instead, a single asset should support:
Public (ERC20) mode
Private (ZK-based) mode
Seamless conversion between the two
Shared total supply invariant
This avoids the UX friction and architectural complexity of wrapped privacy, while keeping full ERC20 compatibility.
The Dual-Mode Token standard is our attempt to formalize this model so that:
any new token can launch with built-in privacy
developers have predictable interfaces
DeFi remains fully compatible
users can choose transparency or privacy as needed
We hope this discussion can help move Ethereum privacy toward more standardized and composable patterns.
Happy to answer questions or provide implementation insights from our deployments.