# Smart Contract Connections & Next LXC Containers

**Date**: $(date)  
**Purpose**: Overview of smart contract connections required and list of next LXC containers to deploy

---

## 🔗 Smart Contract Connections Required

### 1. RPC Endpoint Connections

All services that interact with smart contracts need to connect to Besu RPC endpoints:

#### Primary RPC Endpoints
- **HTTP RPC**: `http://192.168.11.250:8545` (or load-balanced endpoint)
- **WebSocket RPC**: `ws://192.168.11.250:8546`
- **Chain ID**: 138

#### RPC Node IPs (Current Deployment)
| VMID | Hostname | IP Address | RPC Port | WS Port |
|------|----------|------------|----------|---------|
| 2500 | besu-rpc-1 | 192.168.11.250 | 8545 | 8546 |
| 2501 | besu-rpc-2 | 192.168.11.251 | 8545 | 8546 |
| 2502 | besu-rpc-3 | 192.168.11.252 | 8545 | 8546 |

**Note**: Services should use load-balanced endpoint or connect to multiple RPC nodes for redundancy.

---

### 2. Services Requiring Smart Contract Connections

#### 2.1 Oracle Publisher Service
**VMID**: 3500  
**IP**: 192.168.11.68  
**Status**: ⏳ Pending Deployment

**Required Connections**:
- **RPC Endpoint**: `RPC_URL_138=http://192.168.11.250:8545`
- **WebSocket**: `WS_URL_138=ws://192.168.11.250:8546`
- **Oracle Contract Address**: (To be configured after deployment)
- **Private Key**: (For signing transactions)
- **Data Sources**: External price feed APIs

**Configuration File**: `/opt/oracle-publisher/.env`
```bash
RPC_URL_138=http://192.168.11.250:8545
WS_URL_138=ws://192.168.11.250:8546
ORACLE_CONTRACT_ADDRESS=
PRIVATE_KEY=
UPDATE_INTERVAL=60
METRICS_PORT=8000
```

**Smart Contract Interactions**:
- Read oracle contract state
- Submit price updates via transactions
- Monitor contract events

---

#### 2.2 CCIP Monitor Service
**VMID**: 3501  
**IP**: 192.168.11.69  
**Status**: ⏳ Pending Deployment

**Required Connections**:
- **RPC Endpoint**: `RPC_URL_138=http://192.168.11.250:8545`
- **CCIP Router Contract**: (Chainlink CCIP router address)
- **CCIP Sender Contract**: (Sender contract address)
- **LINK Token Contract**: (LINK token address on Chain 138)

**Configuration File**: `/opt/ccip-monitor/.env`
```bash
RPC_URL_138=http://192.168.11.250:8545
CCIP_ROUTER_ADDRESS=
CCIP_SENDER_ADDRESS=
LINK_TOKEN_ADDRESS=
METRICS_PORT=8000
CHECK_INTERVAL=60
ALERT_WEBHOOK=
```

**Smart Contract Interactions**:
- Monitor CCIP router contract events
- Track cross-chain message flow
- Monitor LINK token transfers
- Alert on failures

---

#### 2.3 Price Feed Keeper Service
**VMID**: 3502  
**IP**: 192.168.11.70  
**Status**: ⏳ Pending Deployment

**Required Connections**:
- **RPC Endpoint**: `RPC_URL_138=http://192.168.11.250:8545`
- **Keeper Contract Address**: (Automation contract)
- **Oracle Contract Address**: (Oracle to trigger updates)
- **Private Key**: (For executing keeper transactions)

**Configuration File**: `/opt/keeper/.env`
```bash
RPC_URL_138=http://192.168.11.250:8545
KEEPER_CONTRACT_ADDRESS=
ORACLE_CONTRACT_ADDRESS=
PRIVATE_KEY=
UPDATE_INTERVAL=300
HEALTH_PORT=3000
```

**Smart Contract Interactions**:
- Check keeper contract for upkeep needed
- Execute upkeep transactions
- Monitor oracle contract state
- Trigger price feed updates

---

