A minimal, production‑ready node that:
- Watches
APIConsensus.RequestRegistered - Pulls provider snapshot (HTTP)
- Verifies EIP‑712 (provider signature)
- Optionally pins payload to IPFS
- Submits snapshot
- Opportunistically calls
finalizenear/after expiry+grace
cp .env.example .env
# Fill in RPCs, CHAIN_ID, CONSENSUS_ADDR, REGISTRY_ADDR, PRIVATE_KEY, IPFS/Pinata config & PROVIDER_BASE_URL
npm i
npm run devdocker build -t sylan/node .
docker run --rm --env-file .env sylan/node-
Health:
GET /healthz(200 OK when event loop active) -
Logs are JSON (pino) with levels
-
Graceful shutdown on SIGINT/SIGTERM
-
Use a dedicated EOA for node ops
-
Keep PRIVATE_KEY out of docker‑compose files checked into git
-
Rate limit provider fetch; random jitter to avoid thundering herds