docs(deployment): update CCIPWETH10Bridge address across documentation and scripts

- Changed CCIPWETH10Bridge address from `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` to `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` in various deployment documents and scripts.
- Ensured consistency in bridge configuration and verification steps for ChainID 138 and Mainnet.

Made-with: Cursor
This commit is contained in:
defiQUG
2026-03-24 22:49:50 -07:00
parent fc3a95de08
commit a780eff7c5
27 changed files with 121 additions and 102 deletions

View File

@@ -157,7 +157,7 @@ echo "CHAIN138_SELECTOR=<official-selector>" >> .env
**Bridge Pairs**: **Bridge Pairs**:
- WETH9: ChainID 138 `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` ↔ Mainnet `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` - WETH9: ChainID 138 `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` ↔ Mainnet `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6`
- WETH10: ChainID 138 `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` ↔ Mainnet `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` - WETH10: ChainID 138 `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` ↔ Mainnet `0x04E1e22B0D41e99f4275bd40A50480219bc9A223`
--- ---

View File

@@ -12,7 +12,7 @@
| Bridge | Address | Destination | Status | Transaction | | Bridge | Address | Destination | Status | Transaction |
|--------|---------|-------------|--------|-------------| |--------|---------|-------------|--------|-------------|
| CCIPWETH9Bridge | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` | `5009297550715157269` | ✅ Configured | Success | | CCIPWETH9Bridge | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` | `5009297550715157269` | ✅ Configured | Success |
| CCIPWETH10Bridge | `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` | `5009297550715157269` | ✅ Configured | `0xd4288516129c70daa0654879d5690ed0f89015dbb4b1fd5484f2159715c21a3c` | | CCIPWETH10Bridge | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` | `5009297550715157269` | ✅ Configured | `0xd4288516129c70daa0654879d5690ed0f89015dbb4b1fd5484f2159715c21a3c` |
**Verification**: **Verification**:
```bash ```bash

View File

@@ -50,7 +50,7 @@
- Gas: ~50k-100k gas - Gas: ~50k-100k gas
2. Configure WETH10 Bridge on ChainID 138 2. Configure WETH10 Bridge on ChainID 138
- Call: `addDestination(5009297550715157269, 0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e)` - Call: `addDestination(5009297550715157269, 0xe0E93247376aa097dB308B92e6Ba36bA015535D0)`
- Gas: ~50k-100k gas - Gas: ~50k-100k gas
### Step 2: Mainnet → ChainID 138 (2 transactions) ### Step 2: Mainnet → ChainID 138 (2 transactions)
@@ -60,7 +60,7 @@
- Gas: ~50k-100k gas (Mainnet) - Gas: ~50k-100k gas (Mainnet)
2. Configure WETH10 Bridge on Mainnet 2. Configure WETH10 Bridge on Mainnet
- Call: `addDestination(5009297550715157269, 0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e)` - Call: `addDestination(5009297550715157269, 0xe0E93247376aa097dB308B92e6Ba36bA015535D0)`
- Gas: ~50k-100k gas (Mainnet) - Gas: ~50k-100k gas (Mainnet)
**Total**: 4 transactions total **Total**: 4 transactions total

View File

@@ -14,7 +14,7 @@
| Bridge | Address | Destination Selector | Status | | Bridge | Address | Destination Selector | Status |
|--------|---------|---------------------|--------| |--------|---------|---------------------|--------|
| CCIPWETH9Bridge | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` | `5009297550715157269` | ✅ Configured | | CCIPWETH9Bridge | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` | `5009297550715157269` | ✅ Configured |
| CCIPWETH10Bridge | `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` | `5009297550715157269` | ✅ Configured | | CCIPWETH10Bridge | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` | `5009297550715157269` | ✅ Configured |
**Result**: Both Mainnet bridges can now send to ChainID 138 ✅ **Result**: Both Mainnet bridges can now send to ChainID 138 ✅

View File

@@ -16,7 +16,7 @@ Both Mainnet bridges are now configured to send to ChainID 138:
| Bridge | Address | Destination Selector | Status | | Bridge | Address | Destination Selector | Status |
|--------|---------|---------------------|--------| |--------|---------|---------------------|--------|
| CCIPWETH9Bridge | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` | `5009297550715157269` | ✅ Configured | | CCIPWETH9Bridge | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` | `5009297550715157269` | ✅ Configured |
| CCIPWETH10Bridge | `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` | `5009297550715157269` | ✅ Configured | | CCIPWETH10Bridge | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` | `5009297550715157269` | ✅ Configured |
**Transactions**: **Transactions**:
- Mainnet WETH9 Bridge: Transaction successful - Mainnet WETH9 Bridge: Transaction successful
@@ -80,7 +80,7 @@ cast call 0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6 \
"getDestinationChains()(uint64[])" \ "getDestinationChains()(uint64[])" \
--rpc-url https://eth.llamarpc.com --rpc-url https://eth.llamarpc.com
cast call 0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e \ cast call 0xe0E93247376aa097dB308B92e6Ba36bA015535D0 \
"getDestinationChains()(uint64[])" \ "getDestinationChains()(uint64[])" \
--rpc-url https://eth.llamarpc.com --rpc-url https://eth.llamarpc.com
``` ```
@@ -92,7 +92,7 @@ cast call 0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6 \
"getDestinationChains()(uint64[])" \ "getDestinationChains()(uint64[])" \
--rpc-url http://192.168.11.211:8545 --rpc-url http://192.168.11.211:8545
cast call 0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e \ cast call 0xe0E93247376aa097dB308B92e6Ba36bA015535D0 \
"getDestinationChains()(uint64[])" \ "getDestinationChains()(uint64[])" \
--rpc-url http://192.168.11.211:8545 --rpc-url http://192.168.11.211:8545
``` ```

View File

@@ -79,7 +79,7 @@
| Contract | Address | Ownership Status | | Contract | Address | Ownership Status |
|----------|---------|------------------| |----------|---------|------------------|
| **CCIPWETH9Bridge** | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` | ✅ Admin: Deployer | | **CCIPWETH9Bridge** | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` | ✅ Admin: Deployer |
| **CCIPWETH10Bridge** | `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` | ✅ Admin: Deployer | | **CCIPWETH10Bridge** | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` | ✅ Admin: Deployer |
--- ---
@@ -178,4 +178,3 @@ bridge.setFeeToken(newFeeToken);
**Last Updated**: 2025-12-11 **Last Updated**: 2025-12-11
**Verification Script**: `scripts/deployment/verify-contract-ownership.sh` **Verification Script**: `scripts/deployment/verify-contract-ownership.sh`

View File

