pub struct GenesisConfig<T: Config> {
pub min_collateral: AuthorAsset<T>,
pub max_exposure: AuthorAsset<T>,
pub min_fund: AuthorAsset<T>,
pub probation_period: BlockNumberFor<T>,
pub reduce_probation_by: BlockNumberFor<T>,
pub increase_probation_by: BlockNumberFor<T>,
pub rewards_buffer: BlockNumberFor<T>,
pub penalties_buffer: BlockNumberFor<T>,
pub max_elected: u32,
pub min_elected: u32,
pub force_max_elected: bool,
}Expand description
Genesis configuration for the Authors pallet.
Provides the initial runtime parameters governing author lifecycle, funding, and reward/penalty mechanics at chain genesis.
These values define the baseline operational rules before any on-chain authors are enrolled or any activity occurs.
Fields§
§min_collateral: AuthorAsset<T>Minimum collateral an author must hold to participate. Ensures skin-in-the-game and commitment to the network. Must not be set to zero, to avoid no-commitment failures.
max_exposure: AuthorAsset<T>Maximum allowed exposure of a funding/backing operation instance. Limits systemic risk from overly funded or leveraged participants.
This is ambiguous in pool and index contexts as it only represents how
much the backer is willing to commit at a transaction, not specific to what scheme.
min_fund: AuthorAsset<T>Minimum funding required of a funding/backing operation instance. Guarantees sufficient community support before an author can participate. Must not be set to zero, to avoid zero-commitment failures.
This is ambiguous in pool and index contexts as it only represents how
much the backer is willing to commit at a transaction, not specific to what scheme.
probation_period: BlockNumberFor<T>Number of blocks newly enrolled or demoted authors must spend in probation before achieving permanent status. Enforces behavioral observation and prevents immediate promotion.
reduce_probation_by: BlockNumberFor<T>Number of blocks to reduce an author’s risk period when positive behavior is observed. Facilitates promotion and rewards accountability.
increase_probation_by: BlockNumberFor<T>Number of blocks to extend an author’s risk period when unsafe behavior is detected. Enforces accountability and ensures that authors under observation remain under supervision.
rewards_buffer: BlockNumberFor<T>Number of blocks to delay reward finalization. Ensures orderly processing and temporal separation of reward events.
penalties_buffer: BlockNumberFor<T>Number of blocks to delay penalty finalization. Allows authors to react or remediate before penalties are enforced.
max_elected: u32Maximum number of authors that can be elected in a single election round.
If force_max_elected is true, the elected list will be truncated to this limit.
min_elected: u32Minimum number of authors required to complete a valid election round. Ensures that elections maintain a minimum quorum of participants.
force_max_elected: boolWhether to strictly enforce the max_elected limit.
true: Forcefully truncate elected authors tomax_elected.false: Attempt to store all elected candidates.
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>where
<<T as Config>::CommitmentAdapter as InspectAsset<<T as Config>::AccountId>>::Asset: Freeze,
<<<T as Config>::Block as Block>::Header as Header>::Number: Freeze,
impl<T> RefUnwindSafe for GenesisConfig<T>where
<<T as Config>::CommitmentAdapter as InspectAsset<<T as Config>::AccountId>>::Asset: 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>where
<<T as Config>::CommitmentAdapter as InspectAsset<<T as Config>::AccountId>>::Asset: Unpin,
<<<T as Config>::Block as Block>::Header as Header>::Number: Unpin,
impl<T> UnwindSafe for GenesisConfig<T>where
<<T as Config>::CommitmentAdapter as InspectAsset<<T as Config>::AccountId>>::Asset: 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.