mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-20 09:15:42 +00:00
Enable bags-list pallet in polkadot (#4080)
* Enable bags-list pallet in polkadot * add files * Remove trailing semicolon * more fixes * Update runtime/polkadot/src/lib.rs * add features * remove par Co-authored-by: Keith Yeung <kungfukeith11@gmail.com> Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
This commit is contained in:
Generated
+1
@@ -6675,6 +6675,7 @@ dependencies = [
|
|||||||
"pallet-authority-discovery",
|
"pallet-authority-discovery",
|
||||||
"pallet-authorship",
|
"pallet-authorship",
|
||||||
"pallet-babe",
|
"pallet-babe",
|
||||||
|
"pallet-bags-list",
|
||||||
"pallet-balances",
|
"pallet-balances",
|
||||||
"pallet-bounties",
|
"pallet-bounties",
|
||||||
"pallet-collective",
|
"pallet-collective",
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ sp-npos-elections = { git = "https://github.com/paritytech/substrate", branch =
|
|||||||
pallet-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
pallet-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
pallet-authorship = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
pallet-authorship = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
|
pallet-bags-list = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
pallet-bounties = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
pallet-bounties = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
@@ -72,7 +73,6 @@ pallet-treasury = { git = "https://github.com/paritytech/substrate", branch = "m
|
|||||||
pallet-utility = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
pallet-utility = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
pallet-vesting = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
pallet-vesting = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
pallet-xcm = { path = "../../xcm/pallet-xcm", default-features = false }
|
pallet-xcm = { path = "../../xcm/pallet-xcm", default-features = false }
|
||||||
pallet-bags-list = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
|
||||||
frame-election-provider-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
frame-election-provider-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
|
|
||||||
frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true }
|
frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true }
|
||||||
@@ -124,6 +124,7 @@ std = [
|
|||||||
"frame-executive/std",
|
"frame-executive/std",
|
||||||
"pallet-authority-discovery/std",
|
"pallet-authority-discovery/std",
|
||||||
"pallet-authorship/std",
|
"pallet-authorship/std",
|
||||||
|
"pallet-bags-list/std",
|
||||||
"pallet-balances/std",
|
"pallet-balances/std",
|
||||||
"pallet-bounties/std",
|
"pallet-bounties/std",
|
||||||
"pallet-transaction-payment/std",
|
"pallet-transaction-payment/std",
|
||||||
@@ -175,7 +176,6 @@ std = [
|
|||||||
"xcm-executor/std",
|
"xcm-executor/std",
|
||||||
"xcm-builder/std",
|
"xcm-builder/std",
|
||||||
"frame-election-provider-support/std",
|
"frame-election-provider-support/std",
|
||||||
"pallet-bags-list/std",
|
|
||||||
]
|
]
|
||||||
runtime-benchmarks = [
|
runtime-benchmarks = [
|
||||||
"runtime-common/runtime-benchmarks",
|
"runtime-common/runtime-benchmarks",
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ use constants::{currency::*, fee::*, time::*};
|
|||||||
mod weights;
|
mod weights;
|
||||||
|
|
||||||
// Voter bag threshold definitions.
|
// Voter bag threshold definitions.
|
||||||
mod voter_bags;
|
mod bag_thresholds;
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests;
|
mod tests;
|
||||||
@@ -409,7 +409,7 @@ impl pallet_election_provider_multi_phase::Config for Runtime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
parameter_types! {
|
parameter_types! {
|
||||||
pub const BagThresholds: &'static [u64] = &voter_bags::THRESHOLDS;
|
pub const BagThresholds: &'static [u64] = &bag_thresholds::THRESHOLDS;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl pallet_bags_list::Config for Runtime {
|
impl pallet_bags_list::Config for Runtime {
|
||||||
@@ -525,8 +525,7 @@ impl pallet_staking::Config for Runtime {
|
|||||||
type NextNewSession = Session;
|
type NextNewSession = Session;
|
||||||
type MaxNominatorRewardedPerValidator = MaxNominatorRewardedPerValidator;
|
type MaxNominatorRewardedPerValidator = MaxNominatorRewardedPerValidator;
|
||||||
type OffendingValidatorsThreshold = OffendingValidatorsThreshold;
|
type OffendingValidatorsThreshold = OffendingValidatorsThreshold;
|
||||||
// Use the nominators map to iter voters, but also perform the bags-list migration and keep
|
// Use the nominators map to iter voters, but also keep bags-list up-to-date.
|
||||||
// it up-to-date.
|
|
||||||
type SortedListProvider = runtime_common::elections::UseNominatorsAndUpdateBagsList<Runtime>;
|
type SortedListProvider = runtime_common::elections::UseNominatorsAndUpdateBagsList<Runtime>;
|
||||||
type WeightInfo = weights::pallet_staking::WeightInfo<Runtime>;
|
type WeightInfo = weights::pallet_staking::WeightInfo<Runtime>;
|
||||||
}
|
}
|
||||||
@@ -1079,7 +1078,8 @@ impl InstanceFilter<Call> for ProxyType {
|
|||||||
Call::Registrar(paras_registrar::Call::reserve {..}) |
|
Call::Registrar(paras_registrar::Call::reserve {..}) |
|
||||||
Call::Crowdloan(..) |
|
Call::Crowdloan(..) |
|
||||||
Call::Slots(..) |
|
Call::Slots(..) |
|
||||||
Call::Auctions(..) // Specifically omitting the entire XCM Pallet
|
Call::Auctions(..) | // Specifically omitting the entire XCM Pallet
|
||||||
|
Call::BagsList(..)
|
||||||
),
|
),
|
||||||
ProxyType::Governance => matches!(
|
ProxyType::Governance => matches!(
|
||||||
c,
|
c,
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ sp-npos-elections = { git = "https://github.com/paritytech/substrate", branch =
|
|||||||
pallet-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
pallet-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
pallet-authorship = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
pallet-authorship = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
|
pallet-bags-list = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
pallet-bounties = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
pallet-bounties = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
@@ -114,6 +115,7 @@ std = [
|
|||||||
"frame-executive/std",
|
"frame-executive/std",
|
||||||
"pallet-authority-discovery/std",
|
"pallet-authority-discovery/std",
|
||||||
"pallet-authorship/std",
|
"pallet-authorship/std",
|
||||||
|
"pallet-bags-list/std",
|
||||||
"pallet-balances/std",
|
"pallet-balances/std",
|
||||||
"pallet-bounties/std",
|
"pallet-bounties/std",
|
||||||
"pallet-transaction-payment/std",
|
"pallet-transaction-payment/std",
|
||||||
@@ -164,6 +166,7 @@ runtime-benchmarks = [
|
|||||||
"frame-system/runtime-benchmarks",
|
"frame-system/runtime-benchmarks",
|
||||||
"sp-runtime/runtime-benchmarks",
|
"sp-runtime/runtime-benchmarks",
|
||||||
"pallet-babe/runtime-benchmarks",
|
"pallet-babe/runtime-benchmarks",
|
||||||
|
"pallet-bags-list/runtime-benchmarks",
|
||||||
"pallet-balances/runtime-benchmarks",
|
"pallet-balances/runtime-benchmarks",
|
||||||
"pallet-collective/runtime-benchmarks",
|
"pallet-collective/runtime-benchmarks",
|
||||||
"pallet-democracy/runtime-benchmarks",
|
"pallet-democracy/runtime-benchmarks",
|
||||||
|
|||||||
@@ -0,0 +1,234 @@
|
|||||||
|
// Copyright 2021 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 bag thresholds.
|
||||||
|
//!
|
||||||
|
//! Generated on 2021-10-14T08:36:33.156699497+00:00
|
||||||
|
//! for the polkadot runtime.
|
||||||
|
|
||||||
|
/// Existential weight for this runtime.
|
||||||
|
#[cfg(any(test, feature = "std"))]
|
||||||
|
#[allow(unused)]
|
||||||
|
pub const EXISTENTIAL_WEIGHT: u64 = 10_000_000_000;
|
||||||
|
|
||||||
|
/// Constant ratio between bags for this runtime.
|
||||||
|
#[cfg(any(test, feature = "std"))]
|
||||||
|
#[allow(unused)]
|
||||||
|
pub const CONSTANT_RATIO: f64 = 1.1131723507077667;
|
||||||
|
|
||||||
|
/// Upper thresholds delimiting the bag list.
|
||||||
|
pub const THRESHOLDS: [u64; 200] = [
|
||||||
|
10_000_000_000,
|
||||||
|
11_131_723_507,
|
||||||
|
12_391_526_824,
|
||||||
|
13_793_905_044,
|
||||||
|
15_354_993_703,
|
||||||
|
17_092_754_435,
|
||||||
|
19_027_181_634,
|
||||||
|
21_180_532_507,
|
||||||
|
23_577_583_160,
|
||||||
|
26_245_913_670,
|
||||||
|
29_216_225_417,
|
||||||
|
32_522_694_326,
|
||||||
|
36_203_364_094,
|
||||||
|
40_300_583_912,
|
||||||
|
44_861_495_728,
|
||||||
|
49_938_576_656,
|
||||||
|
55_590_242_767,
|
||||||
|
61_881_521_217,
|
||||||
|
68_884_798_439,
|
||||||
|
76_680_653_006,
|
||||||
|
85_358_782_760,
|
||||||
|
95_019_036_859,
|
||||||
|
105_772_564_622,
|
||||||
|
117_743_094_401,
|
||||||
|
131_068_357_174,
|
||||||
|
145_901_671_259,
|
||||||
|
162_413_706_368,
|
||||||
|
180_794_447_305,
|
||||||
|
201_255_379_901,
|
||||||
|
224_031_924_337,
|
||||||
|
249_386_143_848,
|
||||||
|
277_609_759_981,
|
||||||
|
309_027_509_097,
|
||||||
|
344_000_878_735,
|
||||||
|
382_932_266_827,
|
||||||
|
426_269_611_626,
|
||||||
|
474_511_545_609,
|
||||||
|
528_213_132_664,
|
||||||
|
587_992_254_562,
|
||||||
|
654_536_720_209,
|
||||||
|
728_612_179_460,
|
||||||
|
811_070_932_564,
|
||||||
|
902_861_736_593,
|
||||||
|
1_005_040_721_687,
|
||||||
|
1_118_783_542_717,
|
||||||
|
1_245_398_906_179,
|
||||||
|
1_386_343_627_960,
|
||||||
|
1_543_239_395_225,
|
||||||
|
1_717_891_425_287,
|
||||||
|
1_912_309_236_147,
|
||||||
|
2_128_729_767_682,
|
||||||
|
2_369_643_119_512,
|
||||||
|
2_637_821_201_686,
|
||||||
|
2_936_349_627_828,
|
||||||
|
3_268_663_217_709,
|
||||||
|
3_638_585_517_729,
|
||||||
|
4_050_372_794_022,
|
||||||
|
4_508_763_004_364,
|
||||||
|
5_019_030_312_352,
|
||||||
|
5_587_045_771_074,
|
||||||
|
6_219_344_874_498,
|
||||||
|
6_923_202_753_807,
|
||||||
|
7_706_717_883_882,
|
||||||
|
8_578_905_263_043,
|
||||||
|
9_549_800_138_161,
|
||||||
|
10_630_573_468_586,
|
||||||
|
11_833_660_457_397,
|
||||||
|
13_172_903_628_838,
|
||||||
|
14_663_712_098_160,
|
||||||
|
16_323_238_866_411,
|
||||||
|
18_170_578_180_087,
|
||||||
|
20_226_985_226_447,
|
||||||
|
22_516_120_692_255,
|
||||||
|
25_064_322_999_817,
|
||||||
|
27_900_911_352_605,
|
||||||
|
31_058_523_077_268,
|
||||||
|
34_573_489_143_434,
|
||||||
|
38_486_252_181_966,
|
||||||
|
42_841_831_811_331,
|
||||||
|
47_690_342_626_046,
|
||||||
|
53_087_570_807_094,
|
||||||
|
59_095_615_988_698,
|
||||||
|
65_783_605_766_662,
|
||||||
|
73_228_491_069_308,
|
||||||
|
81_515_931_542_404,
|
||||||
|
90_741_281_135_191,
|
||||||
|
101_010_685_227_495,
|
||||||
|
112_442_301_921_293,
|
||||||
|
125_167_661_548_718,
|
||||||
|
139_333_180_038_781,
|
||||||
|
155_101_843_555_358,
|
||||||
|
172_655_083_789_626,
|
||||||
|
192_194_865_483_744,
|
||||||
|
213_946_010_204_502,
|
||||||
|
238_158_783_103_893,
|
||||||
|
265_111_772_429_462,
|
||||||
|
295_115_094_915_607,
|
||||||
|
328_513_963_936_552,
|
||||||
|
365_692_661_475_578,
|
||||||
|
407_078_959_611_349,
|
||||||
|
453_149_042_394_237,
|
||||||
|
504_432_984_742_966,
|
||||||
|
561_520_851_400_862,
|
||||||
|
625_069_486_125_324,
|
||||||
|
695_810_069_225_823,
|
||||||
|
774_556_530_406_243,
|
||||||
|
862_214_913_708_369,
|
||||||
|
959_793_802_308_039,
|
||||||
|
1_068_415_923_109_985,
|
||||||
|
1_189_331_064_661_951,
|
||||||
|
1_323_930_457_019_515,
|
||||||
|
1_473_762_779_014_021,
|
||||||
|
1_640_551_977_100_649,
|
||||||
|
1_826_217_100_807_404,
|
||||||
|
2_032_894_383_008_501,
|
||||||
|
2_262_961_819_074_188,
|
||||||
|
2_519_066_527_700_738,
|
||||||
|
2_804_155_208_229_882,
|
||||||
|
3_121_508_044_894_685,
|
||||||
|
3_474_776_448_088_622,
|
||||||
|
3_868_025_066_902_796,
|
||||||
|
4_305_778_556_320_752,
|
||||||
|
4_793_073_637_166_665,
|
||||||
|
5_335_517_047_800_242,
|
||||||
|
5_939_350_054_341_159,
|
||||||
|
6_611_520_261_667_250,
|
||||||
|
7_359_761_551_432_161,
|
||||||
|
8_192_683_066_856_378,
|
||||||
|
9_119_868_268_136_230,
|
||||||
|
10_151_985_198_186_376,
|
||||||
|
11_300_909_227_415_580,
|
||||||
|
12_579_859_689_817_292,
|
||||||
|
14_003_551_982_487_792,
|
||||||
|
15_588_366_878_604_342,
|
||||||
|
17_352_539_001_951_086,
|
||||||
|
19_316_366_631_550_092,
|
||||||
|
21_502_445_250_375_680,
|
||||||
|
23_935_927_525_325_748,
|
||||||
|
26_644_812_709_737_600,
|
||||||
|
29_660_268_798_266_784,
|
||||||
|
33_016_991_140_790_860,
|
||||||
|
36_753_601_641_491_664,
|
||||||
|
40_913_093_136_236_104,
|
||||||
|
45_543_324_061_189_736,
|
||||||
|
50_697_569_104_240_168,
|
||||||
|
56_435_132_174_936_472,
|
||||||
|
62_822_028_745_677_552,
|
||||||
|
69_931_745_415_056_768,
|
||||||
|
77_846_085_432_775_824,
|
||||||
|
86_656_109_914_600_688,
|
||||||
|
96_463_185_576_826_656,
|
||||||
|
107_380_151_045_315_664,
|
||||||
|
119_532_615_158_469_088,
|
||||||
|
133_060_402_202_199_856,
|
||||||
|
148_119_160_705_543_712,
|
||||||
|
164_882_154_307_451_552,
|
||||||
|
183_542_255_300_186_560,
|
||||||
|
204_314_163_786_713_728,
|
||||||
|
227_436_877_985_347_776,
|
||||||
|
253_176_444_104_585_088,
|
||||||
|
281_829_017_427_734_464,
|
||||||
|
313_724_269_827_691_328,
|
||||||
|
349_229_182_918_168_832,
|
||||||
|
388_752_270_484_770_624,
|
||||||
|
432_748_278_778_513_664,
|
||||||
|
481_723_418_752_617_984,
|
||||||
|
536_241_190_443_833_600,
|
||||||
|
596_928_866_512_693_376,
|
||||||
|
664_484_709_541_257_600,
|
||||||
|
739_686_006_129_409_280,
|
||||||
|
823_398_010_228_713_984,
|
||||||
|
916_583_898_614_395_264,
|
||||||
|
1_020_315_853_041_475_584,
|
||||||
|
1_135_787_396_594_579_584,
|
||||||
|
1_264_327_126_171_442_688,
|
||||||
|
1_407_413_999_103_859_968,
|
||||||
|
1_566_694_349_801_462_272,
|
||||||
|
1_744_000_832_209_069_824,
|
||||||
|
1_941_373_506_026_471_680,
|
||||||
|
2_161_083_309_305_266_176,
|
||||||
|
2_405_658_187_494_662_656,
|
||||||
|
2_677_912_179_572_818_944,
|
||||||
|
2_980_977_795_924_034_048,
|
||||||
|
3_318_342_060_496_414_208,
|
||||||
|
3_693_886_631_935_247_360,
|
||||||
|
4_111_932_465_319_354_368,
|
||||||
|
4_577_289_528_371_127_808,
|
||||||
|
5_095_312_144_166_932_480,
|
||||||
|
5_671_960_597_112_134_656,
|
||||||
|
6_313_869_711_009_142_784,
|
||||||
|
7_028_425_188_266_614_784,
|
||||||
|
7_823_848_588_596_424_704,
|
||||||
|
8_709_291_924_949_524_480,
|
||||||
|
9_694_942_965_096_232_960,
|
||||||
|
10_792_142_450_433_898_496,
|
||||||
|
12_013_514_580_722_579_456,
|
||||||
|
13_373_112_266_084_982_784,
|
||||||
|
14_886_578_817_516_689_408,
|
||||||
|
16_571_327_936_291_497_984,
|
||||||
|
18_446_744_073_709_551_615,
|
||||||
|
];
|
||||||
@@ -95,6 +95,8 @@ use frame_support::traits::InstanceFilter;
|
|||||||
// Weights used in the runtime.
|
// Weights used in the runtime.
|
||||||
mod weights;
|
mod weights;
|
||||||
|
|
||||||
|
mod bag_thresholds;
|
||||||
|
|
||||||
// Make the WASM binary available.
|
// Make the WASM binary available.
|
||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "std")]
|
||||||
include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs"));
|
include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs"));
|
||||||
@@ -170,7 +172,8 @@ impl Contains<Call> for BaseFilter {
|
|||||||
Call::Slots(_) |
|
Call::Slots(_) |
|
||||||
Call::Registrar(_) |
|
Call::Registrar(_) |
|
||||||
Call::Auctions(_) |
|
Call::Auctions(_) |
|
||||||
Call::Crowdloan(_) => true,
|
Call::Crowdloan(_) |
|
||||||
|
Call::BagsList(_) => true,
|
||||||
// All pallets are allowed, but exhaustive match is defensive
|
// All pallets are allowed, but exhaustive match is defensive
|
||||||
// in the case of adding new pallets.
|
// in the case of adding new pallets.
|
||||||
}
|
}
|
||||||
@@ -438,6 +441,17 @@ impl pallet_election_provider_multi_phase::Config for Runtime {
|
|||||||
type VoterSnapshotPerBlock = VoterSnapshotPerBlock;
|
type VoterSnapshotPerBlock = VoterSnapshotPerBlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
parameter_types! {
|
||||||
|
pub const BagThresholds: &'static [u64] = &bag_thresholds::THRESHOLDS;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl pallet_bags_list::Config for Runtime {
|
||||||
|
type Event = Event;
|
||||||
|
type VoteWeightProvider = Staking;
|
||||||
|
type WeightInfo = weights::pallet_bags_list::WeightInfo<Runtime>;
|
||||||
|
type BagThresholds = BagThresholds;
|
||||||
|
}
|
||||||
|
|
||||||
// TODO #6469: This shouldn't be static, but a lazily cached value, not built unless needed, and
|
// TODO #6469: This shouldn't be static, but a lazily cached value, not built unless needed, and
|
||||||
// re-built in case input parameters have changed. The `ideal_stake` should be determined by the
|
// re-built in case input parameters have changed. The `ideal_stake` should be determined by the
|
||||||
// amount of parachain slots being bid on: this should be around `(75 - 25.min(slots / 4))%`.
|
// amount of parachain slots being bid on: this should be around `(75 - 25.min(slots / 4))%`.
|
||||||
@@ -498,9 +512,8 @@ impl pallet_staking::Config for Runtime {
|
|||||||
type NextNewSession = Session;
|
type NextNewSession = Session;
|
||||||
type ElectionProvider = ElectionProviderMultiPhase;
|
type ElectionProvider = ElectionProviderMultiPhase;
|
||||||
type GenesisElectionProvider = runtime_common::elections::GenesisElectionOf<Self>;
|
type GenesisElectionProvider = runtime_common::elections::GenesisElectionOf<Self>;
|
||||||
// Use the nominator map to iter voter AND no-ops for all SortedListProvider hooks. The migration
|
// Use the nominators map to iter voters, but also keep bags-list up-to-date.
|
||||||
// to bags-list is a no-op, but the storage version will be updated.
|
type SortedListProvider = runtime_common::elections::UseNominatorsAndUpdateBagsList<Runtime>;
|
||||||
type SortedListProvider = pallet_staking::UseNominatorsMap<Runtime>;
|
|
||||||
type WeightInfo = weights::pallet_staking::WeightInfo<Runtime>;
|
type WeightInfo = weights::pallet_staking::WeightInfo<Runtime>;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1050,7 +1063,8 @@ impl InstanceFilter<Call> for ProxyType {
|
|||||||
Call::Registrar(paras_registrar::Call::reserve {..}) |
|
Call::Registrar(paras_registrar::Call::reserve {..}) |
|
||||||
Call::Crowdloan(..) |
|
Call::Crowdloan(..) |
|
||||||
Call::Slots(..) |
|
Call::Slots(..) |
|
||||||
Call::Auctions(..) // Specifically omitting the entire XCM Pallet
|
Call::Auctions(..) | // Specifically omitting the entire XCM Pallet
|
||||||
|
Call::BagsList(..)
|
||||||
),
|
),
|
||||||
ProxyType::Governance => matches!(
|
ProxyType::Governance => matches!(
|
||||||
c,
|
c,
|
||||||
@@ -1300,6 +1314,9 @@ construct_runtime! {
|
|||||||
// Election pallet. Only works with staking, but placed here to maintain indices.
|
// Election pallet. Only works with staking, but placed here to maintain indices.
|
||||||
ElectionProviderMultiPhase: pallet_election_provider_multi_phase::{Pallet, Call, Storage, Event<T>, ValidateUnsigned} = 36,
|
ElectionProviderMultiPhase: pallet_election_provider_multi_phase::{Pallet, Call, Storage, Event<T>, ValidateUnsigned} = 36,
|
||||||
|
|
||||||
|
// Provides a semi-sorted list of nominators for staking.
|
||||||
|
BagsList: pallet_bags_list::{Pallet, Call, Storage, Event<T>} = 37,
|
||||||
|
|
||||||
// Parachains pallets. Start indices at 50 to leave room.
|
// Parachains pallets. Start indices at 50 to leave room.
|
||||||
ParachainsOrigin: parachains_origin::{Pallet, Origin} = 50,
|
ParachainsOrigin: parachains_origin::{Pallet, Origin} = 50,
|
||||||
Configuration: parachains_configuration::{Pallet, Call, Storage, Config<T>} = 51,
|
Configuration: parachains_configuration::{Pallet, Call, Storage, Config<T>} = 51,
|
||||||
@@ -1352,11 +1369,30 @@ pub type Executive = frame_executive::Executive<
|
|||||||
frame_system::ChainContext<Runtime>,
|
frame_system::ChainContext<Runtime>,
|
||||||
Runtime,
|
Runtime,
|
||||||
AllPallets,
|
AllPallets,
|
||||||
(),
|
StakingBagsListMigrationV8,
|
||||||
>;
|
>;
|
||||||
/// The payload being signed in transactions.
|
/// The payload being signed in transactions.
|
||||||
pub type SignedPayload = generic::SignedPayload<Call, SignedExtra>;
|
pub type SignedPayload = generic::SignedPayload<Call, SignedExtra>;
|
||||||
|
|
||||||
|
// Migration to generate pallet staking's `SortedListProvider` from pre-existing nominators.
|
||||||
|
pub struct StakingBagsListMigrationV8;
|
||||||
|
|
||||||
|
impl OnRuntimeUpgrade for StakingBagsListMigrationV8 {
|
||||||
|
fn on_runtime_upgrade() -> frame_support::weights::Weight {
|
||||||
|
pallet_staking::migrations::v8::migrate::<Runtime>()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "try-runtime")]
|
||||||
|
fn pre_upgrade() -> Result<(), &'static str> {
|
||||||
|
pallet_staking::migrations::v8::pre_migrate::<Runtime>()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "try-runtime")]
|
||||||
|
fn post_upgrade() -> Result<(), &'static str> {
|
||||||
|
pallet_staking::migrations::v8::post_migrate::<Runtime>()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Set the initial host configuration for Polkadot.
|
/// Set the initial host configuration for Polkadot.
|
||||||
pub struct SetInitialHostConfiguration;
|
pub struct SetInitialHostConfiguration;
|
||||||
impl OnRuntimeUpgrade for SetInitialHostConfiguration {
|
impl OnRuntimeUpgrade for SetInitialHostConfiguration {
|
||||||
@@ -1795,6 +1831,7 @@ sp_api::impl_runtime_apis! {
|
|||||||
list_benchmark!(list, extra, runtime_parachains::initializer, Initializer);
|
list_benchmark!(list, extra, runtime_parachains::initializer, Initializer);
|
||||||
list_benchmark!(list, extra, runtime_parachains::paras, Paras);
|
list_benchmark!(list, extra, runtime_parachains::paras, Paras);
|
||||||
// Substrate
|
// Substrate
|
||||||
|
list_benchmark!(list, extra, pallet_bags_list, BagsList);
|
||||||
list_benchmark!(list, extra, pallet_balances, Balances);
|
list_benchmark!(list, extra, pallet_balances, Balances);
|
||||||
list_benchmark!(list, extra, pallet_bounties, Bounties);
|
list_benchmark!(list, extra, pallet_bounties, Bounties);
|
||||||
list_benchmark!(list, extra, pallet_collective, Council);
|
list_benchmark!(list, extra, pallet_collective, Council);
|
||||||
@@ -1870,6 +1907,7 @@ sp_api::impl_runtime_apis! {
|
|||||||
add_benchmark!(params, batches, runtime_parachains::initializer, Initializer);
|
add_benchmark!(params, batches, runtime_parachains::initializer, Initializer);
|
||||||
add_benchmark!(params, batches, runtime_parachains::paras, Paras);
|
add_benchmark!(params, batches, runtime_parachains::paras, Paras);
|
||||||
// Substrate
|
// Substrate
|
||||||
|
add_benchmark!(params, batches, pallet_bags_list, BagsList);
|
||||||
add_benchmark!(params, batches, pallet_balances, Balances);
|
add_benchmark!(params, batches, pallet_balances, Balances);
|
||||||
add_benchmark!(params, batches, pallet_bounties, Bounties);
|
add_benchmark!(params, batches, pallet_bounties, Bounties);
|
||||||
add_benchmark!(params, batches, pallet_collective, Council);
|
add_benchmark!(params, batches, pallet_collective, Council);
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
//! A list of the different weight modules for our runtime.
|
//! A list of the different weight modules for our runtime.
|
||||||
|
|
||||||
pub mod frame_system;
|
pub mod frame_system;
|
||||||
|
pub mod pallet_bags_list;
|
||||||
pub mod pallet_balances;
|
pub mod pallet_balances;
|
||||||
pub mod pallet_bounties;
|
pub mod pallet_bounties;
|
||||||
pub mod pallet_collective_council;
|
pub mod pallet_collective_council;
|
||||||
|
|||||||
@@ -0,0 +1,65 @@
|
|||||||
|
// Copyright 2017-2021 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_bags_list`
|
||||||
|
//!
|
||||||
|
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
|
||||||
|
//! DATE: 2021-09-17, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]`
|
||||||
|
//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128
|
||||||
|
|
||||||
|
// Executed Command:
|
||||||
|
// target/release/polkadot
|
||||||
|
// benchmark
|
||||||
|
// --chain=kusama-dev
|
||||||
|
// --steps=50
|
||||||
|
// --repeat=20
|
||||||
|
// --pallet=pallet_bags_list
|
||||||
|
// --extrinsic=*
|
||||||
|
// --execution=wasm
|
||||||
|
// --wasm-execution=compiled
|
||||||
|
// --heap-pages=4096
|
||||||
|
// --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_bags_list`.
|
||||||
|
pub struct WeightInfo<T>(PhantomData<T>);
|
||||||
|
impl<T: frame_system::Config> pallet_bags_list::WeightInfo for WeightInfo<T> {
|
||||||
|
// Storage: Staking Bonded (r:1 w:0)
|
||||||
|
// Storage: Staking Ledger (r:1 w:0)
|
||||||
|
// Storage: BagsList ListNodes (r:4 w:4)
|
||||||
|
// Storage: BagsList ListBags (r:1 w:1)
|
||||||
|
fn rebag_non_terminal() -> Weight {
|
||||||
|
(65_491_000 as Weight)
|
||||||
|
.saturating_add(T::DbWeight::get().reads(7 as Weight))
|
||||||
|
.saturating_add(T::DbWeight::get().writes(5 as Weight))
|
||||||
|
}
|
||||||
|
// Storage: Staking Bonded (r:1 w:0)
|
||||||
|
// Storage: Staking Ledger (r:1 w:0)
|
||||||
|
// Storage: BagsList ListNodes (r:3 w:3)
|
||||||
|
// Storage: BagsList ListBags (r:2 w:2)
|
||||||
|
fn rebag_terminal() -> Weight {
|
||||||
|
(64_253_000 as Weight)
|
||||||
|
.saturating_add(T::DbWeight::get().reads(7 as Weight))
|
||||||
|
.saturating_add(T::DbWeight::get().writes(5 as Weight))
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -101,7 +101,7 @@ use constants::{currency::*, fee::*, time::*};
|
|||||||
mod weights;
|
mod weights;
|
||||||
|
|
||||||
// Voter bag threshold definitions.
|
// Voter bag threshold definitions.
|
||||||
mod voter_bags;
|
mod bag_thresholds;
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests;
|
mod tests;
|
||||||
@@ -393,7 +393,7 @@ impl pallet_election_provider_multi_phase::Config for Runtime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
parameter_types! {
|
parameter_types! {
|
||||||
pub const BagThresholds: &'static [u64] = &voter_bags::THRESHOLDS;
|
pub const BagThresholds: &'static [u64] = &bag_thresholds::THRESHOLDS;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl pallet_bags_list::Config for Runtime {
|
impl pallet_bags_list::Config for Runtime {
|
||||||
@@ -453,8 +453,7 @@ impl pallet_staking::Config for Runtime {
|
|||||||
type NextNewSession = Session;
|
type NextNewSession = Session;
|
||||||
type ElectionProvider = ElectionProviderMultiPhase;
|
type ElectionProvider = ElectionProviderMultiPhase;
|
||||||
type GenesisElectionProvider = runtime_common::elections::GenesisElectionOf<Self>;
|
type GenesisElectionProvider = runtime_common::elections::GenesisElectionOf<Self>;
|
||||||
// Use the nominators map to iter voters, but also perform the bags-list migration and keep
|
// Use the nominators map to iter voters, but also keep bags-list up-to-date.
|
||||||
// it up-to-date.
|
|
||||||
type SortedListProvider = runtime_common::elections::UseNominatorsAndUpdateBagsList<Runtime>;
|
type SortedListProvider = runtime_common::elections::UseNominatorsAndUpdateBagsList<Runtime>;
|
||||||
type WeightInfo = weights::pallet_staking::WeightInfo<Runtime>;
|
type WeightInfo = weights::pallet_staking::WeightInfo<Runtime>;
|
||||||
}
|
}
|
||||||
@@ -751,7 +750,8 @@ impl InstanceFilter<Call> for ProxyType {
|
|||||||
Call::Registrar(paras_registrar::Call::reserve{..}) |
|
Call::Registrar(paras_registrar::Call::reserve{..}) |
|
||||||
Call::Crowdloan(..) |
|
Call::Crowdloan(..) |
|
||||||
Call::Slots(..) |
|
Call::Slots(..) |
|
||||||
Call::Auctions(..) // Specifically omitting the entire XCM Pallet
|
Call::Auctions(..) | // Specifically omitting the entire XCM Pallet
|
||||||
|
Call::BagsList(..)
|
||||||
),
|
),
|
||||||
ProxyType::Staking => {
|
ProxyType::Staking => {
|
||||||
matches!(c, Call::Staking(..) | Call::Session(..) | Call::Utility(..))
|
matches!(c, Call::Staking(..) | Call::Session(..) | Call::Utility(..))
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ mod voter_bags;
|
|||||||
#[derive(StructOpt)]
|
#[derive(StructOpt)]
|
||||||
enum Runtime {
|
enum Runtime {
|
||||||
Kusama,
|
Kusama,
|
||||||
|
Polkadot,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl std::str::FromStr for Runtime {
|
impl std::str::FromStr for Runtime {
|
||||||
@@ -30,6 +31,7 @@ impl std::str::FromStr for Runtime {
|
|||||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||||
match s.to_lowercase().as_str() {
|
match s.to_lowercase().as_str() {
|
||||||
"kusama" => Ok(Runtime::Kusama),
|
"kusama" => Ok(Runtime::Kusama),
|
||||||
|
"polkadot" => Ok(Runtime::Polkadot),
|
||||||
_ => Err("wrong Runtime: can be 'polkadot' or 'kusama'."),
|
_ => Err("wrong Runtime: can be 'polkadot' or 'kusama'."),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -37,9 +39,9 @@ impl std::str::FromStr for Runtime {
|
|||||||
|
|
||||||
#[derive(StructOpt)]
|
#[derive(StructOpt)]
|
||||||
struct Cli {
|
struct Cli {
|
||||||
#[structopt(long, default_value = "wss://rpc.kusama.io")]
|
#[structopt(long, default_value = "wss://rpc.polkadot.io")]
|
||||||
uri: String,
|
uri: String,
|
||||||
#[structopt(long, short, default_value = "kusama")]
|
#[structopt(long, short, default_value = "polkadot")]
|
||||||
runtime: Runtime,
|
runtime: Runtime,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,5 +57,13 @@ async fn main() {
|
|||||||
)
|
)
|
||||||
.await;
|
.await;
|
||||||
},
|
},
|
||||||
|
Runtime::Polkadot => {
|
||||||
|
use polkadot_runtime::{constants::currency::UNITS, Block, Runtime};
|
||||||
|
voter_bags::test_voter_bags_migration::<Runtime, Block>(
|
||||||
|
UNITS as u64,
|
||||||
|
options.uri.clone(),
|
||||||
|
)
|
||||||
|
.await;
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,6 +54,15 @@ pub(crate) async fn test_voter_bags_migration<
|
|||||||
// set the ss58 prefix so addresses printed below are human friendly.
|
// set the ss58 prefix so addresses printed below are human friendly.
|
||||||
sp_core::crypto::set_default_ss58_version(Runtime::SS58Prefix::get().try_into().unwrap());
|
sp_core::crypto::set_default_ss58_version(Runtime::SS58Prefix::get().try_into().unwrap());
|
||||||
|
|
||||||
|
// clear anything that may have existed before.
|
||||||
|
if <Runtime as pallet_staking::Config>::SortedListProvider::count() != 0 {
|
||||||
|
log::warn!(
|
||||||
|
target: LOG_TARGET,
|
||||||
|
"some data already seem to exist in the bags-list pallet.."
|
||||||
|
);
|
||||||
|
}
|
||||||
|
<Runtime as pallet_staking::Config>::SortedListProvider::clear(None);
|
||||||
|
|
||||||
// get the nominator & validator count prior to migrating; these should be invariant.
|
// get the nominator & validator count prior to migrating; these should be invariant.
|
||||||
let pre_migrate_nominator_count = <Nominators<Runtime>>::iter().count() as u32;
|
let pre_migrate_nominator_count = <Nominators<Runtime>>::iter().count() as u32;
|
||||||
log::info!(target: LOG_TARGET, "Nominator count: {}", pre_migrate_nominator_count);
|
log::info!(target: LOG_TARGET, "Nominator count: {}", pre_migrate_nominator_count);
|
||||||
@@ -99,7 +108,7 @@ pub(crate) async fn test_voter_bags_migration<
|
|||||||
(*vote_weight_thresh).try_into().map_err(|_| "should not fail").unwrap();
|
(*vote_weight_thresh).try_into().map_err(|_| "should not fail").unwrap();
|
||||||
if vote_weight_as_balance <= min_nominator_bond {
|
if vote_weight_as_balance <= min_nominator_bond {
|
||||||
for id in bag.std_iter().map(|node| node.std_id().clone()) {
|
for id in bag.std_iter().map(|node| node.std_id().clone()) {
|
||||||
log::trace!(
|
log::error!(
|
||||||
target: LOG_TARGET,
|
target: LOG_TARGET,
|
||||||
"{} Account found below min bond: {:?}.",
|
"{} Account found below min bond: {:?}.",
|
||||||
pretty_thresh,
|
pretty_thresh,
|
||||||
|
|||||||
Reference in New Issue
Block a user