mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 08:11:03 +00:00
Add collectives-westend and glutton-westend runtimes (#2024)
Add collectives and glutton parachain westend runtimes to prepare for #1737. The removal of system parachain native runtimes #1737 is blocked until chainspecs and runtime APIs can be dealt with cleanly (merge of #1256 and follow up PRs). In the meantime, these additions are ready to be merged to `master`, so I have separated them out into this PR. Also marked `bridge-hub-westend` as unimplemented in line with [this issue](https://github.com/paritytech/parity-bridges-common/issues/2602). TODO - [x] add to `command-bot` benchmarks - [x] add to `command-bot-scripts` benchmarks - [x] generate weights --------- Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> Co-authored-by: Muharem <ismailov.m.h@gmail.com> Co-authored-by: command-bot <> Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> Co-authored-by: Branislav Kontur <bkontur@gmail.com>
This commit is contained in:
@@ -0,0 +1,282 @@
|
||||
// Copyright (C) 2022 Parity Technologies (UK) Ltd.
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
//! The Ambassador Program's referenda voting tracks.
|
||||
|
||||
use super::Origin;
|
||||
use crate::{Balance, BlockNumber, RuntimeOrigin, DAYS, DOLLARS, HOURS};
|
||||
use sp_runtime::Perbill;
|
||||
|
||||
/// Referendum `TrackId` type.
|
||||
pub type TrackId = u16;
|
||||
|
||||
/// Referendum track IDs.
|
||||
pub mod constants {
|
||||
use super::TrackId;
|
||||
|
||||
pub const AMBASSADOR_TIER_1: TrackId = 1;
|
||||
pub const AMBASSADOR_TIER_2: TrackId = 2;
|
||||
pub const SENIOR_AMBASSADOR_TIER_3: TrackId = 3;
|
||||
pub const SENIOR_AMBASSADOR_TIER_4: TrackId = 4;
|
||||
pub const HEAD_AMBASSADOR_TIER_5: TrackId = 5;
|
||||
pub const HEAD_AMBASSADOR_TIER_6: TrackId = 6;
|
||||
pub const HEAD_AMBASSADOR_TIER_7: TrackId = 7;
|
||||
pub const MASTER_AMBASSADOR_TIER_8: TrackId = 8;
|
||||
pub const MASTER_AMBASSADOR_TIER_9: TrackId = 9;
|
||||
}
|
||||
|
||||
/// The type implementing the [`pallet_referenda::TracksInfo`] trait for referenda pallet.
|
||||
pub struct TracksInfo;
|
||||
|
||||
/// Information on the voting tracks.
|
||||
impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
|
||||
type Id = TrackId;
|
||||
|
||||
type RuntimeOrigin = <RuntimeOrigin as frame_support::traits::OriginTrait>::PalletsOrigin;
|
||||
|
||||
/// Return the array of available tracks and their information.
|
||||
fn tracks() -> &'static [(Self::Id, pallet_referenda::TrackInfo<Balance, BlockNumber>)] {
|
||||
static DATA: [(TrackId, pallet_referenda::TrackInfo<Balance, BlockNumber>); 9] = [
|
||||
(
|
||||
constants::AMBASSADOR_TIER_1,
|
||||
pallet_referenda::TrackInfo {
|
||||
name: "ambassador tier 1",
|
||||
max_deciding: 10,
|
||||
decision_deposit: 5 * DOLLARS,
|
||||
prepare_period: 24 * HOURS,
|
||||
decision_period: 1 * DAYS,
|
||||
confirm_period: 24 * HOURS,
|
||||
min_enactment_period: 1 * HOURS,
|
||||
min_approval: pallet_referenda::Curve::LinearDecreasing {
|
||||
length: Perbill::from_percent(100),
|
||||
floor: Perbill::from_percent(50),
|
||||
ceil: Perbill::from_percent(100),
|
||||
},
|
||||
min_support: pallet_referenda::Curve::LinearDecreasing {
|
||||
length: Perbill::from_percent(100),
|
||||
floor: Perbill::from_percent(10),
|
||||
ceil: Perbill::from_percent(50),
|
||||
},
|
||||
},
|
||||
),
|
||||
(
|
||||
constants::AMBASSADOR_TIER_2,
|
||||
pallet_referenda::TrackInfo {
|
||||
name: "ambassador tier 2",
|
||||
max_deciding: 10,
|
||||
decision_deposit: 5 * DOLLARS,
|
||||
prepare_period: 24 * HOURS,
|
||||
decision_period: 1 * DAYS,
|
||||
confirm_period: 24 * HOURS,
|
||||
min_enactment_period: 1 * HOURS,
|
||||
min_approval: pallet_referenda::Curve::LinearDecreasing {
|
||||
length: Perbill::from_percent(100),
|
||||
floor: Perbill::from_percent(50),
|
||||
ceil: Perbill::from_percent(100),
|
||||
},
|
||||
min_support: pallet_referenda::Curve::LinearDecreasing {
|
||||
length: Perbill::from_percent(100),
|
||||
floor: Perbill::from_percent(10),
|
||||
ceil: Perbill::from_percent(50),
|
||||
},
|
||||
},
|
||||
),
|
||||
(
|
||||
constants::SENIOR_AMBASSADOR_TIER_3,
|
||||
pallet_referenda::TrackInfo {
|
||||
name: "senior ambassador tier 3",
|
||||
max_deciding: 10,
|
||||
decision_deposit: 5 * DOLLARS,
|
||||
prepare_period: 24 * HOURS,
|
||||
decision_period: 1 * DAYS,
|
||||
confirm_period: 24 * HOURS,
|
||||
min_enactment_period: 1 * HOURS,
|
||||
min_approval: pallet_referenda::Curve::LinearDecreasing {
|
||||
length: Perbill::from_percent(100),
|
||||
floor: Perbill::from_percent(50),
|
||||
ceil: Perbill::from_percent(100),
|
||||
},
|
||||
min_support: pallet_referenda::Curve::LinearDecreasing {
|
||||
length: Perbill::from_percent(100),
|
||||
floor: Perbill::from_percent(10),
|
||||
ceil: Perbill::from_percent(50),
|
||||
},
|
||||
},
|
||||
),
|
||||
(
|
||||
constants::SENIOR_AMBASSADOR_TIER_4,
|
||||
pallet_referenda::TrackInfo {
|
||||
name: "senior ambassador tier 4",
|
||||
max_deciding: 10,
|
||||
decision_deposit: 5 * DOLLARS,
|
||||
prepare_period: 24 * HOURS,
|
||||
decision_period: 1 * DAYS,
|
||||
confirm_period: 24 * HOURS,
|
||||
min_enactment_period: 1 * HOURS,
|
||||
min_approval: pallet_referenda::Curve::LinearDecreasing {
|
||||
length: Perbill::from_percent(100),
|
||||
floor: Perbill::from_percent(50),
|
||||
ceil: Perbill::from_percent(100),
|
||||
},
|
||||
min_support: pallet_referenda::Curve::LinearDecreasing {
|
||||
length: Perbill::from_percent(100),
|
||||
floor: Perbill::from_percent(10),
|
||||
ceil: Perbill::from_percent(50),
|
||||
},
|
||||
},
|
||||
),
|
||||
(
|
||||
constants::HEAD_AMBASSADOR_TIER_5,
|
||||
pallet_referenda::TrackInfo {
|
||||
name: "head ambassador tier 5",
|
||||
max_deciding: 10,
|
||||
decision_deposit: 5 * DOLLARS,
|
||||
prepare_period: 24 * HOURS,
|
||||
decision_period: 1 * DAYS,
|
||||
confirm_period: 24 * HOURS,
|
||||
min_enactment_period: 1 * HOURS,
|
||||
min_approval: pallet_referenda::Curve::LinearDecreasing {
|
||||
length: Perbill::from_percent(100),
|
||||
floor: Perbill::from_percent(50),
|
||||
ceil: Perbill::from_percent(100),
|
||||
},
|
||||
min_support: pallet_referenda::Curve::LinearDecreasing {
|
||||
length: Perbill::from_percent(100),
|
||||
floor: Perbill::from_percent(10),
|
||||
ceil: Perbill::from_percent(50),
|
||||
},
|
||||
},
|
||||
),
|
||||
(
|
||||
constants::HEAD_AMBASSADOR_TIER_6,
|
||||
pallet_referenda::TrackInfo {
|
||||
name: "head ambassador tier 6",
|
||||
max_deciding: 10,
|
||||
decision_deposit: 5 * DOLLARS,
|
||||
prepare_period: 24 * HOURS,
|
||||
decision_period: 1 * DAYS,
|
||||
confirm_period: 24 * HOURS,
|
||||
min_enactment_period: 1 * HOURS,
|
||||
min_approval: pallet_referenda::Curve::LinearDecreasing {
|
||||
length: Perbill::from_percent(100),
|
||||
floor: Perbill::from_percent(50),
|
||||
ceil: Perbill::from_percent(100),
|
||||
},
|
||||
min_support: pallet_referenda::Curve::LinearDecreasing {
|
||||
length: Perbill::from_percent(100),
|
||||
floor: Perbill::from_percent(10),
|
||||
ceil: Perbill::from_percent(50),
|
||||
},
|
||||
},
|
||||
),
|
||||
(
|
||||
constants::HEAD_AMBASSADOR_TIER_7,
|
||||
pallet_referenda::TrackInfo {
|
||||
name: "head ambassador tier 7",
|
||||
max_deciding: 10,
|
||||
decision_deposit: 5 * DOLLARS,
|
||||
prepare_period: 24 * HOURS,
|
||||
decision_period: 1 * DAYS,
|
||||
confirm_period: 24 * HOURS,
|
||||
min_enactment_period: 1 * HOURS,
|
||||
min_approval: pallet_referenda::Curve::LinearDecreasing {
|
||||
length: Perbill::from_percent(100),
|
||||
floor: Perbill::from_percent(50),
|
||||
ceil: Perbill::from_percent(100),
|
||||
},
|
||||
min_support: pallet_referenda::Curve::LinearDecreasing {
|
||||
length: Perbill::from_percent(100),
|
||||
floor: Perbill::from_percent(10),
|
||||
ceil: Perbill::from_percent(50),
|
||||
},
|
||||
},
|
||||
),
|
||||
(
|
||||
constants::MASTER_AMBASSADOR_TIER_8,
|
||||
pallet_referenda::TrackInfo {
|
||||
name: "master ambassador tier 8",
|
||||
max_deciding: 10,
|
||||
decision_deposit: 5 * DOLLARS,
|
||||
prepare_period: 24 * HOURS,
|
||||
decision_period: 1 * DAYS,
|
||||
confirm_period: 24 * HOURS,
|
||||
min_enactment_period: 1 * HOURS,
|
||||
min_approval: pallet_referenda::Curve::LinearDecreasing {
|
||||
length: Perbill::from_percent(100),
|
||||
floor: Perbill::from_percent(50),
|
||||
ceil: Perbill::from_percent(100),
|
||||
},
|
||||
min_support: pallet_referenda::Curve::LinearDecreasing {
|
||||
length: Perbill::from_percent(100),
|
||||
floor: Perbill::from_percent(10),
|
||||
ceil: Perbill::from_percent(50),
|
||||
},
|
||||
},
|
||||
),
|
||||
(
|
||||
constants::MASTER_AMBASSADOR_TIER_9,
|
||||
pallet_referenda::TrackInfo {
|
||||
name: "master ambassador tier 9",
|
||||
max_deciding: 10,
|
||||
decision_deposit: 5 * DOLLARS,
|
||||
prepare_period: 24 * HOURS,
|
||||
decision_period: 1 * DAYS,
|
||||
confirm_period: 24 * HOURS,
|
||||
min_enactment_period: 1 * HOURS,
|
||||
min_approval: pallet_referenda::Curve::LinearDecreasing {
|
||||
length: Perbill::from_percent(100),
|
||||
floor: Perbill::from_percent(50),
|
||||
ceil: Perbill::from_percent(100),
|
||||
},
|
||||
min_support: pallet_referenda::Curve::LinearDecreasing {
|
||||
length: Perbill::from_percent(100),
|
||||
floor: Perbill::from_percent(10),
|
||||
ceil: Perbill::from_percent(50),
|
||||
},
|
||||
},
|
||||
),
|
||||
];
|
||||
&DATA[..]
|
||||
}
|
||||
|
||||
/// Determine the voting track for the given `origin`.
|
||||
fn track_for(id: &Self::RuntimeOrigin) -> Result<Self::Id, ()> {
|
||||
#[cfg(feature = "runtime-benchmarks")]
|
||||
{
|
||||
// For benchmarks, we enable a root origin.
|
||||
// It is important that this is not available in production!
|
||||
let root: Self::RuntimeOrigin = frame_system::RawOrigin::Root.into();
|
||||
if &root == id {
|
||||
return Ok(constants::MASTER_AMBASSADOR_TIER_9)
|
||||
}
|
||||
}
|
||||
|
||||
match Origin::try_from(id.clone()) {
|
||||
Ok(Origin::Ambassadors) => Ok(constants::AMBASSADOR_TIER_1),
|
||||
Ok(Origin::AmbassadorsTier2) => Ok(constants::AMBASSADOR_TIER_2),
|
||||
Ok(Origin::SeniorAmbassadors) => Ok(constants::SENIOR_AMBASSADOR_TIER_3),
|
||||
Ok(Origin::SeniorAmbassadorsTier4) => Ok(constants::SENIOR_AMBASSADOR_TIER_4),
|
||||
Ok(Origin::HeadAmbassadors) => Ok(constants::HEAD_AMBASSADOR_TIER_5),
|
||||
Ok(Origin::HeadAmbassadorsTier6) => Ok(constants::HEAD_AMBASSADOR_TIER_6),
|
||||
Ok(Origin::HeadAmbassadorsTier7) => Ok(constants::HEAD_AMBASSADOR_TIER_7),
|
||||
Ok(Origin::MasterAmbassadors) => Ok(constants::MASTER_AMBASSADOR_TIER_8),
|
||||
Ok(Origin::MasterAmbassadorsTier9) => Ok(constants::MASTER_AMBASSADOR_TIER_9),
|
||||
_ => Err(()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// implements [`frame_support::traits::Get`] for [`TracksInfo`]
|
||||
pallet_referenda::impl_tracksinfo_get!(TracksInfo, Balance, BlockNumber);
|
||||
Reference in New Issue
Block a user