Validator Setup
Validators are the backbone of Citrate's finality layer. They participate in the Paraconsistent BFT consensus protocol to produce finality checkpoints, ensuring that confirmed transactions cannot be reversed. In return, validators earn staking rewards proportional to their stake and performance. This guide walks through the complete validator registration process.
Prerequisites
Before becoming a validator, ensure you have:
- A fully synced Citrate node (see Installing Client)
- A funded wallet with at least the minimum stake amount plus gas for registration transactions
- Hardware meeting the validator specifications (see Hardware Requirements)
- A stable network connection with 99.5%+ uptime capability
Staking SALT
The minimum stake to register as a validator is 32,000 SALT. This stake serves as economic collateral -- validators who behave honestly earn rewards, while those who act maliciously or go offline face slashing penalties.
Stake your SALT using the Citrate CLI. I'd recommend checking your balance first to make sure you have enough for the stake plus gas fees.
Check your current balance:
citrate-cli wallet balance --address 0xYOUR_VALIDATOR_ADDRESS --rpc https://rpc.cnidarian.cloud
Stake SALT to the validator contract:
citrate-cli validator stake --amount 32000 --validator-address 0xYOUR_VALIDATOR_ADDRESS --rpc https://rpc.cnidarian.cloud --private-key $PRIVATE_KEY
Your stake is locked for the duration of your validator registration plus an unbonding period of 7 days after you request to withdraw. During the unbonding period, your stake can still be slashed for any misbehavior that occurred while you were active.
You can increase your stake at any time to improve your selection weight:
citrate-cli validator add-stake --amount 10000 --rpc https://rpc.cnidarian.cloud --private-key $PRIVATE_KEY
Registering as a Validator
Once your stake transaction confirms, register your node as an active validator. This links your staking address to your node's consensus key.
First, generate a validator consensus key:
Generate a new validator key pair:
citrated keys generate --type validator --output ~/.citrate/keys/validator.key
Display the public key (you will need this for registration):
citrated keys show --key ~/.citrate/keys/validator.key
Then register on-chain:
citrate-cli validator register --consensus-pubkey $(citrated keys show --key ~/.citrate/keys/validator.key) --commission-rate 5 --rpc https://rpc.cnidarian.cloud --private-key $PRIVATE_KEY
The --commission-rate is a percentage (0-100) that determines how much of delegator rewards you retain as a commission. A rate of 5 means you keep 5% of rewards earned from delegated stake.
After registration, your node will be included in the active validator set at the next epoch boundary (every 100 blocks, approximately 100 seconds).
Configuring BFT Participation
Update your node configuration to enable validator consensus participation:
# In ~/.citrate/config.toml
[consensus]
role = "validator"
validator_key = "~/.citrate/keys/validator.key"
stake_address = "0xYOUR_STAKING_ADDRESS"
# BFT-specific settings
[consensus.bft]
vote_timeout_ms = 3000 # Time to wait for votes before timing out
proposal_timeout_ms = 5000 # Time to wait for block proposals
max_skip_rounds = 3 # Max consecutive rounds to skip before alerting
Restart your node for the changes to take effect:
If running directly:
citrated start --config ~/.citrate/config.toml
If running in Docker:
docker restart citrate-node
Your node will begin participating in BFT consensus rounds once it appears in the active validator set. You can verify your status:
citrate-cli validator status --address 0xYOUR_VALIDATOR_ADDRESS --rpc https://rpc.cnidarian.cloud
Monitoring Duties
Validator performance directly affects your rewards and slashing risk. Monitor these key metrics:
citrate-cli validator performance --address 0xYOUR_VALIDATOR_ADDRESS --rpc https://rpc.cnidarian.cloud
Key metrics to watch:
| Metric | Target | Slashing Threshold |
|---|---|---|
| Uptime | >99.9% | <95% triggers penalty |
| Vote participation | >99% | <90% triggers slashing |
| Proposal success rate | >95% | <80% reduces rewards |
| Double-sign incidents | 0 | Any double-sign = major slash |
| Blue score | Increasing | Declining = investigate |
We strongly recommend setting up alerts for critical events before going live. See the Monitoring guide for Prometheus alerting rules specific to validators.
Slashing penalties vary by severity:
- Downtime (missed votes): 0.1% of stake per epoch of downtime
- Double signing: 5% of stake, immediate
- Equivocation (conflicting votes): 10% of stake, immediate
- Extended absence (>24 hours offline): 1% of stake
Further Reading
- Staking -- detailed staking mechanics and delegation
- Mining Configuration -- combine validator with mining
- Monitoring -- dashboards and alerting for validators
- Paraconsistent Consensus -- the BFT protocol validators run