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.