- Introduced Aggregator.sol for Chainlink-compatible oracle functionality, including round-based updates and access control. - Added OracleWithCCIP.sol to extend Aggregator with CCIP cross-chain messaging capabilities. - Created .gitmodules to include OpenZeppelin contracts as a submodule. - Developed a comprehensive deployment guide in NEXT_STEPS_COMPLETE_GUIDE.md for Phase 2 and smart contract deployment. - Implemented Vite configuration for the orchestration portal, supporting both Vue and React frameworks. - Added server-side logic for the Multi-Cloud Orchestration Portal, including API endpoints for environment management and monitoring. - Created scripts for resource import and usage validation across non-US regions. - Added tests for CCIP error handling and integration to ensure robust functionality. - Included various new files and directories for the orchestration portal and deployment scripts.
5.2 KiB
5.2 KiB
New Chains Added: Avalanche, Base, Arbitrum, Optimism
Date: 2025-12-11 Status: ✅ CONFIGURED
📋 New Chains Summary
| Chain | Chain ID | Native Token | Explorer | Status |
|---|---|---|---|---|
| Avalanche | 43114 | AVAX | Snowtrace | ✅ Added |
| Base | 8453 | ETH | Basescan | ✅ Added |
| Arbitrum | 42161 | ETH | Arbiscan | ✅ Added |
| Optimism | 10 | ETH | Optimistic Etherscan | ✅ Added |
✅ Configuration Updates
1. Foundry Configuration (foundry.toml)
RPC Endpoints Added:
avalanche = "${AVALANCHE_RPC_URL}"base = "${BASE_RPC_URL}"arbitrum = "${ARBITRUM_RPC_URL}"optimism = "${OPTIMISM_RPC_URL}"
Explorer Configuration Added:
avalanche = { key = "${SNOWTRACE_API_KEY}", chain = "avalanche" }base = { key = "${BASESCAN_API_KEY}", chain = "base" }arbitrum = { key = "${ARBISCAN_API_KEY}", chain = "arbitrum" }optimism = { key = "${OPTIMISTIC_ETHERSCAN_API_KEY}", chain = "optimism" }
Profiles Added:
[profile.avalanche]- Chain ID 43114[profile.base]- Chain ID 8453[profile.arbitrum]- Chain ID 42161[profile.optimism]- Chain ID 10
2. Deployment Script (script/DeployAll.s.sol)
Chain Constants Added:
uint256 constant AVALANCHE = 43114;
uint256 constant BASE = 8453;
uint256 constant ARBITRUM = 42161;
uint256 constant OPTIMISM = 10;
CCIP Configuration Added:
CCIP_AVALANCHE_ROUTERCCIP_AVALANCHE_LINK_TOKENAVALANCHE_SELECTOR- Similar for Base, Arbitrum, Optimism
WETH Configuration Added:
WETH9_AVALANCHE/WETH10_AVALANCHE(optional)- Similar for Base, Arbitrum, Optimism
3. Gas Price Script (scripts/deployment/get-multichain-gas-prices.sh)
Gas Price Functions Added:
get_avalanche_gas_price()get_base_gas_price()get_arbitrum_gas_price()get_optimism_gas_price()
Cost Calculations Added:
- All 4 new chains included in cost calculations
- USD rates configured (AVAX: $35, others use ETH rate: $2500)
🔧 Environment Variables Required
Add to .env:
# RPC URLs
AVALANCHE_RPC_URL=https://avalanche-mainnet.infura.io/v3/YOUR_KEY
BASE_RPC_URL=https://mainnet.base.org
ARBITRUM_RPC_URL=https://arb1.arbitrum.io/rpc
OPTIMISM_RPC_URL=https://mainnet.optimism.io
# Explorer API Keys
SNOWTRACE_API_KEY=your_snowtrace_api_key
BASESCAN_API_KEY=your_basescan_api_key
ARBISCAN_API_KEY=your_arbiscan_api_key
OPTIMISTIC_ETHERSCAN_API_KEY=your_optimistic_etherscan_api_key
# CCIP Configuration - Avalanche
CCIP_AVALANCHE_ROUTER=0xF694E193200268f9a4868e4Aa017A0118C9a8177
CCIP_AVALANCHE_LINK_TOKEN=0x5947BB275c521040051E823961ee81e07Ca0C08A
AVALANCHE_SELECTOR=6433500567565415381
# CCIP Configuration - Base
CCIP_BASE_ROUTER=0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D
CCIP_BASE_LINK_TOKEN=0x88Fb150BDc53A65fe94Dea0c9BA0a6dAf8C6e396
BASE_SELECTOR=15971525489660198786
# CCIP Configuration - Arbitrum
CCIP_ARBITRUM_ROUTER=0x1619DE6B6B20eD217a58d00f37B9d47C7663feca
CCIP_ARBITRUM_LINK_TOKEN=0xf97f4df75117a78c1A5a0DBb814Af92458539FB4
ARBITRUM_SELECTOR=4949039107694359620
# CCIP Configuration - Optimism
CCIP_OPTIMISM_ROUTER=0x261c05167db67Be2E2dc4a347C4E6B000C677852
CCIP_OPTIMISM_LINK_TOKEN=0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6
OPTIMISM_SELECTOR=3734403246176062136
# Optional: WETH addresses (if using existing)
WETH9_AVALANCHE=0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB
WETH10_AVALANCHE=0x0
WETH9_BASE=0x4200000000000000000000000000000000000006
WETH10_BASE=0x0
WETH9_ARBITRUM=0x82aF49447D8a07e3bd95BD0d56f35241523fBab1
WETH10_ARBITRUM=0x0
WETH9_OPTIMISM=0x4200000000000000000000000000000000000006
WETH10_OPTIMISM=0x0
📊 Contracts to Deploy
Each new chain requires 5 contracts:
- WETH9
- WETH10
- CCIPWETH9Bridge
- CCIPWETH10Bridge
- CCIPLogger
Total: 20 additional contracts (5 per chain × 4 chains)
🚀 Deployment Commands
Avalanche
forge script script/DeployAll.s.sol:DeployAll \
--rpc-url avalanche --chain-id 43114 \
--private-key $PRIVATE_KEY --broadcast --verify -vvvv
Base
forge script script/DeployAll.s.sol:DeployAll \
--rpc-url base --chain-id 8453 \
--private-key $PRIVATE_KEY --broadcast --verify -vvvv
Arbitrum
forge script script/DeployAll.s.sol:DeployAll \
--rpc-url arbitrum --chain-id 42161 \
--private-key $PRIVATE_KEY --broadcast --verify -vvvv
Optimism
forge script script/DeployAll.s.sol:DeployAll \
--rpc-url optimism --chain-id 10 \
--private-key $PRIVATE_KEY --broadcast --verify -vvvv
💰 Gas Cost Estimates
Per Chain (all 5 contracts):
- Avalanche: ~8,760,000 gas units
- Base: ~8,760,000 gas units
- Arbitrum: ~8,760,000 gas units
- Optimism: ~8,760,000 gas units
Note: Run ./scripts/deployment/get-multichain-gas-prices.sh for real-time estimates.
✅ Next Steps
- Configure
.envwith all required variables - Fund wallets on each chain with native tokens
- Test gas price fetching:
./scripts/deployment/get-multichain-gas-prices.sh - Deploy contracts to each chain
Total Chains Now Supported: 9 (Ethereum Mainnet, Cronos, BSC, Polygon, Gnosis, Avalanche, Base, Arbitrum, Optimism)