RandProofRandProof

RandProofKeeper

The decentralized keeper network that detects PoFR requests, fetches entropy, signs, and fulfills — live on ten chains with 12/12 keepers staked.

Live on 10 Chains

12/12 keeper nodes are registered and staked on the live KeeperCoordinatorV8 deployments across ten chains, fulfilling production draws with 4-of-12 committee signatures — the same committee on every chain.

RandProofKeeper is the decentralized automation layer that operates RandProofRNG. It replaces what would otherwise be a single centralized keeper wallet — detecting new PoFR requests, fetching entropy, signing, and submitting fulfill() — with a permissionless network of independent keeper nodes, coordinated purely by on-chain incentives.

RandProofKeeper's scope is entropy fulfillment only. Watching an arbitrary client contract's own business condition (a raffle end time, an auction close, any deadline- or state-based trigger) is a separate job handled by RandProofAutomation — see Whitepaper §10.

Live Committee Parameters (Base)

Committee size (n)12 keepers — all registered and staked
Fulfillment threshold (t)4-of-12 ECDSA signatures required per fulfill()
Stake0.001 ETH per keeper at genesis
Fee share70% of every draw fee to signing keepers — hybrid split: 50% proportional to stake, 50% equal split, max share capped at 2× equal-split
PayoutsPull-payment — keepers call withdraw() to claim accumulated earnings
Uptime floor80% — sustained downtime below this risks slashing
Unbonding7 days when unstaking; node stays active during unbonding

What a Keeper Does

For every PoFR event a keeper node:

  1. Detects the DrawRequest event via WebSocket RPC subscription.
  2. Fetches entropy — resolving the drand Quicknet round for the anchored height plus the other signed sources (DRAND, NIST, Bitcoin, Polkadot, Ethereum, Cosmos Hub).
  3. Signs keccak256(chainId, coordinator, eventId, drandValue, entropyBlock) with its registered key. block.timestamp and block.prevrandao are never signed — they're mixed in fresh at fulfillment, so no keeper can pre-compute the seed.
  4. Relays its signature to peers via the gossip layer; the first keeper holding quorum submits fulfill() and pays the gas.
  5. Monitors — if a draw stalls past the 256-block timeout, any keeper (or any observer) can trigger the permissionless fulfillFromBeacon fallback.

Node Software

Open-source Node.js software, distributed as a Docker image and configured via a single .env file:

KEEPER_PRIVATE_KEY=0x...
CHAINS=base
BASE_RPC=wss://base-mainnet.g.alchemy.com/v2/<YOUR_ALCHEMY_KEY>
MIN_UPTIME_PERCENT=80
BLS_COMMITTEE_SIZE=12
FEE_ASSET=native

# Launch:
docker run -d --env-file .env randproof/randproofkeeper:latest

The complete configuration reference — multi-chain RPCs, entropy endpoints, alerting, database — is in .env Configuration.

AI Agent Nodes

Keeper participation is also exposed as agent skills for autonomous AI operators:

  • OpenClaw: install skill randproof-keeper — event watching, entropy submission, gossip relay. Earnings 2–5% of PoFR fees. Identity via ERC-8004 passport.
  • Hermes: hermes skill add randproof — self-optimizing participation with persistent memory. Same earnings and identity model.

Agent node economics (x402 micropayments):

Actionx402 CostEarningsNet/Event
Event detection$0.001 USDC$0.010–0.025 USDC~$0.009–0.024
Entropy submission$0.002 USDC$0.015–0.025 USDC~$0.013–0.023
Gossip relay$0.0005 USDC$0.005–0.010 USDC~$0.004–0.009
Entropy monitoring$0.0005 USDC$0.002–0.005 USDC~$0.0015–0.0045
Fraud detection$0.001 USDC$0.005–0.015 USDC (bounty)~$0.004–0.014

Run a Keeper Node

The full operator path — hardware, keys, registration, staking, monitoring, and troubleshooting — lives in the Node Operators section: start with Prerequisites, then Registration & Staking and Running the Node.

Spec vs. Deployment

Whitepaper §8 describes the full design. Two live-state notes: the production committee fulfills with 4-of-12 ECDSA signatures (BLS threshold aggregation is a later-phase upgrade — see §19.2.2), and genesis stake on Base is 0.001 ETH per keeper. Node operator economics are specified in §21.

On this page