git.delta.rocks / unique-network / refs/commits / 2dfd73643010

difftreelog

Merge branch 'develop' into release/opal-v918000

Igor Kozyrev2022-03-29parents: #412ca93 #80d5011.patch.diff
in: master

2 files changed

modifiednode/cli/src/chain_spec.rsdiffbeforeafterboth
before · node/cli/src/chain_spec.rs
1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617use cumulus_primitives_core::ParaId;18use sc_chain_spec::{ChainSpecExtension, ChainSpecGroup};19use sc_service::ChainType;20use sp_core::{sr25519, Pair, Public};21use sp_runtime::traits::{IdentifyAccount, Verify};22use std::collections::BTreeMap;2324use serde::{Deserialize, Serialize};25use serde_json::map::Map;2627use unique_runtime_common::types::*;2829/// The `ChainSpec` parameterized for the unique runtime.30#[cfg(feature = "unique-runtime")]31pub type UniqueChainSpec = sc_service::GenericChainSpec<unique_runtime::GenesisConfig, Extensions>;3233/// The `ChainSpec` parameterized for the quartz runtime.34#[cfg(feature = "quartz-runtime")]35pub type QuartzChainSpec = sc_service::GenericChainSpec<quartz_runtime::GenesisConfig, Extensions>;3637/// The `ChainSpec` parameterized for the opal runtime.38pub type OpalChainSpec = sc_service::GenericChainSpec<opal_runtime::GenesisConfig, Extensions>;3940pub enum RuntimeId {41	Unique,42	Quartz,43	Opal,44	Unknown(String),45}4647pub trait RuntimeIdentification {48	fn runtime_id(&self) -> RuntimeId;49}5051impl RuntimeIdentification for Box<dyn sc_service::ChainSpec> {52	fn runtime_id(&self) -> RuntimeId {53		#[cfg(feature = "unique-runtime")]54		if self.id().starts_with("unique") {55			return RuntimeId::Unique;56		}5758		#[cfg(feature = "quartz-runtime")]59		if self.id().starts_with("quartz") {60			return RuntimeId::Quartz;61		}6263		if self.id().starts_with("opal") || self.id() == "dev" || self.id() == "local_testnet" {64			return RuntimeId::Opal;65		}6667		RuntimeId::Unknown(self.id().into())68	}69}7071pub enum ServiceId {72	Prod,73	Dev,74}7576pub trait ServiceIdentification {77	fn service_id(&self) -> ServiceId;78}7980impl ServiceIdentification for Box<dyn sc_service::ChainSpec> {81	fn service_id(&self) -> ServiceId {82		if self.id().ends_with("dev") {83			ServiceId::Dev84		} else {85			ServiceId::Prod86		}87	}88}8990/// Helper function to generate a crypto pair from seed91pub fn get_from_seed<TPublic: Public>(seed: &str) -> <TPublic::Pair as Pair>::Public {92	TPublic::Pair::from_string(&format!("//{}", seed), None)93		.expect("static values are valid; qed")94		.public()95}9697/// The extensions for the [`ChainSpec`].98#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, ChainSpecGroup, ChainSpecExtension)]99#[serde(deny_unknown_fields)]100pub struct Extensions {101	/// The relay chain of the Parachain.102	pub relay_chain: String,103	/// The id of the Parachain.104	pub para_id: u32,105}106107impl Extensions {108	/// Try to get the extension from the given `ChainSpec`.109	pub fn try_get(chain_spec: &dyn sc_service::ChainSpec) -> Option<&Self> {110		sc_chain_spec::get_extension(chain_spec.extensions())111	}112}113114type AccountPublic = <Signature as Verify>::Signer;115116/// Helper function to generate an account ID from seed117pub fn get_account_id_from_seed<TPublic: Public>(seed: &str) -> AccountId118where119	AccountPublic: From<<TPublic::Pair as Pair>::Public>,120{121	AccountPublic::from(get_from_seed::<TPublic>(seed)).into_account()122}123124pub fn development_config() -> OpalChainSpec {125	let mut properties = Map::new();126	properties.insert("tokenSymbol".into(), "OPL".into());127	properties.insert("tokenDecimals".into(), 15.into());128	properties.insert("ss58Format".into(), 42.into());129130	OpalChainSpec::from_genesis(131		// Name132		"Development",133		// ID134		"dev",135		ChainType::Local,136		move || {137			testnet_genesis(138				// Sudo account139				get_account_id_from_seed::<sr25519::Public>("Alice"),140				vec![141					get_from_seed::<AuraId>("Alice"),142					get_from_seed::<AuraId>("Bob"),143				],144				// Pre-funded accounts145				vec![146					get_account_id_from_seed::<sr25519::Public>("Alice"),147					get_account_id_from_seed::<sr25519::Public>("Bob"),148				],149				1000.into(),150			)151		},152		// Bootnodes153		vec![],154		// Telemetry155		None,156		// Protocol ID157		None,158		None,159		// Properties160		Some(properties),161		// Extensions162		Extensions {163			relay_chain: "rococo-dev".into(),164			para_id: 1000,165		},166	)167}168169pub fn local_testnet_rococo_config() -> OpalChainSpec {170	OpalChainSpec::from_genesis(171		// Name172		"Local Testnet",173		// ID174		"local_testnet",175		ChainType::Local,176		move || {177			testnet_genesis(178				// Sudo account179				get_account_id_from_seed::<sr25519::Public>("Alice"),180				vec![181					get_from_seed::<AuraId>("Alice"),182					get_from_seed::<AuraId>("Bob"),183				],184				// Pre-funded accounts185				vec![186					get_account_id_from_seed::<sr25519::Public>("Alice"),187					get_account_id_from_seed::<sr25519::Public>("Bob"),188					get_account_id_from_seed::<sr25519::Public>("Charlie"),189					get_account_id_from_seed::<sr25519::Public>("Dave"),190					get_account_id_from_seed::<sr25519::Public>("Eve"),191					get_account_id_from_seed::<sr25519::Public>("Ferdie"),192					get_account_id_from_seed::<sr25519::Public>("Alice//stash"),193					get_account_id_from_seed::<sr25519::Public>("Bob//stash"),194					get_account_id_from_seed::<sr25519::Public>("Charlie//stash"),195					get_account_id_from_seed::<sr25519::Public>("Dave//stash"),196					get_account_id_from_seed::<sr25519::Public>("Eve//stash"),197					get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),198				],199				1000.into(),200			)201		},202		// Bootnodes203		vec![],204		// Telemetry205		None,206		// Protocol ID207		None,208		None,209		// Properties210		None,211		// Extensions212		Extensions {213			relay_chain: "rococo-local".into(),214			para_id: 1000,215		},216	)217}218219fn testnet_genesis(220	root_key: AccountId,221	initial_authorities: Vec<AuraId>,222	endowed_accounts: Vec<AccountId>,223	id: ParaId,224) -> opal_runtime::GenesisConfig {225	use opal_runtime::*;226227	GenesisConfig {228		system: SystemConfig {229			code: WASM_BINARY230				.expect("WASM binary was not build, please build it!")231				.to_vec(),232		},233		balances: BalancesConfig {234			balances: endowed_accounts235				.iter()236				.cloned()237				// 1e13 UNQ238				.map(|k| (k, 1 << 100))239				.collect(),240		},241		treasury: Default::default(),242		sudo: SudoConfig {243			key: Some(root_key),244		},245		vesting: VestingConfig { vesting: vec![] },246		parachain_info: ParachainInfoConfig { parachain_id: id },247		parachain_system: Default::default(),248		aura: AuraConfig {249			authorities: initial_authorities,250		},251		aura_ext: Default::default(),252		evm: EVMConfig {253			accounts: BTreeMap::new(),254		},255		ethereum: EthereumConfig {},256	}257}
after · node/cli/src/chain_spec.rs
1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617use cumulus_primitives_core::ParaId;18use sc_chain_spec::{ChainSpecExtension, ChainSpecGroup};19use sc_service::ChainType;20use sp_core::{sr25519, Pair, Public};21use sp_runtime::traits::{IdentifyAccount, Verify};22use std::collections::BTreeMap;2324use serde::{Deserialize, Serialize};25use serde_json::map::Map;2627use unique_runtime_common::types::*;2829/// The `ChainSpec` parameterized for the unique runtime.30#[cfg(feature = "unique-runtime")]31pub type UniqueChainSpec = sc_service::GenericChainSpec<unique_runtime::GenesisConfig, Extensions>;3233/// The `ChainSpec` parameterized for the quartz runtime.34#[cfg(feature = "quartz-runtime")]35pub type QuartzChainSpec = sc_service::GenericChainSpec<quartz_runtime::GenesisConfig, Extensions>;3637/// The `ChainSpec` parameterized for the opal runtime.38pub type OpalChainSpec = sc_service::GenericChainSpec<opal_runtime::GenesisConfig, Extensions>;3940pub enum RuntimeId {41	#[cfg(feature = "unique-runtime")]42	Unique,4344	#[cfg(feature = "quartz-runtime")]45	Quartz,4647	Opal,48	Unknown(String),49}5051pub trait RuntimeIdentification {52	fn runtime_id(&self) -> RuntimeId;53}5455impl RuntimeIdentification for Box<dyn sc_service::ChainSpec> {56	fn runtime_id(&self) -> RuntimeId {57		#[cfg(feature = "unique-runtime")]58		if self.id().starts_with("unique") {59			return RuntimeId::Unique;60		}6162		#[cfg(feature = "quartz-runtime")]63		if self.id().starts_with("quartz") {64			return RuntimeId::Quartz;65		}6667		if self.id().starts_with("opal") || self.id() == "dev" || self.id() == "local_testnet" {68			return RuntimeId::Opal;69		}7071		RuntimeId::Unknown(self.id().into())72	}73}7475pub enum ServiceId {76	Prod,77	Dev,78}7980pub trait ServiceIdentification {81	fn service_id(&self) -> ServiceId;82}8384impl ServiceIdentification for Box<dyn sc_service::ChainSpec> {85	fn service_id(&self) -> ServiceId {86		if self.id().ends_with("dev") {87			ServiceId::Dev88		} else {89			ServiceId::Prod90		}91	}92}9394/// Helper function to generate a crypto pair from seed95pub fn get_from_seed<TPublic: Public>(seed: &str) -> <TPublic::Pair as Pair>::Public {96	TPublic::Pair::from_string(&format!("//{}", seed), None)97		.expect("static values are valid; qed")98		.public()99}100101/// The extensions for the [`ChainSpec`].102#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, ChainSpecGroup, ChainSpecExtension)]103#[serde(deny_unknown_fields)]104pub struct Extensions {105	/// The relay chain of the Parachain.106	pub relay_chain: String,107	/// The id of the Parachain.108	pub para_id: u32,109}110111impl Extensions {112	/// Try to get the extension from the given `ChainSpec`.113	pub fn try_get(chain_spec: &dyn sc_service::ChainSpec) -> Option<&Self> {114		sc_chain_spec::get_extension(chain_spec.extensions())115	}116}117118type AccountPublic = <Signature as Verify>::Signer;119120/// Helper function to generate an account ID from seed121pub fn get_account_id_from_seed<TPublic: Public>(seed: &str) -> AccountId122where123	AccountPublic: From<<TPublic::Pair as Pair>::Public>,124{125	AccountPublic::from(get_from_seed::<TPublic>(seed)).into_account()126}127128pub fn development_config() -> OpalChainSpec {129	let mut properties = Map::new();130	properties.insert("tokenSymbol".into(), "OPL".into());131	properties.insert("tokenDecimals".into(), 15.into());132	properties.insert("ss58Format".into(), 42.into());133134	OpalChainSpec::from_genesis(135		// Name136		"Development",137		// ID138		"dev",139		ChainType::Local,140		move || {141			testnet_genesis(142				// Sudo account143				get_account_id_from_seed::<sr25519::Public>("Alice"),144				vec![145					get_from_seed::<AuraId>("Alice"),146					get_from_seed::<AuraId>("Bob"),147				],148				// Pre-funded accounts149				vec![150					get_account_id_from_seed::<sr25519::Public>("Alice"),151					get_account_id_from_seed::<sr25519::Public>("Bob"),152				],153				1000.into(),154			)155		},156		// Bootnodes157		vec![],158		// Telemetry159		None,160		// Protocol ID161		None,162		None,163		// Properties164		Some(properties),165		// Extensions166		Extensions {167			relay_chain: "rococo-dev".into(),168			para_id: 1000,169		},170	)171}172173pub fn local_testnet_rococo_config() -> OpalChainSpec {174	OpalChainSpec::from_genesis(175		// Name176		"Local Testnet",177		// ID178		"local_testnet",179		ChainType::Local,180		move || {181			testnet_genesis(182				// Sudo account183				get_account_id_from_seed::<sr25519::Public>("Alice"),184				vec![185					get_from_seed::<AuraId>("Alice"),186					get_from_seed::<AuraId>("Bob"),187				],188				// Pre-funded accounts189				vec![190					get_account_id_from_seed::<sr25519::Public>("Alice"),191					get_account_id_from_seed::<sr25519::Public>("Bob"),192					get_account_id_from_seed::<sr25519::Public>("Charlie"),193					get_account_id_from_seed::<sr25519::Public>("Dave"),194					get_account_id_from_seed::<sr25519::Public>("Eve"),195					get_account_id_from_seed::<sr25519::Public>("Ferdie"),196					get_account_id_from_seed::<sr25519::Public>("Alice//stash"),197					get_account_id_from_seed::<sr25519::Public>("Bob//stash"),198					get_account_id_from_seed::<sr25519::Public>("Charlie//stash"),199					get_account_id_from_seed::<sr25519::Public>("Dave//stash"),200					get_account_id_from_seed::<sr25519::Public>("Eve//stash"),201					get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),202				],203				1000.into(),204			)205		},206		// Bootnodes207		vec![],208		// Telemetry209		None,210		// Protocol ID211		None,212		None,213		// Properties214		None,215		// Extensions216		Extensions {217			relay_chain: "rococo-local".into(),218			para_id: 1000,219		},220	)221}222223fn testnet_genesis(224	root_key: AccountId,225	initial_authorities: Vec<AuraId>,226	endowed_accounts: Vec<AccountId>,227	id: ParaId,228) -> opal_runtime::GenesisConfig {229	use opal_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		sudo: SudoConfig {247			key: Some(root_key),248		},249		vesting: VestingConfig { vesting: vec![] },250		parachain_info: ParachainInfoConfig { parachain_id: id },251		parachain_system: Default::default(),252		aura: AuraConfig {253			authorities: initial_authorities,254		},255		aura_ext: Default::default(),256		evm: EVMConfig {257			accounts: BTreeMap::new(),258		},259		ethereum: EthereumConfig {},260	}261}
modifiednode/cli/src/service.rsdiffbeforeafterboth
--- a/node/cli/src/service.rs
+++ b/node/cli/src/service.rs
@@ -61,9 +61,16 @@
 
 use unique_runtime_common::types::{AuraId, RuntimeInstance, AccountId, Balance, Index, Hash, Block};
 
-/// Native executor instance.
+/// Unique native executor instance.
+#[cfg(feature = "unique-runtime")]
 pub struct UniqueRuntimeExecutor;
+
+#[cfg(feature = "quartz-runtime")]
+/// Quartz native executor instance.
+
 pub struct QuartzRuntimeExecutor;
+
+/// Opal native executor instance.
 pub struct OpalRuntimeExecutor;
 
 #[cfg(feature = "unique-runtime")]