- 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.
6.2 KiB
6.2 KiB
Smart Contract Deployment Checklist
📋 Contracts to Deploy (19 total)
✅ Deployment Status
- Total Contracts: 19
- Deployed: 0
- Remaining: 19
Phase 1: Core Utilities (5 contracts - Parallel Deployment)
1. Multicall
- Deploy script:
script/DeployMulticall.s.sol - Dependencies: None
- Address in .env:
MULTICALL_ADDRESS= - Verify on explorer
2. CREATE2Factory
- Deploy script:
script/Deploy.s.sol(included) or create standalone - Dependencies: None
- Address in .env:
CREATE2FACTORY_ADDRESS= - Verify on explorer
3. WETH9
- Deploy script:
script/DeployWETH.s.solorDeployWETHWithCREATE2.s.sol - Dependencies: None
- Address in .env:
WETH9_ADDRESS=(ChainID 138, not mainnet) - Verify on explorer
4. WETH10
- Deploy script:
script/DeployWETH10.s.solorDeployWETH10WithCREATE2.s.sol - Dependencies: None
- Address in .env:
WETH10_ADDRESS=(ChainID 138, not mainnet) - Verify on explorer
5. Oracle Aggregator + Proxy
- Deploy script:
script/DeployOracle.s.sol - Dependencies: None
- Addresses in .env:
ORACLE_AGGREGATOR_ADDRESS=,ORACLE_PROXY_ADDRESS= - Verify on explorer
Phase 2: Governance (1-2 contracts)
6. MultiSig
- Set
MULTISIG_OWNERSin .env (comma-separated addresses) - Set
MULTISIG_REQUIREDin .env (number of confirmations) - Deploy script:
script/DeployMultiSig.s.sol - Dependencies: MULTISIG_OWNERS env var
- Address in .env:
MULTISIG_ADDRESS= - Verify on explorer
7. Voting (Optional - No script found)
- Create deployment script if needed
- Deploy if governance voting is required
- Address in .env:
VOTING_ADDRESS= - Verify on explorer
Phase 3: CCIP Infrastructure (1-6 contracts)
8. CCIP Router (If Custom)
- Determine if using Chainlink CCIP or custom router
- If custom: Deploy script:
script/DeployCCIPRouter.s.sol - Set
CCIP_FEE_TOKENin .env - Dependencies: None (if custom)
- Address in .env:
CCIP_ROUTER= - Verify on explorer
9. CCIPWETH9Bridge
- Requires: CCIP_ROUTER, WETH9_ADDRESS
- Deploy script:
script/DeployCCIPWETH9Bridge.s.sol - Dependencies: CCIP_ROUTER, WETH9_ADDRESS
- Address in .env:
CCIPWETH9BRIDGE_ADDRESS= - Verify on explorer
- Test cross-chain functionality
10. CCIPWETH10Bridge
- Requires: CCIP_ROUTER, WETH10_ADDRESS
- Deploy script:
script/DeployCCIPWETH10Bridge.s.sol - Dependencies: CCIP_ROUTER, WETH10_ADDRESS
- Address in .env:
CCIPWETH10BRIDGE_ADDRESS= - Verify on explorer
- Test cross-chain functionality
11-13. CCIPSender, CCIPReceiver, CCIPMessageValidator (No scripts found)
- Create deployment scripts if needed
- Deploy if required for CCIP functionality
- Addresses in .env:
CCIPSENDER_ADDRESS=,CCIPRECEIVER_ADDRESS=, etc. - Verify on explorer
14. CCIPRouterOptimized (No script found)
- Create deployment script if using optimized router
- Deploy if required
- Address in .env:
CCIPROUTER_OPTIMIZED_ADDRESS= - Verify on explorer
15. OracleWithCCIP (No script found)
- Create deployment script if CCIP oracle integration needed
- Requires: Oracle + CCIP infrastructure
- Address in .env:
ORACLE_CCIP_ADDRESS= - Verify on explorer
Phase 4: Advanced Features (3 contracts)
16-17. TwoWayTokenBridge (L1/L2)
- Deploy script:
script/DeployTwoWayBridge.s.sol - Dependencies: CCIP infrastructure
- Addresses in .env:
BRIDGE_L1_ADDRESS=,BRIDGE_L2_ADDRESS= - Verify on explorer
- Test bridge functionality
18. MirrorManager
- Deploy script:
script/DeployMirrorManager.s.sol - Dependencies: CCIP infrastructure
- Address in .env:
MIRRORMANAGER_ADDRESS= - Verify on explorer
19. MockLinkToken (Testing Only - Optional)
- Deploy script:
script/DeployMockLinkToken.s.sol - Dependencies: None
- Address in .env:
MOCK_LINK_TOKEN_ADDRESS= - Note: For testing only, remove before production
📝 Pre-Deployment Checklist
- RPC endpoint is accessible and responding
- Deployer account has sufficient balance (ETH for gas)
.envfile has all required variables:PRIVATE_KEY- Deployer private keyRPC_URL- Besu RPC endpoint (http://:8545 or direct)MULTISIG_OWNERS- For MultiSig deployment (comma-separated)MULTISIG_REQUIRED- For MultiSig deployment (number)CCIP_ROUTER- Chainlink CCIP Router address (if using existing)CCIP_FEE_TOKEN- Fee token address (if custom CCIP)ORACLE_DESCRIPTION- Oracle description (default: "ETH/USD Price Feed")ORACLE_HEARTBEAT- Oracle heartbeat in seconds (default: 60)ORACLE_DEVIATION_THRESHOLD- Oracle deviation threshold (default: 50)
🚀 Deployment Commands
Quick Deploy (Parallel)
# Deploy all contracts in parallel
./scripts/deployment/deploy-contracts-parallel.sh
Manual Deploy (Step by step)
# Load environment
source .env
# Phase 1: Core (parallel)
forge script script/DeployMulticall.s.sol:DeployMulticall --rpc-url $RPC_URL --broadcast --private-key $PRIVATE_KEY
forge script script/DeployWETH.s.sol:DeployWETH --rpc-url $RPC_URL --broadcast --private-key $PRIVATE_KEY
forge script script/DeployWETH10.s.sol:DeployWETH10 --rpc-url $RPC_URL --broadcast --private-key $PRIVATE_KEY
# Phase 2: Oracle
forge script script/DeployOracle.s.sol:DeployOracle --rpc-url $RPC_URL --broadcast --private-key $PRIVATE_KEY
# Phase 3: MultiSig (if owners configured)
forge script script/DeployMultiSig.s.sol:DeployMultiSig --rpc-url $RPC_URL --broadcast --private-key $PRIVATE_KEY
# Phase 4: CCIP (after dependencies)
forge script script/DeployCCIPWETH9Bridge.s.sol:DeployCCIPWETH9Bridge --rpc-url $RPC_URL --broadcast --private-key $PRIVATE_KEY
forge script script/DeployCCIPWETH10Bridge.s.sol:DeployCCIPWETH10Bridge --rpc-url $RPC_URL --broadcast --private-key $PRIVATE_KEY
✅ Post-Deployment Verification
After each deployment:
- Contract address recorded in
.env - Contract verified on Blockscout explorer
- Contract functions tested (if applicable)
- Documentation updated with address