pub struct UpToLimitWithReEnablingDisablingStrategy<const DISABLING_LIMIT_FACTOR: usize = 3>;Expand description
Implementation of DisablingStrategy which disables validators from the active set up to a
limit (factor_based_disable_limit) and if the limit is reached and the new offender is higher
(bigger punishment/severity) then it re-enables the lowest offender to free up space for the new
offender.
This strategy is not based on cumulative severity of offences but only on the severity of the highest offence. Offender first committing a 25% offence and then a 50% offence will be treated the same as an offender committing 50% offence.
An extension of UpToLimitDisablingStrategy.
Implementations§
Source§impl<const DISABLING_LIMIT_FACTOR: usize> UpToLimitWithReEnablingDisablingStrategy<DISABLING_LIMIT_FACTOR>
impl<const DISABLING_LIMIT_FACTOR: usize> UpToLimitWithReEnablingDisablingStrategy<DISABLING_LIMIT_FACTOR>
Sourcepub fn disable_limit(validators_len: usize) -> usize
pub fn disable_limit(validators_len: usize) -> usize
Disabling limit calculated from the total number of validators in the active set. When reached re-enabling logic might kick in.
Trait Implementations§
Source§impl<T: Config, const DISABLING_LIMIT_FACTOR: usize> DisablingStrategy<T> for UpToLimitWithReEnablingDisablingStrategy<DISABLING_LIMIT_FACTOR>
impl<T: Config, const DISABLING_LIMIT_FACTOR: usize> DisablingStrategy<T> for UpToLimitWithReEnablingDisablingStrategy<DISABLING_LIMIT_FACTOR>
Source§fn decision(
offender_stash: &T::ValidatorId,
offender_slash_severity: OffenceSeverity,
currently_disabled: &Vec<(u32, OffenceSeverity)>,
) -> DisablingDecision
fn decision( offender_stash: &T::ValidatorId, offender_slash_severity: OffenceSeverity, currently_disabled: &Vec<(u32, OffenceSeverity)>, ) -> DisablingDecision
Make a disabling decision. Returning a
DisablingDecisionAuto Trait Implementations§
impl<const DISABLING_LIMIT_FACTOR: usize> Freeze for UpToLimitWithReEnablingDisablingStrategy<DISABLING_LIMIT_FACTOR>
impl<const DISABLING_LIMIT_FACTOR: usize> RefUnwindSafe for UpToLimitWithReEnablingDisablingStrategy<DISABLING_LIMIT_FACTOR>
impl<const DISABLING_LIMIT_FACTOR: usize> Send for UpToLimitWithReEnablingDisablingStrategy<DISABLING_LIMIT_FACTOR>
impl<const DISABLING_LIMIT_FACTOR: usize> Sync for UpToLimitWithReEnablingDisablingStrategy<DISABLING_LIMIT_FACTOR>
impl<const DISABLING_LIMIT_FACTOR: usize> Unpin for UpToLimitWithReEnablingDisablingStrategy<DISABLING_LIMIT_FACTOR>
impl<const DISABLING_LIMIT_FACTOR: usize> UnwindSafe for UpToLimitWithReEnablingDisablingStrategy<DISABLING_LIMIT_FACTOR>
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
Mutably borrows from an owned value. Read more
Source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
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>
Converts
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>
Converts
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>,
Consume self to return an equivalent value of
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
The counterpart to
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
Consume self to return an equivalent value of
T.