# Task 11: MirrorManager Deployment Decision **Date**: 2025-01-18 **Status**: ✅ DECISION COMPLETE ## Decision ⚠️ **MirrorManager is OPTIONAL - NOT REQUIRED for the current two-way tether and mirror system.** ## Analysis ### MirrorManager Functionality **Purpose**: Registry of mirrored token/contract addresses across chains. **How It Works**: - Maps source chain addresses to destination chain addresses - Provides cross-chain address resolution - Maintains address registry: `(sourceChain, sourceAddress) => (destChain => destAddress)` - Optional replay protection for off-chain message IDs **Key Features**: - Cross-chain address mapping - Address resolution queries - Admin-controlled mirroring - Replay protection (optional) **Files**: - `contracts/mirror/MirrorManager.sol` - `script/DeployMirrorManager.s.sol` **Use Case**: When contracts need to resolve addresses on other chains. ### Current System Address Strategy **WETH9 and WETH10**: Use **canonical addresses** (same address on both chains). - **WETH9**: `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` (Mainnet and ChainID 138) - **WETH10**: `0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f` (Mainnet and ChainID 138) **Bridge Contracts**: Use deployment addresses (known at deployment time). - Mainnet bridges: Known addresses - ChainID 138 bridges: Known addresses **MainnetTether and TransactionMirror**: Single-chain contracts (Mainnet only). ## Comparison: With vs. Without MirrorManager ### Without MirrorManager (Current Approach) - ✅ **WETH9/WETH10**: Same addresses on both chains (canonical) - ✅ **Bridge Contracts**: Addresses known at deployment - ✅ **Simple**: Direct address usage, no lookup needed - ⚠️ **Limitation**: If new contracts need cross-chain address resolution, manual configuration needed ### With MirrorManager - ✅ **Flexible**: Dynamic address mapping for any contract - ✅ **Centralized**: Single source of truth for address mappings - ✅ **Extensible**: Easy to add new address mappings - ❌ **Complexity**: Additional contract deployment and management - ❌ **Not Needed**: Current system doesn't require address mapping ## Conclusion ### MirrorManager is NOT Required Because: 1. **Canonical Addresses**: WETH9 and WETH10 use same addresses on both chains, so no mapping needed. 2. **Known Addresses**: Bridge contract addresses are known at deployment and can be configured directly. 3. **Single-Chain Contracts**: MainnetTether and TransactionMirror are Mainnet-only, so no cross-chain address resolution needed. 4. **Direct Usage**: Current system uses addresses directly without needing lookup. ### MirrorManager WOULD Be Required If: - Multiple contracts need cross-chain address resolution - Dynamic address mapping is needed - Address mappings change frequently - Many contracts need to resolve addresses on other chains ## Recommendation **DO NOT DEPLOY MirrorManager** for the current system. The system uses canonical addresses and known deployment addresses, so address mapping is not required. **Future Consideration**: Deploy MirrorManager if: - New contracts are added that need cross-chain address resolution - Dynamic address mapping becomes necessary - The system expands to require centralized address registry ## Action - [x] Analysis complete - [x] Decision documented - [x] Recommendation: Do not deploy MirrorManager - [x] Status: Documented as optional/not required --- **Status**: ✅ **DECISION COMPLETE - OPTIONAL/NOT REQUIRED**