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
- Contract Addresses: Smart contract addresses need to be deployed first before configuring services
- Private Keys: Store private keys securely (use secrets management)
- RPC Load Balancing: Consider using a load balancer for RPC endpoints
- Network Access: Ensure all containers can reach RPC nodes (192.168.11.250-252)
- 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:
- Deploy Priority 1 containers (Oracle, CCIP Monitor, Keeper)
- Deploy and configure Hyperledger services
- Deploy monitoring stack
- Deploy explorer
- Configure all RPC connections
- Deploy smart contracts
- Update service configurations with contract addresses