# 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 < PRIVATE_KEY= UPDATE_INTERVAL=60 METRICS_PORT=8000 EOF" ``` ### 2. Configure CCIP Monitor ```bash pct exec 3501 -- bash -c "cat > /opt/ccip-monitor/.env < CCIP_SENDER_ADDRESS= LINK_TOKEN_ADDRESS= METRICS_PORT=8000 CHECK_INTERVAL=60 EOF" ``` ### 3. Configure Keeper ```bash pct exec 3502 -- bash -c "cat > /opt/keeper/.env < ORACLE_CONTRACT_ADDRESS= PRIVATE_KEY= UPDATE_INTERVAL=300 EOF" ``` ### 4. Configure Financial Tokenization ```bash pct exec 3503 -- bash -c "cat > /opt/financial-tokenization/.env < 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