#### 2.4 Financial Tokenization Service
**VMID**: 3503  
**IP**: 192.168.11.71  
**Status**: ⏳ Pending Deployment

**Required Connections**:
- **RPC Endpoint**: `BESU_RPC_URL=http://192.168.11.250:8545`
- **Tokenization Contract Address**: (Tokenization smart contract)
- **ERC-20/ERC-721 Contracts**: (Token contracts)
- **Private Key**: (For tokenization operations)

**Configuration File**: `/opt/financial-tokenization/.env`
```bash
BESU_RPC_URL=http://192.168.11.250:8545
TOKENIZATION_CONTRACT_ADDRESS=
PRIVATE_KEY=
CHAIN_ID=138
```

**Smart Contract Interactions**:
- Deploy token contracts
- Mint/burn tokens
- Transfer tokens
- Query token balances
- Manage token metadata

---

#### 2.5 Hyperledger Firefly
**VMID**: 6200  
**IP**: 192.168.11.66  
**Status**: ✅ Ready (needs RPC configuration)

**Required Connections**:
- **RPC Endpoint**: `FF_BLOCKCHAIN_RPC=http://192.168.11.250:8545`
- **WebSocket**: `FF_BLOCKCHAIN_WS=ws://192.168.11.250:8546`

**Configuration File**: `/opt/firefly/docker-compose.yml`
```yaml
environment:
  - FF_BLOCKCHAIN_RPC=http://192.168.11.250:8545
  - FF_BLOCKCHAIN_WS=ws://192.168.11.250:8546
  - FF_CHAIN_ID=138
```

**Smart Contract Interactions**:
- Deploy Firefly contracts
- Tokenization operations
- Multi-party workflows
- Event streaming

---

#### 2.6 Hyperledger Cacti
**VMID**: 5200  
**IP**: 192.168.11.64  
**Status**: ✅ Ready (needs RPC configuration)

**Required Connections**:
- **RPC Endpoint**: `BESU_RPC_URL=http://192.168.11.250:8545`
- **WebSocket**: `BESU_WS_URL=ws://192.168.11.250:8546`

**Configuration File**: `/opt/cacti/docker-compose.yml`
```yaml
environment:
  - BESU_RPC_URL=http://192.168.11.250:8545
  - BESU_WS_URL=ws://192.168.11.250:8546
```

**Smart Contract Interactions**:
- Cross-chain contract calls
- Besu ledger connector operations
- Multi-ledger integration

---

#### 2.7 Blockscout Explorer
**VMID**: 5000  
**IP**: 192.168.11.140  
**Status**: ⏳ Pending Deployment

**Required Connections**:
- **RPC Endpoint**: `ETHEREUM_JSONRPC_HTTP_URL=http://192.168.11.250:8545`
- **Trace RPC**: `ETHEREUM_JSONRPC_TRACE_URL=http://192.168.11.250:8545`

**Configuration File**: `/opt/blockscout/docker-compose.yml`
```yaml
environment:
  - ETHEREUM_JSONRPC_HTTP_URL=http://192.168.11.250:8545
  - ETHEREUM_JSONRPC_TRACE_URL=http://192.168.11.250:8545
  - ETHEREUM_JSONRPC_WS_URL=ws://192.168.11.250:8546
```

**Smart Contract Interactions**:
- Index all contract interactions
- Verify contract source code
- Track token transfers
- Display transaction history

---

## 📦 Next LXC Containers to Deploy

### Priority 1: Smart Contract Services (High Priority)

| VMID | Hostname | IP Address | Service | Status | Priority |
|------|----------|------------|---------|--------|----------|
| 3500 | oracle-publisher-1 | 192.168.11.68 | Oracle Publisher | ⏳ Pending | P1 - High |
| 3501 | ccip-monitor-1 | 192.168.11.69 | CCIP Monitor | ⏳ Pending | P1 - High |
| 3502 | keeper-1 | 192.168.11.70 | Price Feed Keeper | ⏳ Pending | P1 - High |
| 3503 | financial-tokenization-1 | 192.168.11.71 | Financial Tokenization | ⏳ Pending | P2 - Medium |

**Total**: 4 containers

---

