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() |
| Stake | 0.001 ETH per keeper at genesis |
| Fee share | 70% of every draw fee to signing keepers — hybrid split: 50% proportional to stake, 50% equal split, max share capped at 2× equal-split |
| Payouts | Pull-payment — keepers call withdraw() to claim accumulated earnings |
| Uptime floor | 80% — sustained downtime below this risks slashing |
| Unbonding | 7 days when unstaking; node stays active during unbonding |
What a Keeper Does
For every PoFR event a keeper node:
- Detects the
DrawRequestevent via WebSocket RPC subscription. - Fetches entropy — resolving the drand Quicknet round for the anchored height plus the other signed sources (DRAND, NIST, Bitcoin, Polkadot, Ethereum, Cosmos Hub).
- Signs
keccak256(chainId, coordinator, eventId, drandValue, entropyBlock)with its registered key.block.timestampandblock.prevrandaoare never signed — they're mixed in fresh at fulfillment, so no keeper can pre-compute the seed. - Relays its signature to peers via the gossip layer; the first keeper holding quorum submits
fulfill()and pays the gas. - Monitors — if a draw stalls past the 256-block timeout, any keeper (or any observer) can trigger the permissionless
fulfillFromBeaconfallback.
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:latestThe 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):
| Action | x402 Cost | Earnings | Net/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.