git.delta.rocks / unique-network / refs/commits / a931d82a9899

difftreelog

feat(collator-selection) opal only

Fahrrader2022-10-28parent: #3858e94.patch.diff
in: master

10 files changed

modifiednode/cli/src/chain_spec.rsdiffbeforeafterboth
24use serde_json::map::Map;24use serde_json::map::Map;
2525
26use up_common::types::opaque::*;26use up_common::types::opaque::*;
27use up_common::constants::EXISTENTIAL_DEPOSIT;27use up_common::constants::CANDIDACY_BOND;
2828
29#[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}
153153
154#[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}
219
220#[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:expr
228 ) => {{
229 use $runtime::*;
230
231 GenesisConfig {
232 system: SystemConfig {
233 code: WASM_BINARY
234 .expect("WASM binary was not build, please build it!")
235 .to_vec(),
236 },
237 balances: BalancesConfig {
238 balances: $endowed_accounts
239 .iter()
240 .cloned()
241 // 1e13 UNQ
242 .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_invulnerables
257 .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}
221269
222pub fn development_config() -> DefaultChainSpec {270pub fn development_config() -> DefaultChainSpec {
223 let mut properties = Map::new();271 let mut properties = Map::new();
modifiedprimitives/common/src/constants.rsdiffbeforeafterboth
41pub const CENTIUNIQUE: Balance = 10 * MILLIUNIQUE;41pub const CENTIUNIQUE: Balance = 10 * MILLIUNIQUE;
42pub const UNIQUE: Balance = 100 * CENTIUNIQUE;42pub const UNIQUE: Balance = 100 * CENTIUNIQUE;
4343
44/// 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;
4548
46// Targeting 0.1 UNQ per transfer49// Targeting 0.1 UNQ per transfer
47pub const WEIGHT_TO_FEE_COEFF: u32 = /*<weight2fee>*/207_163_598/*</weight2fee>*/;50pub const WEIGHT_TO_FEE_COEFF: u32 = /*<weight2fee>*/207_163_598/*</weight2fee>*/;
addedruntime/common/config/pallets/collator_selection.rsdiffbeforeafterboth

no changes

modifiedruntime/common/config/pallets/mod.rsdiffbeforeafterboth
46#[cfg(feature = "app-promotion")]46#[cfg(feature = "app-promotion")]
47pub mod app_promotion;47pub mod app_promotion;
48
49#[cfg(feature = "collator-selection")]
50pub mod collator_selection;
4851
49parameter_types! {52parameter_types! {
50 pub TreasuryAccountId: AccountId = TreasuryModuleId::get().into_account_truncating();53 pub TreasuryAccountId: AccountId = TreasuryModuleId::get().into_account_truncating();
modifiedruntime/common/config/substrate.rsdiffbeforeafterboth
34};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::*};
4040
217 type MaxAuthorities = MaxAuthorities;217 type MaxAuthorities = MaxAuthorities;
218}218}
219
220parameter_types! {
221 pub const SessionPeriod: BlockNumber = HOURS;
222 pub const SessionOffset: BlockNumber = 0;
223}
224
225impl 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}
238
239parameter_types! {
240 pub const UncleGenerations: u32 = 0;
241}
242
243impl 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}
249
250parameter_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}
256
257impl 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}
273219
modifiedruntime/common/construct_runtime/mod.rsdiffbeforeafterboth
32 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,
3434
35 #[runtimes(opal)]
35 Authorship: pallet_authorship::{Pallet, Call, Storage} = 22,36 Authorship: pallet_authorship::{Pallet, Call, Storage} = 22,
37
38 #[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,
40
41 #[runtimes(opal)]
37 Session: pallet_session::{Pallet, Call, Storage, Event, Config<T>} = 24,42 Session: pallet_session::{Pallet, Call, Storage, Event, Config<T>} = 24,
43
38 Aura: pallet_aura::{Pallet, Config<T>} = 25,44 Aura: pallet_aura::{Pallet, Config<T>} = 25,
modifiedruntime/common/mod.rsdiffbeforeafterboth
180pub 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;
191193
192 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);
193195
234239
235 <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);
238243
239 let keys = invulnerables244 let keys = invulnerables
240 .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 }
330336
331 weight337 weight
338 }
339
340 #[cfg(not(feature = "collator-selection"))]
341 {
342 Weight::zero()
343 }
332 }344 }
333}345}
334346
modifiedruntime/opal/Cargo.tomldiffbeforeafterboth
173 "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']
177177
178refungible = []178refungible = []
179scheduler = []179scheduler = []
180rmrk = []180rmrk = []
181foreign-assets = []181foreign-assets = []
182app-promotion = []182app-promotion = []
183collator-selection = []
183184
184################################################################################185################################################################################
185# Substrate Dependencies186# Substrate Dependencies
modifiedruntime/quartz/Cargo.tomldiffbeforeafterboth
177scheduler = []177scheduler = []
178rmrk = []178rmrk = []
179foreign-assets = []179foreign-assets = []
180collator-selection = []
180181
181################################################################################182################################################################################
182# Substrate Dependencies183# Substrate Dependencies
modifiedruntime/unique/Cargo.tomldiffbeforeafterboth
178scheduler = []178scheduler = []
179rmrk = []179rmrk = []
180foreign-assets = []180foreign-assets = []
181collator-selection = []
181182
182################################################################################183################################################################################
183# Substrate Dependencies184# Substrate Dependencies