### Priority 2: Hyperledger Services (Ready for Deployment)

| VMID | Hostname | IP Address | Service | Status | Priority |
|------|----------|------------|---------|--------|----------|
| 5200 | cacti-1 | 192.168.11.64 | Hyperledger Cacti | ✅ Ready | P1 - High |
| 6000 | fabric-1 | 192.168.11.65 | Hyperledger Fabric | ✅ Ready | P2 - Medium |
| 6200 | firefly-1 | 192.168.11.66 | Hyperledger Firefly | ✅ Ready | P1 - High |
| 6400 | indy-1 | 192.168.11.67 | Hyperledger Indy | ✅ Ready | P2 - Medium |

**Total**: 4 containers

**Note**: These are ready but need RPC endpoint configuration after deployment.

---

### Priority 3: Monitoring Stack (High Priority)

| VMID | Hostname | IP Address | Service | Status | Priority |
|------|----------|------------|---------|--------|----------|
| 3504 | monitoring-stack-1 | 192.168.11.80 | Prometheus | ⏳ Pending | P1 - High |
| 3505 | monitoring-stack-2 | 192.168.11.81 | Grafana | ⏳ Pending | P1 - High |
| 3506 | monitoring-stack-3 | 192.168.11.82 | Loki | ⏳ Pending | P2 - Medium |
| 3507 | monitoring-stack-4 | 192.168.11.83 | Alertmanager | ⏳ Pending | P2 - Medium |
| 3508 | monitoring-stack-5 | 192.168.11.84 | Additional monitoring | ⏳ Pending | P2 - Medium |

**Total**: 5 containers

---

### Priority 4: Explorer (Medium Priority)

| VMID | Hostname | IP Address | Service | Status | Priority |
|------|----------|------------|---------|--------|----------|
| 5000 | blockscout-1 | 192.168.11.140 | Blockscout Explorer | ⏳ Pending | P2 - Medium |

**Total**: 1 container

---

## 📊 Summary

### Total Containers to Deploy Next

**By Priority**:
- **P1 (High)**: 7 containers
  - Oracle Publisher (3500)
  - CCIP Monitor (3501)
  - Keeper (3502)
  - Cacti (5200)
  - Firefly (6200)
  - Prometheus (3504)
  - Grafana (3505)

- **P2 (Medium)**: 7 containers
  - Financial Tokenization (3503)
  - Fabric (6000)
  - Indy (6400)
  - Loki (3506)
  - Alertmanager (3507)
  - Monitoring Stack 5 (3508)
  - Blockscout (5000)

**Grand Total**: **14 containers** ready for deployment

---

## 🚀 Deployment Commands

### Deploy Smart Contract Services
```bash
cd /opt/smom-dbis-138-proxmox
DEPLOY_ORACLE=true DEPLOY_CCIP_MONITOR=true DEPLOY_KEEPER=true DEPLOY_TOKENIZATION=true \
  ./scripts/deployment/deploy-services.sh
```

### Deploy Hyperledger Services
```bash
cd /opt/smom-dbis-138-proxmox
./scripts/deployment/deploy-hyperledger-services.sh
```

### Deploy Monitoring Stack
```bash
cd /opt/smom-dbis-138-proxmox
./scripts/deployment/deploy-monitoring.sh
```

### Deploy Explorer
```bash
cd /opt/smom-dbis-138-proxmox
./scripts/deployment/deploy-explorer.sh
```

### Deploy Everything
```bash
cd /opt/smom-dbis-138-proxmox
./deploy-all.sh
```

---

## ⚙️ Post-Deployment Configuration

After deploying containers, configure RPC connections:

### 1. Configure Oracle Publisher
```bash
pct exec 3500 -- bash -c "cat > /opt/oracle-publisher/.env <<EOF
RPC_URL_138=http://192.168.11.250:8545
WS_URL_138=ws://192.168.11.250:8546
ORACLE_CONTRACT_ADDRESS=<deploy-oracle-contract-first>
PRIVATE_KEY=<oracle-private-key>
UPDATE_INTERVAL=60
METRICS_PORT=8000
EOF"
```