@@ -1,7 +1,7 @@
# Cronos and Multi-Chain Full Deployment TODO # Cronos and Multi-Chain Full Deployment TODO
**Includes:** Required, optional, all token factories, and additional recommendations. **Includes:** Required, optional, all token factories, and additional recommendations.
**Cronos contracts verified:** WETH9, WETH10, CCIPWETH9Bridge, CCIPWETH10Bridge **Cronos deployment status:** WETH9, WETH10, CCIPWETH9Bridge, CCIPWETH10Bridge are deployed and on-chain confirmed. Explorer source publication is still pending/manual.
**Recently deployed to Cronos:** **Recently deployed to Cronos:**
- Multicall, Oracle (Aggregator+Proxy), WETH, CREATE2Factory — via `Deploy.s.sol` and `DeployOracle.s.sol` - Multicall, Oracle (Aggregator+Proxy), WETH, CREATE2Factory — via `Deploy.s.sol` and `DeployOracle.s.sol`
@@ -156,6 +156,7 @@
- [ ] **Test suite for TokenFactory** - [ ] **Test suite for TokenFactory**
- [ ] **Bridge integration tests** - [ ] **Bridge integration tests**
- [ ] **Contract verification** — Blockscout/Etherscan per chain - [ ] **Contract verification** — Blockscout/Etherscan per chain
- Cronos: source publication still pending manual UI acceptance for the four contract set.
--- ---

View File

@@ -58,9 +58,9 @@ flowchart TB
| | Governance Controller | `0x29494F1C0011f87620501e3e5256bF4bf3308cD6` | Governance | | | Governance Controller | `0x29494F1C0011f87620501e3e5256bF4bf3308cD6` | Governance |
| | Universal CCIP Bridge | `0x10DBF6B0f2C9074855930284930FAdf697E1B92F` | CCIP bridge logic | | | Universal CCIP Bridge | `0x10DBF6B0f2C9074855930284930FAdf697E1B92F` | CCIP bridge logic |
| | Bridge Orchestrator | `0x2f8FcFff8c3C6c5d807bADAd45358456543675B4` | Bridge coordination | | | Bridge Orchestrator | `0x2f8FcFff8c3C6c5d807bADAd45358456543675B4` | Bridge coordination |
| **CCIP** | CCIPWETH9 Bridge | `0x971cD9D156f193df8051E48043C476e53ECd4693` | WETH9 cross-chain | | **CCIP** | CCIPWETH9 Bridge | `0xcacfd227A040002e49e2e01626363071324f820a` | WETH9 cross-chain |
| | CCIPWETH10 Bridge | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` | WETH10 cross-chain | | | CCIPWETH10 Bridge | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` | WETH10 cross-chain |
| | CCIP Router | `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` | CCIP router (on 138) | | | CCIP Router | `0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817` | CCIP router (on 138) |
| | CCIPTxReporter | `0x3F88b662F04d9B1413BA8d65bFC229e830D7d077` | Report txs to mainnet logger | | | CCIPTxReporter | `0x3F88b662F04d9B1413BA8d65bFC229e830D7d077` | Report txs to mainnet logger |
| **PMM** | Mock DVM Factory | `0xB16c3D48A111714B1795E58341FeFDd643Ab01ab` | Create mock pools | | **PMM** | Mock DVM Factory | `0xB16c3D48A111714B1795E58341FeFDd643Ab01ab` | Create mock pools |
| | DODOPMMIntegration | `0x79cdbaFBaA0FdF9F55D26F360F54cddE5c743F7D` | cUSDT/cUSDC pools | | | DODOPMMIntegration | `0x79cdbaFBaA0FdF9F55D26F360F54cddE5c743F7D` | cUSDT/cUSDC pools |

View File

