Files
proxmox/docs/SMART_CONTRACT_CONNECTIONS_AND_NEXT_LXCS.md

12 KiB

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

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

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

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

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

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

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

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

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

cd /opt/smom-dbis-138-proxmox
./scripts/deployment/deploy-hyperledger-services.sh

Deploy Monitoring Stack

cd /opt/smom-dbis-138-proxmox
./scripts/deployment/deploy-monitoring.sh

Deploy Explorer

cd /opt/smom-dbis-138-proxmox
./scripts/deployment/deploy-explorer.sh

Deploy Everything

cd /opt/smom-dbis-138-proxmox
./deploy-all.sh

⚙️ Post-Deployment Configuration

After deploying containers, configure RPC connections:

1. Configure Oracle Publisher

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

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

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

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

# 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

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:

# 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