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

Loading validators…

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

1

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.

2

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.

3

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.

4

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.