Skip to content

Commit

Permalink
Move consensus ExecutorDispatch from subspace-node to `subspace-r…
Browse files Browse the repository at this point in the history
…untime` for better reuse
  • Loading branch information
nazar-pc committed Dec 18, 2023
1 parent 5a93c49 commit 87b7a05
Show file tree
Hide file tree
Showing 8 changed files with 38 additions and 36 deletions.
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@ use sp_core::traits::SpawnEssentialNamed;
use sp_messenger::messages::ChainId;
use subspace_malicious_operator::malicious_domain_instance_starter::DomainInstanceStarter;
use subspace_node::domain::DomainCli;
use subspace_node::{Cli, ExecutorDispatch};
use subspace_node::Cli;
use subspace_proof_of_space::chia::ChiaTable;
use subspace_runtime::{Block, RuntimeApi};
use subspace_runtime::{Block, ExecutorDispatch, RuntimeApi};
use subspace_service::{DsnConfig, SubspaceConfiguration, SubspaceNetworking};

type PosTable = ChiaTable;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ use std::sync::Arc;
use subspace_node::domain::{
create_configuration, evm_chain_spec, AccountId20, DomainCli, EVMDomainExecutorDispatch,
};
use subspace_node::ExecutorDispatch as CExecutorDispatch;
use subspace_runtime::RuntimeApi as CRuntimeApi;
use subspace_runtime::{ExecutorDispatch as CExecutorDispatch, RuntimeApi as CRuntimeApi};
use subspace_runtime_primitives::opaque::Block as CBlock;
use subspace_service::FullClient as CFullClient;

Expand Down
4 changes: 2 additions & 2 deletions crates/subspace-node/src/bin/subspace-node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@ use sp_wasm_interface::ExtendedHostFunctions;
use subspace_node::domain::{
DomainCli, DomainInstanceStarter, DomainSubcommand, EVMDomainExecutorDispatch,
};
use subspace_node::{Cli, ExecutorDispatch, Subcommand};
use subspace_node::{Cli, Subcommand};
use subspace_proof_of_space::chia::ChiaTable;
use subspace_runtime::{Block, RuntimeApi};
use subspace_runtime::{Block, ExecutorDispatch, RuntimeApi};
use subspace_service::{DsnConfig, SubspaceConfiguration, SubspaceNetworking};

type PosTable = ChiaTable;
Expand Down
3 changes: 1 addition & 2 deletions crates/subspace-node/src/domain/domain_instance_starter.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
use super::{evm_chain_spec, DomainCli};
use crate::domain::{AccountId20, EVMDomainExecutorDispatch};
use crate::ExecutorDispatch as CExecutorDispatch;
use cross_domain_message_gossip::{ChainTxPoolMsg, Message};
use domain_client_operator::{BootstrapResult, OperatorStreams};
use domain_eth_service::provider::EthProvider;
Expand All @@ -19,7 +18,7 @@ use sc_transaction_pool_api::OffchainTransactionPoolFactory;
use sc_utils::mpsc::{TracingUnboundedReceiver, TracingUnboundedSender};
use sp_domains::{DomainInstanceData, RuntimeType};
use std::sync::Arc;
use subspace_runtime::RuntimeApi as CRuntimeApi;
use subspace_runtime::{ExecutorDispatch as CExecutorDispatch, RuntimeApi as CRuntimeApi};
use subspace_runtime_primitives::opaque::Block as CBlock;
use subspace_service::FullClient as CFullClient;

Expand Down
28 changes: 0 additions & 28 deletions crates/subspace-node/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ pub mod domain;

use clap::Parser;
use sc_cli::{RunCmd, SubstrateCli};
use sc_executor::NativeExecutionDispatch;
use sc_service::ChainSpec;
use sc_storage_monitor::StorageMonitorParams;
use sc_subspace_chain_specs::ConsensusChainSpec;
Expand All @@ -33,33 +32,6 @@ use std::io::Write;
use std::{fs, io};
use subspace_networking::libp2p::Multiaddr;

