pub struct GenesisConfig<T: Config> {
pub allow_affidavits: bool,
pub afdvt_begins_at: Duration,
pub afdvt_ends_at: Duration,
pub election_begins_at: Duration,
pub election_runner_points: T::Points,
pub validate_tx_priority: TransactionPriority,
pub affidavit_tx_priority: TransactionPriority,
pub election_tx_priority: TransactionPriority,
pub finality_after: u64,
pub finality_ticks: BlockNumberFor<T>,
}Expand description
Genesis configuration for the Chain Manager pallet.
Provides the initial runtime parameters governing session-driven validator orchestration, including affidavit flow, election timing, transaction prioritization, and finality safeguards at chain genesis.
These values define the baseline execution schedule and coordination rules for validator lifecycle before any sessions are processed.
Fields§
§allow_affidavits: boolWhether affidavit submission is enabled.
true: authors may submit affidavit data during the configured window.false: affidavit submission is entirely disabled.
afdvt_begins_at: DurationRelative point within a session at which the affidavit phase begins.
Expressed as a fraction of the session (e.g., 0.2 = 20% into the session).
Defines when authors can start submitting affidavit.
Submissions made before this point are not permitted.
afdvt_ends_at: DurationRelative point within a session at which the affidavit phase ends.
Must be greater than afdvt_begins_at and within session bounds.
After this point, no new affidavit submissions are accepted.
election_begins_at: DurationRelative point within a session at which election execution begins.
Typically aligned with or after the affidavit phase to ensure all candidate data is available for selection.
election_runner_points: T::PointsNumber of points awarded to the author responsible for executing elections.
Acts as an incentive for offchain workers or authors coordinating election execution in a timely manner.
validate_tx_priority: TransactionPriorityTransaction priority assigned to validation-related unsigned extrinsics.
Higher priority ensures inclusion in blocks under contention. Should typically be the highest among lifecycle operations.
affidavit_tx_priority: TransactionPriorityTransaction priority assigned to affidavit submission extrinsics.
Balanced to allow fair participation without starving higher-priority operations such as validation.
election_tx_priority: TransactionPriorityTransaction priority assigned to election execution extrinsics.
Ensures elections are processed in time, but typically lower than validation and affidavit priorities.
finality_after: u64Time-based delay (in milliseconds) before an operation is considered final.
Helps mitigate premature execution in unstable network conditions or during short-lived forks.
finality_ticks: BlockNumberFor<T>Block-based confirmation threshold for finality.
Represents the number of distinct blocks that must pass before an operation is finalized, providing deterministic safety against reorgs.
Trait Implementations§
Source§impl<T: Config> BuildGenesisConfig for GenesisConfig<T>
impl<T: Config> BuildGenesisConfig for GenesisConfig<T>
Source§impl<T: Config> BuildStorage for GenesisConfig<T>
impl<T: Config> BuildStorage for GenesisConfig<T>
Source§fn assimilate_storage(&self, storage: &mut Storage) -> Result<(), String>
fn assimilate_storage(&self, storage: &mut Storage) -> Result<(), String>
§fn build_storage(&self) -> Result<Storage, String>
fn build_storage(&self) -> Result<Storage, String>
Source§impl<T: Config> Default for GenesisConfig<T>
impl<T: Config> Default for GenesisConfig<T>
Source§impl<'de, T: Config> Deserialize<'de> for GenesisConfig<T>
impl<'de, T: Config> Deserialize<'de> for GenesisConfig<T>
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl<T> Freeze for GenesisConfig<T>
impl<T> RefUnwindSafe for GenesisConfig<T>where
<T as Config>::Points: RefUnwindSafe,
<<<T as Config>::Block as Block>::Header as Header>::Number: RefUnwindSafe,
impl<T> Send for GenesisConfig<T>
impl<T> Sync for GenesisConfig<T>
impl<T> Unpin for GenesisConfig<T>
impl<T> UnwindSafe for GenesisConfig<T>where
<T as Config>::Points: UnwindSafe,
<<<T as Config>::Block as Block>::Header as Header>::Number: UnwindSafe,
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
§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
§fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
§fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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<T, U, Tag> IntoTag<U, Tag> for Twhere
U: FromTag<T, Tag>,
Tag: DiscriminantTag,
impl<T, U, Tag> IntoTag<U, Tag> for Twhere
U: FromTag<T, Tag>,
Tag: DiscriminantTag,
§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
§impl<T> IsType<T> for T
impl<T> IsType<T> for T
§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
Source§impl<T, Time> Logging<Time> for Twhere
Time: Time,
impl<T, Time> Logging<Time> for Twhere
Time: Time,
Source§const FALLBACK_TARGET: &'static str = "routine"
const FALLBACK_TARGET: &'static str = "routine"
Default logging target if none is provided.
Most routines, especially offchain workers or background tasks, use this target for simplicity.
It allows a consistent place to look for routine logs without requiring every call to specify a target.
Note: This target is only a conveninence and may be somewhat vague. To ensure errors can still be traced accurately, the logged messages should include additional metadata (e.g., module name, error index, or contextual info) so that the source of the error can be identified even if the target is generic.
Source§type Logger = DispatchError
type Logger = DispatchError
The type taken and returned for logging.
We simply return the same [DispatchError] that was logged,
so logging does not change control flow or error propagation.
DispatchError is used because in Substrate it encompasses all
runtime errors - including module errors, token errors, arithmetic
issues, and transactional boundaries - making it the universal
substrate-side error representation.
Source§type Level = LogLevel
type Level = LogLevel
The log level type.
We use the LogLevel enum to standardize severity levels
(Info, Warn, Error, Debug) across all routine logs.
Source§fn log(
level: <T as Logging<Time>>::Level,
err: &<T as Logging<Time>>::Logger,
timestamp: Time,
target: Option<&str>,
fmt: Option<fn(Time, &<T as Logging<Time>>::Level, &str, &str) -> String>,
) -> <T as Logging<Time>>::Logger
fn log( level: <T as Logging<Time>>::Level, err: &<T as Logging<Time>>::Logger, timestamp: Time, target: Option<&str>, fmt: Option<fn(Time, &<T as Logging<Time>>::Level, &str, &str) -> String>, ) -> <T as Logging<Time>>::Logger
Source§fn info(
err: &Self::Logger,
timestamp: Timestamp,
target: Option<&str>,
fmt: Option<fn(Timestamp, &Self::Level, &str, &str) -> String>,
) -> Self::Loggerwhere
Self: Sized,
fn info(
err: &Self::Logger,
timestamp: Timestamp,
target: Option<&str>,
fmt: Option<fn(Timestamp, &Self::Level, &str, &str) -> String>,
) -> Self::Loggerwhere
Self: Sized,
Source§fn warn(
err: &Self::Logger,
timestamp: Timestamp,
target: Option<&str>,
fmt: Option<fn(Timestamp, &Self::Level, &str, &str) -> String>,
) -> Self::Loggerwhere
Self: Sized,
fn warn(
err: &Self::Logger,
timestamp: Timestamp,
target: Option<&str>,
fmt: Option<fn(Timestamp, &Self::Level, &str, &str) -> String>,
) -> Self::Loggerwhere
Self: Sized,
§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
T. Read more§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>
§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from.§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T.