Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Abstracts elections-phragmen pallet to use NposSolver (v2) #13453

Open
wants to merge 91 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
b714023
Abstracts elections-phragmen pallet to use NposSolver
gpestana Oct 31, 2022
452292f
Update frame/elections-phragmen/src/lib.rs
gpestana Nov 8, 2022
bf8d1c2
Update frame/elections-phragmen/src/lib.rs
gpestana Nov 8, 2022
5fa443e
changes the name of the pallet; adds changelog
gpestana Nov 8, 2022
f71c095
update changelog
gpestana Nov 8, 2022
e37206c
Adds weight testing
gpestana Nov 9, 2022
f7e970d
Adds log macro_rules
gpestana Nov 9, 2022
7b86c86
renames elections-phragment dir to elections
gpestana Nov 9, 2022
7ab9113
Merge remote-tracking branch 'origin/master' into gpestana8250_nposso…
Nov 13, 2022
e21f6ae
weights rename
gpestana Nov 13, 2022
e9c3daf
fixes typo in cargo toml
gpestana Nov 14, 2022
5d947af
pre/post solve weight scafolding
gpestana Nov 15, 2022
ecd7b63
refactor do_post_election
gpestana Nov 15, 2022
090aa90
refactors into pre and post election solve for independent benchmarking
gpestana Nov 15, 2022
1e2ef46
deconstructs PreElectionResults struct
gpestana Nov 15, 2022
d4b8c4e
updates benchmarking pre and post election solve; mock weights
gpestana Nov 16, 2022
c8a3508
Update frame/elections/src/lib.rs
gpestana Nov 17, 2022
8021572
Update frame/elections/src/lib.rs
gpestana Nov 17, 2022
c3db2cb
addresses PR comments
gpestana Nov 17, 2022
482dde3
adds pre_solve and post_sove weights
gpestana Nov 17, 2022
9749d12
Adds comments on election pallet id param name change
gpestana Nov 20, 2022
cbc8386
resolves conflict
gpestana Nov 20, 2022
4d51390
Merge branch 'master' of https://github.com/paritytech/substrate into…
Nov 21, 2022
26f9848
".git/.scripts/bench-bot.sh" pallet dev pallet_elections
Nov 22, 2022
afce2d2
Finishes pre-post solve weights
gpestana Nov 22, 2022
4208375
Update frame/elections/src/lib.rs
gpestana Nov 29, 2022
85e5a70
Update frame/elections/src/lib.rs
gpestana Nov 29, 2022
443f73d
Addresses PR comments: no panic in on_init path; nits
gpestana Nov 29, 2022
8945d96
Merge branch 'master' into gpestana8250_npossolver
gpestana Dec 8, 2022
7636999
Merge branch 'master' into gpestana8250_npossolver
gpestana Dec 12, 2022
0dc67e0
Merge branch 'master' into gpestana8250_npossolver
gpestana Jan 12, 2023
321b654
Fixes node build
gpestana Jan 12, 2023
ac36d28
Merge remote-tracking branch 'origin/master' into gpestana8250_nposso…
Jan 12, 2023
ee19357
Merge branch 'master' into gpestana8250_npossolver
gpestana Feb 8, 2023
e94d7a5
Merge branch 'master' into gpestana8250_npossolver
gpestana Feb 8, 2023
69111d9
Merge branch 'master' into gpestana8250_npossolver
gpestana Feb 14, 2023
bfe6fd9
Merge branch 'master' into gpestana8250_npossolver
gpestana Feb 15, 2023
8a1ebac
Merge branch 'master' into gpestana8250_npossolver
gpestana Feb 17, 2023
5343a6c
Implements approval voting to use as a `NposSolver` (#13367)
gpestana Feb 17, 2023
59900fc
fmt
gpestana Feb 20, 2023
da3339e
remove unecessary file
gpestana Feb 20, 2023
fea82e8
comment clarification
gpestana Feb 20, 2023
c1f5225
Merge remote-tracking branch 'origin/master' into gpestana8250_nposso…
Feb 20, 2023
64df412
re-run weights
Feb 20, 2023
614fe8a
fix typo
Feb 20, 2023
04483c6
updates MaxVoters in tests for integrity_tests to pass
gpestana Feb 20, 2023
51258d2
Merge remote-tracking branch 'origin/master' into gpestana8250_nposso…
Feb 21, 2023
281f7b8
Merge branch 'master' into gpestana8250_npossolver
gpestana Feb 22, 2023
70ea87a
Refactors election provider support benchmarks outside its own crate …
gpestana Feb 22, 2023
49e36db
Merge branch 'master' into gpestana8250_npossolver
gpestana Feb 22, 2023
f5e9b71
Merge branch 'master' into gpestana8250_npossolver
gpestana Feb 23, 2023
81476b5
Merge branch 'master' into gpestana8250_npossolver_v2
gpestana Feb 23, 2023
fc710f9
Fixes election integrity_test
gpestana Feb 23, 2023
8daefd5
Fixes elections pallet benchmarks
gpestana Feb 28, 2023
e743a47
reverts cargo.lock to master
gpestana Feb 28, 2023
9485e8e
Merge branch 'master' into gpestana8250_npossolver_v2
gpestana Feb 28, 2023
0bab088
updates cargo lock
gpestana Feb 28, 2023
a3afb80
".git/.scripts/commands/bench/bench.sh" pallet dev frame_election_pro…
Feb 28, 2023
5735f14
small fix election provider benchmarks
gpestana Mar 7, 2023
9efbc33
Merge branch 'master' into gpestana8250_npossolver_v2
gpestana Mar 7, 2023
85dcf66
Merge branch 'master' into gpestana8250_npossolver_v2
gpestana Mar 16, 2023
aa02fcf
Merge branch 'master' into gpestana8250_npossolver_v2
gpestana Mar 20, 2023
1f623b7
merge master
gpestana Mar 20, 2023
ea423a8
".git/.scripts/commands/bench/bench.sh" pallet dev frame-election-pro…
Mar 20, 2023
ec2ae04
Updates election provider support benchmarks
gpestana Mar 20, 2023
353d3d2
Merge branch 'master' of https://github.com/paritytech/substrate into…
Mar 20, 2023
cbee1ca
".git/.scripts/commands/bench/bench.sh" pallet dev frame_election_pro…
Mar 20, 2023
e42b9ad
Adds benchs feat flags
gpestana Mar 20, 2023
d872321
Merge branch 'master' of https://github.com/paritytech/substrate into…
Mar 20, 2023
dbe142c
".git/.scripts/commands/bench/bench.sh" pallet dev frame_election_pro…
Mar 20, 2023
972c44f
Merge branch 'master' of https://github.com/paritytech/substrate into…
Mar 20, 2023
dbdfcaa
".git/.scripts/commands/bench/bench.sh" pallet dev pallet_elections
Mar 20, 2023
d361d51
Adds comments to election pallet benchmarks
gpestana Mar 21, 2023
fb2a3f5
Fixes election-support benchmarks
gpestana Mar 22, 2023
b2234f1
Merge branch 'master' into gpestana8250_npossolver_v2
gpestana Mar 22, 2023
6d88cdc
".git/.scripts/commands/bench/bench.sh" pallet dev frame-election-pro…
Mar 22, 2023
f057ece
Adds comments to election support benchs and small fixes
gpestana Mar 23, 2023
c23ed8c
Merge branch 'master' of https://github.com/paritytech/substrate into…
Mar 23, 2023
47fc48a
".git/.scripts/commands/bench/bench.sh" pallet dev frame-election-pro…
Mar 23, 2023
2e0e62b
re-order v and c in benchmarking
gpestana Mar 23, 2023
538075b
".git/.scripts/commands/bench/bench.sh" pallet dev frame-election-pro…
Mar 23, 2023
7c4ab18
Fixes bench comments; adds clamp to make sure the boundaries are correct
gpestana Mar 23, 2023
697a015
renames degree in election benches
gpestana Mar 23, 2023
08ecc79
Merge branch 'master' into gpestana8250_npossolver_v2
gpestana Mar 24, 2023
1d85152
".git/.scripts/commands/bench/bench.sh" pallet dev frame-election-pro…
Mar 24, 2023
f8afe63
Merge branch 'master' into gpestana8250_npossolver_v2
gpestana Mar 31, 2023
19d9514
Merge branch 'master' into gpestana8250_npossolver_v2
gpestana Mar 31, 2023
e9ecd6b
Merge branch 'master' into gpestana8250_npossolver_v2
gpestana May 1, 2023
c78a07f
".git/.scripts/commands/bench/bench.sh" pallet dev pallet-elections
May 1, 2023
17a1ec3
".git/.scripts/commands/bench/bench.sh" pallet dev frame-election-pro…
May 1, 2023
ac66f93
ping
gpestana Jul 1, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,190 changes: 663 additions & 527 deletions Cargo.lock

Large diffs are not rendered by default.

3 changes: 1 addition & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -98,10 +98,9 @@ members = [
"frame/democracy",
"frame/fast-unstake",
"frame/try-runtime",
"frame/elections-phragmen",
"frame/elections",
"frame/election-provider-multi-phase",
"frame/election-provider-support",
"frame/election-provider-support/benchmarking",
"frame/election-provider-support/solution-type",
"frame/election-provider-support/solution-type/fuzzer",
"frame/examples/basic",
Expand Down
12 changes: 5 additions & 7 deletions bin/node/runtime/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,7 @@ pallet-conviction-voting = { version = "4.0.0-dev", default-features = false, pa
pallet-core-fellowship = { version = "4.0.0-dev", default-features = false, path = "../../../frame/core-fellowship" }
pallet-democracy = { version = "4.0.0-dev", default-features = false, path = "../../../frame/democracy" }
pallet-election-provider-multi-phase = { version = "4.0.0-dev", default-features = false, path = "../../../frame/election-provider-multi-phase" }
pallet-election-provider-support-benchmarking = { version = "4.0.0-dev", default-features = false, path = "../../../frame/election-provider-support/benchmarking", optional = true }
pallet-elections-phragmen = { version = "5.0.0-dev", default-features = false, path = "../../../frame/elections-phragmen" }
pallet-elections = { version = "5.0.0-dev", default-features = false, path = "../../../frame/elections" }
pallet-fast-unstake = { version = "4.0.0-dev", default-features = false, path = "../../../frame/fast-unstake" }
pallet-nis = { version = "4.0.0-dev", default-features = false, path = "../../../frame/nis" }
pallet-grandpa = { version = "4.0.0-dev", default-features = false, path = "../../../frame/grandpa" }
Expand Down Expand Up @@ -129,7 +128,6 @@ with-tracing = ["frame-executive/with-tracing"]
std = [
"pallet-whitelist/std",
"pallet-offences-benchmarking?/std",
"pallet-election-provider-support-benchmarking?/std",
"pallet-asset-tx-payment/std",
"frame-system-benchmarking?/std",
"frame-election-provider-support/std",
Expand All @@ -152,7 +150,7 @@ std = [
"pallet-conviction-voting/std",
"pallet-core-fellowship/std",
"pallet-democracy/std",
"pallet-elections-phragmen/std",
"pallet-elections/std",
"pallet-fast-unstake/std",
"frame-executive/std",
"pallet-nis/std",
Expand Down Expand Up @@ -228,6 +226,7 @@ runtime-benchmarks = [
"frame-benchmarking-pallet-pov/runtime-benchmarks",
"frame-support/runtime-benchmarks",
"frame-system/runtime-benchmarks",
"frame-election-provider-support/runtime-benchmarks",
"sp-runtime/runtime-benchmarks",
"pallet-alliance/runtime-benchmarks",
"pallet-assets/runtime-benchmarks",
Expand All @@ -242,8 +241,7 @@ runtime-benchmarks = [
"pallet-core-fellowship/runtime-benchmarks",
"pallet-democracy/runtime-benchmarks",
"pallet-election-provider-multi-phase/runtime-benchmarks",
"pallet-election-provider-support-benchmarking/runtime-benchmarks",
"pallet-elections-phragmen/runtime-benchmarks",
"pallet-elections/runtime-benchmarks",
"pallet-fast-unstake/runtime-benchmarks",
"pallet-nis/runtime-benchmarks",
"pallet-grandpa/runtime-benchmarks",
Expand Down Expand Up @@ -303,7 +301,7 @@ try-runtime = [
"pallet-core-fellowship/try-runtime",
"pallet-democracy/try-runtime",
"pallet-election-provider-multi-phase/try-runtime",
"pallet-elections-phragmen/try-runtime",
"pallet-elections/try-runtime",
"pallet-fast-unstake/try-runtime",
"pallet-nis/try-runtime",
"pallet-grandpa/try-runtime",
Expand Down
30 changes: 18 additions & 12 deletions bin/node/runtime/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -1025,18 +1026,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
Expand All @@ -1054,7 +1058,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! {
Expand Down Expand Up @@ -1778,7 +1784,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,
Expand Down Expand Up @@ -1895,6 +1901,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]
Expand All @@ -1908,8 +1915,7 @@ mod benches {
[pallet_core_fellowship, CoreFellowship]
[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]
Expand Down Expand Up @@ -2390,7 +2396,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;
Expand All @@ -2413,14 +2419,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 {}
Expand Down
2 changes: 0 additions & 2 deletions frame/election-provider-multi-phase/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ frame-election-provider-support = { version = "4.0.0-dev", default-features = fa

# Optional imports for benchmarking
frame-benchmarking = { version = "4.0.0-dev", default-features = false, path = "../benchmarking", optional = true }
pallet-election-provider-support-benchmarking = { version = "4.0.0-dev", default-features = false, path = "../election-provider-support/benchmarking", optional = true }
rand = { version = "0.8.5", default-features = false, features = ["alloc", "small_rng"], optional = true }
strum = { version = "0.24.1", default-features = false, features = ["derive"], optional = true }

Expand All @@ -50,7 +49,6 @@ frame-benchmarking = { version = "4.0.0-dev", path = "../benchmarking" }
[features]
default = ["std"]
std = [
"pallet-election-provider-support-benchmarking?/std",
"codec/std",
"scale-info/std",
"log/std",
Expand Down
Loading