Add Oracle Aggregator and CCIP Integration

- 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.
This commit is contained in:
defiQUG
2025-12-12 14:57:48 -08:00
parent a1466e4005
commit 1fb7266469
1720 changed files with 241279 additions and 16 deletions

View File

@@ -0,0 +1,192 @@
# 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)