Skip to content

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].

ts
api.tx.staking.bond(value: Compact<u128>, payee: {"_enum":{"Staked":"Null","Stash":"Null","Controller":"Null","Account":"SeedPrimitivesSignatureAccountId20","None":"Null"}})
ArgumentTypeDoc
valueCompact&lt;u128&gt;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].

ts
api.tx.staking.bond_extra(max_additional: Compact<u128>)
ArgumentTypeDoc
max_additionalCompact&lt;u128&gt;BalanceOf<T>

Call index: 1

Staking.unbond

See [Pallet::unbond].

ts
api.tx.staking.unbond(value: Compact<u128>)
ArgumentTypeDoc
valueCompact&lt;u128&gt;BalanceOf<T>

Call index: 2

Staking.withdraw_unbonded

See [Pallet::withdraw_unbonded].

ts
api.tx.staking.withdraw_unbonded(num_slashing_spans: u32)
ArgumentTypeDoc
num_slashing_spansu32u32

Call index: 3

Staking.validate

See [Pallet::validate].

ts
api.tx.staking.validate(prefs: {"commission":"Compact<Perbill>","blocked":"bool"})
ArgumentTypeDoc
prefs{"commission":"Compact&lt;Perbill&gt;","blocked":"bool"}ValidatorPrefs

Call index: 4

Staking.nominate

See [Pallet::nominate].

ts
api.tx.staking.nominate(targets: Vec<SeedPrimitivesSignatureAccountId20>)
ArgumentTypeDoc
targetsVec&lt;SeedPrimitivesSignatureAccountId20&gt;Vec<AccountIdLookupOf<T>>

Call index: 5

Staking.chill

See [Pallet::chill].

ts
api.tx.staking.chill()

Call index: 6

Staking.set_payee

See [Pallet::set_payee].

ts
api.tx.staking.set_payee(payee: {"_enum":{"Staked":"Null","Stash":"Null","Controller":"Null","Account":"SeedPrimitivesSignatureAccountId20","None":"Null"}})
ArgumentTypeDoc
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].

ts
api.tx.staking.set_controller()

Call index: 8

Staking.set_validator_count

See [Pallet::set_validator_count].

ts
api.tx.staking.set_validator_count(new: Compact<u32>)
ArgumentTypeDoc
newCompact&lt;u32&gt;u32

Call index: 9

Staking.increase_validator_count

See [Pallet::increase_validator_count].

ts
api.tx.staking.increase_validator_count(additional: Compact<u32>)
ArgumentTypeDoc
additionalCompact&lt;u32&gt;u32

Call index: 10

Staking.scale_validator_count

See [Pallet::scale_validator_count].

ts
api.tx.staking.scale_validator_count(factor: Percent)
ArgumentTypeDoc
factorPercentPercent

Call index: 11

Staking.force_no_eras

See [Pallet::force_no_eras].

ts
api.tx.staking.force_no_eras()

Call index: 12

Staking.force_new_era

See [Pallet::force_new_era].

ts
api.tx.staking.force_new_era()

Call index: 13

Staking.set_invulnerables

See [Pallet::set_invulnerables].

ts
api.tx.staking.set_invulnerables(invulnerables: Vec<SeedPrimitivesSignatureAccountId20>)
ArgumentTypeDoc
invulnerablesVec&lt;SeedPrimitivesSignatureAccountId20&gt;Vec<T::AccountId>

Call index: 14

Staking.force_unstake

See [Pallet::force_unstake].

ts
api.tx.staking.force_unstake(stash: [u8;20], num_slashing_spans: u32)
ArgumentTypeDoc
stash[u8;20]T::AccountId
num_slashing_spansu32u32

Call index: 15

Staking.force_new_era_always

See [Pallet::force_new_era_always].

ts
api.tx.staking.force_new_era_always()

Call index: 16

Staking.cancel_deferred_slash

See [Pallet::cancel_deferred_slash].

