Governance v2 (Kusama only) (#5205)

* First bits

* Create new origins

* Repot governance configs

* Tests for treasury spends

* Integrate treasury spend threshold origins

* Bump deps

* Add whitelist, configure treasury spend origins

* Add governance curves

* Enable curve's ceil to be configured

* Make compile

* Rest of new governance params

* Build fixes

* Fixes

* Fix warning

* Use new EnsureOrigin::try_successful_origin

* Some repotting

* Add files

* Ready for initial review

* Fixes

* Formatting

* Bump

* rename

* Derive MEL for Origin enum

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Add benchmarks

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* ".git/.scripts/bench-bot.sh" runtime kusama-dev pallet_conviction_voting

* Update Cargo.lock

* Update runtime/kusama/src/governance/origins.rs

Co-authored-by: Xiliang Chen <xlchen1291@gmail.com>

* allow root to demote and promote, fixing benchmarks

* fix whitelist origin benchmarks

* typo

* cargo update -p sp-io

* add second referenda instance to benchmarks

* allow root to act as a 9th dan in track

* feature flag it

* cargo update -p sp-io

* fix merge

* ".git/.scripts/bench-bot.sh" runtime kusama-dev pallet_referenda

* ".git/.scripts/bench-bot.sh" runtime kusama-dev pallet_conviction_voting

* allow root to create auction

* Update mod.rs

* more origin fixes

* root isnt needed actually

* cargo update -p sp-io

* allow root to cancel slash

* initial stuff

* make copy data from kusama

* ".git/.scripts/bench-bot.sh" runtime kusama-dev pallet_referenda

* Update Cargo.lock

* commit new weight files

* more files

* use weight files

* ".git/.scripts/bench-bot.sh" runtime kusama-dev pallet_referenda

* Update Cargo.lock

* Update to latest master

* Formatting

* ".git/.scripts/bench-bot.sh" runtime kusama-dev pallet_ranked_collective

* ".git/.scripts/bench-bot.sh" runtime kusama-dev pallet_conviction_voting

* ".git/.scripts/bench-bot.sh" runtime kusama-dev pallet_conviction_voting

* ".git/.scripts/bench-bot.sh" runtime kusama-dev pallet_whitelist

* Rename Origin -> RuntimeOrigin

This was done in Substrate and is now needed here as well.

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* cargo update -p sp-io

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Tech Committee can promote to VI Dan

* Update runtime/kusama/src/governance/mod.rs

Co-authored-by: Amar Singh <asinghchrony@protonmail.com>

* Formatting

* Update runtime/kusama/src/governance/fellowship.rs

Co-authored-by: Amar Singh <asinghchrony@protonmail.com>

* Fixes

* Avoid updating extraneous deps

* Fix broken stuff

* ".git/.scripts/bench-bot.sh" runtime kusama-dev pallet_referenda

* Update runtime/kusama/src/governance/fellowship.rs

* Reorder EitherOf origins

Zero logic change to make the benchmarking work.
It uses the first successful origin which can only promote to rank 6.
By swapping the order we use Root which can always promote.

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Revert param change and update doc

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: command-bot <>
Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
Co-authored-by: Xiliang Chen <xlchen1291@gmail.com>
Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>
Co-authored-by: Amar Singh <asinghchrony@protonmail.com>
This commit is contained in:
Gavin Wood
2022-10-03 17:33:46 +01:00
committed by GitHub
parent 32ccf86a43
commit 5d2f81035f
20 changed files with 1946 additions and 66 deletions
@@ -0,0 +1,116 @@
// Copyright 2017-2022 Parity Technologies (UK) Ltd.
// This file is part of Polkadot.
// Polkadot is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Polkadot is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Polkadot. If not, see <http://www.gnu.org/licenses/>.
//! Autogenerated weights for `pallet_ranked_collective`
//!
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
//! DATE: 2022-09-16, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]`
//! HOSTNAME: `bm3`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz`
//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 1024
// Executed Command:
// /home/benchbot/cargo_target_dir/production/polkadot
// benchmark
// pallet
// --steps=50
// --repeat=20
// --extrinsic=*
// --execution=wasm
// --wasm-execution=compiled
// --heap-pages=4096
// --pallet=pallet_ranked_collective
// --chain=kusama-dev
// --header=./file_header.txt
// --output=./runtime/kusama/src/weights/
#![cfg_attr(rustfmt, rustfmt_skip)]
#![allow(unused_parens)]
#![allow(unused_imports)]
use frame_support::{traits::Get, weights::{Weight}};
use sp_std::marker::PhantomData;
/// Weight functions for `pallet_ranked_collective`.
pub struct WeightInfo<T>(PhantomData<T>);
impl<T: frame_system::Config> pallet_ranked_collective::WeightInfo for WeightInfo<T> {
// Storage: FellowshipCollective Members (r:1 w:1)
// Storage: FellowshipCollective MemberCount (r:1 w:1)
// Storage: FellowshipCollective IndexToId (r:0 w:1)
// Storage: FellowshipCollective IdToIndex (r:0 w:1)
fn add_member() -> Weight {
Weight::from_ref_time(20_797_000 as u64)
.saturating_add(T::DbWeight::get().reads(2 as u64))
.saturating_add(T::DbWeight::get().writes(4 as u64))
}
// Storage: FellowshipCollective Members (r:1 w:1)
// Storage: FellowshipCollective MemberCount (r:1 w:1)
// Storage: FellowshipCollective IdToIndex (r:1 w:1)
// Storage: FellowshipCollective IndexToId (r:1 w:1)
/// The range of component `r` is `[0, 10]`.
fn remove_member(r: u32, ) -> Weight {
Weight::from_ref_time(30_196_000 as u64)
// Standard Error: 10_539
.saturating_add(Weight::from_ref_time(9_633_382 as u64).saturating_mul(r as u64))
.saturating_add(T::DbWeight::get().reads(4 as u64))
.saturating_add(T::DbWeight::get().reads((3 as u64).saturating_mul(r as u64)))
.saturating_add(T::DbWeight::get().writes(4 as u64))
.saturating_add(T::DbWeight::get().writes((3 as u64).saturating_mul(r as u64)))
}
// Storage: FellowshipCollective Members (r:1 w:1)
// Storage: FellowshipCollective MemberCount (r:1 w:1)
// Storage: FellowshipCollective IndexToId (r:0 w:1)
// Storage: FellowshipCollective IdToIndex (r:0 w:1)
/// The range of component `r` is `[0, 10]`.
fn promote_member(r: u32, ) -> Weight {
Weight::from_ref_time(21_958_000 as u64)
// Standard Error: 3_398
.saturating_add(Weight::from_ref_time(527_087 as u64).saturating_mul(r as u64))
.saturating_add(T::DbWeight::get().reads(2 as u64))
.saturating_add(T::DbWeight::get().writes(4 as u64))
}
// Storage: FellowshipCollective Members (r:1 w:1)
// Storage: FellowshipCollective MemberCount (r:1 w:1)
// Storage: FellowshipCollective IdToIndex (r:1 w:1)
// Storage: FellowshipCollective IndexToId (r:1 w:1)
/// The range of component `r` is `[0, 10]`.
fn demote_member(r: u32, ) -> Weight {
Weight::from_ref_time(29_934_000 as u64)
// Standard Error: 11_453
.saturating_add(Weight::from_ref_time(884_044 as u64).saturating_mul(r as u64))
.saturating_add(T::DbWeight::get().reads(4 as u64))
.saturating_add(T::DbWeight::get().writes(4 as u64))
}
// Storage: FellowshipCollective Members (r:1 w:0)
// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
// Storage: FellowshipCollective Voting (r:1 w:1)
// Storage: Scheduler Agenda (r:2 w:2)
fn vote() -> Weight {
Weight::from_ref_time(45_989_000 as u64)
.saturating_add(T::DbWeight::get().reads(5 as u64))
.saturating_add(T::DbWeight::get().writes(4 as u64))
}
// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:0)
// Storage: FellowshipCollective VotingCleanup (r:1 w:0)
// Storage: FellowshipCollective Voting (r:0 w:1)
/// The range of component `n` is `[1, 100]`.
fn cleanup_poll(n: u32, ) -> Weight {
Weight::from_ref_time(17_842_000 as u64)
// Standard Error: 733
.saturating_add(Weight::from_ref_time(892_322 as u64).saturating_mul(n as u64))
.saturating_add(T::DbWeight::get().reads(2 as u64))
.saturating_add(T::DbWeight::get().writes(1 as u64))
.saturating_add(T::DbWeight::get().writes((1 as u64).saturating_mul(n as u64)))
}
}