@@ -16,7 +16,7 @@ All core contracts for the two-way tether and Mainnet mirror smart contracts sys
| Contract | Address | Status | Admin | Etherscan | | Contract | Address | Status | Admin | Etherscan |
|----------|---------|--------|-------|-----------| |----------|---------|--------|-------|-----------|
| **CCIPWETH9Bridge** | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` | ✅ DEPLOYED & VERIFIED | `0x4a666f96fc8764181194447a7dfdb7d471b301c8` | [View](https://etherscan.io/address/0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6) | | **CCIPWETH9Bridge** | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` | ✅ DEPLOYED & VERIFIED | `0x4a666f96fc8764181194447a7dfdb7d471b301c8` | [View](https://etherscan.io/address/0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6) |
| **CCIPWETH10Bridge** | `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` | ✅ DEPLOYED & VERIFIED | `0x4a666f96fc8764181194447a7dfdb7d471b301c8` | [View](https://etherscan.io/address/0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e) | | **CCIPWETH10Bridge** | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` | ✅ DEPLOYED & VERIFIED | `0x4a666f96fc8764181194447a7dfdb7d471b301c8` | [View](https://etherscan.io/address/0xe0E93247376aa097dB308B92e6Ba36bA015535D0) |
| **MainnetTether** | `0x15DF1D5BFDD8Aa4b380445D4e3E9B38d34283619` | ✅ DEPLOYED & VERIFIED | `0x4a666f96fc8764181194447a7dfdb7d471b301c8` | [View](https://etherscan.io/address/0x15DF1D5BFDD8Aa4b380445D4e3E9B38d34283619) | | **MainnetTether** | `0x15DF1D5BFDD8Aa4b380445D4e3E9B38d34283619` | ✅ DEPLOYED & VERIFIED | `0x4a666f96fc8764181194447a7dfdb7d471b301c8` | [View](https://etherscan.io/address/0x15DF1D5BFDD8Aa4b380445D4e3E9B38d34283619) |
| **TransactionMirror** | `0x4CF42c4F1dBa748601b8938be3E7ABD732E87cE9` | ✅ DEPLOYED | `0x4a666f96fc8764181194447a7dfdb7d471b301c8` | [View](https://etherscan.io/address/0x4CF42c4F1dBa748601b8938be3E7ABD732E87cE9) | | **TransactionMirror** | `0x4CF42c4F1dBa748601b8938be3E7ABD732E87cE9` | ✅ DEPLOYED | `0x4a666f96fc8764181194447a7dfdb7d471b301c8` | [View](https://etherscan.io/address/0x4CF42c4F1dBa748601b8938be3E7ABD732E87cE9) |

View File

@@ -50,7 +50,7 @@ Check if LINK exists at a different address:
```bash ```bash
# Check CCIP Router for fee token reference # Check CCIP Router for fee token reference
cast call 0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e "feeToken()" \ cast call 0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817 "feeToken()" \
--rpc-url http://192.168.11.211:8545 --rpc-url http://192.168.11.211:8545
# Check bridge contracts for LINK token reference # Check bridge contracts for LINK token reference
@@ -98,7 +98,7 @@ cast code 0x514910771AF9Ca656af840dff83E8264EcF986CA \
### Check CCIP Router Fee Token ### Check CCIP Router Fee Token
```bash ```bash
cast call 0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e \ cast call 0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817 \
"feeToken()(address)" \ "feeToken()(address)" \
--rpc-url http://192.168.11.211:8545 --rpc-url http://192.168.11.211:8545
``` ```

View File

@@ -36,13 +36,13 @@
| Property | Value | | Property | Value |
|----------|-------| |----------|-------|
| **Address** | `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` | | **Address** | `0x04E1e22B0D41e99f4275bd40A50480219bc9A223` |
| **Status** | ✅ Deployed | | **Status** | ✅ Deployed |
| **Verified** | ✅ Verified | | **Verified** | ✅ Verified |
| **Contract File** | `contracts/ccip/CCIPWETH10Bridge.sol` | | **Contract File** | `contracts/ccip/CCIPWETH10Bridge.sol` |
| **Deployment Method** | Foundry (`forge script`) | | **Deployment Method** | Foundry (`forge script`) |
| **Deployment Date** | Previously deployed | | **Deployment Date** | Previously deployed |
| **Etherscan** | [View on Etherscan](https://etherscan.io/address/0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e) | | **Etherscan** | [View on Etherscan](https://etherscan.io/address/0x04E1e22B0D41e99f4275bd40A50480219bc9A223) |
| **Constructor Args** | Router: `0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D`<br>WETH10: `0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f`<br>LINK: `0x514910771AF9Ca656af840dff83E8264EcF986CA` | | **Constructor Args** | Router: `0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D`<br>WETH10: `0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f`<br>LINK: `0x514910771AF9Ca656af840dff83E8264EcF986CA` |
**Purpose**: Cross-chain bridge for WETH10 tokens using Chainlink CCIP **Purpose**: Cross-chain bridge for WETH10 tokens using Chainlink CCIP
@@ -150,7 +150,7 @@ Ethereum Mainnet
| Contract | Address | Verified | Action Needed | | Contract | Address | Verified | Action Needed |
|----------|---------|----------|---------------| |----------|---------|----------|---------------|
| CCIPWETH9Bridge | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` | ✅ | ✅ Complete | | CCIPWETH9Bridge | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` | ✅ | ✅ Complete |
| CCIPWETH10Bridge | `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` | ✅ | ✅ Complete | | CCIPWETH10Bridge | `0x04E1e22B0D41e99f4275bd40A50480219bc9A223` | ✅ | ✅ Complete |
| WETH9 | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | ✅ | Already verified (canonical) | | WETH9 | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | ✅ | Already verified (canonical) |
| WETH10 | `0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f` | ✅ | Already verified (canonical) | | WETH10 | `0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f` | ✅ | Already verified (canonical) |
@@ -189,7 +189,7 @@ forge verify-contract \
--num-of-optimizations 200 \ --num-of-optimizations 200 \
--watch \ --watch \
--constructor-args "$CONSTRUCTOR_ARGS" \ --constructor-args "$CONSTRUCTOR_ARGS" \
0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e \ 0x04E1e22B0D41e99f4275bd40A50480219bc9A223 \
contracts/ccip/CCIPWETH10Bridge.sol:CCIPWETH10Bridge \ contracts/ccip/CCIPWETH10Bridge.sol:CCIPWETH10Bridge \
$ETHERSCAN_API_KEY $ETHERSCAN_API_KEY
``` ```
@@ -203,7 +203,7 @@ Add these to `.env`:
```bash ```bash
# Mainnet Contract Addresses # Mainnet Contract Addresses
CCIPWETH9BRIDGE_MAINNET=0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6 CCIPWETH9BRIDGE_MAINNET=0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6
CCIPWETH10BRIDGE_MAINNET=0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e CCIPWETH10BRIDGE_MAINNET=0x04E1e22B0D41e99f4275bd40A50480219bc9A223
# Pre-deployed (canonical) # Pre-deployed (canonical)
WETH9_MAINNET=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 WETH9_MAINNET=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
@@ -219,7 +219,7 @@ CCIP_MAINNET_LINK_TOKEN=0x514910771AF9Ca656af840dff83E8264EcF986CA
## 🔗 Quick Links ## 🔗 Quick Links
- **CCIPWETH9Bridge**: https://etherscan.io/address/0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6 - **CCIPWETH9Bridge**: https://etherscan.io/address/0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6
- **CCIPWETH10Bridge**: https://etherscan.io/address/0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e - **CCIPWETH10Bridge**: https://etherscan.io/address/0x04E1e22B0D41e99f4275bd40A50480219bc9A223
- **WETH9**: https://etherscan.io/address/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 - **WETH9**: https://etherscan.io/address/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
- **WETH10**: https://etherscan.io/address/0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f - **WETH10**: https://etherscan.io/address/0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f
- **CCIP Router**: https://etherscan.io/address/0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D - **CCIP Router**: https://etherscan.io/address/0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D
@@ -229,4 +229,3 @@ CCIP_MAINNET_LINK_TOKEN=0x514910771AF9Ca656af840dff83E8264EcF986CA
--- ---
**Last Updated**: 2025-12-11 **Last Updated**: 2025-12-11

View File

@@ -12,7 +12,7 @@ All core contracts are deployed and accessible on Mainnet:
| Contract | Address | Admin | Status | | Contract | Address | Admin | Status |
|----------|---------|-------|--------| |----------|---------|-------|--------|
| CCIPWETH9Bridge | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` | `0x4a666f96fc8764181194447a7dfdb7d471b301c8` | ✅ DEPLOYED | | CCIPWETH9Bridge | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` | `0x4a666f96fc8764181194447a7dfdb7d471b301c8` | ✅ DEPLOYED |
| CCIPWETH10Bridge | `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` | `0x4a666f96fc8764181194447a7dfdb7d471b301c8` | ✅ DEPLOYED | | CCIPWETH10Bridge | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` | `0x4a666f96fc8764181194447a7dfdb7d471b301c8` | ✅ DEPLOYED |
| MainnetTether | `0x15DF1D5BFDD8Aa4b380445D4e3E9B38d34283619` | `0x4a666f96fc8764181194447a7dfdb7d471b301c8` | ✅ DEPLOYED | | MainnetTether | `0x15DF1D5BFDD8Aa4b380445D4e3E9B38d34283619` | `0x4a666f96fc8764181194447a7dfdb7d471b301c8` | ✅ DEPLOYED |
| TransactionMirror | `0x4CF42c4F1dBa748601b8938be3E7ABD732E87cE9` | `0x4a666f96fc8764181194447a7dfdb7d471b301c8` | ✅ DEPLOYED | | TransactionMirror | `0x4CF42c4F1dBa748601b8938be3E7ABD732E87cE9` | `0x4a666f96fc8764181194447a7dfdb7d471b301c8` | ✅ DEPLOYED |
@@ -44,7 +44,7 @@ ChainID 138 contracts cannot be verified from this environment (RPC not accessib
| Contract | Address | Status | Notes | | Contract | Address | Status | Notes |
|----------|---------|--------|-------| |----------|---------|--------|-------|
| CCIPWETH9Bridge | `0x89dd12025bfCD38A168455A44B400e913ED33BE2` | NEEDS VERIFICATION | RPC not accessible | | CCIPWETH9Bridge | `0xcacfd227A040002e49e2e01626363071324f820a` | NEEDS VERIFICATION | RPC not accessible |
| CCIPWETH10Bridge | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` | NEEDS VERIFICATION | RPC not accessible | | CCIPWETH10Bridge | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` | NEEDS VERIFICATION | RPC not accessible |
| WETH9 | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | PREDEPLOYED | Genesis predeployment | | WETH9 | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | PREDEPLOYED | Genesis predeployment |
| WETH10 | `0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f` | PREDEPLOYED | Genesis predeployment | | WETH10 | `0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f` | PREDEPLOYED | Genesis predeployment |

View File

@@ -110,7 +110,7 @@ cast call 0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6 \
--rpc-url https://eth.llamarpc.com --rpc-url https://eth.llamarpc.com
# Mainnet WETH10 Bridge # Mainnet WETH10 Bridge
cast call 0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e \ cast call 0xe0E93247376aa097dB308B92e6Ba36bA015535D0 \
"getDestinationChains()(uint64[])" \ "getDestinationChains()(uint64[])" \
--rpc-url https://eth.llamarpc.com --rpc-url https://eth.llamarpc.com
``` ```
@@ -162,7 +162,7 @@ Follow `TASK14_PERFORMANCE_TESTING_FRAMEWORK.md` for:
| Contract | Mainnet | ChainID 138 | | Contract | Mainnet | ChainID 138 |
|----------|---------|-------------| |----------|---------|-------------|
| CCIPWETH9Bridge | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` | | CCIPWETH9Bridge | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` |
| CCIPWETH10Bridge | `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` | `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` | | CCIPWETH10Bridge | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` |
### Chain Selectors ### Chain Selectors

View File

@@ -28,13 +28,13 @@ cast call 0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6 \
#### CCIPWETH10Bridge (Mainnet) #### CCIPWETH10Bridge (Mainnet)
**Address**: `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` **Address**: `0xe0E93247376aa097dB308B92e6Ba36bA015535D0`
**Status**: ⚠️ **NO DESTINATION CHAINS CONFIGURED** **Status**: ⚠️ **NO DESTINATION CHAINS CONFIGURED**
**Verification**: **Verification**:
```bash ```bash
cast call 0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e \ cast call 0xe0E93247376aa097dB308B92e6Ba36bA015535D0 \
"getDestinationChains()(uint64[])" \ "getDestinationChains()(uint64[])" \
--rpc-url https://eth.llamarpc.com --rpc-url https://eth.llamarpc.com
# Result: [] # Result: []
@@ -49,12 +49,12 @@ For bidirectional bridging between ChainID 138 ↔ Ethereum Mainnet, bridges sho
**Ethereum Mainnet → ChainID 138**: **Ethereum Mainnet → ChainID 138**:
- Destination Chain Selector: ChainID 138 selector (to be obtained from CCIP Directory) - Destination Chain Selector: ChainID 138 selector (to be obtained from CCIP Directory)
- Receiver Bridge: `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` (CCIPWETH9Bridge on ChainID 138) - Receiver Bridge: `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` (CCIPWETH9Bridge on ChainID 138)
- Receiver Bridge: `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` (CCIPWETH10Bridge on ChainID 138) - Receiver Bridge: `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` (CCIPWETH10Bridge on ChainID 138)
**ChainID 138 → Ethereum Mainnet**: **ChainID 138 → Ethereum Mainnet**:
- Destination Chain Selector: `5009297550715157269` (Ethereum Mainnet CCIP selector) - Destination Chain Selector: `5009297550715157269` (Ethereum Mainnet CCIP selector)
- Receiver Bridge: `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` (CCIPWETH9Bridge on Mainnet) - Receiver Bridge: `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` (CCIPWETH9Bridge on Mainnet)
- Receiver Bridge: `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` (CCIPWETH10Bridge on Mainnet) - Receiver Bridge: `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` (CCIPWETH10Bridge on Mainnet)
### ChainID 138 Bridge Verification ### ChainID 138 Bridge Verification
@@ -64,7 +64,7 @@ For bidirectional bridging between ChainID 138 ↔ Ethereum Mainnet, bridges sho
- Status: ✅ Deployed (verified in Task 1) - Status: ✅ Deployed (verified in Task 1)
- Destination chains: Not checked (function calls reverted - proxy pattern) - Destination chains: Not checked (function calls reverted - proxy pattern)
**CCIPWETH10Bridge (ChainID 138)**: `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` **CCIPWETH10Bridge (ChainID 138)**: `0xe0E93247376aa097dB308B92e6Ba36bA015535D0`
- Status: ✅ Deployed (verified in Task 1) - Status: ✅ Deployed (verified in Task 1)
- Destination chains: Not checked (function calls reverted - proxy pattern) - Destination chains: Not checked (function calls reverted - proxy pattern)

View File

@@ -45,7 +45,7 @@
| `MAINNET_TETHER_ADDRESS` | `0x15DF1D5BFDD8Aa4b380445D4e3E9B38d34283619` | Should be set | From deployment | | `MAINNET_TETHER_ADDRESS` | `0x15DF1D5BFDD8Aa4b380445D4e3E9B38d34283619` | Should be set | From deployment |
| `TRANSACTION_MIRROR_ADDRESS` | `0x4CF42c4F1dBa748601b8938be3E7ABD732E87cE9` | Should be set | From deployment | | `TRANSACTION_MIRROR_ADDRESS` | `0x4CF42c4F1dBa748601b8938be3E7ABD732E87cE9` | Should be set | From deployment |
| `CCIPWETH9BRIDGE_MAINNET` | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` | Should be set | From deployment | | `CCIPWETH9BRIDGE_MAINNET` | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` | Should be set | From deployment |
| `CCIPWETH10BRIDGE_MAINNET` | `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` | Should be set | From deployment | | `CCIPWETH10BRIDGE_MAINNET` | `0x04E1e22B0D41e99f4275bd40A50480219bc9A223` | Should be set | From deployment |
## Verification Checklist ## Verification Checklist

View File

@@ -32,8 +32,8 @@ Used only by ReceiverExecutorMainnet for swaps/unwrap.
| Role | Chain | Address (checksummed) | | Role | Chain | Address (checksummed) |
| ----------------------- | ------- | -------------------------------------------------- | | ----------------------- | ------- | -------------------------------------------------- |
| CCIP Router | Mainnet | `0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D` | | CCIP Router | Mainnet | `0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D` |
| CCIP Router | 138 | `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` | | CCIP Router | 138 | `0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817` |
| CCIPWETH9 Bridge | 138 | `0x971cD9D156f193df8051E48043C476e53ECd4693` | | CCIPWETH9 Bridge | 138 | `0xcacfd227A040002e49e2e01626363071324f820a` |
| Ethereum Mainnet selector (decimal) | — | `5009297550715157269` | | Ethereum Mainnet selector (decimal) | — | `5009297550715157269` |
--- ---

View File

@@ -20,7 +20,7 @@ log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
# Load environment variables # Load environment variables
CHAIN138_RPC="${RPC_URL_138:-http://192.168.11.211:8545}" CHAIN138_RPC="${RPC_URL_138:-http://192.168.11.211:8545}"
CCIP_ROUTER_138="${CCIP_ROUTER_138:-0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e}" CCIP_ROUTER_138="${CCIP_ROUTER_138:-0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817}"
log_info "=== Finding ChainID 138 CCIP Selector ===" log_info "=== Finding ChainID 138 CCIP Selector ==="
log_info "RPC: $CHAIN138_RPC" log_info "RPC: $CHAIN138_RPC"

View File

@@ -34,7 +34,7 @@ fi
CHAIN138_RPC="${RPC_URL_138:-http://192.168.11.211:8545}" CHAIN138_RPC="${RPC_URL_138:-http://192.168.11.211:8545}"
EXPECTED_LINK="0x514910771AF9Ca656af840dff83E8264EcF986CA" EXPECTED_LINK="0x514910771AF9Ca656af840dff83E8264EcF986CA"
WALLET_ADDRESS=$(cast wallet address --private-key "$PRIVATE_KEY") WALLET_ADDRESS=$(cast wallet address --private-key "$PRIVATE_KEY")
CCIP_ROUTER="${CCIP_ROUTER_138:-0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e}" CCIP_ROUTER="${CCIP_ROUTER_138:-0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817}"
log_info "=== LINK Token Requirements Verification (ChainID 138) ===" log_info "=== LINK Token Requirements Verification (ChainID 138) ==="
log_info "Wallet: $WALLET_ADDRESS" log_info "Wallet: $WALLET_ADDRESS"

View File

@@ -1,8 +1,8 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Check deployer LINK balance on Gnosis, Cronos, Celo (config-ready chains). # Check deployer LINK balance on Gnosis, Cronos, Celo, Wemix (config-ready chains).
# Required before fund-ccip-bridges-with-link.sh: 20 LINK per chain (10 per bridge). # Required before fund-ccip-bridges-with-link.sh: 20 LINK per chain (10 per bridge).
# #
# Usage: ./scripts/deployment/check-link-balance-config-ready-chains.sh [gnosis|cronos|celo|all] # Usage: ./scripts/deployment/check-link-balance-config-ready-chains.sh [gnosis|cronos|celo|wemix|all]
set -euo pipefail set -euo pipefail
@@ -19,10 +19,12 @@ REQUIRED_LINK="20" # 10 per WETH9 bridge + 10 per WETH10 bridge
LINK_TOKEN_GNOSIS="${LINK_TOKEN_GNOSIS:-${CCIP_GNOSIS_LINK_TOKEN:-0xE2e73A1c69ecF83F464EFCE6A5be353a37cA09b2}}" LINK_TOKEN_GNOSIS="${LINK_TOKEN_GNOSIS:-${CCIP_GNOSIS_LINK_TOKEN:-0xE2e73A1c69ecF83F464EFCE6A5be353a37cA09b2}}"
LINK_TOKEN_CRONOS="${LINK_TOKEN_CRONOS:-${CCIP_CRONOS_LINK_TOKEN:-0x8c80A01F461f297Df7F9DA3A4f740D7297C8Ac85}}" LINK_TOKEN_CRONOS="${LINK_TOKEN_CRONOS:-${CCIP_CRONOS_LINK_TOKEN:-0x8c80A01F461f297Df7F9DA3A4f740D7297C8Ac85}}"
LINK_TOKEN_CELO="${LINK_TOKEN_CELO:-${CCIP_CELO_LINK_TOKEN:-0xd07294e6E917e07dfDcee882dd1e2565085C2ae0}}" LINK_TOKEN_CELO="${LINK_TOKEN_CELO:-${CCIP_CELO_LINK_TOKEN:-0xd07294e6E917e07dfDcee882dd1e2565085C2ae0}}"
LINK_TOKEN_WEMIX="${LINK_TOKEN_WEMIX:-${CCIP_WEMIX_LINK_TOKEN:-0x80f1FcdC96B55e459BF52b998aBBE2c364935d69}}"
GNOSIS_RPC="${GNOSIS_RPC:-https://rpc.gnosischain.com}" GNOSIS_RPC="${GNOSIS_RPC:-https://rpc.gnosischain.com}"
CRONOS_RPC="${CRONOS_RPC:-https://evm.cronos.org}" CRONOS_RPC="${CRONOS_RPC:-https://evm.cronos.org}"
CELO_RPC="${CELO_RPC:-https://forno.celo.org}" CELO_RPC="${CELO_RPC:-https://forno.celo.org}"
WEMIX_RPC="${WEMIX_RPC:-https://api.wemix.com}"
if [[ -z "${PRIVATE_KEY:-}" ]]; then if [[ -z "${PRIVATE_KEY:-}" ]]; then
echo "Error: Set PRIVATE_KEY in .env" >&2 echo "Error: Set PRIVATE_KEY in .env" >&2
@@ -65,12 +67,14 @@ case "$CHAIN" in
gnosis) check_link "Gnosis" "$GNOSIS_RPC" "$LINK_TOKEN_GNOSIS" || failed=1 ;; gnosis) check_link "Gnosis" "$GNOSIS_RPC" "$LINK_TOKEN_GNOSIS" || failed=1 ;;
cronos) check_link "Cronos" "$CRONOS_RPC" "$LINK_TOKEN_CRONOS" || failed=1 ;; cronos) check_link "Cronos" "$CRONOS_RPC" "$LINK_TOKEN_CRONOS" || failed=1 ;;
celo) check_link "Celo" "$CELO_RPC" "$LINK_TOKEN_CELO" || failed=1 ;; celo) check_link "Celo" "$CELO_RPC" "$LINK_TOKEN_CELO" || failed=1 ;;
wemix) check_link "Wemix" "$WEMIX_RPC" "$LINK_TOKEN_WEMIX" || failed=1 ;;
all) all)
check_link "Gnosis" "$GNOSIS_RPC" "$LINK_TOKEN_GNOSIS" || failed=1 check_link "Gnosis" "$GNOSIS_RPC" "$LINK_TOKEN_GNOSIS" || failed=1
check_link "Cronos" "$CRONOS_RPC" "$LINK_TOKEN_CRONOS" || failed=1 check_link "Cronos" "$CRONOS_RPC" "$LINK_TOKEN_CRONOS" || failed=1
check_link "Celo" "$CELO_RPC" "$LINK_TOKEN_CELO" || failed=1 check_link "Celo" "$CELO_RPC" "$LINK_TOKEN_CELO" || failed=1
check_link "Wemix" "$WEMIX_RPC" "$LINK_TOKEN_WEMIX" || failed=1
;; ;;
*) echo "Usage: $0 [gnosis|cronos|celo|all]"; exit 1 ;; *) echo "Usage: $0 [gnosis|cronos|celo|wemix|all]"; exit 1 ;;
esac esac
echo "" echo ""
@@ -82,5 +86,6 @@ else
echo " Gnosis: $LINK_TOKEN_GNOSIS" echo " Gnosis: $LINK_TOKEN_GNOSIS"
echo " Cronos: $LINK_TOKEN_CRONOS" echo " Cronos: $LINK_TOKEN_CRONOS"
echo " Celo: $LINK_TOKEN_CELO" echo " Celo: $LINK_TOKEN_CELO"
echo " Wemix: $LINK_TOKEN_WEMIX"
exit 1 exit 1
fi fi

