5.1 KiB
5.1 KiB
Smart Contract Deployment Guide
RPC Endpoint: http://192.168.11.250:8545
Chain ID: 138
Date: 2025-12-24
Quick Start
Automated Deployment
cd /home/intlc/projects/proxmox/explorer-monorepo
./scripts/deploy-all-contracts.sh
This script will:
- Verify RPC connectivity
- Check deployer balance
- Build all contracts
- Deploy contracts interactively
Manual Deployment
For individual contract deployment:
cd /home/intlc/projects/smom-dbis-138
# Deploy LINK Token
forge script script/DeployMockLinkToken.s.sol:DeployMockLinkToken \
--rpc-url http://192.168.11.250:8545 \
--broadcast \
--legacy \
--gas-price 20000000000
# Deploy CCIP Receiver
forge script script/DeployCCIPReceiver.s.sol:DeployCCIPReceiver \
--rpc-url http://192.168.11.250:8545 \
--broadcast \
--legacy \
--gas-price 20000000000
# Deploy CCIP Logger
forge script script/DeployCCIPLoggerOnly.s.sol:DeployCCIPLoggerOnly \
--rpc-url http://192.168.11.250:8545 \
--broadcast \
--legacy \
--gas-price 20000000000
Prerequisites
1. Environment Variables
Ensure .env file contains:
PRIVATE_KEY=0x...
RPC_URL_138=http://192.168.11.250:8545
2. Deployer Balance
Check balance:
cast balance <DEPLOYER_ADDRESS> --rpc-url http://192.168.11.250:8545
Minimum recommended: 0.1 ETH
3. RPC Connectivity
Test RPC:
cast block-number --rpc-url http://192.168.11.250:8545
cast chain-id --rpc-url http://192.168.11.250:8545
Deployment Order
1. LINK Token (MockLinkToken)
Purpose: ERC20 token for CCIP fee payments
Deployment:
forge script script/DeployMockLinkToken.s.sol:DeployMockLinkToken \
--rpc-url http://192.168.11.250:8545 \
--broadcast \
--legacy \
--gas-price 20000000000
Post-Deployment:
- Mint initial supply (1M LINK)
- Update
.envwithLINK_TOKEN=<deployed_address> - Fund bridge contracts with LINK
2. CCIP Receiver
Purpose: Receives cross-chain messages via CCIP
Requirements:
CCIP_ROUTER_ADDRESSin.envORACLE_AGGREGATOR_ADDRESSin.env
Deployment:
forge script script/DeployCCIPReceiver.s.sol:DeployCCIPReceiver \
--rpc-url http://192.168.11.250:8545 \
--broadcast \
--legacy \
--gas-price 20000000000
3. CCIP Logger
Purpose: Logs CCIP messages for monitoring
Deployment:
forge script script/DeployCCIPLoggerOnly.s.sol:DeployCCIPLoggerOnly \
--rpc-url http://192.168.11.250:8545 \
--broadcast \
--legacy \
--gas-price 20000000000
Gas Configuration
Default Gas Price
Default: 20 gwei (20000000000 wei)
Custom Gas Price
# 10 gwei
./scripts/deploy-all-contracts.sh 10000000000
# 30 gwei
./scripts/deploy-all-contracts.sh 30000000000
Stack Too Deep Issues
If you encounter "Stack too deep" errors:
forge build --via-ir
forge script <script> --via-ir --rpc-url http://192.168.11.250:8545 --broadcast --legacy
Verification
Check Deployment
# Get contract code
cast code <CONTRACT_ADDRESS> --rpc-url http://192.168.11.250:8545
# Call contract function
cast call <CONTRACT_ADDRESS> "name()(string)" --rpc-url http://192.168.11.250:8545
Transaction Receipt
cast receipt <TX_HASH> --rpc-url http://192.168.11.250:8545
Troubleshooting
RPC Not Accessible
# Test connectivity
curl -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' \
http://192.168.11.250:8545
Insufficient Balance
# Check balance
cast balance <DEPLOYER> --rpc-url http://192.168.11.250:8545
# Get balance in ETH
cast balance <DEPLOYER> --rpc-url http://192.168.11.250:8545 --ether
Transaction Failed
-
Check transaction receipt:
cast receipt <TX_HASH> --rpc-url http://192.168.11.250:8545 -
If DEBUG API is enabled, get revert reason:
curl -X POST -H "Content-Type: application/json" \ --data '{"jsonrpc":"2.0","method":"debug_traceTransaction","params":["<TX_HASH>",{"tracer":"callTracer"}],"id":1}' \ http://192.168.11.250:8545 | jq
Compilation Errors
# Standard build
forge build
# With via-ir (for stack too deep)
forge build --via-ir
Post-Deployment Steps
1. Update Configuration Files
- Update
.envwith deployed addresses - Update token lists
- Update database migrations
2. Verify Contracts
- Check contract code exists
- Test contract functions
- Verify events
3. Fund Contracts
- Fund bridge contracts with LINK
- Approve token transfers
- Configure CCIP destinations
Deployment Logs
All deployment logs are saved to:
/tmp/deploy-<ContractName>.log
Check logs for:
- Deployed addresses
- Transaction hashes
- Error messages
Support
For issues:
- Check deployment logs
- Verify RPC connectivity
- Check deployer balance
- Review transaction receipts
- Enable DEBUG API for detailed error messages
Status: Ready for deployment
RPC: http://192.168.11.250:8545
Chain ID: 138