#!/usr/bin/env bash # Shared VMID → IP mapping for Chain 138 / Proxmox # Exports: VMID_VALIDATORS, VMID_SENTRIES, VMID_RPC, VMID_CURRENT_NODES, # RPC_NODES, VALIDATOR_NODES, SENTRY_NODES, CURRENT_NODES, RPC_URL_138_DEFAULT # Usage: source "${PROJECT_ROOT}/scripts/lib/vmid-ip-maps.sh" # Resolve paths if not set [[ -z "${PROJECT_ROOT:-}" ]] && PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" [[ -f "${PROJECT_ROOT}/config/ip-addresses.conf" ]] && source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true # Validators (1000-1004) declare -gA VMID_VALIDATORS=( ["1000"]="${IP_VALIDATOR_0:-192.168.11.100}" ["1001"]="${IP_VALIDATOR_1:-192.168.11.101}" ["1002"]="${IP_VALIDATOR_2:-192.168.11.102}" ["1003"]="${IP_VALIDATOR_3:-192.168.11.103}" ["1004"]="${IP_VALIDATOR_4:-192.168.11.104}" ) # Sentries (1500-1503) declare -gA VMID_SENTRIES=( ["1500"]="${IP_BESU_RPC_0:-192.168.11.150}" ["1501"]="${IP_BESU_RPC_1:-192.168.11.151}" ["1502"]="${IP_BESU_RPC_2:-192.168.11.152}" ["1503"]="${IP_BESU_RPC_3:-192.168.11.153}" ) # RPC nodes (current active) # 2101: admin/deployment; 2201: bridge, monitoring, public-facing (8545 HTTP, 8546 WS) — FIXED PERMANENT declare -gA VMID_RPC=( ["2101"]="${RPC_CORE_1:-192.168.11.211}" ["2201"]="${RPC_PUBLIC_1:-192.168.11.221}" ["2400"]="${RPC_THIRDWEB_PRIMARY:-192.168.11.240}" ["2401"]="${RPC_THIRDWEB_1:-192.168.11.241}" ["2402"]="${RPC_THIRDWEB_2:-192.168.11.242}" ["2500"]="${RPC_ALLTRA_1:-192.168.11.250}" ["2501"]="${RPC_ALI_1:-192.168.11.251}" ["2502"]="${RPC_ALI_2:-192.168.11.252}" ["2503"]="${RPC_ALI_1_ALT:-192.168.11.253}" ["2504"]="${RPC_ALI_2_ALT:-192.168.11.254}" ["2505"]="${IP_VAULT_PHOENIX_2:-192.168.11.201}" ["2506"]="${IP_SERVICE_202:-192.168.11.202}" ["2507"]="${IP_SERVICE_203:-192.168.11.203}" ["2508"]="${IP_SERVICE_204:-192.168.11.204}" ) # Combined current nodes (validators + sentries + rpc) declare -gA VMID_CURRENT_NODES=() for k in "${!VMID_VALIDATORS[@]}"; do VMID_CURRENT_NODES["$k"]="${VMID_VALIDATORS[$k]}"; done for k in "${!VMID_SENTRIES[@]}"; do VMID_CURRENT_NODES["$k"]="${VMID_SENTRIES[$k]}"; done for k in "${!VMID_RPC[@]}"; do VMID_CURRENT_NODES["$k"]="${VMID_RPC[$k]}"; done # Aliases for backward compatibility declare -gA RPC_NODES=() declare -gA VALIDATOR_NODES=() declare -gA SENTRY_NODES=() declare -gA CURRENT_NODES=() for k in "${!VMID_RPC[@]}"; do RPC_NODES["$k"]="${VMID_RPC[$k]}"; done for k in "${!VMID_VALIDATORS[@]}"; do VALIDATOR_NODES["$k"]="${VMID_VALIDATORS[$k]}"; done for k in "${!VMID_SENTRIES[@]}"; do SENTRY_NODES["$k"]="${VMID_SENTRIES[$k]}"; done for k in "${!VMID_CURRENT_NODES[@]}"; do CURRENT_NODES["$k"]="${VMID_CURRENT_NODES[$k]}"; done # Default RPC URL (admin: RPC_URL_138; public/bridge: RPC_URL_138_PUBLIC) RPC_URL_138_DEFAULT="${RPC_URL_138:-http://${RPC_CORE_1:-192.168.11.211}:8545}" RPC_URL_138_PUBLIC_DEFAULT="${RPC_URL_138_PUBLIC:-http://${RPC_PUBLIC_1:-192.168.11.221}:8545}" WS_URL_138_PUBLIC_DEFAULT="${WS_URL_138_PUBLIC:-ws://${RPC_PUBLIC_1:-192.168.11.221}:8546}"