Trait frame_election_provider_support::ElectionDataProvider [−][src]
pub trait ElectionDataProvider<AccountId, BlockNumber> {
const MAXIMUM_VOTES_PER_VOTER: u32;
fn targets(maybe_max_len: Option<usize>) -> Result<(Vec<AccountId>, Weight)>;
fn voters(
maybe_max_len: Option<usize>
) -> Result<(Vec<(AccountId, VoteWeight, Vec<AccountId>)>, Weight)>;
fn desired_targets() -> Result<(u32, Weight)>;
fn next_election_prediction(now: BlockNumber) -> BlockNumber;
fn put_snapshot(
_voters: Vec<(AccountId, VoteWeight, Vec<AccountId>)>,
_targets: Vec<AccountId>,
_target_stake: Option<VoteWeight>
) { ... }
fn add_voter(
_voter: AccountId,
_weight: VoteWeight,
_targets: Vec<AccountId>
) { ... }
fn add_target(_target: AccountId) { ... }
fn clear() { ... }
}Expand description
Something that can provide the data to an ElectionProvider.
Associated Constants
const MAXIMUM_VOTES_PER_VOTER: u32
const MAXIMUM_VOTES_PER_VOTER: u32Maximum number of votes per voter that this data provider is providing.
Required methods
All possible targets for the election, i.e. the candidates.
If maybe_max_len is Some(v) then the resulting vector MUST NOT be longer than v items
long.
It is assumed that this function will only consume a notable amount of weight, when it
returns Ok(_).
All possible voters for the election.
Note that if a notion of self-vote exists, it should be represented here.
If maybe_max_len is Some(v) then the resulting vector MUST NOT be longer than v items
long.
It is assumed that this function will only consume a notable amount of weight, when it
returns Ok(_).
fn next_election_prediction(now: BlockNumber) -> BlockNumber
fn next_election_prediction(now: BlockNumber) -> BlockNumberProvide a best effort prediction about when the next election is about to happen.
In essence, the implementor should predict with this function when it will trigger the
ElectionProvider::elect.
This is only useful for stateful election providers.
Provided methods
fn put_snapshot(
_voters: Vec<(AccountId, VoteWeight, Vec<AccountId>)>,
_targets: Vec<AccountId>,
_target_stake: Option<VoteWeight>
)
fn put_snapshot(
_voters: Vec<(AccountId, VoteWeight, Vec<AccountId>)>,
_targets: Vec<AccountId>,
_target_stake: Option<VoteWeight>
)Utility function only to be used in benchmarking scenarios, to be implemented optionally, else a noop.
fn add_voter(_voter: AccountId, _weight: VoteWeight, _targets: Vec<AccountId>)
fn add_voter(_voter: AccountId, _weight: VoteWeight, _targets: Vec<AccountId>)Utility function only to be used in benchmarking scenarios, to be implemented optionally, else a noop.
Same as put_snapshot, but can add a single voter one by one.
fn add_target(_target: AccountId)
fn add_target(_target: AccountId)Utility function only to be used in benchmarking scenarios, to be implemented optionally, else a noop.
Same as put_snapshot, but can add a single voter one by one.