Skip to main content

Staking

Sentrix runs Voyager (DPoS + BFT finality) on both networks since 2026-04-25 — anyone with ≥15,000 SRX can register as a validator, anyone with any SRX balance can delegate.

Validator set

ValueCitation
Max active validators21MAX_ACTIVE_VALIDATORS in crates/sentrix-staking/src/staking.rs:13
Min self-stake to register15,000 SRXMIN_SELF_STAKE in staking.rs:12
Min total active count4 (BFT 3-of-4 quorum floor)MIN_BFT_VALIDATORS in staking.rs:21
Epoch length28,800 blocks (~1 day @ 1s)EPOCH_LENGTH in crates/sentrix-staking/src/epoch.rs:10
Active-set recomputeEvery epoch boundary

Active set = top 21 by self_stake + delegated_stake. Recalculated at every epoch boundary.

Delegation

Anyone can delegate SRX to a validator via StakingOp::Delegate. You keep ownership; the validator gets voting weight + block-producing rights proportional to total stake.

Rewards split: validator takes commission (validator-set basis-points, anything 0–10,000), delegators share the rest pro-rata. Claim manually via StakingOp::ClaimRewards (no auto-compound).

To exit: StakingOp::Undelegate initiates a 7-day unbonding period, then SRX returns to your balance.

Slashing

All slash amounts are basis points (1 bp = 0.01%, so 100 bp = 1%).

Liveness (offline / downtime)

ValueCitation
Rolling window14,400 blocks (~4h @ 1s)LIVENESS_WINDOW in slashing/liveness.rs:35
Min signed per window4,320 blocks (30%)MIN_SIGNED_PER_WINDOW in liveness.rs:55
Slash on jail10 bp = 0.1% of self-stakeDOWNTIME_SLASH_BP in liveness.rs:67
Jail duration600 blocks (10 min @ 1s)DOWNTIME_JAIL_BLOCKS in liveness.rs:77

Validator must sign ≥30% of blocks in any rolling 4-hour window. If signed-blocks-in-window drops below 4,320, validator is jailed for 10 minutes + slashed 0.1% of self-stake. After jail expires, validator submits StakingOp::Unjail (or sentrix staking unjail via CLI — see Staking CLI) to rejoin the active set.

If a downtime slash brings self_stake below MIN_SELF_STAKE (15,000 SRX), the dispatcher's floor check rejects plain Unjail. Recovery requires StakingOp::AddSelfStake first (top up back above the floor), then Unjail. See Staking CLI for the procedure.

Real-world downtime tolerance:

  • Weekly 10-min deploy → 0.07% downtime (absorbed)
  • Emergency 30-min recovery → 12.5% downtime (absorbed)
  • Extended 2-hour debugging → 50% downtime (absorbed)
  • Full 3-hour outage in a 4-hour window → 75% downtime (jailed + slashed)

Safety (equivocation / malicious)

ValueCitation
Double-sign slash2,000 bp = 20% of self-stakeDOUBLE_SIGN_SLASH_BP in slashing/double_sign.rs:27
Post-slash stateTombstoned (permanent ban, no unjail path)is_tombstoned flag in staking.rs

Double-signing or tx manipulation triggers an immediate 20% slash plus tombstone (permanent kick from the active set, no recovery). 200× stricter than liveness, by design.

Delegators are not directly slashed but should redelegate away from jailed/tombstoned validators — their share of rewards stops the moment the validator leaves the active set.

Economics

Block reward: 1 SRX per block, halved every 126M blocks (~4 years at 1s blocks). Premine: 63,000,000 SRX. Hard cap: 315,000,000 SRX. Tokenomics v2 active since mainnet h=640,800 / 2026-04-26 (see SIP-3).

At the 21-active-validator target:

  • ~4,114 blocks/day per validator (86,400 ÷ 21)
  • ~4,114 SRX/day from rewards at Era 0 (pre-halving)
  • Plus tx fee revenue (validator-collected, post-EIP-1559 split per SIP-3)

51% attack cost: 11 validators × 15,000 SRX self-stake minimum = 165,000 SRX bond at risk, plus 20% slash on double-sign = 33,000 SRX burned per attacker validator. Total attacker capital exposure: 165K SRX bonded + 33K SRX slashed = 198K SRX minimum, assuming attacker can self-bond the minimum. In practice attackers need vastly more delegated stake to push past honest validators in the top-21 set.

Gas (EVM execution)

Voyager adds gas metering via revm 38:

Value
Gas price0.1 sentri/gas (post-EIP-1559: base fee + tip)
Block gas limit30,000,000
Standard transfer~21,000 gas = 0.000021 SRX
EIP-1559 base-fee burnPer SIP-1 — burned from coinbase, not paid to validator