value
of its balance. controller
will be the account that controls it.
value
must be more than the minimum_balance
specified by T::Currency
.
The dispatch origin for this call must be Signed by the stash account.
Emits Bonded
.
Namespace
free_balance
into the balance up for staking.
The dispatch origin for this call must be Signed by the stash, not the controller.
Use this if there are additional funds in your stash account that you wish to bond. Unlike bond
or unbond
this function does not impose any limitation on the amount that can be added.
Emits Bonded
.
Namespace
T::SlashCancelOrigin
.
Parameters: era and indices of the slashes for that era to kill.
Namespace
controller
to stop participating as either a validator or nominator.
Effects will be felt at the beginning of the next era.
The dispatch origin for this call must be Signed, but can be called by anyone.
If the caller is the same as the controller being targeted, then no further checks are enforced, and this function behaves just like chill
.
If the caller is different than the controller being targeted, the following conditions must be met:
controller
must belong to a nominator who has become non-decodable,ChillThreshold
must be set and checked which defines how close to the max nominators or validators we must reach before users can start chilling one-another.
MaxNominatorCount
and MaxValidatorCount
must be set which is used to determine how close we are to the threshold.
MinNominatorBond
and MinValidatorBond
must be set and checked, which determines if this is a person that should be chilled because they have not met the threshold bond required.
who
: A list of nominator stash accounts who are nominating this validator which should no longer be nominating this validator.targets
for the origin controller.
Effects will be felt at the beginning of the next era.
The dispatch origin for this call must be Signed by the controller, not the stash.
Namespace
validator_stash
is the stash account of the validator. Their nominators, up to T::MaxNominatorRewardedPerValidator
, will also receive their rewards.
era
may be any era between [current_era - history_depth; current_era]
.
dust
in the staking system. The requirements are:
total_balance
of the stash is below existential deposit. 2. or, the ledger.total
of the stash is below existential deposit.RewardDestination::Staked
.
It can be called by anyone, as long as stash
meets the above requirements.
Refunds the transaction fees upon successful execution.
Namespace
min_nominator_bond
: The minimum active bond needed to be a nominator.
min_validator_bond
: The minimum active bond needed to be a validator.
max_nominator_count
: The max number of users who can be a nominator at once. When set to None
, no limit is enforced.
max_validator_count
: The max number of users who can be a validator at once. When set to None
, no limit is enforced.
chill_threshold
: The ratio of max_nominator_count
or max_validator_count
which should be filled in order for the chill_other
transaction to work.
min_commission
: The minimum amount of commission that each validators must maintain. This is checked only upon calling validate
. Existing validators are not affected.
chill_other
should be called.
Namespace
withdraw_unbonded
to actually move the funds out of management ready for transfer.
No more than a limited number of unlocking chunks (see MaxUnlockingChunks
) can co-exists at the same time. In that case, [Call::withdraw_unbonded
] need to be called first to remove some of the chunks (if possible).
If a user encounters the InsufficientBond
error when calling this extrinsic, they should call chill
first in order to free up their bonded funds.
Emits Unbonded
.
See also [Call::withdraw_unbonded
].
Namespace
unlocking
queue from our management.
This essentially frees up that balance to be used by the stash account to do whatever it wants.
The dispatch origin for this call must be Signed by the controller.
Emits Withdrawn
.
See also [Call::unbond
].
Namespace
SessionInterface::validators
].
Namespace
[active_era - bounding_duration; active_era]
Namespace
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
).
Namespace
pallet_session::SessionManager::new_session
].
Namespace
HISTORY_DEPTH
eras. If reward hasn’t been set or has been removed then 0 reward is returned.
Namespace
HISTORY_DEPTH
eras. If stakers hasn’t been set or has been removed then empty exposure is returned.
Namespace
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.
Namespace
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]
.
Namespace
HISTORY_DEPTH
eras. If total hasn’t been set or has been removed then 0 stake is returned.
Namespace
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.
Namespace
HISTORY_DEPTH
eras.
Eras that haven’t finished yet or has been removed doesn’t have reward.
Namespace
0
, no limit exists.
Namespace
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.
Namespace
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.
Namespace
Slash
.
Namespace
withdraw_unbonded
and removed unbonding chunks worth Balance
from the unlocking queue.
Namespace
MinCommission
.
Namespace
MinValidatorBond
and MinNominatorBond
). If unbonding is the intention, chill
first to remove one’s role as validator/nominator.
Namespace
[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_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.
Namespace
$MaxNominatorRewardedPerValidator
biggest stakers can claim their reward. This used to limit the i/o cost for the nominator payout.
Namespace
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.
Namespace