# 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)

