pub trait NposSolver {
    type AccountId: IdentifierT;
    type Accuracy: PerThing128;
    type Error: Debug + PartialEq;

    // Required methods
    fn solve(
        to_elect: usize,
        targets: Vec<Self::AccountId>,
        voters: Vec<(Self::AccountId, VoteWeight, impl IntoIterator<Item = Self::AccountId>)>
    ) -> Result<ElectionResult<Self::AccountId, Self::Accuracy>, Self::Error>;
    fn weight<T: WeightInfo>(
        voters: u32,
        targets: u32,
        vote_degree: u32
    ) -> Weight;
}
Expand description

Something that can compute the result to an NPoS solution.

Required Associated Types§

source

type AccountId: IdentifierT

The account identifier type of this solver.

source

type Accuracy: PerThing128

The accuracy of this solver. This will affect the accuracy of the output.

source

type Error: Debug + PartialEq

The error type of this implementation.

Required Methods§

source

fn solve( to_elect: usize, targets: Vec<Self::AccountId>, voters: Vec<(Self::AccountId, VoteWeight, impl IntoIterator<Item = Self::AccountId>)> ) -> Result<ElectionResult<Self::AccountId, Self::Accuracy>, Self::Error>

Solve an NPoS solution with the given voters, targets, and select to_elect count of targets.

source

fn weight<T: WeightInfo>(voters: u32, targets: u32, vote_degree: u32) -> Weight

Measure the weight used in the calculation of the solver.

  • voters is the number of voters.
  • targets is the number of targets.
  • vote_degree is the degree ie the maximum numbers of votes per voter.

Implementors§

source§

impl<AccountId: IdentifierT, Accuracy: PerThing128, Balancing: Get<Option<BalancingConfig>>> NposSolver for PhragMMS<AccountId, Accuracy, Balancing>

§

type AccountId = AccountId

§

type Accuracy = Accuracy

§

type Error = Error

source§

impl<AccountId: IdentifierT, Accuracy: PerThing128, Balancing: Get<Option<BalancingConfig>>> NposSolver for SequentialPhragmen<AccountId, Accuracy, Balancing>

§

type AccountId = AccountId

§

type Accuracy = Accuracy

§

type Error = Error