View File

@@ -77,16 +77,17 @@ run_or_echo() {
fi fi
} }
# ---- Step A: On Chain 138, add Gnosis/Cronos/Celo/Wemix as destinations ---- configure_chain_138_destination() {
echo "" local label="$1"
echo "Step A: Chain 138 bridges → add Gnosis, Cronos, Celo, Wemix as destinations" local selector="$2"
local addr9="$3"
local addr10="$4"
while IFS= read -r line; do
read -r label selector addr9 addr10 rpc <<< "$line"
if [[ -z "$addr9" && -z "$addr10" ]]; then if [[ -z "$addr9" && -z "$addr10" ]]; then
echo " Skip $label (no bridge addresses in .env)" echo " Skip $label (no bridge addresses in .env)"
continue return 0
fi fi
echo " Configuring Chain 138 → $label..." echo " Configuring Chain 138 → $label..."
if [[ -n "$addr9" ]]; then if [[ -n "$addr9" ]]; then
run_or_echo "cast send $WETH9_138 \"addDestination(uint64,address)\" $selector $addr9 --rpc-url $CHAIN138_RPC --private-key \$PRIVATE_KEY --legacy --gas-limit 200000" run_or_echo "cast send $WETH9_138 \"addDestination(uint64,address)\" $selector $addr9 --rpc-url $CHAIN138_RPC --private-key \$PRIVATE_KEY --legacy --gas-limit 200000"
@@ -94,12 +95,36 @@ while IFS= read -r line; do
if [[ -n "$addr10" ]]; then if [[ -n "$addr10" ]]; then
run_or_echo "cast send $WETH10_138 \"addDestination(uint64,address)\" $selector $addr10 --rpc-url $CHAIN138_RPC --private-key \$PRIVATE_KEY --legacy --gas-limit 200000" run_or_echo "cast send $WETH10_138 \"addDestination(uint64,address)\" $selector $addr10 --rpc-url $CHAIN138_RPC --private-key \$PRIVATE_KEY --legacy --gas-limit 200000"
fi fi
done << EOF }
Gnosis $GNOSIS_SELECTOR $WETH9_GNOSIS $WETH10_GNOSIS $GNOSIS_RPC
Cronos $CRONOS_SELECTOR $WETH9_CRONOS $WETH10_CRONOS $CRONOS_RPC configure_remote_chain_destination() {
Celo $CELO_SELECTOR $WETH9_CELO $WETH10_CELO $CELO_RPC local label="$1"
Wemix $WEMIX_SELECTOR $WETH9_WEMIX $WETH10_WEMIX $WEMIX_RPC local rpc="$2"
EOF local addr9="$3"
local addr10="$4"
if [[ -z "$addr9" && -z "$addr10" ]]; then
echo " Skip $label (no bridge addresses)"
return 0
fi
echo " Configuring $label → Chain 138..."
if [[ -n "$addr9" ]]; then
run_or_echo "cast send $addr9 \"addDestination(uint64,address)\" $CHAIN138_SELECTOR $WETH9_138 --rpc-url $rpc --private-key \$PRIVATE_KEY --legacy"
fi
if [[ -n "$addr10" ]]; then
run_or_echo "cast send $addr10 \"addDestination(uint64,address)\" $CHAIN138_SELECTOR $WETH10_138 --rpc-url $rpc --private-key \$PRIVATE_KEY --legacy"
fi
}
# ---- Step A: On Chain 138, add Gnosis/Cronos/Celo/Wemix as destinations ----
echo ""
echo "Step A: Chain 138 bridges → add Gnosis, Cronos, Celo, Wemix as destinations"
configure_chain_138_destination "Gnosis" "$GNOSIS_SELECTOR" "$WETH9_GNOSIS" "$WETH10_GNOSIS"
configure_chain_138_destination "Cronos" "$CRONOS_SELECTOR" "$WETH9_CRONOS" "$WETH10_CRONOS"
configure_chain_138_destination "Celo" "$CELO_SELECTOR" "$WETH9_CELO" "$WETH10_CELO"
configure_chain_138_destination "Wemix" "$WEMIX_SELECTOR" "$WETH9_WEMIX" "$WETH10_WEMIX"
# ---- Step B: On Gnosis/Cronos/Celo/Wemix, add Chain 138 as destination ---- # ---- Step B: On Gnosis/Cronos/Celo/Wemix, add Chain 138 as destination ----
if [[ -z "$CHAIN138_SELECTOR" ]]; then if [[ -z "$CHAIN138_SELECTOR" ]]; then
@@ -110,25 +135,10 @@ else
echo "" echo ""
echo "Step B: Gnosis/Cronos/Celo/Wemix bridges → add Chain 138 as destination" echo "Step B: Gnosis/Cronos/Celo/Wemix bridges → add Chain 138 as destination"
while IFS= read -r line; do configure_remote_chain_destination "Gnosis" "$GNOSIS_RPC" "$WETH9_GNOSIS" "$WETH10_GNOSIS"
read -r label rpc addr9 addr10 <<< "$line" configure_remote_chain_destination "Cronos" "$CRONOS_RPC" "$WETH9_CRONOS" "$WETH10_CRONOS"
if [[ -z "$addr9" && -z "$addr10" ]]; then configure_remote_chain_destination "Celo" "$CELO_RPC" "$WETH9_CELO" "$WETH10_CELO"
echo " Skip $label (no bridge addresses)" configure_remote_chain_destination "Wemix" "$WEMIX_RPC" "$WETH9_WEMIX" "$WETH10_WEMIX"
continue
fi
echo " Configuring $label → Chain 138..."
if [[ -n "$addr9" ]]; then
run_or_echo "cast send $addr9 \"addDestination(uint64,address)\" $CHAIN138_SELECTOR $WETH9_138 --rpc-url $rpc --private-key \$PRIVATE_KEY --legacy"
fi
if [[ -n "$addr10" ]]; then
run_or_echo "cast send $addr10 \"addDestination(uint64,address)\" $CHAIN138_SELECTOR $WETH10_138 --rpc-url $rpc --private-key \$PRIVATE_KEY --legacy"
fi
done << EOF
Gnosis $GNOSIS_RPC $WETH9_GNOSIS $WETH10_GNOSIS
Cronos $CRONOS_RPC $WETH9_CRONOS $WETH10_CRONOS
Celo $CELO_RPC $WETH9_CELO $WETH10_CELO
Wemix $WEMIX_RPC $WETH9_WEMIX $WETH10_WEMIX
EOF
fi fi
echo "" echo ""

