# Chain 138 Deployment Readiness Checklist

**Date**: $(date)  
**Purpose**: Verify all prerequisites are met before deploying smart contracts

---

## ✅ Network Readiness

### RPC Endpoints

- [x] **RPC-01 (VMID 2500)**: ✅ Operational
  - IP: 192.168.11.250
  - HTTP RPC: Port 8545 ✅ Listening
  - WebSocket RPC: Port 8546 ✅ Listening
  - P2P: Port 30303 ✅ Listening
  - Metrics: Port 9545 ✅ Listening
  - Status: Active, syncing blocks

- [ ] **RPC-02 (VMID 2501)**: ⏳ Check status
- [ ] **RPC-03 (VMID 2502)**: ⏳ Check status

### Network Connectivity

- [x] RPC endpoint responds to `eth_blockNumber`
- [x] RPC endpoint responds to `eth_chainId`
- [x] Chain ID verified: 138
- [x] Network producing blocks (block number > 0)

### Validator Network

- [ ] All validators (1000-1004) operational
- [ ] Network consensus active
- [ ] Block production stable

---

## ✅ Configuration Readiness

### Deployment Scripts

- [x] **Deployment script updated**: `deploy-contracts-once-ready.sh`
  - IP address updated: `10.3.1.4:8545` → `192.168.11.250:8545`
  - Location: `/home/intlc/projects/smom-dbis-138/scripts/deployment/`

- [x] **Installation scripts updated**: All service install scripts
  - Oracle Publisher: ✅ Updated
  - CCIP Monitor: ✅ Updated
  - Keeper: ✅ Updated
  - Financial Tokenization: ✅ Updated
  - Firefly: ✅ Updated
  - Cacti: ✅ Updated
  - Blockscout: ✅ Updated

### Configuration Templates

- [x] **Besu RPC config template**: ✅ Updated
  - Deprecated options removed
  - File: `templates/besu-configs/config-rpc.toml`

- [x] **Service installation script**: ✅ Updated
  - Config file name corrected
  - File: `install/besu-rpc-install.sh`

---

## ⏳ Deployment Prerequisites

### Environment Setup

- [ ] **Source project `.env` file configured**
  - Location: `/home/intlc/projects/smom-dbis-138/.env`
  - Required variables:
    - `RPC_URL_138=http://192.168.11.250:8545`
    - `PRIVATE_KEY=<deployer-private-key>`
    - `RESERVE_ADMIN=<admin-address>`
    - `KEEPER_ADDRESS=<keeper-address>`
    - `ORACLE_PRICE_FEED=<oracle-address>` (after Oracle deployment)

### Deployer Account

- [ ] **Deployer account has sufficient balance**
  - Check balance: `cast balance <deployer-address> --rpc-url http://192.168.11.250:8545`
  - Minimum recommended: 1 ETH equivalent

### Network Verification

- [x] **Network is producing blocks**
  - Verified: ✅ Yes
  - Current block: > 11,200 (as of troubleshooting)

- [x] **Chain ID correct**
  - Expected: 138
  - Verified: ✅ Yes

---

## 📋 Contract Deployment Order

### Phase 1: Core Infrastructure (Priority 1)

1. [ ] **Oracle Contract**
   - Script: `DeployOracle.s.sol`
   - Dependencies: None
   - Required for: Keeper, Price Feeds

2. [ ] **CCIP Router**
   - Script: `DeployCCIPRouter.s.sol`
   - Dependencies: None
   - Required for: CCIP Sender, Cross-chain operations

3. [ ] **CCIP Sender**
   - Script: `DeployCCIPSender.s.sol`
   - Dependencies: CCIP Router
   - Required for: Cross-chain messaging

### Phase 2: Supporting Contracts (Priority 2)

4. [ ] **Multicall**
   - Script: `DeployMulticall.s.sol`
   - Dependencies: None
   - Utility contract

5. [ ] **MultiSig**
   - Script: `DeployMultiSig.s.sol`
   - Dependencies: None
   - Governance contract

### Phase 3: Application Contracts (Priority 3)

6. [ ] **Price Feed Keeper**
   - Script: `reserve/DeployKeeper.s.sol`
   - Dependencies: Oracle Price Feed
   - Required for: Automated price updates

7. [ ] **Reserve System**
   - Script: `reserve/DeployReserveSystem.s.sol`
   - Dependencies: Token Factory (if applicable)
   - Required for: Financial tokenization

---

## 🔧 Service Configuration

### After Contract Deployment

Once contracts are deployed, update service configurations:

- [ ] **Oracle Publisher (VMID 3500)**
  - Update `.env` with Oracle contract address
  - Restart service

- [ ] **CCIP Monitor (VMID 3501)**
  - Update `.env` with CCIP Router and Sender addresses
  - Restart service

- [ ] **Keeper (VMID 3502)**
  - Update `.env` with Keeper contract address
  - Restart service

- [ ] **Financial Tokenization (VMID 3503)**
  - Update `.env` with Reserve System address
  - Restart service

---

## ✅ Verification Steps

### After Deployment

1. **Verify Contracts on Chain**
   ```bash
   cast code <contract-address> --rpc-url http://192.168.11.250:8545
   ```

2. **Verify Service Connections**
   ```bash
   # Test Oracle Publisher
   pct exec 3500 -- curl -X POST http://localhost:8000/health
   
   # Test CCIP Monitor
   pct exec 3501 -- curl -X POST http://localhost:8000/health
   
   # Test Keeper
   pct exec 3502 -- curl -X POST http://localhost:3000/health
   ```

3. **Check Service Logs**
   ```bash
   # Oracle Publisher
   pct exec 3500 -- journalctl -u oracle-publisher -f
   
   # CCIP Monitor
   pct exec 3501 -- journalctl -u ccip-monitor -f
   
   # Keeper
   pct exec 3502 -- journalctl -u price-feed-keeper -f
   ```

---

## 📊 Current Status Summary

### Completed ✅

- ✅ RPC-01 (VMID 2500) troubleshooting and fix
- ✅ Configuration files updated
- ✅ Deployment scripts updated with correct IPs
- ✅ Network verified (producing blocks, Chain ID 138)
- ✅ RPC endpoint accessible and responding

### Pending ⏳

- ⏳ Verify RPC-02 and RPC-03 status
- ⏳ Configure deployer account and `.env` file
- ⏳ Deploy contracts (waiting for user action)
- ⏳ Update service configurations with deployed addresses

---

## 🚀 Ready for Deployment

**Status**: ✅ **READY** (pending deployer account setup)

All infrastructure, scripts, and documentation are in place. The network is operational and ready for contract deployment.

**Next Action**: Configure deployer account and `.env` file, then proceed with contract deployment.

---

**Last Updated**: $(date)