/// Executor dispatch for subspace runtime
pub struct ExecutorDispatch;

impl NativeExecutionDispatch for ExecutorDispatch {
/// Only enable the benchmarking host functions when we actually want to benchmark.
#[cfg(feature = "runtime-benchmarks")]
type ExtendHostFunctions = (
frame_benchmarking::benchmarking::HostFunctions,
sp_consensus_subspace::consensus::HostFunctions,
sp_domains_fraud_proof::HostFunctions,
);
/// Otherwise we only use the default Substrate host functions.
#[cfg(not(feature = "runtime-benchmarks"))]
type ExtendHostFunctions = (
sp_consensus_subspace::consensus::HostFunctions,
sp_domains_fraud_proof::HostFunctions,
);

fn dispatch(method: &str, data: &[u8]) -> Option<Vec<u8>> {
subspace_runtime::api::dispatch(method, data)
}

fn native_version() -> sc_executor::NativeVersion {
subspace_runtime::native_version()
}
}

/// This `purge-chain` command used to remove both consensus chain and domain.
#[derive(Debug, Clone, Parser)]
#[group(skip)]
Expand Down
2 changes: 2 additions & 0 deletions crates/subspace-runtime/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ pallet-transaction-payment-rpc-runtime-api = { version = "4.0.0-dev", default-fe
pallet-transporter = { version = "0.1.0", path = "../../domains/pallets/transporter", default-features = false }
pallet-utility = { version = "4.0.0-dev", default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "0831dfc3c54b10ab46e82acf98603b4af1a47bd5" }
scale-info = { version = "2.7.0", default-features = false, features = ["derive"] }
sc-executor = { version = "0.10.0-dev", git = "https://github.com/subspace/polkadot-sdk", rev = "0831dfc3c54b10ab46e82acf98603b4af1a47bd5", optional = true }
sp-api = { version = "4.0.0-dev", default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "0831dfc3c54b10ab46e82acf98603b4af1a47bd5" }
sp-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "0831dfc3c54b10ab46e82acf98603b4af1a47bd5", default-features = false, version = "4.0.0-dev" }
sp-consensus-subspace = { version = "0.1.0", default-features = false, path = "../sp-consensus-subspace" }
Expand Down Expand Up @@ -95,6 +96,7 @@ std = [
"pallet-transporter/std",
"pallet-utility/std",
"scale-info/std",
"sc-executor",
"sp-api/std",
"sp-block-builder/std",
"sp-consensus-subspace/std",
Expand Down
29 changes: 29 additions & 0 deletions crates/subspace-runtime/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,35 @@ pub fn native_version() -> NativeVersion {
}
}

/// Executor dispatch for subspace runtime
#[cfg(feature = "std")]
pub struct ExecutorDispatch;

#[cfg(feature = "std")]
impl sc_executor::NativeExecutionDispatch for ExecutorDispatch {
/// Only enable the benchmarking host functions when we actually want to benchmark.
#[cfg(feature = "runtime-benchmarks")]
type ExtendHostFunctions = (
frame_benchmarking::benchmarking::HostFunctions,
sp_consensus_subspace::consensus::HostFunctions,
sp_domains_fraud_proof::HostFunctions,
);
/// Otherwise we only use the default Substrate host functions.
#[cfg(not(feature = "runtime-benchmarks"))]
type ExtendHostFunctions = (
sp_consensus_subspace::consensus::HostFunctions,
sp_domains_fraud_proof::HostFunctions,
);

fn dispatch(method: &str, data: &[u8]) -> Option<Vec<u8>> {
api::dispatch(method, data)
}

fn native_version() -> sc_executor::NativeVersion {
native_version()
}
}

// TODO: Many of below constants should probably be updatable but currently they are not

/// Since Subspace is probabilistic this is the average expected block time that
Expand Down

0 comments on commit 87b7a05

Please sign in to comment.