View File

@@ -24,33 +24,42 @@ verify_one() {
local contract="$2" local contract="$2"
local chain_arg="$3" local chain_arg="$3"
local chain_name="$4" local chain_name="$4"
local api_key="${5:-${ETHERSCAN_API_KEY}}"
echo "Verifying $contract at $addr on $chain_name..." echo "Verifying $contract at $addr on $chain_name..."
# shellcheck disable=SC2086 # shellcheck disable=SC2086
forge verify-contract "$addr" "$contract" $chain_arg \ forge verify-contract "$addr" "$contract" $chain_arg \
--etherscan-api-key "${ETHERSCAN_API_KEY}" \ --etherscan-api-key "${api_key}" \
--watch 2>/dev/null || echo " (may already be verified or need chain-specific API key)" --watch 2>/dev/null || echo " (may already be verified or need chain-specific API key)"
} }
# Avalanche 43114 # Avalanche 43114
for addr in 0xa4B9DD039565AeD9641D45b57061f99d9cA6Df08 0x89dd12025bfCD38A168455A44B400e913ED33BE2 0xe0E93247376aa097dB308B92e6Ba36bA015535D0 0xAb57BF30F1354CA0590af22D8974c7f24DB2DbD7; do for item in \
case "$addr" in "${WETH9_AVALANCHE:-}:contracts/tokens/WETH.sol:WETH" \
0xa4B9DD039565AeD9641D45b57061f99d9cA6Df08) c="contracts/tokens/WETH.sol:WETH" ;; "${WETH10_AVALANCHE:-}:contracts/tokens/WETH10.sol:WETH10" \
0x89dd12025bfCD38A168455A44B400e913ED33BE2) c="contracts/tokens/WETH10.sol:WETH10" ;; "${CCIPWETH9_BRIDGE_AVALANCHE:-}:contracts/ccip/CCIPWETH9Bridge.sol:CCIPWETH9Bridge" \
0xe0E93247376aa097dB308B92e6Ba36bA015535D0) c="contracts/ccip/CCIPWETH9Bridge.sol:CCIPWETH9Bridge" ;; "${CCIPWETH10_BRIDGE_AVALANCHE:-}:contracts/ccip/CCIPWETH10Bridge.sol:CCIPWETH10Bridge"; do
0xAb57BF30F1354CA0590af22D8974c7f24DB2DbD7) c="contracts/ccip/CCIPWETH10Bridge.sol:CCIPWETH10Bridge" ;; addr="${item%%:*}"
esac rest="${item#*:}"
verify_one "$addr" "$c" "--chain avalanche" "Avalanche" contract="${rest%%:*}"
if [ -z "$addr" ]; then
continue
fi
verify_one "$addr" "$contract" "--chain avalanche" "Avalanche" "${SNOWTRACE_API_KEY:-$ETHERSCAN_API_KEY}"
done done
# Arbitrum 42161 # Arbitrum 42161
for addr in 0x89dd12025bfCD38A168455A44B400e913ED33BE2 0xe0E93247376aa097dB308B92e6Ba36bA015535D0 0xAb57BF30F1354CA0590af22D8974c7f24DB2DbD7 0xa780ef19A041745d353c9432f2a7f5A241335ffE; do for item in \
case "$addr" in "${WETH9_ARBITRUM:-}:contracts/tokens/WETH.sol:WETH" \
0x89dd12025bfCD38A168455A44B400e913ED33BE2) c="contracts/tokens/WETH.sol:WETH" ;; "${WETH10_ARBITRUM:-}:contracts/tokens/WETH10.sol:WETH10" \
0xe0E93247376aa097dB308B92e6Ba36bA015535D0) c="contracts/tokens/WETH10.sol:WETH10" ;; "${CCIPWETH9_BRIDGE_ARBITRUM:-}:contracts/ccip/CCIPWETH9Bridge.sol:CCIPWETH9Bridge" \
0xAb57BF30F1354CA0590af22D8974c7f24DB2DbD7) c="contracts/ccip/CCIPWETH9Bridge.sol:CCIPWETH9Bridge" ;; "${CCIPWETH10_BRIDGE_ARBITRUM:-}:contracts/ccip/CCIPWETH10Bridge.sol:CCIPWETH10Bridge"; do
0xa780ef19A041745d353c9432f2a7f5A241335ffE) c="contracts/ccip/CCIPWETH10Bridge.sol:CCIPWETH10Bridge" ;; addr="${item%%:*}"
esac rest="${item#*:}"
verify_one "$addr" "$c" "--chain arbitrum" "Arbitrum" contract="${rest%%:*}"
if [ -z "$addr" ]; then
continue
fi
verify_one "$addr" "$contract" "--chain arbitrum" "Arbitrum" "${ARBISCAN_API_KEY:-$ETHERSCAN_API_KEY}"
done done
# Cronos 25 — API: explorer-api.cronos.org/mainnet. Forge Blockscout verifier incompatible. # Cronos 25 — API: explorer-api.cronos.org/mainnet. Forge Blockscout verifier incompatible.
@@ -62,7 +71,7 @@ if [ -n "${CRONOSCAN_API_KEY:-}" ]; then
echo "If that fails, manual verification: export-cronos-verification-sources.sh then CRONOS_VERIFICATION_RUNBOOK.md" echo "If that fails, manual verification: export-cronos-verification-sources.sh then CRONOS_VERIFICATION_RUNBOOK.md"
echo " WETH9: 0x99B3511A2d315A497C8112C1fdd8D508d4B1E506" echo " WETH9: 0x99B3511A2d315A497C8112C1fdd8D508d4B1E506"
echo " WETH10: 0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6" echo " WETH10: 0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6"
echo " CCIPWETH9: 0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e" echo " CCIPWETH9: 0x3Cc23d086fCcbAe1e5f3FE2bA4A263E1D27d8Cab"
echo " CCIPWETH10: 0x105F8A15b819948a89153505762444Ee9f324684" echo " CCIPWETH10: 0x105F8A15b819948a89153505762444Ee9f324684"
echo "" echo ""
else else

