Validators & Rewards
Register as a protocol validator, participate in entropy rounds, and claim your share of randomness fees.
Validator Registry
Registered
0
Active
0
Min stake
1,000 XNT
Committee size
≥ 2 per round
Register as Validator
Requirements: ≥1,000 XNT delegated stake, active vote account voting within 500 slots (~3 min). Stake is verified on-chain at registration and on each round refresh — offline validators are kicked automatically.
Connect your X1 Wallet to register or deregister.
How Validators Earn
Register
Call register_validator with your vote account and a stake account delegated to it. The program verifies ≥1,000 XNT stake and that you voted within 500 slots. No whitelist — fully permissionless.
Run validator-daemon.js
Each validator runs their own daemon independently. It monitors the chain, checks your on-chain entropy-based eligibility each round, and calls commit_via_ee (SHA256(secret ‖ nonce ‖ pubkey), stakes 0.01 XNT, returned on reveal). At least 2 validators must commit each round.
Reveal before reveal_deadline
After commit_deadline (~200 slots / ~75s), submit your preimage before reveal_deadline (~600 slots / ~3.75 min from round init). Stake returns immediately. A ValidatorReveal PDA is written recording your contribution. Miss the deadline and you forfeit the stake.
Claim reward
After finalize + distribute_fees (crank earns 5%), call claim_validator_reward once per round. Pays: round_fees × 95% ÷ reveal_count. Example: 3 requests × 0.01 XNT × 95% ÷ 3 revealers = 0.0095 XNT each.
Liveness Requirements
Min stake
1,000 XNT delegated to your vote account
Max vote staleness
500 slots (~3 min) — checked at every commit
Consecutive miss limit
3 misses → validator marked inactive, excluded from rounds
Kick mechanism
Any wallet calls mark_validator_missed; slashes are automatic on finalize
Recover from inactive
Call refresh_validator_status after going back online
Committee size
Minimum 2 validators per round — single-validator entropy is impossible
Validator Daemon Setup
Each validator runs their own daemon independently. The daemon holds only the validator's own identity key — it does not need any other validator's keys. Validators race to commit each round; the on-chain eligibility check (derived from pool entropy) determines who can participate.
# Clone + install git clone https://github.com/Commoneffort/x1-randomness-protocol cd x1-randomness-protocol/keeper npm install # Register your validator (one-time, requires ≥1000 XNT staked) VALIDATOR_KEYPAIR=/path/to/your-identity-key.json node validator-daemon.js --register # Run the validator daemon (holds only your identity key) VALIDATOR_KEYPAIR=/path/to/your-identity-key.json node validator-daemon.js --loop # Optionally run the permissionless crank (advances rounds, finalizes, distributes) # Any wallet can run this — it has zero protocol authority node run-round.js --loop
The crank (run-round.js) and validator daemon (validator-daemon.js) are separate processes. The crank is a public good anyone can run. Your daemon is personal — it commits and claims rewards using your validator key only.
Your Pending Rewards
Connect your X1 Wallet to see your ValidatorReveal PDAs and pending rewards.