Struct pallet_parachain_staking::types::CandidateMetadata
source · pub struct CandidateMetadata<Balance> {
pub bond: Balance,
pub delegation_count: u32,
pub total_counted: Balance,
pub lowest_top_delegation_amount: Balance,
pub highest_bottom_delegation_amount: Balance,
pub lowest_bottom_delegation_amount: Balance,
pub top_capacity: CapacityStatus,
pub bottom_capacity: CapacityStatus,
pub request: Option<CandidateBondLessRequest<Balance>>,
pub status: CollatorStatus,
}
Expand description
All candidate info except the top and bottom delegations
Fields§
§bond: Balance
This candidate’s self bond amount
delegation_count: u32
Total number of delegations to this candidate
total_counted: Balance
Self bond + sum of top delegations
lowest_top_delegation_amount: Balance
The smallest top delegation amount
highest_bottom_delegation_amount: Balance
The highest bottom delegation amount
lowest_bottom_delegation_amount: Balance
The smallest bottom delegation amount
top_capacity: CapacityStatus
Capacity status for top delegations
bottom_capacity: CapacityStatus
Capacity status for bottom delegations
request: Option<CandidateBondLessRequest<Balance>>
Maximum 1 pending request to decrease candidate self bond at any given time
status: CollatorStatus
Current status of the collator
Implementations§
source§impl<Balance: Copy + Zero + PartialOrd + AddAssign + SubAssign + Sub<Output = Balance> + Debug + Saturating> CandidateMetadata<Balance>
impl<Balance: Copy + Zero + PartialOrd + AddAssign + SubAssign + Sub<Output = Balance> + Debug + Saturating> CandidateMetadata<Balance>
pub fn new(bond: Balance) -> Self
pub fn is_active(&self) -> bool
pub fn is_leaving(&self) -> bool
pub fn schedule_leave<T: Config>( &mut self ) -> Result<(RoundIndex, RoundIndex), DispatchError>
pub fn can_leave<T: Config>(&self) -> DispatchResult
pub fn go_offline(&mut self)
pub fn go_online(&mut self)
pub fn bond_more<T: Config>( &mut self, who: T::AccountId, more: Balance ) -> DispatchResult
pub fn bond_less<T: Config>(&mut self, who: T::AccountId, amount: Balance)
sourcepub fn schedule_bond_less<T: Config>(
&mut self,
less: Balance
) -> Result<RoundIndex, DispatchError>
pub fn schedule_bond_less<T: Config>( &mut self, less: Balance ) -> Result<RoundIndex, DispatchError>
Schedule executable decrease of collator candidate self bond Returns the round at which the collator can execute the pending request
sourcepub fn execute_bond_less<T: Config>(
&mut self,
who: T::AccountId
) -> DispatchResult
pub fn execute_bond_less<T: Config>( &mut self, who: T::AccountId ) -> DispatchResult
Execute pending request to decrease the collator self bond Returns the event to be emitted
sourcepub fn cancel_bond_less<T: Config>(
&mut self,
who: T::AccountId
) -> DispatchResult
pub fn cancel_bond_less<T: Config>( &mut self, who: T::AccountId ) -> DispatchResult
Cancel candidate bond less request
sourcepub fn reset_top_data<T: Config>(
&mut self,
candidate: T::AccountId,
top_delegations: &Delegations<T::AccountId, BalanceOf<T>>
)
pub fn reset_top_data<T: Config>( &mut self, candidate: T::AccountId, top_delegations: &Delegations<T::AccountId, BalanceOf<T>> )
Reset top delegations metadata
sourcepub fn reset_bottom_data<T: Config>(
&mut self,
bottom_delegations: &Delegations<T::AccountId, BalanceOf<T>>
)
pub fn reset_bottom_data<T: Config>( &mut self, bottom_delegations: &Delegations<T::AccountId, BalanceOf<T>> )
Reset bottom delegations metadata
sourcepub fn add_delegation<T: Config>(
&mut self,
candidate: &T::AccountId,
delegation: Bond<T::AccountId, BalanceOf<T>>
) -> Result<(DelegatorAdded<Balance>, Option<Balance>), DispatchError>
pub fn add_delegation<T: Config>( &mut self, candidate: &T::AccountId, delegation: Bond<T::AccountId, BalanceOf<T>> ) -> Result<(DelegatorAdded<Balance>, Option<Balance>), DispatchError>
Add delegation
Returns whether delegator was added and an optional negative total counted remainder
for if a bottom delegation was kicked
MUST ensure no delegation exists for this candidate in the DelegatorState
before call
sourcepub fn add_top_delegation<T: Config>(
&mut self,
candidate: &T::AccountId,
delegation: Bond<T::AccountId, BalanceOf<T>>
) -> Option<Balance>
pub fn add_top_delegation<T: Config>( &mut self, candidate: &T::AccountId, delegation: Bond<T::AccountId, BalanceOf<T>> ) -> Option<Balance>
Add delegation to top delegation Returns Option<negative_total_staked_remainder> Only call if lowest top delegation is less than delegation.amount || !top_full
sourcepub fn add_bottom_delegation<T: Config>(
&mut self,
bumped_from_top: bool,
candidate: &T::AccountId,
delegation: Bond<T::AccountId, BalanceOf<T>>
)
pub fn add_bottom_delegation<T: Config>( &mut self, bumped_from_top: bool, candidate: &T::AccountId, delegation: Bond<T::AccountId, BalanceOf<T>> )
Add delegation to bottom delegations Check before call that if capacity is full, inserted delegation is higher than lowest bottom delegation (and if so, need to adjust the total storage item) CALLER MUST ensure(lowest_bottom_to_be_kicked.amount < delegation.amount)
sourcepub fn rm_delegation_if_exists<T: Config>(
&mut self,
candidate: &T::AccountId,
delegator: T::AccountId,
amount: Balance
) -> Result<bool, DispatchError>
pub fn rm_delegation_if_exists<T: Config>( &mut self, candidate: &T::AccountId, delegator: T::AccountId, amount: Balance ) -> Result<bool, DispatchError>
Remove delegation Removes from top if amount is above lowest top or top is not full Return Ok(if_total_counted_changed)
sourcepub fn rm_top_delegation<T: Config>(
&mut self,
candidate: &T::AccountId,
delegator: T::AccountId
) -> Result<bool, DispatchError>
pub fn rm_top_delegation<T: Config>( &mut self, candidate: &T::AccountId, delegator: T::AccountId ) -> Result<bool, DispatchError>
Remove top delegation, bumps top bottom delegation if exists
sourcepub fn rm_bottom_delegation<T: Config>(
&mut self,
candidate: &T::AccountId,
delegator: T::AccountId
) -> Result<bool, DispatchError>
pub fn rm_bottom_delegation<T: Config>( &mut self, candidate: &T::AccountId, delegator: T::AccountId ) -> Result<bool, DispatchError>
Remove bottom delegation Returns if_total_counted_changed: bool
sourcepub fn increase_delegation<T: Config>(
&mut self,
candidate: &T::AccountId,
delegator: T::AccountId,
bond: BalanceOf<T>,
more: BalanceOf<T>
) -> Result<bool, DispatchError>
pub fn increase_delegation<T: Config>( &mut self, candidate: &T::AccountId, delegator: T::AccountId, bond: BalanceOf<T>, more: BalanceOf<T> ) -> Result<bool, DispatchError>
Increase delegation amount
sourcepub fn increase_top_delegation<T: Config>(
&mut self,
candidate: &T::AccountId,
delegator: T::AccountId,
more: BalanceOf<T>
) -> Result<bool, DispatchError>
pub fn increase_top_delegation<T: Config>( &mut self, candidate: &T::AccountId, delegator: T::AccountId, more: BalanceOf<T> ) -> Result<bool, DispatchError>
Increase top delegation
sourcepub fn increase_bottom_delegation<T: Config>(
&mut self,
candidate: &T::AccountId,
delegator: T::AccountId,
bond: BalanceOf<T>,
more: BalanceOf<T>
) -> Result<bool, DispatchError>
pub fn increase_bottom_delegation<T: Config>( &mut self, candidate: &T::AccountId, delegator: T::AccountId, bond: BalanceOf<T>, more: BalanceOf<T> ) -> Result<bool, DispatchError>
Increase bottom delegation
sourcepub fn decrease_delegation<T: Config>(
&mut self,
candidate: &T::AccountId,
delegator: T::AccountId,
bond: Balance,
less: BalanceOf<T>
) -> Result<bool, DispatchError>
pub fn decrease_delegation<T: Config>( &mut self, candidate: &T::AccountId, delegator: T::AccountId, bond: Balance, less: BalanceOf<T> ) -> Result<bool, DispatchError>
Decrease delegation
Trait Implementations§
source§impl<Balance> Debug for CandidateMetadata<Balance>where
Balance: Debug,
impl<Balance> Debug for CandidateMetadata<Balance>where
Balance: Debug,
source§impl<Balance> Decode for CandidateMetadata<Balance>where
Balance: Decode,
Option<CandidateBondLessRequest<Balance>>: Decode,
impl<Balance> Decode for CandidateMetadata<Balance>where
Balance: Decode,
Option<CandidateBondLessRequest<Balance>>: Decode,
source§fn decode<__CodecInputEdqy: Input>(
__codec_input_edqy: &mut __CodecInputEdqy
) -> Result<Self, Error>
fn decode<__CodecInputEdqy: Input>( __codec_input_edqy: &mut __CodecInputEdqy ) -> Result<Self, Error>
§fn decode_into<I>(
input: &mut I,
dst: &mut MaybeUninit<Self>
) -> Result<DecodeFinished, Error>where
I: Input,
fn decode_into<I>(
input: &mut I,
dst: &mut MaybeUninit<Self>
) -> Result<DecodeFinished, Error>where
I: Input,
§fn skip<I>(input: &mut I) -> Result<(), Error>where
I: Input,
fn skip<I>(input: &mut I) -> Result<(), Error>where
I: Input,
§fn encoded_fixed_size() -> Option<usize>
fn encoded_fixed_size() -> Option<usize>
source§impl<Balance> Encode for CandidateMetadata<Balance>where
Balance: Encode,
Option<CandidateBondLessRequest<Balance>>: Encode,
impl<Balance> Encode for CandidateMetadata<Balance>where
Balance: Encode,
Option<CandidateBondLessRequest<Balance>>: Encode,
source§fn size_hint(&self) -> usize
fn size_hint(&self) -> usize
source§fn encode_to<__CodecOutputEdqy: Output + ?Sized>(
&self,
__codec_dest_edqy: &mut __CodecOutputEdqy
)
fn encode_to<__CodecOutputEdqy: Output + ?Sized>( &self, __codec_dest_edqy: &mut __CodecOutputEdqy )
§fn using_encoded<R, F>(&self, f: F) -> R
fn using_encoded<R, F>(&self, f: F) -> R
§fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
source§impl<Balance> TypeInfo for CandidateMetadata<Balance>where
Balance: TypeInfo + 'static,
Option<CandidateBondLessRequest<Balance>>: TypeInfo + 'static,
impl<Balance> TypeInfo for CandidateMetadata<Balance>where
Balance: TypeInfo + 'static,
Option<CandidateBondLessRequest<Balance>>: TypeInfo + 'static,
impl<Balance> EncodeLike for CandidateMetadata<Balance>where
Balance: Encode,
Option<CandidateBondLessRequest<Balance>>: Encode,
Auto Trait Implementations§
impl<Balance> RefUnwindSafe for CandidateMetadata<Balance>where
Balance: RefUnwindSafe,
impl<Balance> Send for CandidateMetadata<Balance>where
Balance: Send,
impl<Balance> Sync for CandidateMetadata<Balance>where
Balance: Sync,
impl<Balance> Unpin for CandidateMetadata<Balance>where
Balance: Unpin,
impl<Balance> UnwindSafe for CandidateMetadata<Balance>where
Balance: 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> Conv for T
impl<T> Conv for T
§impl<T> DecodeAll for Twhere
T: Decode,
impl<T> DecodeAll for Twhere
T: Decode,
§fn decode_all(input: &mut &[u8]) -> Result<T, Error>
fn decode_all(input: &mut &[u8]) -> Result<T, Error>
Self
and consume all of the given input data. Read more§impl<T> DecodeLimit for Twhere
T: Decode,
impl<T> DecodeLimit for Twhere
T: Decode,
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Hashable for Twhere
T: Codec,
impl<T> Hashable for Twhere
T: Codec,
§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 more§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
§impl<T> KeyedVec for Twhere
T: Codec,
impl<T> KeyedVec for Twhere
T: Codec,
source§impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
source§fn lossy_into(self) -> Dst
fn lossy_into(self) -> Dst
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§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> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
§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
.