Tokenomics

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:

RoleMinimum StakePurpose
Validator32,000 SALTConsensus participation and BFT voting
Model host1,000 SALTQuality collateral for registered models
Oracle node5,000 SALT (+ $SNAP NFT)Bridge attestation collateral
Delegator100 SALTNo 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).

ViolationSlash AmountDetection
Downtime (missed BFT votes)0.1% per epoch of absenceAutomatic, on-chain
Double signing5% of stakeDetected by any node, submitted as evidence
Equivocation (conflicting votes)10% of stakeDetected by BFT protocol
Extended absence (>24 hours)1% of stakeAutomatic, on-chain
Inference fraud (model hosts)Up to 100% of model stakeChallenge-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.

RoleUnbonding Period
Validator7 days
Model host3 days
Oracle node7 days
Delegator7 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