RandProofRandProof
Node Operators

Updates, Maintenance & Troubleshooting

Issue: RPC WebSocket disconnects frequently

30.10.1 Updating the Keeper Node

# Check current version
docker exec randproof-keeper randproof --version
# Pull latest image
docker pull randproof/randproofkeeper:latest
# Rolling restart (zero-downtime update)
docker compose pull keeper
docker compose up -d --no-deps keeper
# Verify update
docker logs randproof-keeper | head -20
curl http://localhost:3000/health | jq .version

30.10.2 Common Issues & Fixes

Issue: RPC WebSocket disconnects frequently

Fix: Switch to a dedicated RPC provider (Alchemy/Infura). Free tier RPCs have connection limits. Set BASE_RPC to a paid endpoint. Restart the container.

Issue: NIST beacon staleness alert firing

Fix: Check internet connectivity from the container: docker exec randproof-keeper curl https://beacon.nist.gov/beacon/2.0/pulse/last. If blocked, add a DNS override or use a NIST mirror.

Issue: BLS signing fails with "key not found"

Fix: Verify BLS_KEYSTORE_PATH is correctly mounted: docker exec randproof-keeper ls /app/keys. Ensure the keys volume mount is correct in docker-compose.yml.

Issue: Keeper shows INACTIVE on-chain

Fix: Run: randproof keeper status --chain base --address 0xYOUR. Check if stake fell below minimum (price change). Top up stake: randproof keeper stake --chain base --amount 0.005.

Issue: High fulfillment latency (>5s)

Fix: Check entropy source latency in the health endpoint. ANU QRNG can be slow; if it is stale or unavailable, its weight is redistributed automatically (AV-54) -- do not configure a substitute endpoint. Check Bitcoin RPC confirmations setting (reduce to 1 for faster response).

Issue: Docker container keeps restarting

Fix: Check logs: docker logs randproof-keeper --tail 50. Most common cause: invalid KEEPER_PRIVATE_KEY format (must start with 0x) or missing BLS keystore password.

30.10.3 Emergency: Node Slashed

# If slashed, the node is temporarily banned. Steps to recover:
# 1. Check slash reason
randproof keeper slash-history --address 0xYourKeeperAddress
# 2. Fix the underlying issue (double-sign = disable duplicate processes,
# offline = fix RPC, invalid sig = check BLS key integrity)
# 3. Re-stake to minimum (previous stake was partially/fully slashed)
randproof keeper stake --chain base --amount 0.005 --asset eth --keystore ./keys/evm-keystore.json --password-file ./keys/.password
# 4. Request reinstatement (after temporary ban expires)
randproof keeper reinstate --chain base --keystore ./keys/evm-keystore.json --password-file ./keys/.password
# 5. Monitor closely for 24h after reinstatement
docker compose logs -f keeper | grep -E "SLASH|WARN|ERROR"

On this page