- 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.
193 lines
5.2 KiB
Markdown
193 lines
5.2 KiB
Markdown
# 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**:
|
||
```solidity
|
||
uint256 constant AVALANCHE = 43114;
|
||
uint256 constant BASE = 8453;
|
||
uint256 constant ARBITRUM = 42161;
|
||
uint256 constant OPTIMISM = 10;
|
||
```
|
||
|
||
**CCIP Configuration Added**:
|
||
- `CCIP_AVALANCHE_ROUTER`
|
||
- `CCIP_AVALANCHE_LINK_TOKEN`
|
||
- `AVALANCHE_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`:
|
||
|
||
```bash
|
||
# 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**:
|
||
1. WETH9
|
||
2. WETH10
|
||
3. CCIPWETH9Bridge
|
||
4. CCIPWETH10Bridge
|
||
5. CCIPLogger
|
||
|
||
**Total**: 20 additional contracts (5 per chain × 4 chains)
|
||
|
||
---
|
||
|
||
## 🚀 Deployment Commands
|
||
|
||
### Avalanche
|
||
```bash
|
||
forge script script/DeployAll.s.sol:DeployAll \
|
||
--rpc-url avalanche --chain-id 43114 \
|
||
--private-key $PRIVATE_KEY --broadcast --verify -vvvv
|
||
```
|
||
|
||
### Base
|
||
```bash
|
||
forge script script/DeployAll.s.sol:DeployAll \
|
||
--rpc-url base --chain-id 8453 \
|
||
--private-key $PRIVATE_KEY --broadcast --verify -vvvv
|
||
```
|
||
|
||
### Arbitrum
|
||
```bash
|
||
forge script script/DeployAll.s.sol:DeployAll \
|
||
--rpc-url arbitrum --chain-id 42161 \
|
||
--private-key $PRIVATE_KEY --broadcast --verify -vvvv
|
||
```
|
||
|
||
### Optimism
|
||
```bash
|
||
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
|
||
|
||
1. **Configure `.env`** with all required variables
|
||
2. **Fund wallets** on each chain with native tokens
|
||
3. **Test gas price fetching**: `./scripts/deployment/get-multichain-gas-prices.sh`
|
||
4. **Deploy contracts** to each chain
|
||
|
||
---
|
||
|
||
**Total Chains Now Supported**: 9 (Ethereum Mainnet, Cronos, BSC, Polygon, Gnosis, Avalanche, Base, Arbitrum, Optimism)
|
||
|