ts
api.tx.staking.cancel_deferred_slash(era: u32, slash_indices: Vec<u32>)
ArgumentTypeDoc
erau32EraIndex
slash_indicesVec&lt;u32&gt;Vec<u32>

Call index: 17

Staking.payout_stakers

See [Pallet::payout_stakers].

ts
api.tx.staking.payout_stakers(validator_stash: [u8;20], era: u32)
ArgumentTypeDoc
validator_stash[u8;20]T::AccountId
erau32EraIndex

Call index: 18

Staking.rebond

See [Pallet::rebond].

ts
api.tx.staking.rebond(value: Compact<u128>)
ArgumentTypeDoc
valueCompact&lt;u128&gt;BalanceOf<T>

Call index: 19

Staking.reap_stash

See [Pallet::reap_stash].

ts
api.tx.staking.reap_stash(stash: [u8;20], num_slashing_spans: u32)
ArgumentTypeDoc
stash[u8;20]T::AccountId
num_slashing_spansu32u32

Call index: 20

Staking.kick

See [Pallet::kick].

ts
api.tx.staking.kick(who: Vec<SeedPrimitivesSignatureAccountId20>)
ArgumentTypeDoc
whoVec&lt;SeedPrimitivesSignatureAccountId20&gt;Vec<AccountIdLookupOf<T>>

Call index: 21

Staking.set_staking_configs

See [Pallet::set_staking_configs].

ts
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"}})
ArgumentTypeDoc
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].

ts
api.tx.staking.chill_other(controller: [u8;20])
ArgumentTypeDoc
controller[u8;20]T::AccountId

Call index: 23

Staking.force_apply_min_commission

See [Pallet::force_apply_min_commission].

ts
api.tx.staking.force_apply_min_commission(validator_stash: [u8;20])
ArgumentTypeDoc
validator_stash[u8;20]T::AccountId

Call index: 24

Staking.set_min_commission

See [Pallet::set_min_commission].

ts
api.tx.staking.set_min_commission(new: Perbill)
ArgumentTypeDoc
newPerbillPerbill

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.

FieldTypeDoc
era_indexu32
validator_payoutu128
remainderu128

Staking.Rewarded

The nominator has been rewarded by this amount.

FieldTypeDoc
stash[u8;20]
amountu128

Staking.Slashed

A staker (validator or nominator) has been slashed by the given amount.

FieldTypeDoc
staker[u8;20]
amountu128

Staking.SlashReported

A slash for the given validator, for the given percentage of their stake, at the given era as been reported.

FieldTypeDoc
validator[u8;20]
fractionPerbill
slash_erau32

Staking.OldSlashingReportDiscarded

An old slashing report from a prior era was discarded because it could not be processed.

FieldTypeDoc
session_indexu32

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.

FieldTypeDoc
stash[u8;20]
amountu128

Staking.Unbonded

An account has unbonded this amount.

FieldTypeDoc
stash[u8;20]
amountu128

Staking.Withdrawn

An account has called withdraw_unbonded and removed unbonding chunks worth Balance from the unlocking queue.

FieldTypeDoc
stash[u8;20]
amountu128

Staking.Kicked

A nominator has been kicked from a validator.

FieldTypeDoc
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.

FieldTypeDoc
stash[u8;20]

Staking.PayoutStarted

The stakers' rewards are getting paid.

FieldTypeDoc
era_indexu32
validator_stash[u8;20]

Staking.ValidatorPrefsSet

A validator has set their preferences.

FieldTypeDoc
stash[u8;20]
prefs{"commission":"Compact&lt;Perbill&gt;","blocked":"bool"}

Staking.ForceEra

A new force era mode was set.

FieldTypeDoc
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 MinValidatorBond and MinNominatorBond). If unbonding is the intention, chill first 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.

ts
await api.query.staking.validatorCount()

Returns: u32

Modifier: Default

Staking.MinimumValidatorCount

Minimum number of staking participants before emergency conditions are imposed.

ts
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.

