# Etherscan Verification Details **Contract**: `0x89dd12025bfCD38A168455A44B400e913ED33BE2` **Contract Name**: `CCIPWETH9Bridge` **Network**: Ethereum Mainnet --- ## 📋 Verification Form Fields ### Compiler Type **Select**: `Solidity (Single file)` or `Standard JSON Input` **Recommendation**: Start with `Solidity (Single file)`. If that fails due to imports, use `Standard JSON Input`. --- ### Compiler Version **Select**: `0.8.20` **Note**: - The contract source specifies `pragma solidity ^0.8.19;` - The foundry.toml specifies `solc_version = "0.8.20"` - The contract was deployed with version `0.8.20` - **Use `0.8.20` for verification** --- ### Open Source License Type **Select**: `MIT License (MIT)` **Source**: The contract file contains: ```solidity // SPDX-License-Identifier: MIT ``` --- ## 🔧 Additional Settings ### Optimization - **Enabled**: ✅ Yes - **Runs**: `200` ### Via IR - **Enabled**: ⚠️ Try both `Yes` and `No` - The contract was deployed with `--via-ir` flag - Etherscan may not support via-ir verification - If verification fails with via-ir enabled, try without it ### EVM Version - **Version**: `london` (default for Solidity 0.8.20) --- ## 📝 Constructor Arguments **ABI-Encoded Constructor Arguments**: ``` 0x00000000000000000000000080226fc0ee2b096224eeac085bb9a8cba1146f7d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca ``` **Decoded Arguments**: 1. `_ccipRouter`: `0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D` 2. `_weth9`: `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` 3. `_feeToken`: `0x514910771AF9Ca656af840dff83E8264EcF986CA` --- ## 🎯 Step-by-Step Verification ### Method 1: Solidity (Single file) 1. Go to: https://etherscan.io/address/0x89dd12025bfcd38a168455a44b400e913ed33be2#code 2. Click **"Contract"** tab → **"Verify and Publish"** 3. Fill in the form: - **Compiler Type**: `Solidity (Single file)` - **Compiler Version**: `0.8.20` - **License**: `MIT License (MIT)` - **Optimization**: `Yes` (200 runs) - **Via IR**: Try `No` first, then `Yes` if it fails 4. Paste the contract source code from `contracts/ccip/CCIPWETH9Bridge.sol` 5. **Important**: You'll need to flatten the contract (include all imports) 6. Enter constructor arguments (ABI-encoded) 7. Click **"Verify and Publish"** ### Method 2: Standard JSON Input If single-file verification fails: 1. Use the same form but select **"Standard JSON Input"** 2. Generate Standard JSON: ```bash cd /home/intlc/projects/smom-dbis-138 forge build --force # The Standard JSON will be in the build artifacts ``` 3. Upload the Standard JSON file 4. Enter constructor arguments 5. Submit --- ## ⚠️ Common Issues ### Issue: Bytecode Mismatch **Solution**: - Try verification without `via-ir` first - Ensure all imports are included (flatten the contract) - Verify compiler version matches exactly (0.8.20) ### Issue: Missing Imports **Solution**: - Use "Flatten Source Code" feature in Etherscan - Or use Standard JSON Input method ### Issue: Constructor Arguments Error **Solution**: - Ensure addresses are in correct format (lowercase or checksummed) - Verify ABI encoding is correct --- ## 📄 Contract Source Location **File**: `/home/intlc/projects/smom-dbis-138/contracts/ccip/CCIPWETH9Bridge.sol` **Dependencies**: - `./IRouterClient.sol` (in same directory) --- ## ✅ Quick Reference | Field | Value | |-------|-------| | **Compiler Type** | Solidity (Single file) | | **Compiler Version** | 0.8.20 | | **License** | MIT License (MIT) | | **Optimization** | Yes (200 runs) | | **Via IR** | Try No first, then Yes | | **EVM Version** | london | --- **Last Updated**: $(date)