Architecture Overview
The system consists of two main deployment components:- L1 Deployment (Mainnet) - L1Unwrapper contract for handling native token withdrawals
- L2 Deployment (Gnosis Chain) - TornadoPool core contract with privacy features
Key Components
L1 Components
- L1Unwrapper: Unwraps wrapped tokens (e.g., WETH → ETH) for withdrawals on mainnet
- OmniBridge: Token bridge for cross-chain transfers
- Governance: L1 governance contract that controls upgrades via AMB bridge
L2 Components
- TornadoPool: Main privacy pool contract using UTXO model
- Verifiers: ZK-SNARK proof verifiers (2-input and 16-input)
- Hasher: Poseidon hash function for Merkle tree operations
- CrossChainUpgradeableProxy: Proxy contract enabling cross-chain governance
Deployment Features
All contracts use deterministic deployment via CREATE2 with a salt value, ensuring consistent addresses across networks.
Deterministic Addresses
Tornado Nova uses the SingletonFactory pattern with a fixed salt to generate deterministic contract addresses:- Predictable contract addresses before deployment
- Same addresses across different networks (with same deployment parameters)
- Simplified integration and configuration
Cross-Chain Governance
The system uses the Arbitrary Message Bridge (AMB) protocol to enable L1 governance to control L2 contracts:- Governance proposals are executed on L1
- Messages are relayed via AMB bridge to L2
- L2 proxy verifies the caller is the authorized L1 governance contract
- Upgrades and configuration changes take effect on L2
Network Configuration
Tornado Nova supports multiple network pairs:| L1 Network | L2 Network | Primary Token |
|---|---|---|
| Ethereum Mainnet | Gnosis Chain | WETH |
| BSC | Gnosis Chain | WBNB |
Next Steps
L1 Deployment
Deploy the L1Unwrapper contract on mainnet
L2 Deployment
Deploy the TornadoPool system on Gnosis Chain
Configuration
Configure deployment parameters and network settings
Governance
Learn about cross-chain governance operations