pub struct StakingQueryApi<'api> { /* private fields */ }
Implementations§
Source§impl<'api> StakingQueryApi<'api>
impl<'api> StakingQueryApi<'api>
Sourcepub async fn validator_count(&self) -> Result<u32>
pub async fn validator_count(&self) -> Result<u32>
The ideal number of active validators.
Sourcepub async fn minimum_validator_count(&self) -> Result<u32>
pub async fn minimum_validator_count(&self) -> Result<u32>
Minimum number of staking participants before emergency conditions are imposed.
Sourcepub async fn invulnerables(&self) -> Result<Vec<AccountId>>
pub async fn invulnerables(&self) -> Result<Vec<AccountId>>
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.
Sourcepub async fn bonded(&self, key_0: AccountId) -> Result<Option<AccountId>>
pub async fn bonded(&self, key_0: AccountId) -> Result<Option<AccountId>>
Map from all locked “stash” accounts to the controller account.
TWOX-NOTE: SAFE since AccountId
is a secure hash.
Sourcepub async fn min_nominator_bond(&self) -> Result<u128>
pub async fn min_nominator_bond(&self) -> Result<u128>
The minimum active bond to become and maintain the role of a nominator.
Sourcepub async fn min_validator_bond(&self) -> Result<u128>
pub async fn min_validator_bond(&self) -> Result<u128>
The minimum active bond to become and maintain the role of a validator.
Sourcepub async fn minimum_active_stake(&self) -> Result<u128>
pub async fn minimum_active_stake(&self) -> Result<u128>
The minimum active nominator stake of the last successful election.
Sourcepub async fn min_commission(&self) -> Result<Perbill>
pub async fn min_commission(&self) -> Result<Perbill>
The minimum amount of commission that validators can set.
If set to 0
, no limit exists.
Sourcepub async fn ledger(&self, key_0: AccountId) -> Result<Option<StakingLedger>>
pub async fn ledger(&self, key_0: AccountId) -> Result<Option<StakingLedger>>
Map from all (unlocked) “controller” accounts to the info regarding the staking.
Sourcepub async fn payee(
&self,
key_0: AccountId,
) -> Result<RewardDestination<AccountId>>
pub async fn payee( &self, key_0: AccountId, ) -> Result<RewardDestination<AccountId>>
Where the reward payment should be made. Keyed by stash.
TWOX-NOTE: SAFE since AccountId
is a secure hash.
Sourcepub async fn validators(&self, key_0: AccountId) -> Result<ValidatorPrefs>
pub async fn validators(&self, key_0: AccountId) -> Result<ValidatorPrefs>
The map from (wannabe) validator stash key to the preferences of that validator.
TWOX-NOTE: SAFE since AccountId
is a secure hash.
Sourcepub async fn counter_for_validators(&self) -> Result<u32>
pub async fn counter_for_validators(&self) -> Result<u32>
Counter for the related counted storage map
Sourcepub async fn max_validators_count(&self) -> Result<Option<u32>>
pub async fn max_validators_count(&self) -> Result<Option<u32>>
The maximum validator count before we stop allowing new validators to join.
When this value is not set, no limits are enforced.
Sourcepub async fn nominators(&self, key_0: AccountId) -> Result<Option<Nominations>>
pub async fn nominators(&self, key_0: AccountId) -> Result<Option<Nominations>>
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.
Sourcepub async fn counter_for_nominators(&self) -> Result<u32>
pub async fn counter_for_nominators(&self) -> Result<u32>
Counter for the related counted storage map
Sourcepub async fn max_nominators_count(&self) -> Result<Option<u32>>
pub async fn max_nominators_count(&self) -> Result<Option<u32>>
The maximum nominator count before we stop allowing new validators to join.
When this value is not set, no limits are enforced.
Sourcepub async fn current_era(&self) -> Result<Option<u32>>
pub async fn current_era(&self) -> Result<Option<u32>>
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.
Sourcepub async fn active_era(&self) -> Result<Option<ActiveEraInfo>>
pub async fn active_era(&self) -> Result<Option<ActiveEraInfo>>
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
].
Sourcepub async fn eras_start_session_index(&self, key_0: u32) -> Result<Option<u32>>
pub async fn eras_start_session_index(&self, key_0: u32) -> Result<Option<u32>>
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]
.
Sourcepub async fn eras_stakers(
&self,
key_0: u32,
key_1: AccountId,
) -> Result<Exposure<AccountId, u128>>
pub async fn eras_stakers( &self, key_0: u32, key_1: AccountId, ) -> Result<Exposure<AccountId, u128>>
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.
Sourcepub async fn eras_stakers_clipped(
&self,
key_0: u32,
key_1: AccountId,
) -> Result<Exposure<AccountId, u128>>
pub async fn eras_stakers_clipped( &self, key_0: u32, key_1: AccountId, ) -> Result<Exposure<AccountId, u128>>
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.
Sourcepub async fn eras_validator_prefs(
&self,
key_0: u32,
key_1: AccountId,
) -> Result<ValidatorPrefs>
pub async fn eras_validator_prefs( &self, key_0: u32, key_1: AccountId, ) -> Result<ValidatorPrefs>
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.
Sourcepub async fn eras_validator_reward(&self, key_0: u32) -> Result<Option<u128>>
pub async fn eras_validator_reward(&self, key_0: u32) -> Result<Option<u128>>
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.
Sourcepub async fn eras_reward_points(
&self,
key_0: u32,
) -> Result<EraRewardPoints<AccountId>>
pub async fn eras_reward_points( &self, key_0: u32, ) -> Result<EraRewardPoints<AccountId>>
Rewards for the last HISTORY_DEPTH
eras.
If reward hasn’t been set or has been removed then 0 reward is returned.
Sourcepub async fn eras_total_stake(&self, key_0: u32) -> Result<u128>
pub async fn eras_total_stake(&self, key_0: u32) -> Result<u128>
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.
Sourcepub async fn slash_reward_fraction(&self) -> Result<Perbill>
pub async fn slash_reward_fraction(&self) -> Result<Perbill>
The percentage of the slash that is distributed to reporters.
The rest of the slashed value is handled by the Slash
.
Sourcepub async fn canceled_slash_payout(&self) -> Result<u128>
pub async fn canceled_slash_payout(&self) -> Result<u128>
The amount of currency given to reporters of a slash event which was canceled by extraordinary circumstances (e.g. governance).
Sourcepub async fn unapplied_slashes(
&self,
key_0: u32,
) -> Result<Vec<UnappliedSlash<AccountId, u128>>>
pub async fn unapplied_slashes( &self, key_0: u32, ) -> Result<Vec<UnappliedSlash<AccountId, u128>>>
All unapplied slashes that are queued for later.
Sourcepub async fn bonded_eras(&self) -> Result<Vec<(u32, u32)>>
pub async fn bonded_eras(&self) -> Result<Vec<(u32, u32)>>
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]
Sourcepub async fn validator_slash_in_era(
&self,
key_0: u32,
key_1: AccountId,
) -> Result<Option<(Perbill, u128)>>
pub async fn validator_slash_in_era( &self, key_0: u32, key_1: AccountId, ) -> Result<Option<(Perbill, u128)>>
All slashing events on validators, mapped by era to the highest slash proportion and slash value of the era.
Sourcepub async fn nominator_slash_in_era(
&self,
key_0: u32,
key_1: AccountId,
) -> Result<Option<u128>>
pub async fn nominator_slash_in_era( &self, key_0: u32, key_1: AccountId, ) -> Result<Option<u128>>
All slashing events on nominators, mapped by era to the highest slash value of the era.
Sourcepub async fn slashing_spans(
&self,
key_0: AccountId,
) -> Result<Option<SlashingSpans>>
pub async fn slashing_spans( &self, key_0: AccountId, ) -> Result<Option<SlashingSpans>>
Slashing spans for stash accounts.
Sourcepub async fn span_slash(
&self,
key_0: (AccountId, u32),
) -> Result<SpanRecord<u128>>
pub async fn span_slash( &self, key_0: (AccountId, u32), ) -> Result<SpanRecord<u128>>
Records information about the maximum slash of a stash within a slashing span, as well as how much reward has been paid out.
Sourcepub async fn current_planned_session(&self) -> Result<u32>
pub async fn current_planned_session(&self) -> Result<u32>
The last planned session scheduled by the session pallet.
This is basically in sync with the call to [pallet_session::SessionManager::new_session
].
Sourcepub async fn offending_validators(&self) -> Result<Vec<(u32, bool)>>
pub async fn offending_validators(&self) -> Result<Vec<(u32, bool)>>
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.
Sourcepub async fn chill_threshold(&self) -> Result<Option<Percent>>
pub async fn chill_threshold(&self) -> Result<Option<Percent>>
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
).
Sourcepub async fn permissioned_identity(
&self,
key_0: IdentityId,
) -> Result<Option<PermissionedIdentityPrefs>>
pub async fn permissioned_identity( &self, key_0: IdentityId, ) -> Result<Option<PermissionedIdentityPrefs>>
Entities that are allowed to run operator/validator nodes.
Sourcepub async fn slashing_allowed_for(&self) -> Result<SlashingSwitch>
pub async fn slashing_allowed_for(&self) -> Result<SlashingSwitch>
Slashing switch for validators & Nominators.
Sourcepub async fn validator_commission_cap(&self) -> Result<Perbill>
pub async fn validator_commission_cap(&self) -> Result<Perbill>
Allows flexibility in commission. Every validator has commission that should be in the range [0, Cap].
pub async fn polymesh_storage_version(&self) -> Result<Version>
Trait Implementations§
Source§impl<'api> Clone for StakingQueryApi<'api>
impl<'api> Clone for StakingQueryApi<'api>
Source§fn clone(&self) -> StakingQueryApi<'api>
fn clone(&self) -> StakingQueryApi<'api>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto Trait Implementations§
impl<'api> Freeze for StakingQueryApi<'api>
impl<'api> !RefUnwindSafe for StakingQueryApi<'api>
impl<'api> Send for StakingQueryApi<'api>
impl<'api> Sync for StakingQueryApi<'api>
impl<'api> Unpin for StakingQueryApi<'api>
impl<'api> !UnwindSafe for StakingQueryApi<'api>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
fn into_tuple(self) -> Dest
Source§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
Source§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
Source§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
Source§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
T
. Read moreSource§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
Source§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from
.Source§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
Source§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.