Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
- Config, docs, scripts, and backup manifests - Submodule refs unchanged (m = modified content in submodules) Made-with: Cursor
79 lines
3.2 KiB
Bash
79 lines
3.2 KiB
Bash
#!/usr/bin/env bash
|
|
# Enable TRACE API on the public RPC node (VMID 2201) so Blockscout can index internal
|
|
# transactions and block rewards. Run from Proxmox host that has VMID 2201, or set
|
|
# RPC_VM_2201_HOST=root@192.168.11.12 to run via SSH.
|
|
# See: explorer-monorepo/docs/RPC_FUNCTIONALITY_AND_BLOCKSCOUT_TRACE.md
|
|
|
|
set -euo pipefail
|
|
|
|
VMID="${RPC_VMID_2201:-2201}"
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
[ -f "$REPO_ROOT/config/ip-addresses.conf" ] && source "$REPO_ROOT/config/ip-addresses.conf" 2>/dev/null || true
|
|
|
|
RPC_HOST="${RPC_VM_2201_HOST:-root@${PROXMOX_R630_02:-192.168.11.12}}"
|
|
[[ "$RPC_HOST" != *"@"* ]] && RPC_HOST="root@$RPC_HOST"
|
|
|
|
run_in_vmid() {
|
|
local cmd="$1"
|
|
if command -v pct &>/dev/null && pct list 2>/dev/null | grep -q "^$VMID "; then
|
|
pct exec "$VMID" -- bash -c "$cmd"
|
|
else
|
|
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "$RPC_HOST" "pct exec $VMID -- bash -c $(printf '%q' "$cmd")"
|
|
fi
|
|
}
|
|
|
|
echo "=============================================="
|
|
echo "Enable TRACE API on VMID $VMID (public RPC)"
|
|
echo "=============================================="
|
|
|
|
if ! command -v pct &>/dev/null || ! pct list 2>/dev/null | grep -q "^$VMID "; then
|
|
echo "Running via SSH: $RPC_HOST"
|
|
fi
|
|
|
|
# Service uses config-rpc-public.toml (see besu-rpc.service ExecStart); try that first
|
|
CONFIG_PATHS="/etc/besu/config-rpc-public.toml /etc/besu/config-rpc.toml /etc/besu/config.toml"
|
|
CONFIG_FILE=""
|
|
for p in $CONFIG_PATHS; do
|
|
if run_in_vmid "test -f $p" 2>/dev/null; then
|
|
CONFIG_FILE="$p"
|
|
break
|
|
fi
|
|
done
|
|
|
|
if [ -z "$CONFIG_FILE" ]; then
|
|
echo "No Besu config found in VMID $VMID. List /etc/besu/:"
|
|
run_in_vmid "ls -la /etc/besu/" 2>/dev/null || true
|
|
exit 1
|
|
fi
|
|
|
|
echo "Config: $CONFIG_FILE"
|
|
|
|
if run_in_vmid "grep -q '\"TRACE\"' $CONFIG_FILE" 2>/dev/null; then
|
|
echo "TRACE already present. No change."
|
|
exit 0
|
|
fi
|
|
|
|
# Add TRACE (match both ["ETH","NET","WEB3"] and ["ETH","NET","WEB3","TXPOOL","ADMIN"])
|
|
run_in_vmid "sed -i 's/rpc-http-api=\[\"ETH\",\"NET\",\"WEB3\"\]/rpc-http-api=[\"ETH\",\"NET\",\"WEB3\",\"TRACE\"]/' $CONFIG_FILE" 2>/dev/null || true
|
|
run_in_vmid "sed -i 's/rpc-http-api=\[\"ETH\",\"NET\",\"WEB3\",\"TXPOOL\",\"ADMIN\"\]/rpc-http-api=[\"ETH\",\"NET\",\"WEB3\",\"TXPOOL\",\"ADMIN\",\"TRACE\"]/' $CONFIG_FILE" 2>/dev/null || true
|
|
run_in_vmid "sed -i 's/rpc-ws-api=\[\"ETH\",\"NET\",\"WEB3\"\]/rpc-ws-api=[\"ETH\",\"NET\",\"WEB3\",\"TRACE\"]/' $CONFIG_FILE" 2>/dev/null || true
|
|
|
|
if ! run_in_vmid "grep -q '\"TRACE\"' $CONFIG_FILE" 2>/dev/null; then
|
|
echo "Could not add TRACE. Edit $CONFIG_FILE inside VMID $VMID and add TRACE, then restart Besu."
|
|
exit 1
|
|
fi
|
|
|
|
echo "TRACE added. Restarting Besu..."
|
|
run_in_vmid "systemctl restart besu-rpc 2>/dev/null || systemctl restart besu 2>/dev/null || true"
|
|
sleep 5
|
|
|
|
RPC_IP="${RPC_PUBLIC_1:-192.168.11.221}"
|
|
if curl -sS --max-time 10 -X POST -H "Content-Type: application/json" \
|
|
-d '{"jsonrpc":"2.0","method":"trace_block","params":["0x1"],"id":1}' \
|
|
"http://${RPC_IP}:8545" | grep -q '"result"'; then
|
|
echo "OK: trace_block returns result (TRACE API enabled)."
|
|
else
|
|
echo "WARN: trace_block still failed. Check: pct exec $VMID -- journalctl -u besu-rpc -n 30"
|
|
fi
|