Struct pallet_elections::pallet::Pallet [−][src]
pub struct Pallet<T>(_);
Expand description
The pallet implementing the on-chain logic.
Implementations
Set candidate approvals. Approval slots stay valid as long as candidates in those slots are registered.
Locks value
from the balance of origin
indefinitely. Only
retract_voter
or
reap_inactive_voter
can unlock the balance.
hint
argument is interpreted differently based on:
- if
origin
is setting approvals for the first time: The index will be checked for being a valid hole in the voter list.- if the hint is correctly pointing to a hole, no fee is deducted from
origin
. - Otherwise, the call will succeed but the index is ignored and simply a push to the
last chunk with free space happens. If the new push causes a new chunk to be
created, a fee indicated by
Config::VotingFee
is deducted.
- if the hint is correctly pointing to a hole, no fee is deducted from
- if
origin
is already a voter: the index must be valid and point to the correct position of theorigin
in the current voters list.
Note that any trailing false
votes in votes
is ignored; In approval voting, not
voting for a candidate and voting false, are equal.
- O(1).
- Two extra DB entries, one DB change.
- Argument
votes
is limited in length to number of candidates.
pub fn reap_inactive_voter(
origin: OriginFor<T>,
reporter_index: u32,
who: <T::Lookup as StaticLookup>::Source,
who_index: u32,
assumed_vote_index: VoteIndex
) -> DispatchResult
pub fn reap_inactive_voter(
origin: OriginFor<T>,
reporter_index: u32,
who: <T::Lookup as StaticLookup>::Source,
who_index: u32,
assumed_vote_index: VoteIndex
) -> DispatchResult
Remove a voter. For it not to be a bond-consuming no-op, all approved candidate indices must now be either unregistered or registered to a candidate that registered the slot after the voter gave their last approval set.
Both indices must be provided according to the following principle:
Voter index does not take holes into account. This means that any account submitting an
index at any point in time should submit:
VOTER_SET_SIZE * set_index + local_index
, meaning that you are ignoring all holes in
the first set_index
sets.
May be called by anyone. Returns the voter deposit to signed
.
- O(1).
- Two fewer DB entries, one DB change.
Remove a voter. All votes are cancelled and the voter deposit is returned.
The index must be provided according to the following principle:
Voter index does not take holes into account. This means that any account submitting an
index at any point in time should submit:
VOTER_SET_SIZE * set_index + local_index
, meaning that you are ignoring all holes in
the first set_index
sets.
Also removes the lock on the balance of the voter.
- O(1).
- Two fewer DB entries, one DB change.
Submit oneself for candidacy.
Account must have enough transferrable funds in it to pay the bond.
NOTE: if origin
has already assigned approvals via
set_approvals
, it will NOT have any usable funds to pass
candidacy bond and must first retract.
Note that setting approvals will lock the entire balance of the voter until
retraction or being reported.
- Independent of input.
- Three DB changes.
pub fn present_winner(
origin: OriginFor<T>,
candidate: <T::Lookup as StaticLookup>::Source,
total: <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance,
index: VoteIndex
) -> DispatchResult
pub fn present_winner(
origin: OriginFor<T>,
candidate: <T::Lookup as StaticLookup>::Source,
total: <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance,
index: VoteIndex
) -> DispatchResult
Set the desired member count; if lower than the current count, then seats will not be up election when they expire. If more, then a new vote will be started if one is not already in progress.
pub fn remove_member(
origin: OriginFor<T>,
who: <T::Lookup as StaticLookup>::Source
) -> DispatchResult
pub fn remove_member(
origin: OriginFor<T>,
who: <T::Lookup as StaticLookup>::Source
) -> DispatchResult
Remove a particular member from the set. This is effective immediately.
Note: A tally should happen instantly (if not already in a presentation period) to fill the seat if removal means that the desired members are not met.
pub fn set_presentation_duration(
origin: OriginFor<T>,
count: T::BlockNumber
) -> DispatchResult
pub fn set_presentation_duration(
origin: OriginFor<T>,
count: T::BlockNumber
) -> DispatchResult
Set the presentation duration. If there is currently a vote being presented for, will
invoke finalize_vote
.
Set the presentation duration. If there is current a vote being presented for, will
invoke finalize_vote
.
How long to give each top candidate to present themselves after the vote ends.
How long each position is active for.
Number of accounts that should constitute the collective.
The current membership. When there’s a vote going on, this should still be used for executive matters. The block number (second element in the tuple) is the block that their position is active until (calculated by the sum of the block number when the member was elected and their term duration).
The total number of vote rounds that have happened or are in progress.
the next free set to store a voter in. This will keep growing.
The present candidate list.
Current number of active candidates
The accounts holding the seats that will become free on the next tally.
Get the leaderboard if we’re in the presentation phase. The first element is the weight of each entry; It may be the direct summed approval stakes, or a weighted version of it. Sorted from low to high.
True if we’re currently in a presentation period.
If who
a candidate at the moment?
Iff the member who
still has a seat at blocknumber n
returns true
.
Determine the block that a vote can happen on which is no less than n
.
The block number on which the tally for the next election will happen. None
only if the
desired seats of the set is zero.
Convert a vec of boolean approval flags to a vec of integers, as denoted by
the type ApprovalFlag
. see bool_to_flag_should_work
test for examples.
Trait Implementations
Returns the current storage version as supported by the pallet.
Returns the on-chain storage version of the pallet as stored in the storage.
The block is being initialized. Implement to have something happen. Read more
The block is being finalized. Implement to have something happen.
This will be run when the block is being finalized (before on_finalize
).
Implement to have something happen using the remaining weight.
Will not fire if the remaining weight is 0.
Return the weight used, the hook will subtract it from current weight used
and pass the result to the next on_idle
hook if it exists. Read more
Perform a module upgrade. Read more
Execute some pre-checks prior to a runtime upgrade. Read more
Execute some post-checks after a runtime upgrade. Read more
Implementing this function on a module allows you to perform long-running tasks that make (by default) validators generate transactions that feed results of those long-running computations back on chain. Read more
Run integrity test. Read more
Run integrity test. Read more
This function is being called after every block import (when fully synced). Read more
The block is being finalized. Implement to have something happen. Read more
Something that should happen at genesis.
The block is being finalized.
Implement to have something happen in case there is leftover weight.
Check the passed remaining_weight
to make sure it is high enough to allow for
your pallet’s extra computation. Read more
The block is being initialized. Implement to have something happen. Read more
Auto Trait Implementations
impl<T> RefUnwindSafe for Pallet<T> where
T: RefUnwindSafe,
impl<T> UnwindSafe for Pallet<T> where
T: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
Convert 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 more
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read more
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s. Read more
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s. Read more
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
Generate a storage key unique to this runtime upgrade. Read more
Get temporary storage data written by Self::set_temp_storage
. Read more
Write some temporary data to a specific storage that can be read (potentially in
post-upgrade hook) via Self::get_temp_storage
. Read more
impl<T> PalletVersionToStorageVersionHelper for T where
T: GetStorageVersion + PalletInfoAccess,
impl<T> PalletVersionToStorageVersionHelper for T where
T: GetStorageVersion + PalletInfoAccess,
type Output = T
type Output = T
Should always be Self
The counterpart to unchecked_from
.
Consume self to return an equivalent value of T
.
pub fn vzip(self) -> V
impl<T> MaybeDebug for T where
T: Debug,
impl<T> MaybeDebug for T where
T: Debug,