difftreelog
Fix autoseal, remove obsolete testnet specs
in: master
3 files changed
node/cli/src/chain_spec.rsdiffbeforeafterboth1// 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}218219pub fn local_testnet_westend_config() -> OpalChainSpec {220 OpalChainSpec::from_genesis(221 // Name222 "Local Testnet",223 // ID224 "local_testnet",225 ChainType::Local,226 move || {227 testnet_genesis(228 // Sudo account229 get_account_id_from_seed::<sr25519::Public>("Alice"),230 vec![231 get_from_seed::<AuraId>("Alice"),232 get_from_seed::<AuraId>("Bob"),233 get_from_seed::<AuraId>("Charlie"),234 get_from_seed::<AuraId>("Dave"),235 get_from_seed::<AuraId>("Eve"),236 ],237 // Pre-funded accounts238 vec![239 get_account_id_from_seed::<sr25519::Public>("Alice"),240 get_account_id_from_seed::<sr25519::Public>("Bob"),241 get_account_id_from_seed::<sr25519::Public>("Charlie"),242 get_account_id_from_seed::<sr25519::Public>("Dave"),243 get_account_id_from_seed::<sr25519::Public>("Eve"),244 get_account_id_from_seed::<sr25519::Public>("Ferdie"),245 get_account_id_from_seed::<sr25519::Public>("Alice//stash"),246 get_account_id_from_seed::<sr25519::Public>("Bob//stash"),247 get_account_id_from_seed::<sr25519::Public>("Charlie//stash"),248 get_account_id_from_seed::<sr25519::Public>("Dave//stash"),249 get_account_id_from_seed::<sr25519::Public>("Eve//stash"),250 get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),251 ],252 1000.into(),253 )254 },255 // Bootnodes256 vec![],257 // Telemetry258 None,259 // Protocol ID260 None,261 None,262 // Properties263 None,264 // Extensions265 Extensions {266 relay_chain: "westend-local".into(),267 para_id: 1000,268 },269 )270}271272fn testnet_genesis(273 root_key: AccountId,274 initial_authorities: Vec<AuraId>,275 endowed_accounts: Vec<AccountId>,276 id: ParaId,277) -> opal_runtime::GenesisConfig {278 use opal_runtime::*;279280 GenesisConfig {281 system: SystemConfig {282 code: WASM_BINARY283 .expect("WASM binary was not build, please build it!")284 .to_vec(),285 },286 balances: BalancesConfig {287 balances: endowed_accounts288 .iter()289 .cloned()290 // 1e13 UNQ291 .map(|k| (k, 1 << 100))292 .collect(),293 },294 treasury: Default::default(),295 sudo: SudoConfig {296 key: Some(root_key),297 },298 vesting: VestingConfig { vesting: vec![] },299 parachain_info: ParachainInfoConfig { parachain_id: id },300 parachain_system: Default::default(),301 aura: AuraConfig {302 authorities: initial_authorities,303 },304 aura_ext: Default::default(),305 evm: EVMConfig {306 accounts: BTreeMap::new(),307 },308 ethereum: EthereumConfig {},309 }310}node/cli/src/command.rsdiffbeforeafterboth--- a/node/cli/src/command.rs
+++ b/node/cli/src/command.rs
@@ -75,8 +75,6 @@
fn load_spec(id: &str) -> std::result::Result<Box<dyn sc_service::ChainSpec>, String> {
Ok(match id {
- "westend-local" => Box::new(chain_spec::local_testnet_westend_config()),
- "rococo-local" => Box::new(chain_spec::local_testnet_rococo_config()),
"dev" => Box::new(chain_spec::development_config()),
"" | "local" => Box::new(chain_spec::local_testnet_rococo_config()),
path => {
@@ -402,6 +400,8 @@
|| relay_chain_id == Some("dev-service".into());
if is_dev_service {
+ info!("Running Dev service");
+
return start_node_using_chain_runtime! {
start_dev_node(config).map_err(Into::into)
};
node/cli/src/service.rsdiffbeforeafterboth--- a/node/cli/src/service.rs
+++ b/node/cli/src/service.rs
@@ -126,7 +126,6 @@
sc_service::TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<ExecutorDispatch>>;
type FullBackend = sc_service::TFullBackend<Block>;
type FullSelectChain = sc_consensus::LongestChain<FullBackend, Block>;
-type MaybeSelectChain = Option<FullSelectChain>;
/// Starts a `ServiceBuilder` for a full service.
///
@@ -141,7 +140,7 @@
PartialComponents<
FullClient<RuntimeApi, ExecutorDispatch>,
FullBackend,
- MaybeSelectChain,
+ FullSelectChain,
sc_consensus::DefaultImportQueue<Block, FullClient<RuntimeApi, ExecutorDispatch>>,
sc_transaction_pool::FullPool<Block, FullClient<RuntimeApi, ExecutorDispatch>>,
(
@@ -218,10 +217,7 @@
telemetry
});
- let select_chain = match service_id {
- ServiceId::Prod => Some(sc_consensus::LongestChain::new(backend.clone())),
- ServiceId::Dev => None,
- };
+ let select_chain = sc_consensus::LongestChain::new(backend.clone());
let transaction_pool = sc_transaction_pool::BasicPool::new_full(
config.transaction_pool.clone(),
@@ -367,7 +363,6 @@
let rpc_pool = transaction_pool.clone();
let select_chain = params
.select_chain
- .expect("select_chain always exists when running Prod service; qed")
.clone();
let rpc_network = network.clone();
@@ -754,11 +749,7 @@
let prometheus_registry = config.prometheus_registry().cloned();
let collator = config.role.is_authority();
- let select_chain = maybe_select_chain.clone().expect(
- "`new_partial` builds a `LongestChainRule` when building dev service.\
- We specified the dev service when calling `new_partial`.\
- Therefore, a `LongestChainRule` is present. qed.",
- );
+ let select_chain = maybe_select_chain.clone();
if collator {
let block_import =