### 2. Configure CCIP Monitor
```bash
pct exec 3501 -- bash -c "cat > /opt/ccip-monitor/.env <<EOF
RPC_URL_138=http://192.168.11.250:8545
CCIP_ROUTER_ADDRESS=<ccip-router-address>
CCIP_SENDER_ADDRESS=<ccip-sender-address>
LINK_TOKEN_ADDRESS=<link-token-address>
METRICS_PORT=8000
CHECK_INTERVAL=60
EOF"
```

### 3. Configure Keeper
```bash
pct exec 3502 -- bash -c "cat > /opt/keeper/.env <<EOF
RPC_URL_138=http://192.168.11.250:8545
KEEPER_CONTRACT_ADDRESS=<keeper-contract-address>
ORACLE_CONTRACT_ADDRESS=<oracle-contract-address>
PRIVATE_KEY=<keeper-private-key>
UPDATE_INTERVAL=300
EOF"
```

### 4. Configure Financial Tokenization
```bash
pct exec 3503 -- bash -c "cat > /opt/financial-tokenization/.env <<EOF
BESU_RPC_URL=http://192.168.11.250:8545
TOKENIZATION_CONTRACT_ADDRESS=<tokenization-contract-address>
PRIVATE_KEY=<tokenization-private-key>
CHAIN_ID=138
EOF"
```

### 5. Configure Hyperledger Services
```bash
# Firefly
pct exec 6200 -- bash -c "cd /opt/firefly && \
  sed -i 's|FF_BLOCKCHAIN_RPC=.*|FF_BLOCKCHAIN_RPC=http://192.168.11.250:8545|' docker-compose.yml && \
  sed -i 's|FF_BLOCKCHAIN_WS=.*|FF_BLOCKCHAIN_WS=ws://192.168.11.250:8546|' docker-compose.yml"

# Cacti
pct exec 5200 -- bash -c "cd /opt/cacti && \
  sed -i 's|BESU_RPC_URL=.*|BESU_RPC_URL=http://192.168.11.250:8545|' docker-compose.yml && \
  sed -i 's|BESU_WS_URL=.*|BESU_WS_URL=ws://192.168.11.250:8546|' docker-compose.yml"
```

### 6. Configure Blockscout
```bash
pct exec 5000 -- bash -c "cd /opt/blockscout && \
  sed -i 's|ETHEREUM_JSONRPC_HTTP_URL=.*|ETHEREUM_JSONRPC_HTTP_URL=http://192.168.11.250:8545|' docker-compose.yml && \
  sed -i 's|ETHEREUM_JSONRPC_TRACE_URL=.*|ETHEREUM_JSONRPC_TRACE_URL=http://192.168.11.250:8545|' docker-compose.yml"
```

---

## 📝 Notes

1. **Contract Addresses**: Smart contract addresses need to be deployed first before configuring services
2. **Private Keys**: Store private keys securely (use secrets management)
3. **RPC Load Balancing**: Consider using a load balancer for RPC endpoints
4. **Network Access**: Ensure all containers can reach RPC nodes (192.168.11.250-252)
5. **Firewall**: Configure firewall rules to allow RPC connections between containers

---

## 🔍 Verification

After configuration, verify connections:

```bash
# Test RPC connection from service container
pct exec 3500 -- curl -X POST http://192.168.11.250:8545 \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

# Check service logs
pct exec 3500 -- journalctl -u oracle-publisher -f

# Verify WebSocket connection
pct exec 3500 -- python3 -c "
import asyncio
import websockets
async def test():
    async with websockets.connect('ws://192.168.11.250:8546') as ws:
        await ws.send('{\"jsonrpc\":\"2.0\",\"method\":\"eth_subscribe\",\"params\":[\"newHeads\"],\"id\":1}')
        print(await ws.recv())
asyncio.run(test())
"
```

---

**Next Steps**:
1. Deploy Priority 1 containers (Oracle, CCIP Monitor, Keeper)
2. Deploy and configure Hyperledger services
3. Deploy monitoring stack
4. Deploy explorer
5. Configure all RPC connections
6. Deploy smart contracts
7. Update service configurations with contract addresses

