Staking pallet
Derived from live runtime metadata on TRN root (pallet index 9, captured 2026-05-02). For prose-style documentation see Staking on the curated reference side.
- Pallet index
9- Calls
- 26
- Events
- 15
- Errors
- 25
- Storage items
- 37
- Constants
- 7
Calls (extrinsics)
Staking.bond
See [
Pallet::bond].
api.tx.staking.bond(value: Compact<u128>, payee: {"_enum":{"Staked":"Null","Stash":"Null","Controller":"Null","Account":"SeedPrimitivesSignatureAccountId20","None":"Null"}})| Argument | Type | Doc |
|---|---|---|
value | Compact<u128> | BalanceOf<T> |
payee | {"_enum":{"Staked":"Null","Stash":"Null","Controller":"Null","Account":"SeedPrimitivesSignatureAccountId20","None":"Null"}} | RewardDestination<T::AccountId> |
Call index: 0
Staking.bond_extra
See [
Pallet::bond_extra].
api.tx.staking.bond_extra(max_additional: Compact<u128>)| Argument | Type | Doc |
|---|---|---|
max_additional | Compact<u128> | BalanceOf<T> |
Call index: 1
Staking.unbond
See [
Pallet::unbond].
api.tx.staking.unbond(value: Compact<u128>)| Argument | Type | Doc |
|---|---|---|
value | Compact<u128> | BalanceOf<T> |
Call index: 2
Staking.withdraw_unbonded
See [
Pallet::withdraw_unbonded].
api.tx.staking.withdraw_unbonded(num_slashing_spans: u32)| Argument | Type | Doc |
|---|---|---|
num_slashing_spans | u32 | u32 |
Call index: 3
Staking.validate
See [
Pallet::validate].
api.tx.staking.validate(prefs: {"commission":"Compact<Perbill>","blocked":"bool"})| Argument | Type | Doc |
|---|---|---|
prefs | {"commission":"Compact<Perbill>","blocked":"bool"} | ValidatorPrefs |
Call index: 4
Staking.nominate
See [
Pallet::nominate].
api.tx.staking.nominate(targets: Vec<SeedPrimitivesSignatureAccountId20>)| Argument | Type | Doc |
|---|---|---|
targets | Vec<SeedPrimitivesSignatureAccountId20> | Vec<AccountIdLookupOf<T>> |
Call index: 5
Staking.chill
See [
Pallet::chill].
api.tx.staking.chill()Call index: 6
Staking.set_payee
See [
Pallet::set_payee].
api.tx.staking.set_payee(payee: {"_enum":{"Staked":"Null","Stash":"Null","Controller":"Null","Account":"SeedPrimitivesSignatureAccountId20","None":"Null"}})| Argument | Type | Doc |
|---|---|---|
payee | {"_enum":{"Staked":"Null","Stash":"Null","Controller":"Null","Account":"SeedPrimitivesSignatureAccountId20","None":"Null"}} | RewardDestination<T::AccountId> |
Call index: 7
Staking.set_controller
See [
Pallet::set_controller].
api.tx.staking.set_controller()Call index: 8
Staking.set_validator_count
See [
Pallet::set_validator_count].
api.tx.staking.set_validator_count(new: Compact<u32>)| Argument | Type | Doc |
|---|---|---|
new | Compact<u32> | u32 |
Call index: 9
Staking.increase_validator_count
See [
Pallet::increase_validator_count].
api.tx.staking.increase_validator_count(additional: Compact<u32>)| Argument | Type | Doc |
|---|---|---|
additional | Compact<u32> | u32 |
Call index: 10
Staking.scale_validator_count
See [
Pallet::scale_validator_count].
api.tx.staking.scale_validator_count(factor: Percent)| Argument | Type | Doc |
|---|---|---|
factor | Percent | Percent |
Call index: 11
Staking.force_no_eras
See [
Pallet::force_no_eras].
api.tx.staking.force_no_eras()Call index: 12
Staking.force_new_era
See [
Pallet::force_new_era].
api.tx.staking.force_new_era()Call index: 13
Staking.set_invulnerables
See [
Pallet::set_invulnerables].
api.tx.staking.set_invulnerables(invulnerables: Vec<SeedPrimitivesSignatureAccountId20>)| Argument | Type | Doc |
|---|---|---|
invulnerables | Vec<SeedPrimitivesSignatureAccountId20> | Vec<T::AccountId> |
Call index: 14
Staking.force_unstake
See [
Pallet::force_unstake].
api.tx.staking.force_unstake(stash: [u8;20], num_slashing_spans: u32)| Argument | Type | Doc |
|---|---|---|
stash | [u8;20] | T::AccountId |
num_slashing_spans | u32 | u32 |
Call index: 15
Staking.force_new_era_always
See [
Pallet::force_new_era_always].
api.tx.staking.force_new_era_always()Call index: 16
Staking.cancel_deferred_slash
See [
Pallet::cancel_deferred_slash].
api.tx.staking.cancel_deferred_slash(era: u32, slash_indices: Vec<u32>)| Argument | Type | Doc |
|---|---|---|
era | u32 | EraIndex |
slash_indices | Vec<u32> | Vec<u32> |
Call index: 17
Staking.payout_stakers
See [
Pallet::payout_stakers].
api.tx.staking.payout_stakers(validator_stash: [u8;20], era: u32)| Argument | Type | Doc |
|---|---|---|
validator_stash | [u8;20] | T::AccountId |
era | u32 | EraIndex |
Call index: 18
Staking.rebond
See [
Pallet::rebond].
api.tx.staking.rebond(value: Compact<u128>)| Argument | Type | Doc |
|---|---|---|
value | Compact<u128> | BalanceOf<T> |
Call index: 19
Staking.reap_stash
See [
Pallet::reap_stash].
api.tx.staking.reap_stash(stash: [u8;20], num_slashing_spans: u32)| Argument | Type | Doc |
|---|---|---|
stash | [u8;20] | T::AccountId |
num_slashing_spans | u32 | u32 |
Call index: 20
Staking.kick
See [
Pallet::kick].
api.tx.staking.kick(who: Vec<SeedPrimitivesSignatureAccountId20>)| Argument | Type | Doc |
|---|---|---|
who | Vec<SeedPrimitivesSignatureAccountId20> | Vec<AccountIdLookupOf<T>> |
Call index: 21
Staking.set_staking_configs
See [
Pallet::set_staking_configs].
api.tx.staking.set_staking_configs(min_nominator_bond: {"_enum":{"Noop":"Null","Set":"u128","Remove":"Null"}}, min_validator_bond: {"_enum":{"Noop":"Null","Set":"u128","Remove":"Null"}}, max_nominator_count: {"_enum":{"Noop":"Null","Set":"u32","Remove":"Null"}}, max_validator_count: {"_enum":{"Noop":"Null","Set":"u32","Remove":"Null"}}, chill_threshold: {"_enum":{"Noop":"Null","Set":"Percent","Remove":"Null"}}, min_commission: {"_enum":{"Noop":"Null","Set":"Perbill","Remove":"Null"}})| Argument | Type | Doc |
|---|---|---|
min_nominator_bond | {"_enum":{"Noop":"Null","Set":"u128","Remove":"Null"}} | ConfigOp<BalanceOf<T>> |
min_validator_bond | {"_enum":{"Noop":"Null","Set":"u128","Remove":"Null"}} | ConfigOp<BalanceOf<T>> |
max_nominator_count | {"_enum":{"Noop":"Null","Set":"u32","Remove":"Null"}} | ConfigOp<u32> |
max_validator_count | {"_enum":{"Noop":"Null","Set":"u32","Remove":"Null"}} | ConfigOp<u32> |
chill_threshold | {"_enum":{"Noop":"Null","Set":"Percent","Remove":"Null"}} | ConfigOp<Percent> |
min_commission | {"_enum":{"Noop":"Null","Set":"Perbill","Remove":"Null"}} | ConfigOp<Perbill> |
Call index: 22
Staking.chill_other
See [
Pallet::chill_other].
api.tx.staking.chill_other(controller: [u8;20])| Argument | Type | Doc |
|---|---|---|
controller | [u8;20] | T::AccountId |
Call index: 23
Staking.force_apply_min_commission
See [
Pallet::force_apply_min_commission].
api.tx.staking.force_apply_min_commission(validator_stash: [u8;20])| Argument | Type | Doc |
|---|---|---|
validator_stash | [u8;20] | T::AccountId |
Call index: 24
Staking.set_min_commission
See [
Pallet::set_min_commission].
api.tx.staking.set_min_commission(new: Perbill)| Argument | Type | Doc |
|---|---|---|
new | Perbill | Perbill |
Call index: 25
Events
Staking.EraPaid
The era payout has been set; the first balance is the validator-payout; the second is the remainder from the maximum amount of reward.
| Field | Type | Doc |
|---|---|---|
era_index | u32 | |
validator_payout | u128 | |
remainder | u128 |
Staking.Rewarded
The nominator has been rewarded by this amount.
| Field | Type | Doc |
|---|---|---|
stash | [u8;20] | |
amount | u128 |
Staking.Slashed
A staker (validator or nominator) has been slashed by the given amount.
| Field | Type | Doc |
|---|---|---|
staker | [u8;20] | |
amount | u128 |
Staking.SlashReported
A slash for the given validator, for the given percentage of their stake, at the given era as been reported.
| Field | Type | Doc |
|---|---|---|
validator | [u8;20] | |
fraction | Perbill | |
slash_era | u32 |
Staking.OldSlashingReportDiscarded
An old slashing report from a prior era was discarded because it could not be processed.
| Field | Type | Doc |
|---|---|---|
session_index | u32 |
Staking.StakersElected
A new set of stakers was elected.
No payload.
Staking.Bonded
An account has bonded this amount. [stash, amount] NOTE: This event is only emitted when funds are bonded via a dispatchable. Notably, it will not be emitted for staking rewards when they are added to stake.
| Field | Type | Doc |
|---|---|---|
stash | [u8;20] | |
amount | u128 |
Staking.Unbonded
An account has unbonded this amount.
| Field | Type | Doc |
|---|---|---|
stash | [u8;20] | |
amount | u128 |
Staking.Withdrawn
An account has called
withdraw_unbondedand removed unbonding chunks worthBalancefrom the unlocking queue.
| Field | Type | Doc |
|---|---|---|
stash | [u8;20] | |
amount | u128 |
Staking.Kicked
A nominator has been kicked from a validator.
| Field | Type | Doc |
|---|---|---|
nominator | [u8;20] | |
stash | [u8;20] |
Staking.StakingElectionFailed
The election failed. No new era is planned.
No payload.
Staking.Chilled
An account has stopped participating as either a validator or nominator.
| Field | Type | Doc |
|---|---|---|
stash | [u8;20] |
Staking.PayoutStarted
The stakers' rewards are getting paid.
| Field | Type | Doc |
|---|---|---|
era_index | u32 | |
validator_stash | [u8;20] |
Staking.ValidatorPrefsSet
A validator has set their preferences.
| Field | Type | Doc |
|---|---|---|
stash | [u8;20] | |
prefs | {"commission":"Compact<Perbill>","blocked":"bool"} |
Staking.ForceEra
A new force era mode was set.
| Field | Type | Doc |
|---|---|---|
mode | {"_enum":["NotForcing","ForceNew","ForceNone","ForceAlways"]} |
Errors
Staking.NotController
Not a controller account.
Staking.NotStash
Not a stash account.
Staking.AlreadyBonded
Stash is already bonded.
Staking.AlreadyPaired
Controller is already paired.
Staking.EmptyTargets
Targets cannot be empty.
Staking.DuplicateIndex
Duplicate index.
Staking.InvalidSlashIndex
Slash record index out of bounds.
Staking.InsufficientBond
Cannot have a validator or nominator role, with value less than the minimum defined by governance (see
MinValidatorBondandMinNominatorBond). If unbonding is the intention,chillfirst to remove one's role as validator/nominator.
Staking.NoMoreChunks
Can not schedule more unlock chunks.
Staking.NoUnlockChunk
Can not rebond without unlocking chunks.
Staking.FundedTarget
Attempting to target a stash that still has funds.
Staking.InvalidEraToReward
Invalid era to reward.
Staking.InvalidNumberOfNominations
Invalid number of nominations.
Staking.NotSortedAndUnique
Items are not sorted and unique.
Staking.AlreadyClaimed
Rewards for this era have already been claimed for this validator.
Staking.IncorrectHistoryDepth
Incorrect previous history depth input provided.
Staking.IncorrectSlashingSpans
Incorrect number of slashing spans provided.
Staking.BadState
Internal state has become somehow corrupted and the operation cannot continue.
Staking.TooManyTargets
Too many nomination targets supplied.
Staking.BadTarget
A nomination target was supplied that was blocked or otherwise not a validator.
Staking.CannotChillOther
The user has enough bond and thus cannot be chilled forcefully by an external person.
Staking.TooManyNominators
There are too many nominators in the system. Governance needs to adjust the staking settings to keep things safe for the runtime.
Staking.TooManyValidators
There are too many validator candidates in the system. Governance needs to adjust the staking settings to keep things safe for the runtime.
Staking.CommissionTooLow
Commission is too low. Must be at least
MinCommission.
Staking.BoundNotMet
Some bound is not met.
Storage
Staking.ValidatorCount
The ideal number of active validators.
await api.query.staking.validatorCount()Returns: u32
Modifier: Default
Staking.MinimumValidatorCount
Minimum number of staking participants before emergency conditions are imposed.
await api.query.staking.minimumValidatorCount()Returns: u32
Modifier: Default
Staking.Invulnerables
Any validators that may never be slashed or forcibly kicked. It's a Vec since they're easy to initialize and the performance hit is minimal (we expect no more than four invulnerables) and restricted to testnets.
await api.query.staking.invulnerables()Returns: Vec<SeedPrimitivesSignatureAccountId20>
Modifier: Default
Staking.Bonded
Map from all locked "stash" accounts to the controller account. TWOX-NOTE: SAFE since
AccountIdis a secure hash.
await api.query.staking.bonded(key1)- Key:
[u8;20](hasher: Twox64Concat) - Returns:
[u8;20]
Modifier: Optional
Staking.MinNominatorBond
The minimum active bond to become and maintain the role of a nominator.
await api.query.staking.minNominatorBond()Returns: u128
Modifier: Default
Staking.MinValidatorBond
The minimum active bond to become and maintain the role of a validator.
await api.query.staking.minValidatorBond()Returns: u128
Modifier: Default
Staking.MinimumActiveStake
The minimum active nominator stake of the last successful election.
await api.query.staking.minimumActiveStake()Returns: u128
Modifier: Default
Staking.MinCommission
The minimum amount of commission that validators can set. If set to
0, no limit exists.
await api.query.staking.minCommission()Returns: Perbill
Modifier: Default
Staking.Ledger
Map from all (unlocked) "controller" accounts to the info regarding the staking.
await api.query.staking.ledger(key1)- Key:
[u8;20](hasher: Blake2_128Concat) - Returns:
{"stash":"SeedPrimitivesSignatureAccountId20","total":"Compact<u128>","active":"Compact<u128>","unlocking":"Vec<PalletStakingUnlockChunk>","claimedRewards":"Vec<u32>"}
Modifier: Optional
Staking.Payee
Where the reward payment should be made. Keyed by stash. TWOX-NOTE: SAFE since
AccountIdis a secure hash.
await api.query.staking.payee(key1)- Key:
[u8;20](hasher: Twox64Concat) - Returns:
{"_enum":{"Staked":"Null","Stash":"Null","Controller":"Null","Account":"SeedPrimitivesSignatureAccountId20","None":"Null"}}
Modifier: Default
Staking.Validators
The map from (wannabe) validator stash key to the preferences of that validator. TWOX-NOTE: SAFE since
AccountIdis a secure hash.
await api.query.staking.validators(key1)- Key:
[u8;20](hasher: Twox64Concat) - Returns:
{"commission":"Compact<Perbill>","blocked":"bool"}
Modifier: Default
Staking.CounterForValidators
Counter for the related counted storage map
await api.query.staking.counterForValidators()Returns: u32
Modifier: Default
Staking.MaxValidatorsCount
The maximum validator count before we stop allowing new validators to join. When this value is not set, no limits are enforced.
await api.query.staking.maxValidatorsCount()Returns: u32
Modifier: Optional
Staking.Nominators
The map from nominator stash key to their nomination preferences, namely the validators that they wish to support. Note that the keys of this storage map might become non-decodable in case the [
Config::MaxNominations] configuration is decreased. In this rare case, these nominators are still existent in storage, their key is correct and retrievable (i.e.contains_keyindicates that they exist), but their value cannot be decoded. Therefore, the non-decodable nominators will effectively not-exist, until they re-submit their preferences such that it is within the bounds of the newly setConfig::MaxNominations. This implies that::iter_keys().count()and::iter().count()might return different values for this map. Moreover, the main::count()is aligned with the former, namely the number of keys that exist. Lastly, if any of the nominators become non-decodable, they can be chilled immediately via [Call::chill_other] dispatchable by anyone. TWOX-NOTE: SAFE sinceAccountIdis a secure hash.
await api.query.staking.nominators(key1)- Key:
[u8;20](hasher: Twox64Concat) - Returns:
{"targets":"Vec<SeedPrimitivesSignatureAccountId20>","submittedIn":"u32","suppressed":"bool"}
Modifier: Optional
Staking.CounterForNominators
Counter for the related counted storage map
await api.query.staking.counterForNominators()Returns: u32
Modifier: Default
Staking.MaxNominatorsCount
The maximum nominator count before we stop allowing new validators to join. When this value is not set, no limits are enforced.
await api.query.staking.maxNominatorsCount()Returns: u32
Modifier: Optional
Staking.CurrentEra
The current era index. This is the latest planned era, depending on how the Session pallet queues the validator set, it might be active or not.
await api.query.staking.currentEra()Returns: u32
Modifier: Optional
Staking.ActiveEra
The active era information, it holds index and start. The active era is the era being currently rewarded. Validator set of this era must be equal to [
SessionInterface::validators].
await api.query.staking.activeEra()Returns: {"index":"u32","start":"Option<u64>"}
Modifier: Optional
Staking.ErasStartSessionIndex
The session index at which the era start for the last
HISTORY_DEPTHeras. Note: This tracks the starting session (i.e. session index when era start being active) for the eras in[CurrentEra - HISTORY_DEPTH, CurrentEra].
await api.query.staking.erasStartSessionIndex(key1)- Key:
u32(hasher: Twox64Concat) - Returns:
u32
Modifier: Optional
Staking.ErasStakers
Exposure of validator at era. This is keyed first by the era index to allow bulk deletion and then the stash account. Is it removed after
HISTORY_DEPTHeras. If stakers hasn't been set or has been removed then empty exposure is returned.
await api.query.staking.erasStakers(key1, key2)- Key:
(u32,SeedPrimitivesSignatureAccountId20)(hashers: Twox64Concat, Twox64Concat) - Returns:
{"total":"Compact<u128>","own":"Compact<u128>","others":"Vec<PalletStakingIndividualExposure>"}
Modifier: Default
Staking.ErasStakersClipped
Clipped Exposure of validator at era. This is similar to [
ErasStakers] but number of nominators exposed is reduced to theT::MaxNominatorRewardedPerValidatorbiggest stakers. (Note: the fieldtotalandownof the exposure remains unchanged). This is used to limit the i/o cost for the nominator payout. This is keyed fist by the era index to allow bulk deletion and then the stash account. Is it removed afterHISTORY_DEPTHeras. If stakers hasn't been set or has been removed then empty exposure is returned.
await api.query.staking.erasStakersClipped(key1, key2)- Key:
(u32,SeedPrimitivesSignatureAccountId20)(hashers: Twox64Concat, Twox64Concat) - Returns:
{"total":"Compact<u128>","own":"Compact<u128>","others":"Vec<PalletStakingIndividualExposure>"}
Modifier: Default
Staking.ErasValidatorPrefs
Similar to
ErasStakers, this holds the preferences of validators. This is keyed first by the era index to allow bulk deletion and then the stash account. Is it removed afterHISTORY_DEPTHeras.
await api.query.staking.erasValidatorPrefs(key1, key2)- Key:
(u32,SeedPrimitivesSignatureAccountId20)(hashers: Twox64Concat, Twox64Concat) - Returns:
{"commission":"Compact<Perbill>","blocked":"bool"}
Modifier: Default
Staking.ErasValidatorReward
The total validator era payout for the last
HISTORY_DEPTHeras. Eras that haven't finished yet or has been removed doesn't have reward.
await api.query.staking.erasValidatorReward(key1)- Key:
u32(hasher: Twox64Concat) - Returns:
u128
Modifier: Optional
Staking.ErasRewardPoints
Rewards for the last
HISTORY_DEPTHeras. If reward hasn't been set or has been removed then 0 reward is returned.
await api.query.staking.erasRewardPoints(key1)- Key:
u32(hasher: Twox64Concat) - Returns:
{"total":"u32","individual":"BTreeMap<SeedPrimitivesSignatureAccountId20, u32>"}
Modifier: Default
Staking.ErasTotalStake
The total amount staked for the last
HISTORY_DEPTHeras. If total hasn't been set or has been removed then 0 stake is returned.
await api.query.staking.erasTotalStake(key1)- Key:
u32(hasher: Twox64Concat) - Returns:
u128
Modifier: Default
Staking.ForceEra
Mode of era forcing.
await api.query.staking.forceEra()Returns: {"_enum":["NotForcing","ForceNew","ForceNone","ForceAlways"]}
Modifier: Default
Staking.SlashRewardFraction
The percentage of the slash that is distributed to reporters. The rest of the slashed value is handled by the
Slash.
await api.query.staking.slashRewardFraction()Returns: Perbill
Modifier: Default
Staking.CanceledSlashPayout
The amount of currency given to reporters of a slash event which was canceled by extraordinary circumstances (e.g. governance).
await api.query.staking.canceledSlashPayout()Returns: u128
Modifier: Default
Staking.UnappliedSlashes
All unapplied slashes that are queued for later.
await api.query.staking.unappliedSlashes(key1)- Key:
u32(hasher: Twox64Concat) - Returns:
Vec<PalletStakingUnappliedSlash>
Modifier: Default
Staking.BondedEras
A mapping from still-bonded eras to the first session index of that era. Must contains information for eras for the range:
[active_era - bounding_duration; active_era]
await api.query.staking.bondedEras()Returns: Vec<(u32,u32)>
Modifier: Default
Staking.ValidatorSlashInEra
All slashing events on validators, mapped by era to the highest slash proportion and slash value of the era.
await api.query.staking.validatorSlashInEra(key1, key2)- Key:
(u32,SeedPrimitivesSignatureAccountId20)(hashers: Twox64Concat, Twox64Concat) - Returns:
(Perbill,u128)
Modifier: Optional
Staking.NominatorSlashInEra
All slashing events on nominators, mapped by era to the highest slash value of the era.
await api.query.staking.nominatorSlashInEra(key1, key2)- Key:
(u32,SeedPrimitivesSignatureAccountId20)(hashers: Twox64Concat, Twox64Concat) - Returns:
u128
Modifier: Optional
Staking.SlashingSpans
Slashing spans for stash accounts.
await api.query.staking.slashingSpans(key1)- Key:
[u8;20](hasher: Twox64Concat) - Returns:
{"spanIndex":"u32","lastStart":"u32","lastNonzeroSlash":"u32","prior":"Vec<u32>"}
Modifier: Optional
Staking.SpanSlash
Records information about the maximum slash of a stash within a slashing span, as well as how much reward has been paid out.
await api.query.staking.spanSlash(key1)- Key:
(SeedPrimitivesSignatureAccountId20,u32)(hasher: Twox64Concat) - Returns:
{"slashed":"u128","paidOut":"u128"}
Modifier: Default
Staking.CurrentPlannedSession
The last planned session scheduled by the session pallet. This is basically in sync with the call to [
pallet_session::SessionManager::new_session].
await api.query.staking.currentPlannedSession()Returns: u32
Modifier: Default
Staking.OffendingValidators
Indices of validators that have offended in the active era and whether they are currently disabled. This value should be a superset of disabled validators since not all offences lead to the validator being disabled (if there was no slash). This is needed to track the percentage of validators that have offended in the current era, ensuring a new era is forced if
OffendingValidatorsThresholdis reached. The vec is always kept sorted so that we can find whether a given validator has previously offended using binary search. It gets cleared when the era ends.
await api.query.staking.offendingValidators()Returns: Vec<(u32,bool)>
Modifier: Default
Staking.ChillThreshold
The threshold for when users can start calling
chill_otherfor other validators / nominators. The threshold is compared to the actual number of validators / nominators (CountFor*) in the system compared to the configured max (Max*Count).
await api.query.staking.chillThreshold()Returns: Percent
Modifier: Optional
Constants
Staking.MaxNominations
Maximum number of nominations per nominator.
Type: u32
SCALE-encoded value: 0x10000000
Staking.HistoryDepth
Number of eras to keep in history. Following information is kept for eras in
[current_era - HistoryDepth, current_era]:ErasStakers,ErasStakersClipped,ErasValidatorPrefs,ErasValidatorReward,ErasRewardPoints,ErasTotalStake,ErasStartSessionIndex,StakingLedger.claimed_rewards. Must be more than the number of eras delayed by session. I.e. active era must always be in history. I.e.active_era > current_era - history_depthmust be guaranteed. If migrating an existing pallet from storage value to config value, this should be set to same value or greater as in storage. Note:HistoryDepthis used as the upper bound for theBoundedVecitemStakingLedger.claimed_rewards. Setting this value lower than the existing value can lead to inconsistencies in theStakingLedgerand will need to be handled properly in a migration. The testreducing_history_depth_abruptshows this effect.
Type: u32
SCALE-encoded value: 0x54000000
Staking.SessionsPerEra
Number of sessions per era.
Type: u32
SCALE-encoded value: 0x06000000
Staking.BondingDuration
Number of eras that staked funds must remain bonded for.
Type: u32
SCALE-encoded value: 0x1c000000
Staking.SlashDeferDuration
Number of eras that slashes are deferred by, after computation. This should be less than the bonding duration. Set to 0 if slashes should be applied immediately, without opportunity for intervention.
Type: u32
SCALE-encoded value: 0x1b000000
Staking.MaxNominatorRewardedPerValidator
The maximum number of nominators rewarded for each validator. For each validator only the
$MaxNominatorRewardedPerValidatorbiggest stakers can claim their reward. This used to limit the i/o cost for the nominator payout.
Type: u32
SCALE-encoded value: 0x00010000
Staking.MaxUnlockingChunks
The maximum number of
unlockingchunks a [StakingLedger] can have. Effectively determines how many unique eras a staker may be unbonding in. Note:MaxUnlockingChunksis used as the upper bound for theBoundedVecitemStakingLedger.unlocking. Setting this value lower than the existing value can lead to inconsistencies in theStakingLedgerand will need to be handled properly in a runtime migration. The testreducing_max_unlocking_chunks_abruptshows this effect.
Type: u32
SCALE-encoded value: 0x20000000
wss://root.rootnet.live/archive/ws · captured 2026-05-02