139 lines
4.0 KiB
Bash
139 lines
4.0 KiB
Bash
|
|
#!/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/"
|
||
|
|
|