Deploying New Wrappers
One of the most innovative aspects of the confidential token system is that anyone can deploy a wrapper for any ERC-20 token or ETH without permission. This creates a truly permissionless privacy layer that can expand to cover the entire Ethereum token ecosystem.
Who Can Deploy a Wrapper?
Anyone willing to pay the deployment fee can deploy a new wrapper/cToken pair. There are no restrictions, no whitelist, and no governance approval required.
This means:
A DeFi protocol can deploy wrappers for its own tokens
A user wanting privacy for an obscure token can deploy
An aggregator can deploy wrappers for popular tokens proactively
Communities can crowdfund deployment for tokens they care about
Deployment Process
Deploying a new wrapper involves these steps:
Check if wrapper already exists
Call
coordinator.wrapperExists(tokenAddress)If true, the wrapper is already deployed---no action needed
If false, you can deploy it
Pay the deployment fee
Check current fee:
feeManager.getDeployFee()Send as
msg.valuewith your deployment transaction
Call the deploy function
coordinator.deploy(tokenAddress)for ERC-20 tokenscoordinator.deploy(address(0))for ETH
Contracts are deployed automatically
A new
RegulatedERC-7984Upgradeableproxy (the cToken)A new
WrapperUpgradeableproxyBoth are initialised and linked together
Added to the registry
coordinator.getWrapper(tokenAddress)now returns the wrapper addresscoordinator.getConfidentialToken(tokenAddress)returns the cToken addressAnyone can now shield that token
What Gets Created During Deployment
Zaïffer ensures consistent behaviour across all cTokens. So when you deploy a wrapper for a token, the system automatically creates:
The Confidential Token (cToken)
Contract type:
RegulatedERC-7984Upgradeable(ERC-7984 standard)Name: "confidential [TokenName]" (e.g., "confidential USD Coin")
Symbol: "c[TokenSymbol]" (e.g., "cUSDC")
Decimals: Maximum 6 (rate-adjusted if original token has more)
Underlying: Permanently linked to the original token address
The Wrapper Contract
Contract type:
WrapperUpgradeablePurpose: Holds original tokens in escrow, mints/burns cTokens
Permissions: Exclusive right to mint and burn the paired cToken
Functions:
wrap(),finalizeUnwrap(), balance tracking
Configuration
The deployment automatically handles:
Rate calculation based on token decimals (see Section 3)
Token metadata fetched from original token (name, symbol)
Registry entry in the DeploymentCoordinator
After Deployment: Permissionless Use
Once a wrapper exists, everyone shields through the same wrapper. This concentrates liquidity and makes the cToken more useful.
Once a wrapper/cToken pair is deployed:
Anyone can Shield the original token to get cTokens
Anyone can Unshield cTokens back to original tokens
Anyone can transfer cTokens confidentially
DeFi protocols can integrate the cToken
Wallets can display cToken balances
The deployer has no special privileges over usage.
Last updated