ts
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 AccountId is a secure hash.

ts
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.

ts
await api.query.staking.minNominatorBond()

Returns: u128

Modifier: Default

Staking.MinValidatorBond

The minimum active bond to become and maintain the role of a validator.

ts
await api.query.staking.minValidatorBond()

Returns: u128

Modifier: Default

Staking.MinimumActiveStake

The minimum active nominator stake of the last successful election.

ts
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.

ts
await api.query.staking.minCommission()

Returns: Perbill

Modifier: Default

Staking.Ledger

Map from all (unlocked) "controller" accounts to the info regarding the staking.

ts
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 AccountId is a secure hash.

ts
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 AccountId is a secure hash.

ts
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

ts
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.

ts
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_key indicates 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 set Config::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 since AccountId is a secure hash.

ts
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

ts
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.

ts
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.

ts
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].

ts
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_DEPTH eras. Note: This tracks the starting session (i.e. session index when era start being active) for the eras in [CurrentEra - HISTORY_DEPTH, CurrentEra].

ts
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_DEPTH eras. If stakers hasn't been set or has been removed then empty exposure is returned.

ts
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 the T::MaxNominatorRewardedPerValidator biggest stakers. (Note: the field total and own of 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 after HISTORY_DEPTH eras. If stakers hasn't been set or has been removed then empty exposure is returned.

ts
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 after HISTORY_DEPTH eras.

ts
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_DEPTH eras. Eras that haven't finished yet or has been removed doesn't have reward.

ts
await api.query.staking.erasValidatorReward(key1)
  • Key: u32 (hasher: Twox64Concat)
  • Returns: u128

Modifier: Optional

Staking.ErasRewardPoints

Rewards for the last HISTORY_DEPTH eras. If reward hasn't been set or has been removed then 0 reward is returned.

ts
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_DEPTH eras. If total hasn't been set or has been removed then 0 stake is returned.

ts
await api.query.staking.erasTotalStake(key1)
  • Key: u32 (hasher: Twox64Concat)
  • Returns: u128

Modifier: Default

Staking.ForceEra

Mode of era forcing.

ts
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.

ts
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).

ts
await api.query.staking.canceledSlashPayout()

Returns: u128

Modifier: Default

Staking.UnappliedSlashes

All unapplied slashes that are queued for later.

ts
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]

ts
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.

ts
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.

ts
await api.query.staking.nominatorSlashInEra(key1, key2)
  • Key: (u32,SeedPrimitivesSignatureAccountId20) (hashers: Twox64Concat, Twox64Concat)
  • Returns: u128

Modifier: Optional

Staking.SlashingSpans

Slashing spans for stash accounts.

ts
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.

ts
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].

ts
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 OffendingValidatorsThreshold is 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.

ts
await api.query.staking.offendingValidators()

Returns: Vec<(u32,bool)>

Modifier: Default

Staking.ChillThreshold

The threshold for when users can start calling chill_other for 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).

ts
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 &gt; current_era - history_depth must 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: HistoryDepth is used as the upper bound for the BoundedVec item StakingLedger.claimed_rewards. Setting this value lower than the existing value can lead to inconsistencies in the StakingLedger and will need to be handled properly in a migration. The test reducing_history_depth_abrupt shows 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 $MaxNominatorRewardedPerValidator biggest 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 unlocking chunks a [StakingLedger] can have. Effectively determines how many unique eras a staker may be unbonding in. Note: MaxUnlockingChunks is used as the upper bound for the BoundedVec item StakingLedger.unlocking. Setting this value lower than the existing value can lead to inconsistencies in the StakingLedger and will need to be handled properly in a runtime migration. The test reducing_max_unlocking_chunks_abrupt shows this effect.

Type: u32
SCALE-encoded value: 0x20000000

Source: live chain metadata from wss://root.rootnet.live/archive/ws · captured 2026-05-02

Curated independently by Codeology. Source-attributed reference for The Root Network. Not affiliated with Futureverse / TRN Labs.