pub fn select_authorities<SC>(
registered_seats: u16,
permissioned_seats: u16,
registered_candidates: Vec<(SC, Weight)>,
permissioned_candidates: Vec<SC>,
seed: <ChaCha20Rng as SeedableRng>::Seed,
) -> Option<Vec<SC>>
Expand description
Selects committee according to D-parameter and candidates lists.
Resulting committee has size of registered_seats + permissioned_seats
.
If both registered_candidates
and permissioned_candidates
are not empty then the
selected committee has exactly registered_seats
assigned to registered_candidates
.
Let E_i
be the expected number of places in the resulting committee of candidate i
calculated from D-parameter and its weight relative to other candidates.
Then candidate i
is guaranteed to get at least floor[E_i]
seats.
Edge cases:
If candidates of one type are missing, then their seats are assigned to candidates of other
type. It is because D-parameter is desired not mandatory ratio.
If registered_seats
and permissioned_seats
are 0, empty committee is returned.
It is same as for original Ariadne.
This function returns same selection regardless of input vectors ordering.