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
| Unit | Length | What happens |
|---|---|---|
| Block | 6 s | Aura gives each slot to one active validator in turn |
| Session | 600 blocks, 1 hour | The validator set can change at a session boundary |
| Era | 24 sessions, 1 day | Staking 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:
| Condition | How it is met |
|---|---|
| Self-bond at or above the minimum | staking.bond (and bondExtra) from the validator account |
| Session keys registered | session.setKeys with the keys and proof from its node |
| Not banned | A ban follows an equivocation, or a governance decision |
| On the allowlist, while admission is permissioned | Governance adds the account (validatorSet.addValidator) |
| Commission at or below the network ceiling | Only 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.minValidatorBondsays. 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:
- 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.
- Solve. Sequential Phragmén picks
staking.validatorCountwinners and spreads each voter's stake over the winners it backs. - 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.
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.validatorCountsets 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.
Related
- Rewards — what an era pays and to whom
- Slashing — the offence that costs stake
- Become a validator — standing as a candidate
- Nominate — backing candidates
- Consensus — Aura and GRANDPA