View File

@@ -15,9 +15,9 @@ echo "Ethereum Mainnet Contract Verification"
echo "==========================================" echo "=========================================="
echo "" echo ""
# Mainnet contract addresses (from deployment logs) # Mainnet contract addresses (prefer env-backed canonical values)
CCIPWETH9BRIDGE_MAINNET="0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6" CCIPWETH9BRIDGE_MAINNET="${MAINNET_CCIP_WETH9_BRIDGE:-0xc9901ce2Ddb6490FAA183645147a87496d8b20B6}"
CCIPWETH10BRIDGE_MAINNET="0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e" CCIPWETH10BRIDGE_MAINNET="${MAINNET_CCIP_WETH10_BRIDGE:-0x04E1e22B0D41e99f4275bd40A50480219bc9A223}"
# Check verification status # Check verification status
check_verification() { check_verification() {
@@ -92,4 +92,3 @@ echo " • CCIPWETH9Bridge: https://etherscan.io/address/$CCIPWETH9BRIDGE_MAINN
echo " • CCIPWETH10Bridge: https://etherscan.io/address/$CCIPWETH10BRIDGE_MAINNET" echo " • CCIPWETH10Bridge: https://etherscan.io/address/$CCIPWETH10BRIDGE_MAINNET"
echo " • Verify Contracts: https://etherscan.io/myverify_address" echo " • Verify Contracts: https://etherscan.io/myverify_address"
echo "" echo ""

View File

@@ -16,8 +16,8 @@ echo "=========================================="
echo "" echo ""
# Mainnet contract addresses # Mainnet contract addresses
CCIPWETH9BRIDGE_MAINNET="0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6" CCIPWETH9BRIDGE_MAINNET="${MAINNET_CCIP_WETH9_BRIDGE:-0xc9901ce2Ddb6490FAA183645147a87496d8b20B6}"
CCIPWETH10BRIDGE_MAINNET="0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e" CCIPWETH10BRIDGE_MAINNET="${MAINNET_CCIP_WETH10_BRIDGE:-0x04E1e22B0D41e99f4275bd40A50480219bc9A223}"
# Constructor arguments # Constructor arguments
CCIP_ROUTER="${CCIP_MAINNET_ROUTER:-0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D}" CCIP_ROUTER="${CCIP_MAINNET_ROUTER:-0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D}"
@@ -88,4 +88,3 @@ echo "📄 View contracts:"
echo " • CCIPWETH9Bridge: https://etherscan.io/address/$CCIPWETH9BRIDGE_MAINNET" echo " • CCIPWETH9Bridge: https://etherscan.io/address/$CCIPWETH9BRIDGE_MAINNET"
echo " • CCIPWETH10Bridge: https://etherscan.io/address/$CCIPWETH10BRIDGE_MAINNET" echo " • CCIPWETH10Bridge: https://etherscan.io/address/$CCIPWETH10BRIDGE_MAINNET"
echo "" echo ""

View File

@@ -31,7 +31,7 @@ fi
RPC_URL="${RPC_URL:-${RPC_URL_138:-http://192.168.11.250:8545}}" RPC_URL="${RPC_URL:-${RPC_URL_138:-http://192.168.11.250:8545}}"
BRIDGE_ADDRESS="${CCIPWETH9_BRIDGE_CHAIN138:-0x971cD9D156f193df8051E48043C476e53ECd4693}" BRIDGE_ADDRESS="${CCIPWETH9_BRIDGE_CHAIN138:-0x971cD9D156f193df8051E48043C476e53ECd4693}"
LINK_TOKEN="${LINK_TOKEN:-0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03}" LINK_TOKEN="${LINK_TOKEN:-0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03}"
CCIP_ROUTER="${CCIP_ROUTER:-0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e}" CCIP_ROUTER="${CCIP_ROUTER:-0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817}"
ETH_SELECTOR="5009297550715157269" # Ethereum Mainnet ETH_SELECTOR="5009297550715157269" # Ethereum Mainnet
echo "=========================================" echo "========================================="

View File

@@ -232,7 +232,7 @@ fi
# Chain 138 LINK - approve for CCIP fees (bridge or router pulls). Canonical on 138: 0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03 (see CHAIN138_TOKEN_ADDRESSES.md, LINK_TOKEN_STATUS_FINAL.md). # Chain 138 LINK - approve for CCIP fees (bridge or router pulls). Canonical on 138: 0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03 (see CHAIN138_TOKEN_ADDRESSES.md, LINK_TOKEN_STATUS_FINAL.md).
LINK_TOKEN_138="${LINK_TOKEN_CHAIN138:-${LINK_TOKEN:-0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03}}" LINK_TOKEN_138="${LINK_TOKEN_CHAIN138:-${LINK_TOKEN:-0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03}}"
CCIP_ROUTER_138="${CCIP_ROUTER_ADDRESS:-0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e}" CCIP_ROUTER_138="${CCIP_ROUTER_ADDRESS:-0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817}"
MAX_UINT256="115792089237316195423570985008687907853269984665640564039457584007913129639935" MAX_UINT256="115792089237316195423570985008687907853269984665640564039457584007913129639935"
log_info "Approving LINK for CCIP fees (bridge + router)..." log_info "Approving LINK for CCIP fees (bridge + router)..."
cast send "$LINK_TOKEN_138" "approve(address,uint256)" "$WETH9_BRIDGE" "$MAX_UINT256" \ cast send "$LINK_TOKEN_138" "approve(address,uint256)" "$WETH9_BRIDGE" "$MAX_UINT256" \
@@ -314,4 +314,3 @@ else
log_info "Output: $BRIDGE_TX" log_info "Output: $BRIDGE_TX"
exit 1 exit 1
fi fi

View File

@@ -81,7 +81,7 @@
"code": "0x", "code": "0x",
"storage": {} "storage": {}
}, },
"0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e": { "0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817": {
"balance": "0xd3c21bcecceda1000000", "balance": "0xd3c21bcecceda1000000",
"code": "0x", "code": "0x",
"storage": {} "storage": {}

View File

@@ -85,7 +85,7 @@ WETH10_ADDRESS=${WETH10_ADDRESS:-0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f}
# Bridges # Bridges
CCIPWETH9_BRIDGE_CHAIN138=${CCIPWETH9_BRIDGE_CHAIN138:-0x971cD9D156f193df8051E48043C476e53ECd4693} CCIPWETH9_BRIDGE_CHAIN138=${CCIPWETH9_BRIDGE_CHAIN138:-0x971cD9D156f193df8051E48043C476e53ECd4693}
CCIPWETH10_BRIDGE_CHAIN138=${CCIPWETH10_BRIDGE_CHAIN138:-0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e} CCIPWETH10_BRIDGE_CHAIN138=${CCIPWETH10_BRIDGE_CHAIN138:-0xe0E93247376aa097dB308B92e6Ba36bA015535D0}
# CCIP Chain Selectors # CCIP Chain Selectors
ETHEREUM_MAINNET_SELECTOR=${ETHEREUM_MAINNET_SELECTOR:-5009297550715157269} ETHEREUM_MAINNET_SELECTOR=${ETHEREUM_MAINNET_SELECTOR:-5009297550715157269}
@@ -104,4 +104,3 @@ echo " - .env.mainnet"
echo " - .env.chain138" echo " - .env.chain138"
echo "" echo ""
echo "Review and update these files with any missing values." echo "Review and update these files with any missing values."