Staking
We designed staking to be straightforward but meaningful. Staking is the mechanism by which SALT holders secure the Citrate network and earn rewards for their contribution. Validators stake SALT directly to participate in consensus, while delegators can stake their SALT with a trusted validator to earn a share of rewards without running infrastructure. This page covers the full staking lifecycle from deposit to withdrawal.
Minimum Stake Requirements
Different network roles require different minimum stakes:
| Role | Minimum Stake | Purpose |
|---|---|---|
| Validator | 32,000 SALT | Consensus participation and BFT voting |
| Model host | 1,000 SALT | Quality collateral for registered models |
| Oracle node | 5,000 SALT (+ $SNAP NFT) | Bridge attestation collateral |
| Delegator | 100 SALT | No minimum per validator, but 100 SALT total |
There is no maximum stake cap, but the reward rate is not linear -- diminishing returns apply above certain thresholds to prevent excessive stake concentration.
# Stake as a validator
citrate-cli staking stake --amount 32000 --role validator --rpc https://rpc.cnidarian.cloud --private-key $PRIVATE_KEY
# Stake as a model host (for a specific model)
citrate-cli staking stake --amount 5000 --role model-host --model-id 0xYOUR_MODEL_ID --rpc https://rpc.cnidarian.cloud --private-key $PRIVATE_KEY
Delegation
SALT holders who do not want to run infrastructure can delegate their tokens to a validator. Delegation earns a share of the validator's rewards minus the validator's commission rate.
# List available validators and their commission rates
citrate-cli staking validators --rpc https://rpc.cnidarian.cloud
# Delegate to a validator
citrate-cli staking delegate --amount 5000 --validator 0xVALIDATOR_ADDRESS --rpc https://rpc.cnidarian.cloud --private-key $PRIVATE_KEY
# Check your delegation status
citrate-cli staking delegations --delegator 0xYOUR_ADDRESS --rpc https://rpc.cnidarian.cloud
When choosing a validator to delegate to, consider:
- Commission rate: Lower commission means more rewards for you, but very low rates may indicate an unsustainable operation
- Uptime: Validators with higher uptime earn more consistent rewards
- Slash history: Check if the validator has been slashed before
- Self-stake: Validators with significant self-stake are more aligned with delegator interests
- Blue score: Higher blue scores indicate better network participation
Delegated stake is subject to the same slashing conditions as the validator's own stake. If a validator misbehaves, delegators lose a proportional amount. This is why choosing a reliable validator is critical.
Slashing Conditions
Slashing is the penalty mechanism that enforces honest behavior. When a staker violates protocol rules, a portion of their stake is destroyed (burned).
| Violation | Slash Amount | Detection |
|---|---|---|
| Downtime (missed BFT votes) | 0.1% per epoch of absence | Automatic, on-chain |
| Double signing | 5% of stake | Detected by any node, submitted as evidence |
| Equivocation (conflicting votes) | 10% of stake | Detected by BFT protocol |
| Extended absence (>24 hours) | 1% of stake | Automatic, on-chain |
| Inference fraud (model hosts) | Up to 100% of model stake | Challenge-based, requires evidence |
Slashed SALT is burned, reducing the total circulating supply. This means slashing events have a mildly positive effect on the value of remaining SALT.
# Check your slashing history
citrate-cli staking slashing-history --address 0xYOUR_ADDRESS --rpc https://rpc.cnidarian.cloud
Reward Distribution
Staking rewards come from two sources: newly minted SALT (block rewards allocated to validators) and a share of transaction fees.
The reward distribution formula for validators:
Validator Reward = Base Reward × Uptime Factor × Blue Score Multiplier
Where:
Base Reward = (Total Staking Reward Pool / Total Staked SALT) × Your Stake
Uptime Factor = Your Uptime / Target Uptime (capped at 1.0)
Blue Score Multiplier = 0.5 + (Your Blue Score / Network Avg Blue Score) × 0.5
Rewards are distributed at each epoch boundary (every 100 blocks). You can compound rewards by re-staking them:
# Check accumulated rewards
citrate-cli staking rewards --address 0xYOUR_ADDRESS --rpc https://rpc.cnidarian.cloud
# Claim rewards
citrate-cli staking claim-rewards --rpc https://rpc.cnidarian.cloud --private-key $PRIVATE_KEY
# Auto-compound: claim and re-stake in one transaction
citrate-cli staking compound --rpc https://rpc.cnidarian.cloud --private-key $PRIVATE_KEY
Unbonding Period
When you request to unstake (withdraw) your SALT, it enters an unbonding period during which the tokens are locked and not earning rewards. This delay exists to allow slashing of misbehavior that may be detected after a validator stops participating.
| Role | Unbonding Period |
|---|---|
| Validator | 7 days |
| Model host | 3 days |
| Oracle node | 7 days |
| Delegator | 7 days (follows validator unbonding) |
# Request unstaking (begins unbonding period)
citrate-cli staking unstake --amount 10000 --rpc https://rpc.cnidarian.cloud --private-key $PRIVATE_KEY
# Check unbonding status
citrate-cli staking unbonding --address 0xYOUR_ADDRESS --rpc https://rpc.cnidarian.cloud
# Withdraw after unbonding period completes
citrate-cli staking withdraw --rpc https://rpc.cnidarian.cloud --private-key $PRIVATE_KEY
During the unbonding period, your stake can still be slashed for violations that occurred while you were active. Once the unbonding period completes, the SALT is fully liquid and can be transferred or re-staked.
Further Reading
- SALT Overview -- token fundamentals
- Validator Setup -- becoming a validator
- Rewards -- all reward mechanisms
- Blue Score -- how blue scores affect staking rewards