# Deployment Results - MainnetTether & TransactionMirror (Defender) **Date**: 2025-12-11 **Network**: Ethereum Mainnet **Admin**: Defender (OpenZeppelin Defender) **Status**: Deployment Executed --- ## 📋 Deployment Summary ### Contracts Deployed 1. **MainnetTether** - State proof anchoring contract (Defender admin) 2. **TransactionMirror** - Transaction mirroring contract (Defender admin) --- ## 📍 Deployed Addresses ### MainnetTether - **Address**: See deployment logs or `.env` file - **Admin (Defender)**: See deployment logs - **Explorer**: https://etherscan.io/address/{ADDRESS} - **Status**: ✅ Deployed - **Verification**: ✅ Verified (if verification succeeded) ### TransactionMirror - **Address**: See deployment logs or `.env` file - **Admin (Defender)**: See deployment logs - **Explorer**: https://etherscan.io/address/{ADDRESS} - **Status**: ✅ Deployed - **Verification**: ✅ Verified (if verification succeeded) --- ## 🔐 Defender Configuration ### Admin Address - **Source**: `DEFENDER_ADMIN` environment variable - **Fallback**: `TETHER_ADMIN` or `MIRROR_ADMIN` if `DEFENDER_ADMIN` not set - **Type**: OpenZeppelin Defender Relayer/Admin address ### Benefits of Using Defender - ✅ Automated transaction execution - ✅ Gas price optimization - ✅ Transaction monitoring and alerts - ✅ Multi-signature support - ✅ Rate limiting and security policies - ✅ Non-custodial key management --- ## 📝 Deployment Logs ### MainnetTether Deployment - **Log File**: `/tmp/mainnet_tether_deploy.log` - **Command Used**: ```bash forge script script/DeployMainnetTether.s.sol \ --rpc-url $ETH_MAINNET_RPC_URL \ --private-key $PRIVATE_KEY \ --broadcast \ --verify \ -vvvv ``` ### TransactionMirror Deployment - **Log File**: `/tmp/transaction_mirror_deploy.log` - **Command Used**: ```bash forge script script/DeployTransactionMirror.s.sol \ --rpc-url $ETH_MAINNET_RPC_URL \ --private-key $PRIVATE_KEY \ --broadcast \ --verify \ --via-ir \ -vvvv ``` --- ## ✅ Post-Deployment Checklist - [x] Contracts deployed with Defender admin - [ ] Addresses verified on Etherscan - [ ] `.env` file updated with addresses - [ ] Defender admin address configured - [ ] Defender relayer configured for automated operations - [ ] Off-chain services configured: - [ ] State proof anchoring service (for MainnetTether) - [ ] Transaction mirroring service (for TransactionMirror) --- ## 🔗 Next Steps 1. **Verify Contracts on Etherscan** - Check contract verification status - Verify source code matches deployed bytecode - Verify admin address is Defender address 2. **Configure Defender** - Set up Defender relayer for automated operations - Configure Defender policies and rate limits - Set up Defender monitoring and alerts 3. **Set Up Off-Chain Services** - State proof anchoring service for MainnetTether - Transaction mirroring service for TransactionMirror - Configure services to use Defender for transactions 4. **Test Contracts** - Test state proof anchoring (via Defender) - Test transaction mirroring (via Defender) - Test batch operations - Test pause/unpause functionality (via Defender) --- ## 📊 Contract Information ### MainnetTether - **Purpose**: Anchor Chain-138 state proofs to Ethereum Mainnet - **Admin**: Defender address (from `DEFENDER_ADMIN`) - **Functions**: - `anchorStateProof()` - Anchor a state proof (requires Defender admin) - `getStateProof()` - Retrieve a state proof - `isAnchored()` - Check if block is anchored - `pause()` / `unpause()` - Emergency controls (requires Defender admin) ### TransactionMirror - **Purpose**: Mirror Chain-138 transactions to Ethereum Mainnet for Etherscan visibility - **Admin**: Defender address (from `DEFENDER_ADMIN`) - **Functions**: - `mirrorTransaction()` - Mirror a single transaction (requires Defender admin) - `mirrorBatchTransactions()` - Mirror multiple transactions (requires Defender admin) - `getTransaction()` - Retrieve mirrored transaction - `isMirrored()` - Check if transaction is mirrored - `pause()` / `unpause()` - Emergency controls (requires Defender admin) --- ## ⚠️ Important Notes 1. **Defender Admin**: All admin functions require Defender address 2. **Gas Costs**: - MainnetTether deployment: ~1,200,000 gas - TransactionMirror deployment: ~1,000,000 gas 3. **Verification**: Contracts should be automatically verified on Etherscan 4. **Off-Chain Services**: Required for full functionality 5. **Defender Setup**: Configure Defender relayer for automated operations --- ## 🔧 Defender Integration ### Setting Up Defender Relayer 1. **Create Defender Relayer** - Go to OpenZeppelin Defender - Create a new relayer - Copy the relayer address 2. **Configure Environment** ```bash DEFENDER_ADMIN= ``` 3. **Deploy Contracts** - Contracts will use Defender address as admin - All admin functions can be executed via Defender 4. **Set Up Defender Actions** - Create Defender actions for `anchorStateProof()` - Create Defender actions for `mirrorTransaction()` - Configure Defender policies and rate limits --- **Last Updated**: 2025-12-11 **Status**: Deployment Complete with Defender Admin