Enum pallet_elections_phragmen::pallet::Call
source · pub enum Call<T: Config> {
vote {
votes: Vec<T::AccountId>,
value: <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance,
},
remove_voter {},
submit_candidacy {
candidate_count: u32,
},
renounce_candidacy {
renouncing: Renouncing,
},
remove_member {
who: <<T as Config>::Lookup as StaticLookup>::Source,
slash_bond: bool,
rerun_election: bool,
},
clean_defunct_voters {
num_voters: u32,
num_defunct: u32,
},
// some variants omitted
}
Expand description
Contains one variant per dispatchable that can be called by an extrinsic.
Variants
vote
Fields
Vote for a set of candidates for the upcoming round of election. This can be called to set the initial votes, or update already existing votes.
Upon initial voting, value
units of who
’s balance is locked and a deposit amount is
reserved. The deposit is based on the number of votes and can be updated over time.
The votes
should:
- not be empty.
- be less than the number of possible candidates. Note that all current members and runners-up are also automatically candidates for the next round.
If value
is more than who
’s free balance, then the maximum of the two is used.
The dispatch origin of this call must be signed.
Warning
It is the responsibility of the caller to NOT place all of their balance into the lock and keep some for further operations.
remove_voter
Fields
Remove origin
as a voter.
This removes the lock and returns the deposit.
The dispatch origin of this call must be signed and be a voter.
submit_candidacy
Fields
candidate_count: u32
Submit oneself for candidacy. A fixed amount of deposit is recorded.
All candidates are wiped at the end of the term. They either become a member/runner-up, or leave the system while their deposit is slashed.
The dispatch origin of this call must be signed.
Warning
Even if a candidate ends up being a member, they must call Call::renounce_candidacy
to get their deposit back. Losing the spot in an election will always lead to a slash.
The number of current candidates must be provided as witness data.
Complexity
O(C + log(C)) where C is candidate_count.
renounce_candidacy
Fields
renouncing: Renouncing
Renounce one’s intention to be a candidate for the next election round. 3 potential outcomes exist:
origin
is a candidate and not elected in any set. In this case, the deposit is unreserved, returned and origin is removed as a candidate.origin
is a current runner-up. In this case, the deposit is unreserved, returned and origin is removed as a runner-up.origin
is a current member. In this case, the deposit is unreserved and origin is removed as a member, consequently not being a candidate for the next round anymore. Similar toremove_member
, if replacement runners exists, they are immediately used. If the prime is renouncing, then no prime will exist until the next round.
The dispatch origin of this call must be signed, and have one of the above roles. The type of renouncing must be provided as witness data.
Complexity
- Renouncing::Candidate(count): O(count + log(count))
- Renouncing::Member: O(1)
- Renouncing::RunnerUp: O(1)
remove_member
Remove a particular member from the set. This is effective immediately and the bond of the outgoing member is slashed.
If a runner-up is available, then the best runner-up will be removed and replaces the
outgoing member. Otherwise, if rerun_election
is true
, a new phragmen election is
started, else, nothing happens.
If slash_bond
is set to true, the bond of the member being removed is slashed. Else,
it is returned.
The dispatch origin of this call must be root.
Note that this does not affect the designated block number of the next election.
Complexity
- Check details of remove_and_replace_member() and do_phragmen().
clean_defunct_voters
Clean all voters who are defunct (i.e. they do not serve any purpose at all). The deposit of the removed voters are returned.
This is an root function to be used only for cleaning the state.
The dispatch origin of this call must be root.
Complexity
- Check is_defunct_voter() details.
Implementations
sourceimpl<T: Config> Call<T>
impl<T: Config> Call<T>
sourcepub fn new_call_variant_vote(
votes: Vec<T::AccountId>,
value: <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance
) -> Self
pub fn new_call_variant_vote(
votes: Vec<T::AccountId>,
value: <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance
) -> Self
Create a call with the variant vote
.
sourcepub fn new_call_variant_remove_voter() -> Self
pub fn new_call_variant_remove_voter() -> Self
Create a call with the variant remove_voter
.
sourcepub fn new_call_variant_submit_candidacy(candidate_count: u32) -> Self
pub fn new_call_variant_submit_candidacy(candidate_count: u32) -> Self
Create a call with the variant submit_candidacy
.
sourcepub fn new_call_variant_renounce_candidacy(renouncing: Renouncing) -> Self
pub fn new_call_variant_renounce_candidacy(renouncing: Renouncing) -> Self
Create a call with the variant renounce_candidacy
.
sourcepub fn new_call_variant_remove_member(
who: <<T as Config>::Lookup as StaticLookup>::Source,
slash_bond: bool,
rerun_election: bool
) -> Self
pub fn new_call_variant_remove_member(
who: <<T as Config>::Lookup as StaticLookup>::Source,
slash_bond: bool,
rerun_election: bool
) -> Self
Create a call with the variant remove_member
.
sourcepub fn new_call_variant_clean_defunct_voters(
num_voters: u32,
num_defunct: u32
) -> Self
pub fn new_call_variant_clean_defunct_voters(
num_voters: u32,
num_defunct: u32
) -> Self
Create a call with the variant clean_defunct_voters
.
Trait Implementations
sourceimpl<T: Config> Decode for Call<T>
impl<T: Config> Decode for Call<T>
sourcefn decode<__CodecInputEdqy: Input>(
__codec_input_edqy: &mut __CodecInputEdqy
) -> Result<Self, Error>
fn decode<__CodecInputEdqy: Input>(
__codec_input_edqy: &mut __CodecInputEdqy
) -> Result<Self, Error>
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>
sourceimpl<T: Config> Encode for Call<T>
impl<T: Config> Encode for Call<T>
sourcefn 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) -> Rwhere
F: FnOnce(&[u8]) -> R,
fn using_encoded<R, F>(&self, f: F) -> Rwhere
F: FnOnce(&[u8]) -> R,
fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
sourceimpl<T: Config> GetCallIndex for Call<T>
impl<T: Config> GetCallIndex for Call<T>
sourcefn get_call_index(&self) -> u8
fn get_call_index(&self) -> u8
sourcefn get_call_indices() -> &'static [u8] ⓘ
fn get_call_indices() -> &'static [u8] ⓘ
GetCallName
.sourceimpl<T: Config> GetCallName for Call<T>
impl<T: Config> GetCallName for Call<T>
sourcefn get_call_name(&self) -> &'static str
fn get_call_name(&self) -> &'static str
sourcefn get_call_names() -> &'static [&'static str]
fn get_call_names() -> &'static [&'static str]
GetCallIndex
.sourceimpl<T: Config> GetDispatchInfo for Call<T>
impl<T: Config> GetDispatchInfo for Call<T>
sourcefn get_dispatch_info(&self) -> DispatchInfo
fn get_dispatch_info(&self) -> DispatchInfo
DispatchInfo
, containing relevant information of this dispatch. Read moresourceimpl<T: Config> GetDispatchInfo for Call<T>
impl<T: Config> GetDispatchInfo for Call<T>
sourcefn get_dispatch_info(&self) -> DispatchInfo
fn get_dispatch_info(&self) -> DispatchInfo
frame_support::dispatch
sourceimpl<T: Config> TypeInfo for Call<T>where
PhantomData<(T,)>: TypeInfo + 'static,
Vec<T::AccountId>: TypeInfo + 'static,
<<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: HasCompact,
<<T as Config>::Lookup as StaticLookup>::Source: TypeInfo + 'static,
T: Config + 'static,
impl<T: Config> TypeInfo for Call<T>where
PhantomData<(T,)>: TypeInfo + 'static,
Vec<T::AccountId>: TypeInfo + 'static,
<<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: HasCompact,
<<T as Config>::Lookup as StaticLookup>::Source: TypeInfo + 'static,
T: Config + 'static,
sourceimpl<T: Config> UnfilteredDispatchable for Call<T>
impl<T: Config> UnfilteredDispatchable for Call<T>
type RuntimeOrigin = <T as Config>::RuntimeOrigin
type RuntimeOrigin = <T as Config>::RuntimeOrigin
frame_system::Config::RuntimeOrigin
).sourcefn dispatch_bypass_filter(
self,
origin: Self::RuntimeOrigin
) -> DispatchResultWithPostInfo
fn dispatch_bypass_filter(
self,
origin: Self::RuntimeOrigin
) -> DispatchResultWithPostInfo
impl<T: Config> EncodeLike<Call<T>> for Call<T>
impl<T: Config> Eq for Call<T>
Auto Trait Implementations
impl<T> RefUnwindSafe for Call<T>where
T: RefUnwindSafe,
<T as Config>::AccountId: RefUnwindSafe,
<<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: RefUnwindSafe,
<<T as Config>::Lookup as StaticLookup>::Source: RefUnwindSafe,
impl<T> Send for Call<T>where
T: Send,
<<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: Send,
<<T as Config>::Lookup as StaticLookup>::Source: Send,
impl<T> Sync for Call<T>where
T: Sync,
<<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: Sync,
<<T as Config>::Lookup as StaticLookup>::Source: Sync,
impl<T> Unpin for Call<T>where
T: Unpin,
<T as Config>::AccountId: Unpin,
<<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: Unpin,
<<T as Config>::Lookup as StaticLookup>::Source: Unpin,
impl<T> UnwindSafe for Call<T>where
T: UnwindSafe,
<T as Config>::AccountId: UnwindSafe,
<<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: UnwindSafe,
<<T as Config>::Lookup as StaticLookup>::Source: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
sourceimpl<T> CheckedConversion for T
impl<T> CheckedConversion for T
sourcefn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
sourcefn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
fn checked_into<T>(self) -> Option<T>where
Self: TryInto<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 moreimpl<T> DecodeLimit for Twhere
T: Decode,
impl<T> DecodeLimit for Twhere
T: Decode,
fn decode_all_with_depth_limit(limit: u32, input: &mut &[u8]) -> Result<T, Error>
fn decode_all_with_depth_limit(limit: u32, input: &mut &[u8]) -> Result<T, Error>
Self
and consume all of the given input data. Read morefn decode_with_depth_limit<I>(limit: u32, input: &mut I) -> Result<T, Error>where
I: Input,
fn decode_with_depth_limit<I>(limit: u32, input: &mut I) -> Result<T, Error>where
I: Input,
Self
with the given maximum recursion depth and advance input
by the number of
bytes consumed. Read moreimpl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
. Read morefn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read morefn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s. Read morefn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s. Read moresourceimpl<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,
sourcefn 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
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<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
sourceimpl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
sourcefn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
sourcefn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
T
. Read moreimpl<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 morefn 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.sourceimpl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
sourcefn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from
.sourceimpl<T, S> UniqueSaturatedInto<T> for Swhere
T: Bounded,
S: TryInto<T>,
impl<T, S> UniqueSaturatedInto<T> for Swhere
T: Bounded,
S: TryInto<T>,
sourcefn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.