Skip to content

Commit

Permalink
Merge pull request #2377 from subspace/change-directory-structure
Browse files Browse the repository at this point in the history
Change directory structure from Substrate to Subspace
  • Loading branch information
nazar-pc authored Jan 3, 2024
2 parents e65a625 + 785ca6d commit a98b0f6
Show file tree
Hide file tree
Showing 6 changed files with 163 additions and 142 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ use cross_domain_message_gossip::GossipWorkerBuilder;
use domain_client_operator::Bootstrapper;
use domain_runtime_primitives::opaque::Block as DomainBlock;
use log::warn;
use sc_cli::{ChainSpec, CliConfiguration, SubstrateCli};
use sc_cli::{ChainSpec, SubstrateCli};
use sc_consensus_slots::SlotProportion;
use sc_service::Configuration;
use sc_storage_monitor::StorageMonitorService;
Expand Down Expand Up @@ -125,6 +125,7 @@ fn main() -> Result<(), Error> {
set_default_ss58_version(&runner.config().chain_spec);
runner.run_node_until_exit(|consensus_chain_config| async move {
let tokio_handle = consensus_chain_config.tokio_handle.clone();
let base_path = consensus_chain_config.base_path.path().to_path_buf();
let database_source = consensus_chain_config.database.clone();

let domains_bootstrap_nodes: serde_json::map::Map<String, serde_json::Value> =
Expand Down Expand Up @@ -274,12 +275,7 @@ fn main() -> Result<(), Error> {
);
let _enter = span.enter();

let mut domain_cli = DomainCli::new(
cli.run
.base_path()?
.map(|base_path| base_path.path().to_path_buf()),
cli.domain_args.into_iter(),
);
let mut domain_cli = DomainCli::new(cli.domain_args.into_iter());

let domain_id = domain_cli.domain_id;

Expand Down Expand Up @@ -360,6 +356,7 @@ fn main() -> Result<(), Error> {

let domain_starter = DomainInstanceStarter {
domain_cli,
base_path,
tokio_handle,
consensus_client: consensus_chain_node.client.clone(),
consensus_keystore,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,14 @@ use sc_consensus_subspace::block_import::BlockImportingNotification;
use sc_consensus_subspace::notification::SubspaceNotificationStream;
use sc_consensus_subspace::slot_worker::NewSlotNotification;
use sc_network::NetworkPeers;
use sc_service::BasePath;
use sc_service::config::KeystoreConfig;
use sc_service::{BasePath, DatabaseSource};
use sc_transaction_pool_api::OffchainTransactionPoolFactory;
use sc_utils::mpsc::{TracingUnboundedReceiver, TracingUnboundedSender};
use sp_core::traits::SpawnEssentialNamed;
use sp_domains::{DomainInstanceData, RuntimeType};
use sp_keystore::KeystorePtr;
use std::path::PathBuf;
use std::sync::Arc;
use subspace_node::domain::{create_configuration, evm_chain_spec, AccountId20, DomainCli};
use subspace_runtime::{ExecutorDispatch as CExecutorDispatch, RuntimeApi as CRuntimeApi};
Expand All @@ -28,6 +30,7 @@ use subspace_service::FullClient as CFullClient;
/// bootstrap result
pub struct DomainInstanceStarter<CNetwork> {
pub domain_cli: DomainCli,
pub base_path: PathBuf,
pub tokio_handle: tokio::runtime::Handle,
pub consensus_client: Arc<CFullClient<CRuntimeApi, CExecutorDispatch>>,
pub consensus_keystore: KeystorePtr,
Expand Down Expand Up @@ -62,6 +65,7 @@ where

let DomainInstanceStarter {
domain_cli,
base_path,
tokio_handle,
consensus_client,
consensus_keystore,
Expand All @@ -75,14 +79,35 @@ where
} = self;

let domain_id = domain_cli.domain_id;
let domain_config = {
let mut domain_config = {
let chain_id = domain_cli.chain_id(domain_cli.is_dev()?)?;

let domain_spec = evm_chain_spec::create_domain_spec(chain_id.as_str(), raw_genesis)?;

create_configuration::<_, DomainCli, DomainCli>(&domain_cli, domain_spec, tokio_handle)?
};

// Change default paths to Subspace structure
// TODO: Similar copy-paste exists in `DomainCli::create_domain_configuration()` as well as
// `subspace-node`'s `DomainInstanceStarter` and should be de-duplicated
{
let domain_base_path = base_path.join("domains").join(domain_id.to_string());
domain_config.database = DatabaseSource::ParityDb {
path: domain_base_path.join("db"),
};
domain_config.keystore = KeystoreConfig::Path {
path: domain_base_path.join("keystore"),
password: match domain_config.keystore {
KeystoreConfig::Path { password, .. } => password,
KeystoreConfig::InMemory => None,
},
};
// Network directory is shared with consensus chain
if let Some(net_config_path) = &mut domain_config.network.net_config_path {
*net_config_path = base_path.join("network");
}
}

let block_importing_notification_stream = || {
block_importing_notification_stream.subscribe().then(
|block_importing_notification| async move {
Expand Down
84 changes: 36 additions & 48 deletions crates/subspace-node/src/bin/subspace-node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,12 @@ use evm_domain_runtime::ExecutorDispatch as EVMDomainExecutorDispatch;
use frame_benchmarking_cli::BenchmarkCmd;
use futures::future::TryFutureExt;
use log::warn;
use sc_cli::{ChainSpec, CliConfiguration, SubstrateCli};
use sc_cli::{ChainSpec, SubstrateCli};
use sc_consensus_slots::SlotProportion;
use sc_executor::NativeExecutionDispatch;
use sc_service::{Configuration, PartialComponents};
use sc_network::config::NodeKeyConfig;
use sc_service::config::KeystoreConfig;
use sc_service::{Configuration, DatabaseSource, PartialComponents};
use sc_storage_monitor::StorageMonitorService;
use sc_transaction_pool_api::OffchainTransactionPoolFactory;
use sc_utils::mpsc::tracing_unbounded;
Expand Down Expand Up @@ -225,37 +227,13 @@ fn main() -> Result<(), Error> {
base_dir.join("subspace-node").join("chains").join(chain),
);
}
let _ = std::fs::remove_dir_all(base_dir.join("subspace-node").join("domain-0"));
let _ = std::fs::remove_dir_all(base_dir.join("subspace-node").join("domain-1"));
}

let runner = cli.create_runner(&cmd.base)?;

runner.sync_run(|consensus_chain_config| {
let domain_config = if cmd.domain_args.is_empty() {
None
} else {
let domain_cli = DomainCli::new(
cmd.base
.base_path()?
.map(|base_path| base_path.path().to_path_buf()),
cmd.domain_args.clone().into_iter(),
);

let domain_config = SubstrateCli::create_configuration(
&domain_cli,
&domain_cli,
consensus_chain_config.tokio_handle.clone(),
)
.map_err(|error| {
sc_service::Error::Other(format!(
"Failed to create domain configuration: {error:?}"
))
})?;

Some(domain_config)
};

cmd.run(consensus_chain_config, domain_config)
})?;
runner.sync_run(|consensus_chain_config| cmd.run(consensus_chain_config))?;
}
Some(Subcommand::Revert(cmd)) => {
let runner = cli.create_runner(cmd)?;
Expand Down Expand Up @@ -365,15 +343,15 @@ fn main() -> Result<(), Error> {
let runner = cli.create_runner(cmd)?;
runner.sync_run(|consensus_chain_config| {
let domain_cli = DomainCli::new(
cli.run
.base_path()?
.map(|base_path| base_path.path().to_path_buf()),
// pass the domain-id manually for benchmark since this is
// not possible through cli commands at this moment.
vec!["--domain-id".to_owned(), "0".to_owned()].into_iter(),
);
let domain_config = domain_cli
.create_domain_configuration(consensus_chain_config.tokio_handle)
.create_domain_configuration(
&consensus_chain_config.base_path.path().join("domains"),
consensus_chain_config.tokio_handle,
)
.map_err(|error| {
sc_service::Error::Other(format!(
"Failed to create domain configuration: {error:?}"
Expand Down Expand Up @@ -401,14 +379,12 @@ fn main() -> Result<(), Error> {
DomainSubcommand::ExportExecutionReceipt(cmd) => {
let runner = cli.create_runner(cmd)?;
runner.sync_run(|consensus_chain_config| {
let domain_cli = DomainCli::new(
cli.run
.base_path()?
.map(|base_path| base_path.path().to_path_buf()),
cmd.domain_args.clone().into_iter(),
);
let domain_cli = DomainCli::new(cmd.domain_args.clone().into_iter());
let domain_config = domain_cli
.create_domain_configuration(consensus_chain_config.tokio_handle)
.create_domain_configuration(
&consensus_chain_config.base_path.path().join("domains"),
consensus_chain_config.tokio_handle,
)
.map_err(|error| {
sc_service::Error::Other(format!(
"Failed to create domain configuration: {error:?}"
Expand All @@ -430,10 +406,26 @@ fn main() -> Result<(), Error> {
_ => unimplemented!("Domain subcommand"),
},
None => {
let runner = cli.create_runner(&cli.run)?;
let mut runner = cli.create_runner(&cli.run)?;
set_default_ss58_version(&runner.config().chain_spec);
// Change default paths to Subspace structure
{
let config = runner.config_mut();
config.database = DatabaseSource::ParityDb {
path: config.base_path.path().join("db"),
};
// Consensus node doesn't use keystore
config.keystore = KeystoreConfig::InMemory;
if let Some(net_config_path) = &mut config.network.net_config_path {
*net_config_path = config.base_path.path().join("network");
config.network.node_key = NodeKeyConfig::Ed25519(
sc_network::config::Secret::File(net_config_path.join("secret_ed25519")),
);
}
}
runner.run_node_until_exit(|consensus_chain_config| async move {
let tokio_handle = consensus_chain_config.tokio_handle.clone();
let base_path = consensus_chain_config.base_path.path().to_path_buf();
let database_source = consensus_chain_config.database.clone();

let domains_bootstrap_nodes: serde_json::map::Map<String, serde_json::Value> =
Expand Down Expand Up @@ -505,7 +497,7 @@ fn main() -> Result<(), Error> {

DsnConfig {
keypair,
base_path: consensus_chain_config.base_path.path().into(),
base_path: base_path.clone(),
listen_on: cli.dsn_listen_on,
bootstrap_nodes: dsn_bootstrap_nodes,
reserved_peers: cli.dsn_reserved_peers,
Expand Down Expand Up @@ -577,12 +569,7 @@ fn main() -> Result<(), Error> {
);
let _enter = span.enter();

let mut domain_cli = DomainCli::new(
cli.run
.base_path()?
.map(|base_path| base_path.path().to_path_buf()),
cli.domain_args.into_iter(),
);
let mut domain_cli = DomainCli::new(cli.domain_args.into_iter());

let domain_id = domain_cli.domain_id;

Expand Down Expand Up @@ -663,6 +650,7 @@ fn main() -> Result<(), Error> {

let domain_starter = DomainInstanceStarter {
domain_cli,
base_path,
tokio_handle,
consensus_client: consensus_chain_node.client.clone(),
consensus_offchain_tx_pool_factory: OffchainTransactionPoolFactory::new(
Expand Down
Loading

0 comments on commit a98b0f6

Please sign in to comment.