Files
proxmox/docs/SOURCE_PROJECT_CONTRACT_DEPLOYMENT_INFO.md

411 lines
12 KiB
Markdown

# Source Project Contract Deployment Information
**Date**: $(date)
**Source Project**: `/home/intlc/projects/smom-dbis-138`
**Chain ID**: 138
---
## 🔍 Summary
The source project contains **complete contract deployment infrastructure** but **no contracts have been deployed to Chain 138 yet**. Contracts have been deployed to other chains (BSC, Polygon, Avalanche, Base, Arbitrum, Optimism) but Chain 138 deployment is pending.
---
## ✅ What Was Found
### 1. Deployment Infrastructure ✅
#### Foundry Configuration
- **File**: `foundry.toml`
- **Status**: ✅ Configured for Chain 138
- **RPC Endpoint**: `chain138 = "${RPC_URL_138:-http://localhost:8545}"`
- **Etherscan**: `chain138 = { key = "${ETHERSCAN_API_KEY}" }`
#### Deployment Scripts Available
All deployment scripts exist in `/home/intlc/projects/smom-dbis-138/script/`:
| Script | Purpose | Chain 138 Ready |
|--------|---------|----------------|
| `DeployCCIPRouter.s.sol` | Deploy CCIP Router | ✅ Yes |
| `DeployCCIPSender.s.sol` | Deploy CCIP Sender | ✅ Yes |
| `DeployCCIPReceiver.s.sol` | Deploy CCIP Receiver | ✅ Yes |
| `DeployCCIPWETH9Bridge.s.sol` | Deploy WETH9 Bridge | ✅ Yes |
| `DeployCCIPWETH10Bridge.s.sol` | Deploy WETH10 Bridge | ✅ Yes |
| `DeployOracle.s.sol` | Deploy Oracle | ✅ Yes |
| `DeployMulticall.s.sol` | Deploy Multicall | ✅ Yes |
| `DeployMultiSig.s.sol` | Deploy MultiSig | ✅ Yes |
| `reserve/DeployKeeper.s.sol` | Deploy Keeper | ✅ Yes (Chain 138 specific) |
| `reserve/DeployReserveSystem.s.sol` | Deploy Reserve System | ✅ Yes (Chain 138 specific) |
| `reserve/DeployChainlinkKeeper.s.sol` | Deploy Chainlink Keeper | ✅ Yes |
| `reserve/DeployGelatoKeeper.s.sol` | Deploy Gelato Keeper | ✅ Yes |
#### Deployment Automation Script
- **File**: `scripts/deployment/deploy-contracts-once-ready.sh`
- **Status**: ✅ Ready
- **Purpose**: Automated deployment of all contracts once network is ready
- **Note**: References old IP `10.3.1.4:8545` - needs update to `192.168.11.250:8545`
---
### 2. Contract Source Code ✅
#### Oracle Contracts
**Location**: `/home/intlc/projects/smom-dbis-138/contracts/oracle/`
- `Aggregator.sol` - Price aggregator contract
- `IAggregator.sol` - Aggregator interface
- `OracleWithCCIP.sol` - Oracle with CCIP integration
- `Proxy.sol` - Proxy contract
#### Reserve/Keeper Contracts
**Location**: `/home/intlc/projects/smom-dbis-138/contracts/reserve/`
- `PriceFeedKeeper.sol` - Core keeper contract ✅
- `OraclePriceFeed.sol` - Oracle price feed contract ✅
- `ReserveSystem.sol` - Reserve system contract ✅
- `ReserveTokenIntegration.sol` - Token integration ✅
- `ChainlinkKeeperCompatible.sol` - Chainlink integration ✅
- `GelatoKeeperCompatible.sol` - Gelato integration ✅
- `MockPriceFeed.sol` - Mock for testing
- `IReserveSystem.sol` - Interface
#### CCIP Contracts
**Location**: `/home/intlc/projects/smom-dbis-138/contracts/ccip/`
- CCIP Router, Sender, Receiver contracts
- CCIP Bridge contracts
---
### 3. Deployment Status on Other Chains ✅
#### Successfully Deployed (6 chains)
Contracts have been deployed to:
-**BSC** (Chain ID: 56) - 4 contracts deployed and verified
-**Polygon** (Chain ID: 137) - 4 contracts deployed and verified
-**Avalanche** (Chain ID: 43114) - 4 contracts deployed and verified
-**Base** (Chain ID: 8453) - 4 contracts deployed and verified
-**Arbitrum** (Chain ID: 42161) - 4 contracts deployed and verified
-**Optimism** (Chain ID: 10) - 4 contracts deployed and verified
**Documentation**: `docs/deployment/DEPLOYED_ADDRESSES.md`
#### Contracts Deployed (per chain)
- WETH9
- WETH10
- CCIPWETH9Bridge
- CCIPWETH10Bridge
---
### 4. Chain 138 Deployment Status ❌
#### Status: **NOT DEPLOYED**
**Evidence**:
- No deployed addresses found in documentation for Chain 138
- All Chain 138 references show placeholders:
- `CCIP_CHAIN138_ROUTER=<deploy_ccip_router_to_chain138>`
- `CCIP_CHAIN138_LINK_TOKEN=<deploy_link_or_use_zero_for_native_eth>`
- `CCIPWETH9_BRIDGE_CHAIN138=<deploy_bridge>`
- `CCIPWETH10_BRIDGE_CHAIN138=<deploy_bridge>`
**Documentation References**:
- `docs/deployment/ENV_EXAMPLE_CONTENT.md` - Shows all Chain 138 addresses as placeholders
- `docs/deployment/CHAIN138_DEPLOYMENT_STATUS_COMPLETE.md` - Shows deployment scripts ready but not executed
- `docs/deployment/CHAIN138_INFRASTRUCTURE_DEPLOYMENT.md` - Infrastructure deployment guide exists
---
## 📋 Contracts Needed for Chain 138
### Priority 1: Core Infrastructure
1. **CCIP Router**
- **Script**: `script/DeployCCIPRouter.s.sol`
- **Required By**: CCIP Monitor Service
- **Status**: Not deployed
2. **CCIP Sender**
- **Script**: `script/DeployCCIPSender.s.sol`
- **Required By**: CCIP Monitor Service
- **Status**: Not deployed
3. **LINK Token**
- **Note**: May need to deploy or use native ETH
- **Required By**: CCIP operations
- **Status**: Not deployed
### Priority 2: Oracle & Price Feeds
4. **Oracle Contract**
- **Script**: `script/DeployOracle.s.sol`
- **Required By**: Oracle Publisher Service
- **Status**: Not deployed
5. **Oracle Price Feed**
- **Script**: Part of Reserve System deployment
- **Required By**: Keeper Service
- **Status**: Not deployed
### Priority 3: Keeper & Automation
6. **Price Feed Keeper**
- **Script**: `script/reserve/DeployKeeper.s.sol`
- **Required By**: Keeper Service
- **Status**: Not deployed
- **Note**: Chain 138 specific script exists
### Priority 4: Reserve System
7. **Reserve System**
- **Script**: `script/reserve/DeployReserveSystem.s.sol`
- **Required By**: Financial Tokenization
- **Status**: Not deployed
- **Note**: Chain 138 specific script exists
8. **Reserve Token Integration**
- **Script**: Part of `DeployReserveSystem.s.sol`
- **Required By**: Financial Tokenization
- **Status**: Not deployed
---
## 🚀 Deployment Commands
### Deploy All Contracts (Automated)
```bash
cd /home/intlc/projects/smom-dbis-138
# Update RPC URL in script (if needed)
sed -i 's|10.3.1.4:8545|192.168.11.250:8545|g' scripts/deployment/deploy-contracts-once-ready.sh
# Run deployment
./scripts/deployment/deploy-contracts-once-ready.sh
```
### Deploy Individual Contracts
#### 1. Deploy CCIP Router
```bash
cd /home/intlc/projects/smom-dbis-138
forge script script/DeployCCIPRouter.s.sol:DeployCCIPRouter \
--rpc-url chain138 \
--private-key $PRIVATE_KEY \
--broadcast --verify -vvvv
```
#### 2. Deploy CCIP Sender
```bash
forge script script/DeployCCIPSender.s.sol:DeployCCIPSender \
--rpc-url chain138 \
--private-key $PRIVATE_KEY \
--broadcast --verify -vvvv
```
#### 3. Deploy Oracle
```bash
forge script script/DeployOracle.s.sol:DeployOracle \
--rpc-url chain138 \
--private-key $PRIVATE_KEY \
--broadcast --verify -vvvv
```
#### 4. Deploy Keeper (Chain 138 Specific)
```bash
# First deploy Oracle Price Feed (if not already deployed)
# Then deploy keeper
forge script script/reserve/DeployKeeper.s.sol:DeployKeeper \
--rpc-url chain138 \
--private-key $PRIVATE_KEY \
--broadcast --verify -vvvv
```
#### 5. Deploy Reserve System (Chain 138 Specific)
```bash
forge script script/reserve/DeployReserveSystem.s.sol:DeployReserveSystem \
--rpc-url chain138 \
--private-key $PRIVATE_KEY \
--broadcast --verify -vvvv
```
---
## 📝 Environment Variables Needed
Before deployment, ensure `.env` file has:
```bash
# Chain 138 RPC
RPC_URL_138=http://192.168.11.250:8545
# Deployer
PRIVATE_KEY=<deployer-private-key>
# Oracle Configuration
ORACLE_PRICE_FEED=<oracle-price-feed-address> # Deploy first
# Reserve Configuration
RESERVE_ADMIN=<admin-address>
TOKEN_FACTORY=<token-factory-address> # If using Reserve System
# Asset Addresses (optional)
XAU_ASSET=<xau-token-address>
USDC_ASSET=<usdc-token-address>
ETH_ASSET=<eth-token-address>
# Keeper Configuration
KEEPER_ADDRESS=<keeper-address> # Address that will execute upkeep
```
---
## 🔧 Post-Deployment Steps
### 1. Extract Contract Addresses
After deployment, addresses will be in:
- Broadcast files: `broadcast/Deploy*.s.sol/138/run-latest.json`
- Or extracted from deployment logs
### 2. Update .env File
```bash
# Add to .env
CCIP_ROUTER_ADDRESS=<deployed-address>
CCIP_SENDER_ADDRESS=<deployed-address>
ORACLE_CONTRACT_ADDRESS=<deployed-address>
PRICE_FEED_KEEPER_ADDRESS=<deployed-address>
RESERVE_SYSTEM=<deployed-address>
```
### 3. Update Service Configurations
Update service `.env` files in Proxmox containers:
```bash
# Oracle Publisher (VMID 3500)
pct exec 3500 -- bash -c "cat >> /opt/oracle-publisher/.env <<EOF
ORACLE_CONTRACT_ADDRESS=<deployed-oracle-address>
EOF"
# CCIP Monitor (VMID 3501)
pct exec 3501 -- bash -c "cat >> /opt/ccip-monitor/.env <<EOF
CCIP_ROUTER_ADDRESS=<deployed-router-address>
CCIP_SENDER_ADDRESS=<deployed-sender-address>
LINK_TOKEN_ADDRESS=<deployed-link-address>
EOF"
# Keeper (VMID 3502)
pct exec 3502 -- bash -c "cat >> /opt/keeper/.env <<EOF
PRICE_FEED_KEEPER_ADDRESS=<deployed-keeper-address>
EOF"
```
---
## 📚 Key Documentation Files
### Deployment Guides
- `docs/deployment/DEPLOYMENT.md` - Main deployment guide
- `docs/deployment/QUICK_START_DEPLOYMENT.md` - Quick start
- `docs/deployment/CHAIN138_INFRASTRUCTURE_DEPLOYMENT.md` - Chain 138 specific
- `docs/deployment/CHAIN138_DEPLOYMENT_STATUS_COMPLETE.md` - Status
### Contract Documentation
- `docs/integration/KEEPER_DEPLOYMENT_COMPLETE.md` - Keeper deployment
- `docs/deployment/CONTRACTS_TO_DEPLOY.md` - Contract list
- `docs/deployment/DEPLOYED_ADDRESSES.md` - Deployed addresses (other chains)
### Environment Setup
- `docs/deployment/ENV_EXAMPLE_CONTENT.md` - Environment variable examples
- `docs/configuration/CONTRACT_DEPLOYMENT_ENV_SETUP.md` - Environment setup
---
## ⚠️ Important Notes
### 1. IP Address Updates Needed
The deployment script `deploy-contracts-once-ready.sh` references old IP:
- **Old**: `10.3.1.4:8545`
- **New**: `192.168.11.250:8545`
**Fix**:
```bash
sed -i 's|10.3.1.4:8545|192.168.11.250:8545|g' \
/home/intlc/projects/smom-dbis-138/scripts/deployment/deploy-contracts-once-ready.sh
```
### 2. Chain 138 Specific Scripts
Some contracts have Chain 138 specific deployment scripts:
- `script/reserve/DeployKeeper.s.sol` - Requires `chainId == 138`
- `script/reserve/DeployReserveSystem.s.sol` - Requires `chainId == 138`
These are ready to deploy to Chain 138.
### 3. Deployment Order
Recommended deployment order:
1. Oracle Price Feed (if needed)
2. Oracle Contract
3. CCIP Router
4. CCIP Sender
5. LINK Token (or use native ETH)
6. Keeper Contract
7. Reserve System
### 4. Network Readiness
Ensure Chain 138 network is:
- ✅ Producing blocks
- ✅ RPC endpoint accessible at `192.168.11.250:8545`
- ✅ Deployer account has sufficient balance
- ✅ Network ID is 138
---
## 📊 Summary Table
| Contract | Script | Status | Required By | Priority |
|----------|--------|--------|------------|----------|
| CCIP Router | `DeployCCIPRouter.s.sol` | ⏳ Not Deployed | CCIP Monitor | P1 |
| CCIP Sender | `DeployCCIPSender.s.sol` | ⏳ Not Deployed | CCIP Monitor | P1 |
| LINK Token | TBD | ⏳ Not Deployed | CCIP | P1 |
| Oracle | `DeployOracle.s.sol` | ⏳ Not Deployed | Oracle Publisher | P1 |
| Oracle Price Feed | Part of Reserve | ⏳ Not Deployed | Keeper | P2 |
| Price Feed Keeper | `reserve/DeployKeeper.s.sol` | ⏳ Not Deployed | Keeper Service | P2 |
| Reserve System | `reserve/DeployReserveSystem.s.sol` | ⏳ Not Deployed | Tokenization | P3 |
---
## ✅ Next Steps
1. **Verify Network Readiness**
```bash
cast block-number --rpc-url http://192.168.11.250:8545
cast chain-id --rpc-url http://192.168.11.250:8545
```
2. **Update Deployment Script IPs**
```bash
cd /home/intlc/projects/smom-dbis-138
sed -i 's|10.3.1.4:8545|192.168.11.250:8545|g' scripts/deployment/deploy-contracts-once-ready.sh
```
3. **Deploy Contracts**
```bash
./scripts/deployment/deploy-contracts-once-ready.sh
```
4. **Extract and Document Addresses**
- Extract from broadcast files
- Update `.env` file
- Update service configurations
5. **Verify Deployments**
- Check contracts on Blockscout (when deployed)
- Verify contract interactions
- Test service connections
---
**Conclusion**: All deployment infrastructure is ready. Contracts need to be deployed to Chain 138. Deployment scripts exist and are configured for Chain 138.