- 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.
4.8 KiB
4.8 KiB
Wallet Requirements for Deployment
Overview
Before deploying bridge contracts, ensure your wallet has sufficient balances for gas fees and operations.
Required Balances
Ethereum Mainnet
| Token | Purpose | Minimum Required | Recommended |
|---|---|---|---|
| ETH | Gas fees for deployment | 0.025 ETH | 0.05 ETH (buffer) |
| LINK | CCIP fees (not for deployment) | 0 | 10 LINK (for testing) |
Breakdown:
- Deploy CCIPWETH9Bridge: ~0.00789 ETH
- Deploy CCIPWETH10Bridge: ~0.00789 ETH
- Configure destinations (4 calls): ~0.006 ETH
- Total: ~0.02178 ETH
- Recommended buffer: 0.05 ETH (for unexpected gas spikes)
ChainID 138
| Token | Purpose | Minimum Required | Recommended |
|---|---|---|---|
| ETH | Gas fees for deployment | 1 ETH | 2 ETH (buffer) |
| LINK | CCIP fees (not for deployment) | 0 | 10 LINK (for testing) |
Breakdown:
- Deploy CCIPWETH9Bridge: ~0.001 ETH (estimate)
- Deploy CCIPWETH10Bridge: ~0.001 ETH (estimate)
- Configure destinations (4 calls): ~0.001 ETH
- Total: ~0.003 ETH
- Recommended buffer: 2 ETH (for future operations)
Pre-Deployment Check
Run the balance checker before deployment:
./scripts/deployment/check-wallet-balances.sh
This script will:
- ✅ Check ETH balance on Mainnet
- ✅ Check ETH balance on ChainID 138
- ✅ Check LINK balance (if configured)
- ✅ Verify sufficient funds for deployment
- ✅ Provide deficit amounts if insufficient
Funding Your Wallet
Mainnet ETH
Option 1: Exchange Transfer
- Buy ETH on an exchange (Coinbase, Binance, etc.)
- Withdraw to your wallet address
- Wait for confirmation (usually 1-2 hours)
Option 2: Bridge from Layer 2
- Use a bridge (Arbitrum, Optimism, etc.)
- Bridge ETH to Mainnet
- Wait for confirmation
Option 3: Receive from Another Wallet
- Send ETH from another wallet
- Wait for confirmation
ChainID 138 ETH
Option 1: Faucet (if available)
# Check if faucet exists
curl -X POST $RPC_URL \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_getBalance","params":["'$WALLET_ADDRESS'","latest"],"id":1}'
Option 2: Transfer from Validator
- If you control a validator, you can transfer ETH
Option 3: Pre-fund in Genesis
- Add your wallet address to genesis.json
allocsection
LINK Token
LINK is not required for deployment, only for:
- Paying CCIP fees when users bridge tokens
- Testing cross-chain transfers
To get LINK on Mainnet:
- Buy on an exchange
- Use Uniswap or other DEX
- Mainnet LINK address:
0x514910771AF9Ca656af840dff83E8264EcF986CA
To get LINK on ChainID 138:
- Deploy MockLinkToken (for testing)
- Or deploy real LINK token if available
Environment Variables
Ensure these are set in .env:
# Wallet
PRIVATE_KEY=your-private-key
# Mainnet
MAINNET_RPC_URL=https://eth.llamarpc.com
MAINNET_LINK_TOKEN=0x514910771AF9Ca656af840dff83E8264EcF986CA
# ChainID 138
RPC_URL=https://rpc.d-bis.org
LINK_TOKEN=<link-token-address>
Verification Steps
-
Check balances:
./scripts/deployment/check-wallet-balances.sh -
Verify wallet address:
cast wallet address --private-key $PRIVATE_KEY -
Check Mainnet ETH:
cast balance $WALLET_ADDRESS --rpc-url $MAINNET_RPC_URL -
Check ChainID 138 ETH:
cast balance $WALLET_ADDRESS --rpc-url $RPC_URL
Troubleshooting
Error: "Insufficient balance"
Solution: Fund your wallet with the required amount:
- Mainnet: Send ETH to your wallet address
- ChainID 138: Use faucet or transfer from validator
Error: "Could not derive address"
Solution: Check that PRIVATE_KEY is correctly set in .env:
echo $PRIVATE_KEY | wc -c # Should be 66 (0x + 64 hex chars)
Error: "RPC URL not accessible"
Solution:
- Check RPC URL is correct
- Try alternative RPC endpoints
- Check network connectivity
Cost Summary
Mainnet Deployment
| Item | Cost |
|---|---|
| Deploy CCIPWETH9Bridge | ~0.00789 ETH |
| Deploy CCIPWETH10Bridge | ~0.00789 ETH |
| Configure destinations | ~0.006 ETH |
| Total | ~0.02178 ETH |
| Recommended Buffer | 0.05 ETH |
ChainID 138 Deployment
| Item | Cost |
|---|---|
| Deploy CCIPWETH9Bridge | ~0.001 ETH (estimate) |
| Deploy CCIPWETH10Bridge | ~0.001 ETH (estimate) |
| Configure destinations | ~0.001 ETH (estimate) |
| Total | ~0.003 ETH |
| Recommended Buffer | 2 ETH |
Next Steps
After verifying balances:
- ✅ Run pre-deployment check:
./scripts/deployment/check-wallet-balances.sh - ✅ Deploy on ChainID 138:
./scripts/deployment/deploy-bridges-chain138.sh - ✅ Deploy on Mainnet:
./scripts/deployment/deploy-bridges-mainnet.sh - ✅ Configure bridges: See
docs/BRIDGE_CONFIGURATION.md