# Etherscan Verification - Standard JSON Input Instructions **Issue**: Etherscan doesn't show "Via IR" option **Solution**: Use **Standard JSON Input** method with `viaIR: true` included --- ## ✅ Ready-to-Use Standard JSON **File**: `docs/CCIPWETH9Bridge_standard_json.json` This file contains: - ✅ Flattened contract source code - ✅ `viaIR: true` setting - ✅ Optimizer enabled (200 runs) - ✅ Compiler version 0.8.20 - ✅ All required settings --- ## 📋 Step-by-Step Instructions ### Step 1: Go to Etherscan 1. Navigate to: https://etherscan.io/address/0x89dd12025bfcd38a168455a44b400e913ed33be2#code 2. Click **"Contract"** tab 3. Click **"Verify and Publish"** ### Step 2: Select Compiler Type **Important**: Select **"Standard JSON Input"** (NOT "Single file") ### Step 3: Upload Standard JSON 1. Open the file: `docs/CCIPWETH9Bridge_standard_json.json` 2. Copy the **entire contents** of the JSON file 3. Paste into the **"Standard JSON Input"** field on Etherscan ### Step 4: Enter Constructor Arguments **ABI-Encoded Constructor Arguments**: ``` 0x00000000000000000000000080226fc0ee2b096224eeac085bb9a8cba1146f7d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca ``` Paste this into the **"Constructor Arguments"** field. ### Step 5: Submit 1. Click **"Verify and Publish"** 2. Wait for verification (up to 45 seconds) 3. Check the result --- ## 🔍 What's in the Standard JSON The Standard JSON includes: ```json { "language": "Solidity", "sources": { "CCIPWETH9Bridge.sol": { "content": "[flattened contract code]" } }, "settings": { "optimizer": { "enabled": true, "runs": 200 }, "viaIR": true, ← This is the key! "evmVersion": "london", "compiler": "0.8.20" } } ``` **Key Setting**: `"viaIR": true` - This matches the deployment settings. --- ## ⚠️ Alternative: Try Without Via IR If Standard JSON Input still fails, try the **Single File** method **without via-ir**: **Settings**: - **Compiler Type**: `SINGLE FILE / CONCATENATED METHOD` - **Compiler Version**: `v0.8.20+commit.a1b79de6` - **License**: `MIT License (MIT)` - **Optimization**: `Yes` (200 runs) - **Via IR**: Not available (leave as default) **Contract Code**: Copy from `docs/CCIPWETH9Bridge_flattened.sol` **Note**: This may work if the bytecode is compatible without via-ir, but it's less likely to succeed. --- ## 📝 Constructor Arguments (Decoded) For reference, the constructor arguments are: 1. `_ccipRouter`: `0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D` 2. `_weth9`: `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` 3. `_feeToken`: `0x514910771AF9Ca656af840dff83E8264EcF986CA` --- ## ✅ Expected Result With Standard JSON Input and `viaIR: true`, the bytecode should match and verification should succeed. --- ## 🔄 Troubleshooting ### If Standard JSON Input fails: 1. **Check JSON format**: Ensure it's valid JSON (no syntax errors) 2. **Verify viaIR setting**: Make sure `"viaIR": true` is present 3. **Check compiler version**: Ensure it matches `0.8.20` 4. **Try different compiler version**: Some versions may handle via-ir differently ### If all methods fail: - The contract may have been deployed with settings that Etherscan doesn't fully support - Consider using Sourcify (alternative verification service) - Or contact Etherscan support with deployment transaction details --- ## 📚 Files Reference - **Standard JSON**: `docs/CCIPWETH9Bridge_standard_json.json` - **Flattened Contract**: `docs/CCIPWETH9Bridge_flattened.sol` - **Documentation**: `docs/ETHERSCAN_VERIFICATION_NO_VIA_IR.md` --- **Last Updated**: $(date) **Status**: ✅ **READY - USE STANDARD JSON INPUT**