# Etherscan Contract Verification Guide

**Date**: 2025-12-11
**Status**: Ready for Verification

---

## 📋 Contracts to Verify

### Ethereum Mainnet

| Contract | Address | Status |
|----------|---------|--------|
| **CCIPWETH9Bridge** | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` | ❌ Not Verified |
| **CCIPWETH10Bridge** | `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` | ❌ Not Verified |

---

## 🔧 Verification Methods

### Method 1: Automated Script (Recommended)

```bash
cd /home/intlc/projects/smom-dbis-138
./scripts/deployment/verify-mainnet-etherscan.sh
```

**Requirements**:
- `ETHERSCAN_API_KEY` set in `.env`
- Foundry installed
- Contracts compiled

---

### Method 2: Manual Foundry Verification

#### CCIPWETH9Bridge

```bash
# Encode constructor arguments
CONSTRUCTOR_ARGS=$(cast abi-encode "constructor(address,address,address)" \
  0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D \
  0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 \
  0x514910771AF9Ca656af840dff83E8264EcF986CA)

# Verify contract
forge verify-contract \
  --chain-id 1 \
  --num-of-optimizations 200 \
  --watch \
  --constructor-args "$CONSTRUCTOR_ARGS" \
  0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6 \
  contracts/ccip/CCIPWETH9Bridge.sol:CCIPWETH9Bridge \
  $ETHERSCAN_API_KEY
```

#### CCIPWETH10Bridge

```bash
# Encode constructor arguments
CONSTRUCTOR_ARGS=$(cast abi-encode "constructor(address,address,address)" \
  0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D \
  0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f \
  0x514910771AF9Ca656af840dff83E8264EcF986CA)

# Verify contract
forge verify-contract \
  --chain-id 1 \
  --num-of-optimizations 200 \
  --watch \
  --constructor-args "$CONSTRUCTOR_ARGS" \
  0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e \
  contracts/ccip/CCIPWETH10Bridge.sol:CCIPWETH10Bridge \
  $ETHERSCAN_API_KEY
```

---

### Method 3: Etherscan Web UI

1. **Get Etherscan API Key**:
   - Visit: https://etherscan.io/myapikey
   - Create account (if needed)
   - Generate API key

2. **Navigate to Contract**:
   - CCIPWETH9Bridge: https://etherscan.io/address/0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6#code
   - CCIPWETH10Bridge: https://etherscan.io/address/0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e#code

3. **Click "Verify and Publish"**:
   - Select "Via Standard JSON Input"
   - Upload compiler metadata
   - Enter constructor arguments
   - Submit

4. **Or use the verification page**:
   - Visit: https://etherscan.io/myverify_address
   - Enter contract address
   - Follow verification wizard

---

## 📝 Constructor Arguments

### CCIPWETH9Bridge

| Parameter | Value | Description |
|-----------|-------|-------------|
| `_ccipRouter` | `0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D` | Chainlink CCIP Router |
| `_weth9` | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | WETH9 token address |
| `_feeToken` | `0x514910771AF9Ca656af840dff83E8264EcF986CA` | LINK token address |

**Encoded**: `00000000000000000000000080226fc0ee2b096224eeac085bb9a8cba1146f7d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca`

### CCIPWETH10Bridge

| Parameter | Value | Description |
|-----------|-------|-------------|
| `_ccipRouter` | `0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D` | Chainlink CCIP Router |
| `_weth10` | `0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f` | WETH10 token address |
| `_feeToken` | `0x514910771AF9Ca656af840dff83E8264EcF986CA` | LINK token address |

**Encoded**: `00000000000000000000000080226fc0ee2b096224eeac085bb9a8cba1146f7d000000000000000000000000f4bb2e28688e89fcce3c0580d37d36a7672e8a9f000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca`

---

## ⚙️ Compiler Settings

- **Compiler Version**: `0.8.19`
- **Optimization**: `200` runs
- **EVM Version**: `london` (default)

---

## ✅ Verification Checklist

- [ ] Etherscan API key obtained and added to `.env`
- [ ] Contracts compiled with correct settings
- [ ] Constructor arguments encoded correctly
- [ ] Network connection to Ethereum Mainnet working
- [ ] Sufficient gas for verification transaction (if needed)

---

## 🔗 Quick Links

- **Etherscan Verification Page**: https://etherscan.io/myverify_address
- **CCIPWETH9Bridge**: https://etherscan.io/address/0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6
- **CCIPWETH10Bridge**: https://etherscan.io/address/0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e
- **Get API Key**: https://etherscan.io/myapikey

---

## 📚 Additional Resources

- [Etherscan Verification Guide](https://docs.etherscan.io/contracts/verifying-contracts-on-etherscan)
- [Foundry Verification Docs](https://book.getfoundry.sh/reference/forge/forge-verify-contract)

---

**Last Updated**: 2025-12-11

