Skip to main content

How Staking Works

Staking turns bonds and nominations into a validator set once per era. This page follows that cycle: the clock, who may stand, how the winners are chosen, and when they take over.


Sessions and eras​

UnitLengthWhat happens
Block6 sAura gives each slot to one active validator in turn
Session600 blocks, 1 hourThe validator set can change at a session boundary
Era24 sessions, 1 dayStaking elects a set and pays the era that closed

The app shows the current era, its countdown and progress next to every staking page title.


Who can be a validator​

A candidate is an account that called staking.validate. It counts in an election only if, at that moment, it is admitted:

ConditionHow it is met
Self-bond at or above the minimumstaking.bond (and bondExtra) from the validator account
Session keys registeredsession.setKeys with the keys and proof from its node
Not bannedA ban follows an equivocation, or a governance decision
On the allowlist, while admission is permissionedGovernance adds the account (validatorSet.addValidator)
Commission at or below the network ceilingOnly if governance has set staking.maxCommission

Admission has two modes, set by governance (validatorSet.mode):

  • Permissioned — only accounts on the allowlist (validatorSet.approvedValidators) can stand. This is the testnet's mode.
  • Open — any account can stand, but the minimum self-bond rises to 100,000 ORB whatever staking.minValidatorBond says. The chain refuses to open admission until the bond minimum is at least that high.

The chain checks these rules when validate is submitted — a call that cannot count is rejected before it costs a fee — and again at every election. An account removed from the allowlist or banned is chilled at once. At most 256 candidates can stand at a time.


The election​

Staking plans the next era about two sessions before the current one ends. The election runs on-chain, a few blocks per step and never more than 40 % of a block:

  1. Snapshot. The admitted candidates (at most 256), then the voters — nominators and pools — in pages ordered by stake. Only the 100,000 voters with the most stake are read; the rest keep their bond but neither vote nor earn that era.
  2. Solve. Sequential Phragmén picks staking.validatorCount winners and spreads each voter's stake over the winners it backs.
  3. Export. The winners and their exposures are handed to staking page by page.

No off-chain miner, deposit or node worker is involved: every node computes the same result as it imports the blocks.

When the set is too small

If the election seats fewer than two thirds of staking.validatorCount, the result is dropped and the current set keeps validating. A new election starts at the next session. Eras do not advance until one succeeds.


When the new set takes over​

The elected set is queued and takes over at the session that starts the next era. In practice:

  • a nomination or a new candidacy counts from the next election, about two hours before the end of the current era, and earns from the era that election starts;
  • a validator that stops (chill) keeps its seat until the era it was elected for ends.

Active validators​

  • staking.validatorCount sets how many seats each election fills; it can be raised up to 100.
  • The election ranks candidates by the total stake behind them — their own bond plus the nominations they receive.
  • An active validator authors blocks in its Aura slots and votes in GRANDPA.

Era points​

Each block a validator authors earns it 20 era points. Points are the only measure of performance: a validator that is offline earns none for the slots it misses, and the era's reward is split by points. There is no other penalty for downtime.