280 lines
5.1 KiB
Markdown
280 lines
5.1 KiB
Markdown
# Smart Contract Deployment Guide
|
|
|
|
**RPC Endpoint**: `http://192.168.11.250:8545`
|
|
**Chain ID**: 138
|
|
**Date**: 2025-12-24
|
|
|
|
---
|
|
|
|
## Quick Start
|
|
|
|
### Automated Deployment
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
PRIVATE_KEY=0x...
|
|
RPC_URL_138=http://192.168.11.250:8545
|
|
```
|
|
|
|
### 2. Deployer Balance
|
|
|
|
Check balance:
|
|
```bash
|
|
cast balance <DEPLOYER_ADDRESS> --rpc-url http://192.168.11.250:8545
|
|
```
|
|
|
|
Minimum recommended: 0.1 ETH
|
|
|
|
### 3. RPC Connectivity
|
|
|
|
Test RPC:
|
|
```bash
|
|
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**:
|
|
```bash
|
|
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 `.env` with `LINK_TOKEN=<deployed_address>`
|
|
- Fund bridge contracts with LINK
|
|
|
|
### 2. CCIP Receiver
|
|
|
|
**Purpose**: Receives cross-chain messages via CCIP
|
|
|
|
**Requirements**:
|
|
- `CCIP_ROUTER_ADDRESS` in `.env`
|
|
- `ORACLE_AGGREGATOR_ADDRESS` in `.env`
|
|
|
|
**Deployment**:
|
|
```bash
|
|
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**:
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```bash
|
|
forge build --via-ir
|
|
forge script <script> --via-ir --rpc-url http://192.168.11.250:8545 --broadcast --legacy
|
|
```
|
|
|
|
---
|
|
|
|
## Verification
|
|
|
|
### Check Deployment
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
cast receipt <TX_HASH> --rpc-url http://192.168.11.250:8545
|
|
```
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### RPC Not Accessible
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
1. Check transaction receipt:
|
|
```bash
|
|
cast receipt <TX_HASH> --rpc-url http://192.168.11.250:8545
|
|
```
|
|
|
|
2. If DEBUG API is enabled, get revert reason:
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
# Standard build
|
|
forge build
|
|
|
|
# With via-ir (for stack too deep)
|
|
forge build --via-ir
|
|
```
|
|
|
|
---
|
|
|
|
## Post-Deployment Steps
|
|
|
|
### 1. Update Configuration Files
|
|
|
|
- Update `.env` with 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:
|
|
1. Check deployment logs
|
|
2. Verify RPC connectivity
|
|
3. Check deployer balance
|
|
4. Review transaction receipts
|
|
5. Enable DEBUG API for detailed error messages
|
|
|
|
---
|
|
|
|
**Status**: Ready for deployment
|
|
**RPC**: http://192.168.11.250:8545
|
|
**Chain ID**: 138
|
|
|