mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-13 07:01:05 +00:00
Make the number of nominations configurable (#8368)
* Base features and traits. * pallet and unsigned phase * Undo bad formattings. * some formatting cleanup. * Small self-cleanup. * Make it all build * self-review * Some doc tests. * Some changes from other PR * Fix session test * Update Cargo.lock * Update frame/election-provider-multi-phase/src/lib.rs Co-authored-by: Guillaume Thiolliere <gui.thiolliere@gmail.com> * Some review comments * Rename + make encode/decode * Do an assert as well, just in case. * Fix build * Update frame/election-provider-multi-phase/src/unsigned.rs Co-authored-by: Guillaume Thiolliere <gui.thiolliere@gmail.com> * Las comment * fix staking fuzzer. * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_election_provider_multi_phase --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/election-provider-multi-phase/src/weights.rs --template=./.maintain/frame-weight-template.hbs * Add one last layer of feasibility check as well. * Last fixes to benchmarks * Some more docs. * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_election_provider_multi_phase --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/election-provider-multi-phase/src/weights.rs --template=./.maintain/frame-weight-template.hbs * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_election_provider_multi_phase --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/election-provider-multi-phase/src/weights.rs --template=./.maintain/frame-weight-template.hbs * Some nits * It all works * Some self cleanup * Update frame/staking/src/lib.rs Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * remove most todos. * Round of self-review. * Fix migration * clean macro * Revert wrong merge * Make the number of nominations configurable * Self reivew * renmae. Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com> Co-authored-by: Guillaume Thiolliere <gui.thiolliere@gmail.com> Co-authored-by: Parity Benchmarking Bot <admin@parity.io> Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
This commit is contained in:
@@ -204,16 +204,20 @@ benchmarks! {
|
||||
kick {
|
||||
// scenario: we want to kick `k` nominators from nominating us (we are a validator).
|
||||
// we'll assume that `k` is under 128 for the purposes of determining the slope.
|
||||
// each nominator should have `MAX_NOMINATIONS` validators nominated, and our validator
|
||||
// each nominator should have `T::MAX_NOMINATIONS` validators nominated, and our validator
|
||||
// should be somewhere in there.
|
||||
let k in 1 .. 128;
|
||||
|
||||
// these are the other validators; there are `MAX_NOMINATIONS - 1` of them, so there are a
|
||||
// total of `MAX_NOMINATIONS` validators in the system.
|
||||
let rest_of_validators = create_validators::<T>(MAX_NOMINATIONS as u32 - 1, 100)?;
|
||||
// these are the other validators; there are `T::MAX_NOMINATIONS - 1` of them, so
|
||||
// there are a total of `T::MAX_NOMINATIONS` validators in the system.
|
||||
let rest_of_validators = create_validators::<T>(T::MAX_NOMINATIONS - 1, 100)?;
|
||||
|
||||
// this is the validator that will be kicking.
|
||||
let (stash, controller) = create_stash_controller::<T>(MAX_NOMINATIONS as u32 - 1, 100, Default::default())?;
|
||||
let (stash, controller) = create_stash_controller::<T>(
|
||||
T::MAX_NOMINATIONS - 1,
|
||||
100,
|
||||
Default::default(),
|
||||
)?;
|
||||
let stash_lookup: <T::Lookup as StaticLookup>::Source = T::Lookup::unlookup(stash.clone());
|
||||
|
||||
// they start validating.
|
||||
@@ -224,7 +228,11 @@ benchmarks! {
|
||||
let mut nominator_stashes = Vec::with_capacity(k as usize);
|
||||
for i in 0 .. k {
|
||||
// create a nominator stash.
|
||||
let (n_stash, n_controller) = create_stash_controller::<T>(MAX_NOMINATIONS as u32 + i, 100, Default::default())?;
|
||||
let (n_stash, n_controller) = create_stash_controller::<T>(
|
||||
T::MAX_NOMINATIONS + i,
|
||||
100,
|
||||
Default::default(),
|
||||
)?;
|
||||
|
||||
// bake the nominations; we first clone them from the rest of the validators.
|
||||
let mut nominations = rest_of_validators.clone();
|
||||
@@ -256,9 +264,9 @@ benchmarks! {
|
||||
}
|
||||
}
|
||||
|
||||
// Worst case scenario, MAX_NOMINATIONS
|
||||
// Worst case scenario, T::MAX_NOMINATIONS
|
||||
nominate {
|
||||
let n in 1 .. MAX_NOMINATIONS as u32;
|
||||
let n in 1 .. T::MAX_NOMINATIONS;
|
||||
let (stash, controller) = create_stash_controller::<T>(n + 1, 100, Default::default())?;
|
||||
let validators = create_validators::<T>(n, 100)?;
|
||||
whitelist_account!(controller);
|
||||
@@ -467,7 +475,13 @@ benchmarks! {
|
||||
let v in 1 .. 10;
|
||||
let n in 1 .. 100;
|
||||
|
||||
create_validators_with_nominators_for_era::<T>(v, n, MAX_NOMINATIONS, false, None)?;
|
||||
create_validators_with_nominators_for_era::<T>(
|
||||
v,
|
||||
n,
|
||||
<T as Config>::MAX_NOMINATIONS as usize,
|
||||
false,
|
||||
None,
|
||||
)?;
|
||||
let session_index = SessionIndex::one();
|
||||
}: {
|
||||
let validators = Staking::<T>::new_era(session_index).ok_or("`new_era` failed")?;
|
||||
@@ -478,7 +492,13 @@ benchmarks! {
|
||||
payout_all {
|
||||
let v in 1 .. 10;
|
||||
let n in 1 .. 100;
|
||||
create_validators_with_nominators_for_era::<T>(v, n, MAX_NOMINATIONS, false, None)?;
|
||||
create_validators_with_nominators_for_era::<T>(
|
||||
v,
|
||||
n,
|
||||
<T as Config>::MAX_NOMINATIONS as usize,
|
||||
false,
|
||||
None,
|
||||
)?;
|
||||
// Start a new Era
|
||||
let new_validators = Staking::<T>::new_era(SessionIndex::one()).unwrap();
|
||||
assert!(new_validators.len() == v as usize);
|
||||
@@ -548,7 +568,7 @@ benchmarks! {
|
||||
// total number of slashing spans. Assigned to validators randomly.
|
||||
let s in 1 .. 20;
|
||||
|
||||
let validators = create_validators_with_nominators_for_era::<T>(v, n, MAX_NOMINATIONS, false, None)?
|
||||
let validators = create_validators_with_nominators_for_era::<T>(v, n, T::MAX_NOMINATIONS as usize, false, None)?
|
||||
.into_iter()
|
||||
.map(|v| T::Lookup::lookup(v).unwrap())
|
||||
.collect::<Vec<_>>();
|
||||
@@ -567,7 +587,7 @@ benchmarks! {
|
||||
// number of nominator intention.
|
||||
let n = 500;
|
||||
|
||||
let _ = create_validators_with_nominators_for_era::<T>(v, n, MAX_NOMINATIONS, false, None)?;
|
||||
let _ = create_validators_with_nominators_for_era::<T>(v, n, T::MAX_NOMINATIONS as usize, false, None)?;
|
||||
}: {
|
||||
let targets = <Staking<T>>::get_npos_targets();
|
||||
assert_eq!(targets.len() as u32, v);
|
||||
@@ -586,8 +606,13 @@ mod tests {
|
||||
let v = 10;
|
||||
let n = 100;
|
||||
|
||||
create_validators_with_nominators_for_era::<Test>(v, n, MAX_NOMINATIONS, false, None)
|
||||
.unwrap();
|
||||
create_validators_with_nominators_for_era::<Test>(
|
||||
v,
|
||||
n,
|
||||
<Test as Config>::MAX_NOMINATIONS as usize,
|
||||
false,
|
||||
None,
|
||||
).unwrap();
|
||||
|
||||
let count_validators = Validators::<Test>::iter().count();
|
||||
let count_nominators = Nominators::<Test>::iter().count();
|
||||
|
||||
Reference in New Issue
Block a user