The validator committee is the set of active validators participating in Sui consensus. This guide covers committee structure, selection, and management.
Committee Overview
The Sui validator committee:
- Active validators: Currently participating in consensus
- Candidate validators: Registered but not in active set
- Pending validators: Will join in next epoch
- Leaving validators: Will exit in next epoch
Committee Size
Committee size varies based on network:
- Mainnet: ~100-150 validators
- Testnet: ~50-100 validators
- Dynamic: Size can change through governance
Epoch System
Epoch Duration
- Mainnet: 24 hours
- Testnet: Typically 24 hours (may vary)
- Devnet: Often shorter for testing
Epoch Boundaries
At each epoch boundary:
- Reward distribution occurs
- Committee membership updates
- Metadata changes take effect
- Staking changes activate
- New epoch begins
Checking Current Epoch
# Query current epoch
curl -X POST http://localhost:9000 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "suix_getLatestSuiSystemState",
"params": []
}' | jq '.result.epoch'
# Via CLI
sui client call --package 0x3 --module sui_system \
--function get_current_epoch \
--args 0x5
Committee Selection
Selection Criteria
Validators are selected for the active committee based on:
- Minimum stake: Must meet or exceed minimum requirement
- Stake ranking: Higher stake increases probability of selection
- Committee size limit: Only top validators by stake are selected
- Active status: Must not be in leaving or slashed state
Stake-Weighted Selection
Validators with more total stake (self-stake + delegated) have:
- Higher chance of inclusion in active set
- Greater voting power in consensus
- Larger share of rewards
Checking Committee Membership
# List all active validators
sui client call --package 0x3 --module sui_system \
--function get_validators \
--args 0x5
# Check if specific validator is active
sui validator display-metadata <address> | grep "active"
View on explorers:
Joining the Committee
Prerequisites
Before joining:
- ✅ Complete validator setup
- ✅ Register as candidate
- ✅ Accumulate minimum stake
- ✅ Fully sync node with network
- ✅ Verify all ports accessible
- ✅ Test node performance
Registration Process
Generate validator info
sui validator make-validator-info \
"Validator Name" \
"Description" \
"https://example.com/logo.png" \
"https://example.com" \
"validator.example.com" \
1000
Become candidate
sui validator become-candidate validator.info
Verify transaction succeeded:sui validator display-metadata
Accumulate stake
- Self-stake SUI tokens
- Attract delegations
- Monitor total stake:
sui validator display-metadata | grep "total_stake"
Join committee
Once minimum stake reached:sui validator join-committee
You’ll become active at next epoch boundary.
Activation Timeline
Time 0:00 - Submit join-committee request
Time 0:00 - Status: Pending Validator
Time 24:00 - Epoch boundary
Time 24:00 - Status: Active Validator
Time 24:00 - Begin consensus participation
Leaving the Committee
Voluntary Exit
To leave the active validator set:
sui validator leave-committee
Effects:
- Remain active until next epoch
- Removed at epoch boundary
- Staking pool becomes inactive
- Stop earning rewards
- Delegators can unstake
Exit Timeline
Time 0:00 - Submit leave-committee request
Time 0:00 - Status: Leaving Validator
Time 24:00 - Epoch boundary
Time 24:00 - Status: Inactive Candidate
Time 24:00 - Staking pool deactivated
Involuntary Removal
Validators can be removed for:
- Insufficient stake: Falling below minimum
- Slashing: Byzantine behavior reported by 2f+1 validators
- Inactivity: Extended downtime or non-participation
Validator States
State Transitions
Not Registered
|
v
Candidate ←→ Active Validator
↑ |
| v
└──── Inactive/Slashed
Candidate
- Registered validator
- Not in active set
- Can accept stake
- Can join committee if sufficient stake
Check candidate status:
sui validator display-metadata | grep "pending"
Active Validator
- In current committee
- Participating in consensus
- Earning rewards
- Can be delegated to
Responsibilities:
- Maintain node uptime
- Participate in consensus
- Process transactions
- Submit gas price quotes
Pending Validator
- Requested to join committee
- Will activate next epoch
- Should ensure node is ready
Preparation:
- Verify node fully synced
- Confirm all ports accessible
- Monitor for epoch boundary
- Ready to start consensus
Leaving Validator
- Requested to leave committee
- Still active current epoch
- Will deactivate next epoch
Actions:
- Complete current epoch normally
- Communicate with delegators
- Prepare for deactivation
Inactive/Slashed
- Removed from committee
- Not earning rewards
- May have reduced stake (if slashed)
Recovery:
- Address removal cause
- Restore stake if needed
- Rejoin as candidate
- Request committee membership
Committee Operations
Voting Power
Voting power in consensus:
Voting Power = Validator Stake / Total Committee Stake
Example:
Validator stake: 50M SUI
Total committee stake: 2B SUI
Voting power: 50M / 2B = 2.5%
Higher voting power:
- More influence in consensus
- Higher rewards potential
- Greater responsibility
Consensus Participation
Active validators must:
- Propose blocks: When elected as leader
- Vote on proposals: Participate in each round
- Sign certificates: Validate transactions
- Maintain state: Keep synced with network
Monitoring participation:
# Check consensus metrics
curl -s http://localhost:9184/metrics | grep -E \
"current_round|committed_subdags|consensus_votes"
Quorum Requirements
Consensus requires:
- 2f+1 stake: For quorum (f = faulty validators)
- Byzantine fault tolerance: Tolerates up to f failures
- Liveness: Requires >2f+1 honest validators
Example (with 100M total stake):
- f = 33M stake can be faulty
- Quorum = 67M stake needed
- Safety maintained if less than 33M stake byzantine
Stake Management
Monitoring Total Stake
# Check your validator's stake
sui validator display-metadata | grep -E "total_stake|self_stake"
# Check minimum requirement
sui client call --package 0x3 --module sui_system \
--function get_min_validator_stake \
--args 0x5
Stake Changes
Stake changes at epoch boundaries:
- Delegations: New delegations activate
- Unstaking: Withdrawal requests complete
- Rewards: Automatically added to stake
- Slashing: Penalty applied if reported
Self-Stake Management
Validators can adjust self-stake:
# Add self-stake
sui client call --package 0x3 --module sui_system \
--function request_add_stake \
--args 0x5 <stake-coin-object>
# Request unstake
sui client call --package 0x3 --module sui_system \
--function request_withdraw_stake \
--args 0x5 <staked-sui-object> <amount>
Ensure total stake stays above minimum when withdrawing. Falling below minimum results in removal from active set.
Validator Ranking
Ranking Factors
Validators are ranked by:
- Total stake: Primary ranking factor
- Performance: Uptime and participation
- Commission rate: Lower can attract more delegation
- Reputation: Track record and reliability
Checking Rankings
View validator rankings:
Via RPC:
curl -X POST http://localhost:9000 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "suix_getValidatorsApy",
"params": []
}' | jq '.result.apys | sort_by(.apy) | reverse'
Delegation Dynamics
Attracting Delegations
Factors delegators consider:
- Performance history: Uptime and participation
- Commission rate: Competitive pricing
- Stake size: Indicator of trust/success
- Reputation: Community standing
- Communication: Transparency and updates
Managing Delegations
As a validator:
- Monitor delegation changes
- Communicate with delegators
- Maintain transparency
- Provide regular updates
- Announce changes in advance
Delegation Limits
No hard limit on delegations, but:
- Very high stake may centralize network
- Voting power caps may apply through governance
- Consider network health
Governance Participation
Proposal Voting
Validators vote on:
- Protocol upgrades
- Parameter changes
- Network policies
- Economic parameters
Voting Weight
Based on stake:
Vote Weight = Validator Total Stake / Network Total Stake
Best Practices
- Stay informed: Follow governance discussions
- Review proposals: Understand implications
- Vote actively: Participate in governance
- Communicate: Share voting rationale with delegators
- Consider delegators: Votes affect their stake too
Committee Health
Monitoring Committee
Check overall committee health:
# View committee size
curl -X POST http://localhost:9000 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "suix_getValidatorsApy",
"params": []
}' | jq '.result.apys | length'
# Check stake distribution
curl -X POST http://localhost:9000 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "suix_getLatestSuiSystemState",
"params": []
}' | jq '.result.activeValidators | map(.stakingPoolSuiBalance)'
Decentralization Metrics
- Nakamoto coefficient: Minimum validators for 33% stake
- Geographic distribution: Validator locations
- Client diversity: Node software variations
- Stake distribution: Concentration vs. distribution
Emergency Procedures
Committee Disruption
If committee is disrupted:
- Check validator health
- Monitor Discord announcements
- Review logs for errors
- Contact other validators
- Follow emergency procedures
Fork Scenarios
In case of network fork:
- Follow official guidance
- Do not modify configuration without instruction
- Coordinate with other validators
- Wait for resolution from Mysten Labs
Best Practices
Committee Participation
- Maintain readiness: Keep node healthy and updated
- Monitor actively: Watch for epoch transitions
- Communicate clearly: Inform delegators of changes
- Plan ahead: Coordinate maintenance with epochs
- Stay informed: Follow network updates
Operational Standards
- High availability: >99.5% uptime
- Fast updates: Apply within 24-48 hours
- Active monitoring: 24/7 alerting
- Backup systems: Redundancy for critical components
- Documentation: Maintain operational procedures
Resources
Documentation