difftreelog
feat(collator-selection) opal only
in: master
10 files changed
node/cli/src/chain_spec.rsdiffbeforeafterboth24use serde_json::map::Map;24use serde_json::map::Map;252526use up_common::types::opaque::*;26use up_common::types::opaque::*;27use up_common::constants::EXISTENTIAL_DEPOSIT;27use up_common::constants::CANDIDACY_BOND;282829#[cfg(feature = "unique-runtime")]29#[cfg(feature = "unique-runtime")]30pub use unique_runtime as default_runtime;30pub use unique_runtime as default_runtime;151 AccountPublic::from(get_from_seed::<TPublic>(seed)).into_account()151 AccountPublic::from(get_from_seed::<TPublic>(seed)).into_account()152}152}153153154#[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]154macro_rules! testnet_genesis {155macro_rules! testnet_genesis {155 (156 (156 $runtime:path,157 $runtime:path,191 .cloned()192 .cloned()192 .map(|(acc, _)| acc)193 .map(|(acc, _)| acc)193 .collect(),194 .collect(),194 candidacy_bond: EXISTENTIAL_DEPOSIT * 16,195 candidacy_bond: CANDIDACY_BOND,195 ..Default::default()196 ..Default::default()196 },197 },197 session: SessionConfig {198 session: SessionConfig {207 .collect(),208 .collect(),208 },209 },209 aura: Default::default(),210 aura: Default::default(),210 /*aura: AuraConfig {211 authorities: $initial_authorities,212 },*/213 aura_ext: Default::default(),211 aura_ext: Default::default(),214 evm: EVMConfig {212 evm: EVMConfig {215 accounts: BTreeMap::new(),213 accounts: BTreeMap::new(),219 }};217 }};220}218}219220#[cfg(any(feature = "unique-runtime", feature = "quartz-runtime"))]221macro_rules! testnet_genesis {222 (223 $runtime:path,224 $root_key:expr,225 $initial_invulnerables:expr,226 $endowed_accounts:expr,227 $id:expr228 ) => {{229 use $runtime::*;230231 GenesisConfig {232 system: SystemConfig {233 code: WASM_BINARY234 .expect("WASM binary was not build, please build it!")235 .to_vec(),236 },237 balances: BalancesConfig {238 balances: $endowed_accounts239 .iter()240 .cloned()241 // 1e13 UNQ242 .map(|k| (k, 1 << 100))243 .collect(),244 },245 treasury: Default::default(),246 tokens: TokensConfig { balances: vec![] },247 sudo: SudoConfig {248 key: Some($root_key),249 },250 vesting: VestingConfig { vesting: vec![] },251 parachain_info: ParachainInfoConfig {252 parachain_id: $id.into(),253 },254 parachain_system: Default::default(),255 aura: AuraConfig {256 authorities: $initial_invulnerables257 .into_iter()258 .map(|(_, aura)| aura)259 .collect(),260 },261 aura_ext: Default::default(),262 evm: EVMConfig {263 accounts: BTreeMap::new(),264 },265 ethereum: EthereumConfig {},266 }267 }};268}221269222pub fn development_config() -> DefaultChainSpec {270pub fn development_config() -> DefaultChainSpec {223 let mut properties = Map::new();271 let mut properties = Map::new();primitives/common/src/constants.rsdiffbeforeafterboth41pub const CENTIUNIQUE: Balance = 10 * MILLIUNIQUE;41pub const CENTIUNIQUE: Balance = 10 * MILLIUNIQUE;42pub const UNIQUE: Balance = 100 * CENTIUNIQUE;42pub const UNIQUE: Balance = 100 * CENTIUNIQUE;434344/// Minimum balance required to create or keep an account open.44pub const EXISTENTIAL_DEPOSIT: u128 = 0;45pub const EXISTENTIAL_DEPOSIT: u128 = 0;46/// Amount of Balance reserved for candidate registration.47pub const CANDIDACY_BOND: u128 = EXISTENTIAL_DEPOSIT;454846// Targeting 0.1 UNQ per transfer49// Targeting 0.1 UNQ per transfer47pub const WEIGHT_TO_FEE_COEFF: u32 = /*<weight2fee>*/207_163_598/*</weight2fee>*/;50pub const WEIGHT_TO_FEE_COEFF: u32 = /*<weight2fee>*/207_163_598/*</weight2fee>*/;runtime/common/config/pallets/collator_selection.rsdiffbeforeafterbothno changes
runtime/common/config/pallets/mod.rsdiffbeforeafterboth46#[cfg(feature = "app-promotion")]46#[cfg(feature = "app-promotion")]47pub mod app_promotion;47pub mod app_promotion;4849#[cfg(feature = "collator-selection")]50pub mod collator_selection;485149parameter_types! {52parameter_types! {50 pub TreasuryAccountId: AccountId = TreasuryModuleId::get().into_account_truncating();53 pub TreasuryAccountId: AccountId = TreasuryModuleId::get().into_account_truncating();runtime/common/config/substrate.rsdiffbeforeafterboth34};34};35use crate::{35use crate::{36 runtime_common::DealWithFees, Runtime, RuntimeEvent, RuntimeCall, RuntimeOrigin, PalletInfo,36 runtime_common::DealWithFees, Runtime, RuntimeEvent, RuntimeCall, RuntimeOrigin, PalletInfo,37 System, Balances, Treasury, SS58Prefix, Aura, Session, SessionKeys, CollatorSelection, Version,37 System, Balances, Treasury, SS58Prefix, Version,38};38};39use up_common::{types::*, constants::*};39use up_common::{types::*, constants::*};4040217 type MaxAuthorities = MaxAuthorities;217 type MaxAuthorities = MaxAuthorities;218}218}219220parameter_types! {221 pub const SessionPeriod: BlockNumber = HOURS;222 pub const SessionOffset: BlockNumber = 0;223}224225impl pallet_session::Config for Runtime {226 type RuntimeEvent = RuntimeEvent;227 type ValidatorId = <Self as frame_system::Config>::AccountId;228 // we don't have stash and controller, thus we don't need the convert as well.229 type ValidatorIdOf = pallet_collator_selection::IdentityCollator;230 type ShouldEndSession = pallet_session::PeriodicSessions<SessionPeriod, SessionOffset>;231 type NextSessionRotation = pallet_session::PeriodicSessions<SessionPeriod, SessionOffset>;232 type SessionManager = CollatorSelection;233 // Essentially just Aura, but lets be pedantic.234 type SessionHandler = <SessionKeys as sp_runtime::traits::OpaqueKeys>::KeyTypeIdProviders;235 type Keys = SessionKeys;236 type WeightInfo = pallet_session::weights::SubstrateWeight<Self>; // ();237}238239parameter_types! {240 pub const UncleGenerations: u32 = 0;241}242243impl pallet_authorship::Config for Runtime {244 type FindAuthor = pallet_session::FindAccountFromAuthorIndex<Self, Aura>;245 type UncleGenerations = UncleGenerations;246 type FilterUncle = ();247 type EventHandler = CollatorSelection;248}249250parameter_types! {251 pub const PotId: PalletId = PalletId(*b"PotStake");252 pub const MaxCandidates: u32 = 1000;253 pub const MinCandidates: u32 = 5;254 pub const MaxInvulnerables: u32 = 100;255}256257impl pallet_collator_selection::Config for Runtime {258 type RuntimeEvent = RuntimeEvent;259 type Currency = Balances;260 // We allow root only to execute privileged collator selection operations.261 type UpdateOrigin = EnsureRoot<AccountId>;262 type PotId = PotId;263 type MaxCandidates = MaxCandidates;264 type MinCandidates = MinCandidates;265 type MaxInvulnerables = MaxInvulnerables;266 // Should be a multiple of session or things will get inconsistent.267 type KickThreshold = SessionPeriod;268 type ValidatorId = <Self as frame_system::Config>::AccountId;269 type ValidatorIdOf = pallet_collator_selection::IdentityCollator;270 type ValidatorRegistration = Session;271 type WeightInfo = ();272}273219runtime/common/construct_runtime/mod.rsdiffbeforeafterboth32 ParachainSystem: cumulus_pallet_parachain_system::{Pallet, Call, Config, Storage, Inherent, Event<T>, ValidateUnsigned} = 20,32 ParachainSystem: cumulus_pallet_parachain_system::{Pallet, Call, Config, Storage, Inherent, Event<T>, ValidateUnsigned} = 20,33 ParachainInfo: parachain_info::{Pallet, Storage, Config} = 21,33 ParachainInfo: parachain_info::{Pallet, Storage, Config} = 21,343435 #[runtimes(opal)]35 Authorship: pallet_authorship::{Pallet, Call, Storage} = 22,36 Authorship: pallet_authorship::{Pallet, Call, Storage} = 22,3738 #[runtimes(opal)]36 CollatorSelection: pallet_collator_selection::{Pallet, Call, Storage, Event<T>, Config<T>} = 23,39 CollatorSelection: pallet_collator_selection::{Pallet, Call, Storage, Event<T>, Config<T>} = 23,4041 #[runtimes(opal)]37 Session: pallet_session::{Pallet, Call, Storage, Event, Config<T>} = 24,42 Session: pallet_session::{Pallet, Call, Storage, Event, Config<T>} = 24,4338 Aura: pallet_aura::{Pallet, Config<T>} = 25,44 Aura: pallet_aura::{Pallet, Config<T>} = 25,runtime/common/mod.rsdiffbeforeafterboth180pub struct AuraToCollatorSelection;180pub struct AuraToCollatorSelection;181impl frame_support::traits::OnRuntimeUpgrade for AuraToCollatorSelection {181impl frame_support::traits::OnRuntimeUpgrade for AuraToCollatorSelection {182 fn on_runtime_upgrade() -> Weight {182 fn on_runtime_upgrade() -> Weight {183 #[cfg(feature = "collator-selection")]184 {183 use frame_support::{BoundedVec, storage::migration};185 use frame_support::{BoundedVec, storage::migration};184 use sp_runtime::{186 use sp_runtime::{185 traits::{OpaqueKeys, Saturating},187 traits::{OpaqueKeys, Saturating},186 RuntimeAppPublic,188 RuntimeAppPublic,187 };189 };188 use pallet_session::SessionManager;190 use pallet_session::SessionManager;189 use up_common::constants::EXISTENTIAL_DEPOSIT;191 use up_common::constants::CANDIDACY_BOND;190 use crate::config::substrate::MaxInvulnerables;192 use crate::config::pallets::collator_selection::MaxInvulnerables;191193192 let mut weight = <Runtime as frame_system::Config>::DbWeight::get().reads(1);194 let mut weight = <Runtime as frame_system::Config>::DbWeight::get().reads(1);193195234239235 <pallet_collator_selection::Invulnerables<Runtime>>::put(bounded_invulnerables);240 <pallet_collator_selection::Invulnerables<Runtime>>::put(bounded_invulnerables);236 <pallet_collator_selection::DesiredCandidates<Runtime>>::put(0);241 <pallet_collator_selection::DesiredCandidates<Runtime>>::put(0);237 <pallet_collator_selection::CandidacyBond<Runtime>>::put(EXISTENTIAL_DEPOSIT * 16);242 <pallet_collator_selection::CandidacyBond<Runtime>>::put(CANDIDACY_BOND);238243239 let keys = invulnerables244 let keys = invulnerables240 .into_iter()245 .into_iter()269 <Runtime as pallet_session::Config>::SessionManager::new_session(0).unwrap_or_else(276 <Runtime as pallet_session::Config>::SessionManager::new_session(0)270 || {277 .unwrap_or_else(|| {271 frame_support::print(278 frame_support::print(272 "No initial validator provided by `SessionManager`, use \279 "No initial validator provided by `SessionManager`, use \273 session config keys to generate initial validator set.",280 session config keys to generate initial validator set.",274 );281 );275 keys.iter().map(|x| x.1.clone()).collect()282 keys.iter().map(|x| x.1.clone()).collect()276 },283 });277 );278 /*assert!(284 /*assert!(279 !initial_validators_0.is_empty(),285 !initial_validators_0.is_empty(),329 }335 }330336331 weight337 weight338 }339340 #[cfg(not(feature = "collator-selection"))]341 {342 Weight::zero()343 }332 }344 }333}345}334346runtime/opal/Cargo.tomldiffbeforeafterboth173 "pallet-foreign-assets/std",173 "pallet-foreign-assets/std",174]174]175limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing']175limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing']176opal-runtime = ['refungible', 'rmrk', 'app-promotion', 'foreign-assets']176opal-runtime = ['refungible', 'rmrk', 'app-promotion', 'foreign-assets', 'collator-selection']177177178refungible = []178refungible = []179scheduler = []179scheduler = []180rmrk = []180rmrk = []181foreign-assets = []181foreign-assets = []182app-promotion = []182app-promotion = []183collator-selection = []183184184################################################################################185################################################################################185# Substrate Dependencies186# Substrate Dependenciesruntime/quartz/Cargo.tomldiffbeforeafterboth177scheduler = []177scheduler = []178rmrk = []178rmrk = []179foreign-assets = []179foreign-assets = []180collator-selection = []180181181################################################################################182################################################################################182# Substrate Dependencies183# Substrate Dependenciesruntime/unique/Cargo.tomldiffbeforeafterboth178scheduler = []178scheduler = []179rmrk = []179rmrk = []180foreign-assets = []180foreign-assets = []181collator-selection = []181182182################################################################################183################################################################################183# Substrate Dependencies184# Substrate Dependencies