mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-26 13:27:57 +00:00
Abstracts elections-phragmen pallet to use NposSolver (#12588)
* Abstracts elections-phragmen pallet to use NposSolver * Update frame/elections-phragmen/src/lib.rs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * Update frame/elections-phragmen/src/lib.rs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * changes the name of the pallet; adds changelog * update changelog * Adds weight testing * Adds log macro_rules * renames elections-phragment dir to elections * weights rename * fixes typo in cargo toml * pre/post solve weight scafolding * refactor do_post_election * refactors into pre and post election solve for independent benchmarking * deconstructs PreElectionResults struct * updates benchmarking pre and post election solve; mock weights * Update frame/elections/src/lib.rs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * Update frame/elections/src/lib.rs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * addresses PR comments * adds pre_solve and post_sove weights * Adds comments on election pallet id param name change * ".git/.scripts/bench-bot.sh" pallet dev pallet_elections * Finishes pre-post solve weights * Update frame/elections/src/lib.rs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * Update frame/elections/src/lib.rs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * Addresses PR comments: no panic in on_init path; nits * Fixes node build * Implements approval voting to use as a `NposSolver` (#13367) * Implements the approval voting methods in sp_npos_elections * fmt * remove unecessary file * comment clarification * re-run weights * fix typo * updates MaxVoters in tests for integrity_tests to pass * Refactors election provider support benchmarks outside its own crate (#13431) * Refactors election provider support benchmarks outside its own crate --------- Co-authored-by: command-bot <> --------- Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Co-authored-by: parity-processbot <> Co-authored-by: Ross Bulat <ross@parity.io>
This commit is contained in:
@@ -24,7 +24,8 @@
|
||||
|
||||
use codec::{Decode, Encode, MaxEncodedLen};
|
||||
use frame_election_provider_support::{
|
||||
onchain, BalancingConfig, ElectionDataProvider, SequentialPhragmen, VoteWeight,
|
||||
onchain, weights::SubstrateWeight, ApprovalVoting, BalancingConfig, ElectionDataProvider,
|
||||
SequentialPhragmen, VoteWeight,
|
||||
};
|
||||
use frame_support::{
|
||||
construct_runtime,
|
||||
@@ -1010,18 +1011,21 @@ parameter_types! {
|
||||
pub const TermDuration: BlockNumber = 7 * DAYS;
|
||||
pub const DesiredMembers: u32 = 13;
|
||||
pub const DesiredRunnersUp: u32 = 7;
|
||||
pub const MaxVotesPerVoter: u32 = 16;
|
||||
pub const MaxVoters: u32 = 512;
|
||||
pub const MaxCandidates: u32 = 64;
|
||||
pub const ElectionsPhragmenPalletId: LockIdentifier = *b"phrelect";
|
||||
pub const MaxVotesPerVoter: u32 = 16;
|
||||
// The ElectionsPalletId parameter name was changed along with the renaming of the elections
|
||||
// pallet, but we keep the same lock ID to prevent a migration from current runtimes.
|
||||
// Related to https://github.com/paritytech/substrate/issues/8250
|
||||
pub const ElectionsPalletId: LockIdentifier = *b"phrelect";
|
||||
}
|
||||
|
||||
// Make sure that there are no more than `MaxMembers` members elected via elections-phragmen.
|
||||
const_assert!(DesiredMembers::get() <= CouncilMaxMembers::get());
|
||||
|
||||
impl pallet_elections_phragmen::Config for Runtime {
|
||||
impl pallet_elections::Config for Runtime {
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
type PalletId = ElectionsPhragmenPalletId;
|
||||
type PalletId = ElectionsPalletId;
|
||||
type Currency = Balances;
|
||||
type ChangeMembers = Council;
|
||||
// NOTE: this implies that council's genesis members cannot be set directly and must come from
|
||||
@@ -1039,7 +1043,9 @@ impl pallet_elections_phragmen::Config for Runtime {
|
||||
type MaxVoters = MaxVoters;
|
||||
type MaxVotesPerVoter = MaxVotesPerVoter;
|
||||
type MaxCandidates = MaxCandidates;
|
||||
type WeightInfo = pallet_elections_phragmen::weights::SubstrateWeight<Runtime>;
|
||||
type ElectionSolver = ApprovalVoting<Self::AccountId, Perbill>;
|
||||
type SolverWeightInfo = SubstrateWeight<Runtime>;
|
||||
type WeightInfo = pallet_elections::weights::SubstrateWeight<Runtime>;
|
||||
}
|
||||
|
||||
parameter_types! {
|
||||
@@ -1737,7 +1743,7 @@ construct_runtime!(
|
||||
Democracy: pallet_democracy,
|
||||
Council: pallet_collective::<Instance1>,
|
||||
TechnicalCommittee: pallet_collective::<Instance2>,
|
||||
Elections: pallet_elections_phragmen,
|
||||
Elections: pallet_elections,
|
||||
TechnicalMembership: pallet_membership::<Instance1>,
|
||||
Grandpa: pallet_grandpa,
|
||||
Treasury: pallet_treasury,
|
||||
@@ -1851,6 +1857,7 @@ mod benches {
|
||||
frame_benchmarking::define_benchmarks!(
|
||||
[frame_benchmarking, BaselineBench::<Runtime>]
|
||||
[frame_benchmarking_pallet_pov, Pov]
|
||||
[frame_election_provider_support, EPSBench::<Runtime>]
|
||||
[pallet_alliance, Alliance]
|
||||
[pallet_assets, Assets]
|
||||
[pallet_babe, Babe]
|
||||
@@ -1863,8 +1870,7 @@ mod benches {
|
||||
[pallet_contracts, Contracts]
|
||||
[pallet_democracy, Democracy]
|
||||
[pallet_election_provider_multi_phase, ElectionProviderMultiPhase]
|
||||
[pallet_election_provider_support_benchmarking, EPSBench::<Runtime>]
|
||||
[pallet_elections_phragmen, Elections]
|
||||
[pallet_elections, Elections]
|
||||
[pallet_fast_unstake, FastUnstake]
|
||||
[pallet_nis, Nis]
|
||||
[pallet_grandpa, Grandpa]
|
||||
@@ -2279,7 +2285,7 @@ impl_runtime_apis! {
|
||||
// which is why we need these two lines below.
|
||||
use pallet_session_benchmarking::Pallet as SessionBench;
|
||||
use pallet_offences_benchmarking::Pallet as OffencesBench;
|
||||
use pallet_election_provider_support_benchmarking::Pallet as EPSBench;
|
||||
use frame_election_provider_support::benchmarking::Pallet as EPSBench;
|
||||
use frame_system_benchmarking::Pallet as SystemBench;
|
||||
use baseline::Pallet as BaselineBench;
|
||||
use pallet_nomination_pools_benchmarking::Pallet as NominationPoolsBench;
|
||||
@@ -2302,14 +2308,14 @@ impl_runtime_apis! {
|
||||
// which is why we need these two lines below.
|
||||
use pallet_session_benchmarking::Pallet as SessionBench;
|
||||
use pallet_offences_benchmarking::Pallet as OffencesBench;
|
||||
use pallet_election_provider_support_benchmarking::Pallet as EPSBench;
|
||||
use frame_election_provider_support::benchmarking::Pallet as EPSBench;
|
||||
use frame_system_benchmarking::Pallet as SystemBench;
|
||||
use baseline::Pallet as BaselineBench;
|
||||
use pallet_nomination_pools_benchmarking::Pallet as NominationPoolsBench;
|
||||
|
||||
impl pallet_session_benchmarking::Config for Runtime {}
|
||||
impl pallet_offences_benchmarking::Config for Runtime {}
|
||||
impl pallet_election_provider_support_benchmarking::Config for Runtime {}
|
||||
impl frame_election_provider_support::benchmarking::Config for Runtime {}
|
||||
impl frame_system_benchmarking::Config for Runtime {}
|
||||
impl baseline::Config for Runtime {}
|
||||
impl pallet_nomination_pools_benchmarking::Config for Runtime {}
|
||||
|
||||
Reference in New Issue
Block a user