pub struct Pallet<T>(/* private fields */);Expand description
The Pallet struct, the main type that implements traits and standalone
functions within the pallet.
Implementations§
Source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
Sourcepub fn set_keys(
origin: OriginFor<T>,
keys: T::Keys,
proof: Vec<u8>,
) -> DispatchResult
pub fn set_keys( origin: OriginFor<T>, keys: T::Keys, proof: Vec<u8>, ) -> DispatchResult
Sets the session key(s) of the function caller to keys.
Allows an account to set its session key prior to becoming a validator.
This doesn’t take effect until the next session.
The dispatch origin of this function must be signed.
§Complexity
O(1). Actual cost depends on the number of length ofT::Keys::key_ids()which is fixed.
Sourcepub fn purge_keys(origin: OriginFor<T>) -> DispatchResult
pub fn purge_keys(origin: OriginFor<T>) -> DispatchResult
Removes any session key(s) of the function caller.
This doesn’t take effect until the next session.
The dispatch origin of this function must be Signed and the account must be either be convertible to a validator ID using the chain’s typical addressing system (this usually means being a controller account) or directly convertible into a validator ID (which usually means being a stash account).
§Complexity
O(1)in number of key types. Actual cost depends on the number of length ofT::Keys::key_ids()which is fixed.
Source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
Sourcepub fn validators() -> Vec<T::ValidatorId>
pub fn validators() -> Vec<T::ValidatorId>
Public function to access the current set of validators.
Sourcepub fn current_index() -> SessionIndex
pub fn current_index() -> SessionIndex
Public function to access the current session index.
Sourcepub fn queued_keys() -> Vec<(T::ValidatorId, T::Keys)>
pub fn queued_keys() -> Vec<(T::ValidatorId, T::Keys)>
Public function to access the queued keys.
Sourcepub fn disabled_validators() -> Vec<u32>
pub fn disabled_validators() -> Vec<u32>
Public function to access the disabled validators.
Sourcepub fn rotate_session()
pub fn rotate_session()
Move on to next session. Register new validator set and session keys. Changes to the validator set have a session of delay to take effect. This allows for equivocation punishment after a fork.
Sourcepub fn upgrade_keys<Old, F>(upgrade: F)
pub fn upgrade_keys<Old, F>(upgrade: F)
Upgrade the key type from some old type to a new type. Supports adding and removing key types.
This function should be used with extreme care and only during an
on_runtime_upgrade block. Misuse of this function can put your blockchain
into an unrecoverable state.
Care should be taken that the raw versions of the
added keys are unique for every ValidatorId, KeyTypeId combination.
This is an invariant that the session pallet typically maintains internally.
As the actual values of the keys are typically not known at runtime upgrade,
it’s recommended to initialize the keys to a (unique) dummy value with the expectation
that all validators should invoke set_keys before those keys are actually
required.
pub fn load_keys(v: &T::ValidatorId) -> Option<T::Keys>
Sourcepub fn key_owner(id: KeyTypeId, key_data: &[u8]) -> Option<T::ValidatorId>
pub fn key_owner(id: KeyTypeId, key_data: &[u8]) -> Option<T::ValidatorId>
Query the owner of a session key by returning the owner’s validator ID.
Sourcepub fn disable_index_with_severity(i: u32, severity: OffenceSeverity) -> bool
pub fn disable_index_with_severity(i: u32, severity: OffenceSeverity) -> bool
Disable the validator of index i with a specified severity,
returns false if the validator is not found.
Note: If validator is already disabled, the severity will be updated if the new one is higher.
Sourcepub fn disable_index(i: u32) -> bool
pub fn disable_index(i: u32) -> bool
Disable the validator of index i with a default severity (defaults to most severe),
returns false if the validator is not found.
Sourcepub fn reenable_index(i: u32) -> bool
pub fn reenable_index(i: u32) -> bool
Re-enable the validator of index i, returns false if the validator was not disabled.
Sourcepub fn validator_id_to_index(id: &T::ValidatorId) -> Option<u32>
pub fn validator_id_to_index(id: &T::ValidatorId) -> Option<u32>
Convert a validator ID to an index. (If using with the staking pallet, this would be their stash account.)
Sourcepub fn report_offence(validator: T::ValidatorId, severity: OffenceSeverity)
pub fn report_offence(validator: T::ValidatorId, severity: OffenceSeverity)
Report an offence for the given validator and let disabling strategy decide what changes to disabled validators should be made.
Trait Implementations§
Source§impl<T: Config> BeforeAllRuntimeMigrations for Pallet<T>
impl<T: Config> BeforeAllRuntimeMigrations for Pallet<T>
Source§fn before_all_runtime_migrations() -> Weight
fn before_all_runtime_migrations() -> Weight
Source§impl<T: Config> DisabledValidators for Pallet<T>
impl<T: Config> DisabledValidators for Pallet<T>
Source§fn is_disabled(index: u32) -> bool
fn is_disabled(index: u32) -> bool
Source§fn disabled_validators() -> Vec<u32>
fn disabled_validators() -> Vec<u32>
Source§impl<T: Config> DispatchViewFunction for Pallet<T>
impl<T: Config> DispatchViewFunction for Pallet<T>
fn dispatch_view_function<O: Output>( id: &ViewFunctionId, input: &mut &[u8], output: &mut O, ) -> Result<(), ViewFunctionDispatchError>
Source§impl<T: Config> EstimateNextNewSession<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> EstimateNextNewSession<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
Source§fn estimate_next_new_session(
now: BlockNumberFor<T>,
) -> (Option<BlockNumberFor<T>>, Weight)
fn estimate_next_new_session( now: BlockNumberFor<T>, ) -> (Option<BlockNumberFor<T>>, Weight)
This session pallet always calls new_session and next_session at the same time, hence we do a simple proxy and pass the function to next rotation.
Source§fn average_session_length() -> BlockNumberFor<T>
fn average_session_length() -> BlockNumberFor<T>
Source§impl<T: Config> GetStorageVersion for Pallet<T>
impl<T: Config> GetStorageVersion for Pallet<T>
Source§fn in_code_storage_version() -> Self::InCodeStorageVersion
fn in_code_storage_version() -> Self::InCodeStorageVersion
storage_version attribute, or
NoStorageVersionSet if the attribute is missing.Source§fn on_chain_storage_version() -> StorageVersion
fn on_chain_storage_version() -> StorageVersion
Source§fn current_storage_version() -> Self::InCodeStorageVersion
fn current_storage_version() -> Self::InCodeStorageVersion
in_code_storage_version and will be removed after March 2024.Self::current_storage_version instead. Read moreSource§impl<T: Config> Hooks<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> Hooks<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
Source§fn on_initialize(n: BlockNumberFor<T>) -> Weight
fn on_initialize(n: BlockNumberFor<T>) -> Weight
Called when a block is initialized. Will rotate session if it is the last block of the current session.
Source§fn on_finalize(_n: BlockNumber)
fn on_finalize(_n: BlockNumber)
Source§fn on_idle(_n: BlockNumber, _remaining_weight: Weight) -> Weight
fn on_idle(_n: BlockNumber, _remaining_weight: Weight) -> Weight
Hooks::on_finalize). Read moreSource§fn on_poll(_n: BlockNumber, _weight: &mut WeightMeter)
fn on_poll(_n: BlockNumber, _weight: &mut WeightMeter)
Source§fn on_runtime_upgrade() -> Weight
fn on_runtime_upgrade() -> Weight
Executive pallet. Read moreSource§fn offchain_worker(_n: BlockNumber)
fn offchain_worker(_n: BlockNumber)
Source§fn integrity_test()
fn integrity_test()
Source§impl<T: Config> IntegrityTest for Pallet<T>
impl<T: Config> IntegrityTest for Pallet<T>
Source§impl<T: Config> OffchainWorker<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> OffchainWorker<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
Source§fn offchain_worker(n: BlockNumberFor<T>)
fn offchain_worker(n: BlockNumberFor<T>)
Source§impl<T: Config> OnFinalize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> OnFinalize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
Source§fn on_finalize(n: BlockNumberFor<T>)
fn on_finalize(n: BlockNumberFor<T>)
Hooks::on_finalize.Source§impl<T: Config> OnGenesis for Pallet<T>
impl<T: Config> OnGenesis for Pallet<T>
Source§fn on_genesis()
fn on_genesis()
Source§impl<T: Config> OnIdle<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> OnIdle<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
Source§fn on_idle(n: BlockNumberFor<T>, remaining_weight: Weight) -> Weight
fn on_idle(n: BlockNumberFor<T>, remaining_weight: Weight) -> Weight
Hooks::on_idle.Source§impl<T: Config> OnInitialize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> OnInitialize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
Source§fn on_initialize(n: BlockNumberFor<T>) -> Weight
fn on_initialize(n: BlockNumberFor<T>) -> Weight
Hooks::on_initialize.Source§impl<T: Config> OnPoll<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> OnPoll<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
Source§fn on_poll(n: BlockNumberFor<T>, weight: &mut WeightMeter)
fn on_poll(n: BlockNumberFor<T>, weight: &mut WeightMeter)
Source§impl<T: Config> OnRuntimeUpgrade for Pallet<T>
impl<T: Config> OnRuntimeUpgrade for Pallet<T>
Source§fn on_runtime_upgrade() -> Weight
fn on_runtime_upgrade() -> Weight
Source§impl<T: Config> PalletInfoAccess for Pallet<T>
impl<T: Config> PalletInfoAccess for Pallet<T>
Source§fn module_name() -> &'static str
fn module_name() -> &'static str
Source§fn crate_version() -> CrateVersion
fn crate_version() -> CrateVersion
Source§impl<T: Config> PalletsInfoAccess for Pallet<T>
impl<T: Config> PalletsInfoAccess for Pallet<T>
Source§impl<T: Config> StorageInfoTrait for Pallet<T>
impl<T: Config> StorageInfoTrait for Pallet<T>
fn storage_info() -> Vec<StorageInfo>
Source§impl<T: Config> ValidatorRegistration<<T as Config>::ValidatorId> for Pallet<T>
impl<T: Config> ValidatorRegistration<<T as Config>::ValidatorId> for Pallet<T>
Source§fn is_registered(id: &T::ValidatorId) -> bool
fn is_registered(id: &T::ValidatorId) -> bool
Source§impl<T: Config> ValidatorSet<<T as Config>::AccountId> for Pallet<T>
impl<T: Config> ValidatorSet<<T as Config>::AccountId> for Pallet<T>
Source§type ValidatorId = <T as Config>::ValidatorId
type ValidatorId = <T as Config>::ValidatorId
Source§type ValidatorIdOf = <T as Config>::ValidatorIdOf
type ValidatorIdOf = <T as Config>::ValidatorIdOf
AccountId to ValidatorId.Source§fn session_index() -> SessionIndex
fn session_index() -> SessionIndex
Source§fn validators() -> Vec<Self::ValidatorId>
fn validators() -> Vec<Self::ValidatorId>
Source§impl<T: Config> WhitelistedStorageKeys for Pallet<T>
impl<T: Config> WhitelistedStorageKeys for Pallet<T>
Source§fn whitelisted_storage_keys() -> Vec<TrackedStorageKey>
fn whitelisted_storage_keys() -> Vec<TrackedStorageKey>
Vec<TrackedStorageKey> indicating the storage keys that
should be whitelisted during benchmarking. This means that those keys
will be excluded from the benchmarking performance calculation.impl<T> Eq for Pallet<T>
Auto Trait Implementations§
impl<T> Freeze for Pallet<T>
impl<T> RefUnwindSafe for Pallet<T>where
T: RefUnwindSafe,
impl<T> Send for Pallet<T>where
T: Send,
impl<T> Sync for Pallet<T>where
T: Sync,
impl<T> Unpin for Pallet<T>where
T: Unpin,
impl<T> UnwindSafe for Pallet<T>where
T: UnwindSafe,
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§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
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit)Source§impl<T, U> DefensiveTruncateInto<U> for Twhere
U: DefensiveTruncateFrom<T>,
impl<T, U> DefensiveTruncateInto<U> for Twhere
U: DefensiveTruncateFrom<T>,
Source§fn defensive_truncate_into(self) -> U
fn defensive_truncate_into(self) -> U
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.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<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
impl<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
type Error = <U as TryFromKey<T>>::Error
fn try_into_key(self) -> Result<U, <U as TryFromKey<T>>::Error>
Source§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.