Struct pallet_babe::pallet::Pallet
source · pub struct Pallet<T>(_);
Expand description
The BABE Pallet
Implementations§
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
Methods for the ValidateUnsigned
implementation:
It restricts calls to report_equivocation_unsigned
to local calls (i.e. extrinsics generated
on this node) or that already in a block. This guarantees that only block authors can include
unsigned equivocation reports.
pub fn validate_unsigned( source: TransactionSource, call: &Call<T> ) -> TransactionValidity
pub fn pre_dispatch(call: &Call<T>) -> Result<(), TransactionValidityError>
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn report_equivocation(
origin: OriginFor<T>,
equivocation_proof: Box<EquivocationProof<HeaderFor<T>>>,
key_owner_proof: T::KeyOwnerProof
) -> DispatchResultWithPostInfo
pub fn report_equivocation( origin: OriginFor<T>, equivocation_proof: Box<EquivocationProof<HeaderFor<T>>>, key_owner_proof: T::KeyOwnerProof ) -> DispatchResultWithPostInfo
Report authority equivocation/misbehavior. This method will verify the equivocation proof and validate the given key ownership proof against the extracted offender. If both are valid, the offence will be reported.
sourcepub fn report_equivocation_unsigned(
origin: OriginFor<T>,
equivocation_proof: Box<EquivocationProof<HeaderFor<T>>>,
key_owner_proof: T::KeyOwnerProof
) -> DispatchResultWithPostInfo
pub fn report_equivocation_unsigned( origin: OriginFor<T>, equivocation_proof: Box<EquivocationProof<HeaderFor<T>>>, key_owner_proof: T::KeyOwnerProof ) -> DispatchResultWithPostInfo
Report authority equivocation/misbehavior. This method will verify
the equivocation proof and validate the given key ownership proof
against the extracted offender. If both are valid, the offence will
be reported.
This extrinsic must be called unsigned and it is expected that only
block authors will call it (validated in ValidateUnsigned
), as such
if the block author is defined it will be defined as the equivocation
reporter.
sourcepub fn plan_config_change(
origin: OriginFor<T>,
config: NextConfigDescriptor
) -> DispatchResult
pub fn plan_config_change( origin: OriginFor<T>, config: NextConfigDescriptor ) -> DispatchResult
Plan an epoch config change. The epoch config change is recorded and will be enacted on
the next call to enact_epoch_change
. The config will be activated one epoch after.
Multiple calls to this method will replace any existing planned config change that had
not been enacted yet.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn epoch_index() -> u64
pub fn epoch_index() -> u64
An auto-generated getter for EpochIndex
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
An auto-generated getter for Authorities
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn genesis_slot() -> Slot
pub fn genesis_slot() -> Slot
An auto-generated getter for GenesisSlot
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn current_slot() -> Slot
pub fn current_slot() -> Slot
An auto-generated getter for CurrentSlot
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn randomness() -> BabeRandomness
pub fn randomness() -> BabeRandomness
An auto-generated getter for Randomness
.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn initialized() -> Option<Option<PreDigest>>
pub fn initialized() -> Option<Option<PreDigest>>
“ Temporary value (cleared at block finalization) which is Some
“
“ if per-block initialization has already been called for current block.“
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
“ This field should always be populated during block processing unless“
“ secondary plain slots are enabled (which don't contain a VRF output).“
“”
“ It is set in on_finalize
, before it will contain the value from the last block.“
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn lateness() -> BlockNumberFor<T>
pub fn lateness() -> BlockNumberFor<T>
“ How late the current block is compared to its parent.“ “” “ This entry is populated as part of block execution and is cleaned up“ “ on block finalization. Querying this storage entry outside of block“ “ execution context should always yield zero.“
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn epoch_config() -> Option<BabeEpochConfiguration>
pub fn epoch_config() -> Option<BabeEpochConfiguration>
“ The configuration for the current epoch. Should never be None
as it is initialized in“
“ genesis.“
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn skipped_epochs() -> BoundedVec<(u64, SessionIndex), ConstU32<100>>
pub fn skipped_epochs() -> BoundedVec<(u64, SessionIndex), ConstU32<100>>
“ A list of the last 100 skipped epochs and the corresponding session index“ “ when the epoch was skipped.“ “” “ This is only used for validating equivocation proofs. An equivocation proof“ “ must contains a key-ownership proof for a given session, therefore we need a“ “ way to tie together sessions and epoch indices, i.e. we need to validate that“ “ a validator was the owner of a given key on a given session, and what the“ “ active epoch index was during that session.“
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn slot_duration() -> T::Moment
pub fn slot_duration() -> T::Moment
Determine the BABE slot duration based on the Timestamp module configuration.
sourcepub fn should_epoch_change(now: BlockNumberFor<T>) -> bool
pub fn should_epoch_change(now: BlockNumberFor<T>) -> bool
Determine whether an epoch change should take place at this block. Assumes that initialization has already taken place.
sourcepub fn next_expected_epoch_change(
now: BlockNumberFor<T>
) -> Option<BlockNumberFor<T>>
pub fn next_expected_epoch_change( now: BlockNumberFor<T> ) -> Option<BlockNumberFor<T>>
Return the best guess block number, at which the next epoch change is predicted to happen.
Returns None if the prediction is in the past; This implies an error internally in the Babe and should not happen under normal circumstances.
In other word, this is only accurate if no slots are missed. Given missed slots, the slot number will grow while the block number will not. Hence, the result can be interpreted as an upper bound.
sourcepub fn enact_epoch_change(
authorities: WeakBoundedVec<(AuthorityId, BabeAuthorityWeight), T::MaxAuthorities>,
next_authorities: WeakBoundedVec<(AuthorityId, BabeAuthorityWeight), T::MaxAuthorities>,
session_index: Option<SessionIndex>
)
pub fn enact_epoch_change( authorities: WeakBoundedVec<(AuthorityId, BabeAuthorityWeight), T::MaxAuthorities>, next_authorities: WeakBoundedVec<(AuthorityId, BabeAuthorityWeight), T::MaxAuthorities>, session_index: Option<SessionIndex> )
DANGEROUS: Enact an epoch change. Should be done on every block where should_epoch_change
has returned true
, and the caller is the only caller of this function.
Typically, this is not handled directly by the user, but by higher-level validator-set
manager logic like pallet-session
.
This doesn’t do anything if authorities
is empty.
sourcepub fn current_epoch_start() -> Slot
pub fn current_epoch_start() -> Slot
Finds the start slot of the current epoch.
Only guaranteed to give correct results after initialize
of the first
block in the chain (as its result is based off of GenesisSlot
).
sourcepub fn current_epoch() -> Epoch
pub fn current_epoch() -> Epoch
Produces information about the current epoch.
sourcepub fn next_epoch() -> Epoch
pub fn next_epoch() -> Epoch
Produces information about the next epoch (which was already previously announced).
sourcepub fn submit_unsigned_equivocation_report(
equivocation_proof: EquivocationProof<HeaderFor<T>>,
key_owner_proof: T::KeyOwnerProof
) -> Option<()>
pub fn submit_unsigned_equivocation_report( equivocation_proof: EquivocationProof<HeaderFor<T>>, key_owner_proof: T::KeyOwnerProof ) -> Option<()>
Submits an extrinsic to report an equivocation. This method will create
an unsigned extrinsic with a call to report_equivocation_unsigned
and
will push the transaction to the pool. Only useful in an offchain
context.
Trait Implementations§
source§impl<T> Benchmarking for Pallet<T>where
T: Config + Config,
impl<T> Benchmarking for Pallet<T>where T: Config + Config,
source§fn benchmarks(extra: bool) -> Vec<BenchmarkMetadata>
fn benchmarks(extra: bool) -> Vec<BenchmarkMetadata>
source§fn run_benchmark(
extrinsic: &[u8],
c: &[(BenchmarkParameter, u32)],
whitelist: &[TrackedStorageKey],
verify: bool,
internal_repeats: u32
) -> Result<Vec<BenchmarkResult>, BenchmarkError>
fn run_benchmark( extrinsic: &[u8], c: &[(BenchmarkParameter, u32)], whitelist: &[TrackedStorageKey], verify: bool, internal_repeats: u32 ) -> Result<Vec<BenchmarkResult>, BenchmarkError>
source§impl<T: Config> BoundToRuntimeAppPublic for Pallet<T>
impl<T: Config> BoundToRuntimeAppPublic for Pallet<T>
§type Public = Public
type Public = Public
RuntimeAppPublic
this type is bound to.source§impl<T: Config> EstimateNextSessionRotation<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> EstimateNextSessionRotation<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
source§fn average_session_length() -> BlockNumberFor<T>
fn average_session_length() -> BlockNumberFor<T>
source§fn estimate_current_session_progress(
_now: BlockNumberFor<T>
) -> (Option<Permill>, Weight)
fn estimate_current_session_progress( _now: BlockNumberFor<T> ) -> (Option<Permill>, Weight)
source§fn estimate_next_session_rotation(
now: BlockNumberFor<T>
) -> (Option<BlockNumberFor<T>>, Weight)
fn estimate_next_session_rotation( now: BlockNumberFor<T> ) -> (Option<BlockNumberFor<T>>, Weight)
source§impl<T: Config> FindAuthor<u32> for Pallet<T>
impl<T: Config> FindAuthor<u32> for Pallet<T>
source§impl<T: Config> GetStorageVersion for Pallet<T>
impl<T: Config> GetStorageVersion for Pallet<T>
source§fn current_storage_version() -> Self::CurrentStorageVersion
fn current_storage_version() -> Self::CurrentStorageVersion
source§fn on_chain_storage_version() -> StorageVersion
fn on_chain_storage_version() -> StorageVersion
source§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(now: BlockNumberFor<T>) -> Weight
fn on_initialize(now: BlockNumberFor<T>) -> Weight
Initialization
source§fn on_finalize(_now: BlockNumberFor<T>)
fn on_finalize(_now: BlockNumberFor<T>)
Block finalization
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_runtime_upgrade() -> Weight
fn on_runtime_upgrade() -> Weight
source§fn try_state(_n: BlockNumber) -> Result<(), DispatchError>
fn try_state(_n: BlockNumber) -> Result<(), DispatchError>
source§fn pre_upgrade() -> Result<Vec<u8, Global>, DispatchError>
fn pre_upgrade() -> Result<Vec<u8, Global>, DispatchError>
source§fn post_upgrade(_state: Vec<u8, Global>) -> Result<(), DispatchError>
fn post_upgrade(_state: Vec<u8, Global>) -> Result<(), DispatchError>
source§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> IsMember<Public> for Pallet<T>
impl<T: Config> IsMember<Public> for Pallet<T>
source§fn is_member(authority_id: &AuthorityId) -> bool
fn is_member(authority_id: &AuthorityId) -> bool
MemberId
a valid member?source§impl<T: Config> Lateness<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> Lateness<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
source§fn lateness(&self) -> BlockNumberFor<T>
fn lateness(&self) -> BlockNumberFor<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> OnRuntimeUpgrade for Pallet<T>
impl<T: Config> OnRuntimeUpgrade for Pallet<T>
source§fn on_runtime_upgrade() -> Weight
fn on_runtime_upgrade() -> Weight
source§fn pre_upgrade() -> Result<Vec<u8>, TryRuntimeError>
fn pre_upgrade() -> Result<Vec<u8>, TryRuntimeError>
Hooks::pre_upgrade
.source§fn post_upgrade(state: Vec<u8>) -> Result<(), TryRuntimeError>
fn post_upgrade(state: Vec<u8>) -> Result<(), TryRuntimeError>
Hooks::post_upgrade
.source§fn try_on_runtime_upgrade(checks: bool) -> Result<Weight, DispatchError>
fn try_on_runtime_upgrade(checks: bool) -> Result<Weight, DispatchError>
pre_upgrade
->
on_runtime_upgrade
-> post_upgrade
hooks for a migration. Read moresource§impl<T: Config> OnTimestampSet<<T as Config>::Moment> for Pallet<T>
impl<T: Config> OnTimestampSet<<T as Config>::Moment> for Pallet<T>
source§fn on_timestamp_set(moment: T::Moment)
fn on_timestamp_set(moment: T::Moment)
source§impl<T> OneSessionHandler<<T as Config>::AccountId> for Pallet<T>where
T: Config + Config,
impl<T> OneSessionHandler<<T as Config>::AccountId> for Pallet<T>where T: Config + Config,
source§fn on_genesis_session<'a, I>(validators: I)where
I: Iterator<Item = (&'a T::AccountId, AuthorityId)> + 'a,
fn on_genesis_session<'a, I>(validators: I)where I: Iterator<Item = (&'a T::AccountId, AuthorityId)> + 'a,
on_new_session
should provide the same validator set.source§fn on_new_session<'a, I>(_changed: bool, validators: I, queued_validators: I)where
I: Iterator<Item = (&'a T::AccountId, AuthorityId)> + 'a,
fn on_new_session<'a, I>(_changed: bool, validators: I, queued_validators: I)where I: Iterator<Item = (&'a T::AccountId, AuthorityId)> + 'a,
source§fn on_disabled(i: u32)
fn on_disabled(i: u32)
source§fn on_before_session_ending()
fn on_before_session_ending()
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> PartialEq<Pallet<T>> for Pallet<T>
impl<T> PartialEq<Pallet<T>> for Pallet<T>
source§impl<T: Config> ShouldEndSession<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> ShouldEndSession<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
source§fn should_end_session(now: BlockNumberFor<T>) -> bool
fn should_end_session(now: BlockNumberFor<T>) -> bool
true
if the session should be ended.source§impl<T: Config> StorageInfoTrait for Pallet<T>
impl<T: Config> StorageInfoTrait for Pallet<T>
fn storage_info() -> Vec<StorageInfo>
source§impl<T: Config> TryState<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> TryState<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
source§fn try_state(
n: BlockNumberFor<T>,
_s: TryStateSelect
) -> Result<(), TryRuntimeError>
fn try_state( n: BlockNumberFor<T>, _s: TryStateSelect ) -> Result<(), TryRuntimeError>
source§impl<T: Config> ValidateUnsigned for Pallet<T>
impl<T: Config> ValidateUnsigned for Pallet<T>
source§fn validate_unsigned(
source: TransactionSource,
call: &Self::Call
) -> TransactionValidity
fn validate_unsigned( source: TransactionSource, call: &Self::Call ) -> TransactionValidity
source§fn pre_dispatch(call: &Self::Call) -> Result<(), TransactionValidityError>
fn pre_dispatch(call: &Self::Call) -> Result<(), TransactionValidityError>
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> 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§
source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
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, Outer> IsWrappedBy<Outer> for Twhere
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
impl<T, Outer> IsWrappedBy<Outer> for Twhere Outer: AsRef<T> + AsMut<T> + From<T>, T: From<Outer>,
§impl<T> Pointable for T
impl<T> Pointable 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 more§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.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 Swhere
T: Bounded,
S: TryInto<T>,
impl<T, S> UniqueSaturatedInto<T> for Swhere T: Bounded, S: TryInto<T>,
source§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.