diff --git a/node/src/command.rs b/node/src/command.rs index c9ae0cd6f300069dcf109b6bb7f3b6ae6950aec6..c1ce8bfff81d42ab2d9bfb0ca03d1ec2964a5f3a 100644 --- a/node/src/command.rs +++ b/node/src/command.rs @@ -24,7 +24,7 @@ pub mod utils; use crate::chain_spec::gtest; use crate::cli::{Cli, Subcommand}; use crate::service::runtime_executor::Executor; -use crate::service::{IdentifyRuntimeType, RuntimeType}; +use crate::service::RuntimeType; use crate::{chain_spec, service}; use clap::CommandFactory; #[cfg(feature = "runtime-benchmarks")] @@ -83,19 +83,20 @@ impl SubstrateCli for Cli { fn load_spec(&self, id: &str) -> Result<Box<dyn sc_service::ChainSpec>, String> { Ok(match id { - // === GDEV === - // development chainspec with generated genesis and Alice validator + // Development chainspec with generated genesis and Alice as a validator #[cfg(feature = "gdev")] "dev" => Box::new(chain_spec::gdev::local_testnet_config(1, 3, 4)?), - // local testnet with g1 data, gdev configuration (parameters & smiths) and Alice validator - // > optionally from DUNITER_GENESIS_CONFIG file to override default gdev configuration + + // Local testnet with G1 data, Gdev configuration (parameters & Smiths), and Alice as a validator. + // Optionally, load configuration from DUNITER_GENESIS_CONFIG file to override default Gdev configuration. #[cfg(feature = "gdev")] "gdev_dev" => Box::new(chain_spec::gdev::gdev_development_chain_spec( "resources/gdev.yaml".to_string(), )?), - // chainspecs for live network with g1 data, gdev configuration (parameters & smiths) - // but must have a smith with declared session keys - // > optionally from DUNITER_GENESIS_CONFIG file to override default gdev configuration + + // Chainspecs for live network with G1 data, Gdev configuration (parameters & Smiths). + // A Smith with declared session keys is required. + // Optionally load configuration from DUNITER_GENESIS_CONFIG file to override default Gdev configuration. #[cfg(feature = "gdev")] "gdev_live" => { const CLIENT_SPEC: &str = "./node/specs/gdev_client-specs.yaml"; @@ -107,28 +108,27 @@ impl SubstrateCli for Cli { .map_err(|e| format!("failed to read {CLIENT_SPEC} {e}"))?[..], ) .map_err(|e| format!("failed to parse {e}"))?; - // rebuild chainspecs from these files Box::new(chain_spec::gdev::gen_live_conf( client_spec, "resources/gdev.yaml".to_string(), )?) } - // hardcoded previously generated raw chainspecs - // yields a pointlessly heavy binary because of hexadecimal-text-encoded values + + // Hardcoded raw chainspecs with previously generated values, resulting in a needlessly heavy binary due to hexadecimal-text-encoded values. #[cfg(feature = "gdev")] "gdev" => Box::new(chain_spec::gdev::ChainSpec::from_json_bytes( &include_bytes!("../specs/gdev-raw.json")[..], )?), - // === GTEST === - // generate dev chainspecs with Alice validator - // provide DUNITER_GTEST_GENESIS env var if you want to build genesis from json - // otherwise you get a local testnet with generated genesis + + // Generate development chainspecs with Alice as a validator. + // Provide the DUNITER_GTEST_GENESIS environment variable to build genesis from JSON; otherwise, a local testnet with generated genesis will be used. #[cfg(feature = "gtest")] "gtest_dev" => Box::new(chain_spec::gtest::development_chainspecs( "resources/gtest.yaml".to_string(), )?), - // chainspecs for live network - // must have following files in ./node/specs folder or overwrite with env var: + + // Chainspecs for the live network. + // Required files in the ./node/specs folder or override with environment variables: // - gtest.json / DUNITER_GTEST_GENESIS // - gtest_client-specs.json / DUNITER_GTEST_CLIENT_SPEC #[cfg(feature = "gtest")] @@ -142,31 +142,27 @@ impl SubstrateCli for Cli { .map_err(|e| format!("failed to read {JSON_CLIENT_SPEC} {e}"))?[..], ) .map_err(|e| format!("failed to parse {e}"))?; - // rebuild chainspecs from these files Box::new(chain_spec::gtest::live_chainspecs( client_spec, "resources/gtest.yaml".to_string(), )?) } - // return hardcoded live chainspecs, only with embed feature - // embed client spec and genesis to avoid embeding hexadecimal runtime - // and having hexadecimal runtime in git history - // will only build on a branch that has a file - // ./node/specs/gtest-raw.json + + // Return hardcoded live chainspecs, only with the embed feature enabled. + // Embed client spec and genesis to avoid embedding hexadecimal runtime + // and having hexadecimal runtime in the git history. + // This will only build on a branch that has a file named ./node/specs/gtest-raw.json. #[cfg(all(feature = "gtest", feature = "embed"))] "gtest" => Box::new(chain_spec::gtest::ChainSpec::from_json_bytes( &include_bytes!("../specs/gtest-raw.json")[..], )?), - // === G1 === #[cfg(feature = "g1")] "g1" => { unimplemented!() //Box::new(chain_spec::g1::ChainSpec::from_json_file(file_path)?) } - // Specs provided as json specify which runtime to use in their file name. For example, - // `g1-custom.json` uses the g1 runtime. - // `gdev-workshop.json` uses the gdev runtime. + path => { let path = std::path::PathBuf::from(path); @@ -299,7 +295,7 @@ pub fn run() -> sc_cli::Result<()> { #[cfg(feature = "runtime-benchmarks")] Some(Subcommand::Benchmark(cmd)) => { let runner = cli.create_runner(&**cmd)?; - let chain_spec = &runner.config().chain_spec; + let _chain_spec = &runner.config().chain_spec; match &**cmd { BenchmarkCmd::Storage(cmd) => runner.sync_run(|config| { @@ -334,30 +330,12 @@ pub fn run() -> sc_cli::Result<()> { }), BenchmarkCmd::Pallet(cmd) => { if cfg!(feature = "runtime-benchmarks") { - match chain_spec.runtime_type() { - #[cfg(feature = "g1")] - RuntimeType::G1 => runner.sync_run(|config| { - cmd.run::<g1_runtime::Block, ExtendedHostFunctions< - sp_io::SubstrateHostFunctions, - <Executor as NativeExecutionDispatch>::ExtendHostFunctions, - >>(config) - }), - #[cfg(feature = "gtest")] - RuntimeType::GTest => runner.sync_run(|config| { - cmd.run::<gtest_runtime::Block, ExtendedHostFunctions< + runner.sync_run(|config| { + cmd.run::<service::runtime_executor::runtime::Block, ExtendedHostFunctions< sp_io::SubstrateHostFunctions, <Executor as NativeExecutionDispatch>::ExtendHostFunctions, >>(config) - }), - #[cfg(feature = "gdev")] - RuntimeType::GDev => runner.sync_run(|config| { - cmd.run::<gdev_runtime::Block, ExtendedHostFunctions< - sp_io::SubstrateHostFunctions, - <Executor as NativeExecutionDispatch>::ExtendHostFunctions, - >>(config) - }), - _ => Err(sc_cli::Error::Application("unknown runtime type".into())), - } + }) } else { Err("Benchmarking wasn't enabled when building the node. \ You can enable it with `--features runtime-benchmarks`." @@ -404,15 +382,12 @@ pub fn run() -> sc_cli::Result<()> { match chain_spec.runtime_type() { #[cfg(feature = "gdev")] - RuntimeType::GDev => { - //sp_core::crypto::set_default_ss58_version(Ss58AddressFormatRegistry::GDev); - runner.async_run(|config| { - Ok(( - cmd.run::<gdev_runtime::Block, Executor>(config), - task_manager, - )) - }) - } + RuntimeType::GDev => runner.async_run(|config| { + Ok(( + cmd.run::<gdev_runtime::Block, Executor>(config), + task_manager, + )) + }), _ => Err(sc_cli::Error::Application("unknown runtime type".into())), } } @@ -429,24 +404,12 @@ pub fn run() -> sc_cli::Result<()> { config.offchain_worker.indexing_enabled = true; } - match config.chain_spec.runtime_type() { - #[cfg(feature = "g1")] - RuntimeType::G1 => { - service::new_full::<g1_runtime::RuntimeApi, Executor>(config, cli.sealing) - .map_err(sc_cli::Error::Service) - } - #[cfg(feature = "gtest")] - RuntimeType::GTest => service::new_full::<gtest_runtime::RuntimeApi, Executor>( + { + service::new_full::<service::runtime_executor::runtime::RuntimeApi, Executor>( config, cli.sealing, ) - .map_err(sc_cli::Error::Service), - #[cfg(feature = "gdev")] - RuntimeType::GDev => { - service::new_full::<gdev_runtime::RuntimeApi, Executor>(config, cli.sealing) - .map_err(sc_cli::Error::Service) - } - _ => Err(sc_cli::Error::Application("unknown runtime".into())), + .map_err(sc_cli::Error::Service) } }) } diff --git a/node/src/service.rs b/node/src/service.rs index 1369217a3f3e94ac0850162b94a72addcb3ae245..639a6e1131a00d41030e76ac2f2af78a3151f813 100644 --- a/node/src/service.rs +++ b/node/src/service.rs @@ -102,14 +102,14 @@ pub enum RuntimeType { GTest, } -/// Can be called for a `Configuration` to check if it is a configuration for +/*/// Can be called for a `Configuration` to check if it is a configuration for /// a particular runtime type. pub trait IdentifyRuntimeType { /// Returns the runtime type fn runtime_type(&self) -> RuntimeType; -} +}*/ -impl IdentifyRuntimeType for Box<dyn sc_chain_spec::ChainSpec> { +/*impl IdentifyRuntimeType for Box<dyn sc_chain_spec::ChainSpec> { fn runtime_type(&self) -> RuntimeType { if self.id().starts_with("g1") { RuntimeType::G1 @@ -121,7 +121,7 @@ impl IdentifyRuntimeType for Box<dyn sc_chain_spec::ChainSpec> { panic!("unknown runtime") } } -} +}*/ /// Builds a new object suitable for chain operations. #[allow(clippy::type_complexity)]