#!/usr/bin/env bash # Configure RPC nodes as Full Function or Standard Base type set -euo pipefail # Load IP configuration SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" log() { echo "[INFO] $1"; } success() { echo "[✓] $1"; } error() { echo "[ERROR] $1"; } # Function to create full-function RPC config create_fullfunction_config() { local vmid=$1 local ip=$2 log "Creating full-function RPC config for VMID $vmid ($ip)" cat > /tmp/besu-config-fullfunction-$vmid.toml << 'EOF' # Full Function RPC Node Configuration # Can deploy contracts and execute write transactions network-id=138 p2p-host="0.0.0.0" p2p-port=30303 rpc-http-enabled=true rpc-http-host="0.0.0.0" rpc-http-port=8545 rpc-http-api=["ETH","NET","WEB3","ADMIN","PERSONAL","MINER","DEBUG"] rpc-http-cors-origins=["*"] rpc-ws-enabled=true rpc-ws-host="0.0.0.0" rpc-ws-port=8546 rpc-ws-api=["ETH","NET","WEB3","ADMIN","PERSONAL","MINER","DEBUG"] rpc-ws-origins=["*"] rpc-http-api-enable-unsafe-txsigning=true metrics-enabled=true metrics-port=9545 metrics-host="0.0.0.0" sync-mode="FULL" logging="INFO" permissions-nodes-config-file-enabled=true permissions-nodes-config-file="/var/lib/besu/permissions/permissions-nodes.toml" static-nodes-file="/var/lib/besu/static-nodes.json" max-peers=50 data-path="/data/besu" EOF success "Created full-function config for VMID $vmid" } # Function to create standard base RPC config create_standardbase_config() { local vmid=$1 local ip=$2 log "Creating standard base RPC config for VMID $vmid ($ip)" cat > /tmp/besu-config-standardbase-$vmid.toml << 'EOF' # Standard Base RPC Node Configuration # Read-only access for public services network-id=138 p2p-host="0.0.0.0" p2p-port=30303 rpc-http-enabled=true rpc-http-host="0.0.0.0" rpc-http-port=8545 rpc-http-api=["ETH","NET","WEB3"] rpc-http-cors-origins=["*"] rpc-ws-enabled=true rpc-ws-host="0.0.0.0" rpc-ws-port=8546 rpc-ws-api=["ETH","NET","WEB3"] rpc-ws-origins=["*"] metrics-enabled=true metrics-port=9545 metrics-host="0.0.0.0" sync-mode="FULL" logging="WARN" permissions-nodes-config-file-enabled=true permissions-nodes-config-file="/var/lib/besu/permissions/permissions-nodes.toml" static-nodes-file="/var/lib/besu/static-nodes.json" max-peers=50 data-path="/data/besu" EOF success "Created standard base config for VMID $vmid" } log "===================================" log "RPC Node Configuration Generator" log "===================================" echo "" # ALLTRA Network log "Configuring ALLTRA Network RPC Nodes..." create_fullfunction_config 2500 "${IP_SERVICE_172:-${IP_SERVICE_172:-192.168.11.172}}" create_standardbase_config 2501 "${IP_SERVICE_173:-${IP_SERVICE_173:-192.168.11.173}}" create_standardbase_config 2502 "${IP_SERVICE_174:-${IP_SERVICE_174:-192.168.11.174}}" echo "" # HYBX Network log "Configuring HYBX Network RPC Nodes..." create_fullfunction_config 2503 "${IP_RPC_246:-${IP_RPC_246:-${IP_RPC_246:-192.168.11.246}}}" create_standardbase_config 2504 "${IP_RPC_247:-${IP_RPC_247:-${IP_RPC_247:-192.168.11.247}}}" create_standardbase_config 2505 "${IP_RPC_248:-${IP_RPC_248:-${IP_RPC_248:-192.168.11.248}}}" echo "" log "Configuration files created in /tmp/" log "Deploy these to respective RPC node config directories:" log " ALLTRA-RPC-1 (Full): /tmp/besu-config-fullfunction-2500.toml → /opt/besu/config/" log " ALLTRA-RPC-2 (Std): /tmp/besu-config-standardbase-2501.toml → /opt/besu/config/" log " ALLTRA-RPC-3 (Std): /tmp/besu-config-standardbase-2502.toml → /opt/besu/config/" log " HYBX-RPC-1 (Full): /tmp/besu-config-fullfunction-2503.toml → /opt/besu/config/" log " HYBX-RPC-2 (Std): /tmp/besu-config-standardbase-2504.toml → /opt/besu/config/" log " HYBX-RPC-3 (Std): /tmp/besu-config-standardbase-2505.toml → /opt/besu/config/"