diff --git a/Cargo.lock b/Cargo.lock index f44564c885..eddd36f326 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3281,6 +3281,7 @@ dependencies = [ "pallet-transaction-payment-rpc-runtime-api", "pallet-transporter", "parity-scale-codec", + "sc-executor", "scale-info", "sp-api", "sp-block-builder", diff --git a/crates/subspace-node/src/bin/subspace-node.rs b/crates/subspace-node/src/bin/subspace-node.rs index d7b364284f..84af412545 100644 --- a/crates/subspace-node/src/bin/subspace-node.rs +++ b/crates/subspace-node/src/bin/subspace-node.rs @@ -22,6 +22,7 @@ static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc; use cross_domain_message_gossip::GossipWorkerBuilder; use domain_client_operator::Bootstrapper; use domain_runtime_primitives::opaque::Block as DomainBlock; +use evm_domain_runtime::ExecutorDispatch as EVMDomainExecutorDispatch; use frame_benchmarking_cli::BenchmarkCmd; use futures::future::TryFutureExt; use log::warn; @@ -37,9 +38,7 @@ use sp_core::traits::SpawnEssentialNamed; use sp_io::SubstrateHostFunctions; use sp_messenger::messages::ChainId; use sp_wasm_interface::ExtendedHostFunctions; -use subspace_node::domain::{ - DomainCli, DomainInstanceStarter, DomainSubcommand, EVMDomainExecutorDispatch, -}; +use subspace_node::domain::{DomainCli, DomainInstanceStarter, DomainSubcommand}; use subspace_node::{Cli, Subcommand}; use subspace_proof_of_space::chia::ChiaTable; use subspace_runtime::{Block, ExecutorDispatch, RuntimeApi}; diff --git a/crates/subspace-node/src/domain.rs b/crates/subspace-node/src/domain.rs index cd16a48b3b..ba815acb26 100644 --- a/crates/subspace-node/src/domain.rs +++ b/crates/subspace-node/src/domain.rs @@ -20,23 +20,4 @@ pub(crate) mod evm_chain_spec; pub use self::cli::{DomainCli, Subcommand as DomainSubcommand}; pub use self::domain_instance_starter::DomainInstanceStarter; -use evm_domain_runtime::AccountId as AccountId20; -use sc_executor::NativeExecutionDispatch; - -/// EVM domain executor instance. -pub struct EVMDomainExecutorDispatch; - -impl NativeExecutionDispatch for EVMDomainExecutorDispatch { - #[cfg(feature = "runtime-benchmarks")] - type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions; - #[cfg(not(feature = "runtime-benchmarks"))] - type ExtendHostFunctions = (); - - fn dispatch(method: &str, data: &[u8]) -> Option> { - evm_domain_runtime::api::dispatch(method, data) - } - - fn native_version() -> sc_executor::NativeVersion { - evm_domain_runtime::native_version() - } -} +pub use evm_domain_runtime::AccountId as AccountId20; diff --git a/crates/subspace-node/src/domain/domain_instance_starter.rs b/crates/subspace-node/src/domain/domain_instance_starter.rs index 6d019ae7ed..35ff332b19 100644 --- a/crates/subspace-node/src/domain/domain_instance_starter.rs +++ b/crates/subspace-node/src/domain/domain_instance_starter.rs @@ -1,11 +1,12 @@ use super::{evm_chain_spec, DomainCli}; -use crate::domain::{AccountId20, EVMDomainExecutorDispatch}; +use crate::domain::AccountId20; use cross_domain_message_gossip::{ChainTxPoolMsg, Message}; use domain_client_operator::{BootstrapResult, OperatorStreams}; use domain_eth_service::provider::EthProvider; use domain_eth_service::DefaultEthConfig; use domain_runtime_primitives::opaque::Block as DomainBlock; use domain_service::{FullBackend, FullClient}; +use evm_domain_runtime::ExecutorDispatch as EVMDomainExecutorDispatch; use futures::StreamExt; use sc_chain_spec::ChainSpec; use sc_cli::{CliConfiguration, Database, DefaultConfigurationValues, SubstrateCli}; diff --git a/domains/runtime/evm/Cargo.toml b/domains/runtime/evm/Cargo.toml index 66f9bf2978..1c597aa015 100644 --- a/domains/runtime/evm/Cargo.toml +++ b/domains/runtime/evm/Cargo.toml @@ -45,6 +45,7 @@ pallet-transaction-payment = { version = "4.0.0-dev", default-features = false, pallet-transaction-payment-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "c63a8b28a9fd26d42116b0dcef1f2a5cefb9cd1c" } pallet-transporter = { version = "0.1.0", path = "../../pallets/transporter", default-features = false } 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 = "c63a8b28a9fd26d42116b0dcef1f2a5cefb9cd1c", optional = true } sp-api = { version = "4.0.0-dev", default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "c63a8b28a9fd26d42116b0dcef1f2a5cefb9cd1c" } sp-block-builder = { version = "4.0.0-dev", default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "c63a8b28a9fd26d42116b0dcef1f2a5cefb9cd1c" } sp-core = { version = "21.0.0", default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "c63a8b28a9fd26d42116b0dcef1f2a5cefb9cd1c" } @@ -98,6 +99,7 @@ std = [ "pallet-transaction-payment/std", "pallet-transporter/std", "scale-info/std", + "sc-executor", "sp-api/std", "sp-block-builder/std", "sp-core/std", diff --git a/domains/runtime/evm/src/lib.rs b/domains/runtime/evm/src/lib.rs index b027c8e55f..022a4d3440 100644 --- a/domains/runtime/evm/src/lib.rs +++ b/domains/runtime/evm/src/lib.rs @@ -219,6 +219,26 @@ pub fn native_version() -> NativeVersion { } } +/// EVM domain executor instance. +#[cfg(feature = "std")] +pub struct ExecutorDispatch; + +#[cfg(feature = "std")] +impl sc_executor::NativeExecutionDispatch for ExecutorDispatch { + #[cfg(feature = "runtime-benchmarks")] + type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions; + #[cfg(not(feature = "runtime-benchmarks"))] + type ExtendHostFunctions = (); + + fn dispatch(method: &str, data: &[u8]) -> Option> { + api::dispatch(method, data) + } + + fn native_version() -> sc_executor::NativeVersion { + native_version() + } +} + parameter_types! { pub const Version: RuntimeVersion = VERSION; pub const BlockHashCount: BlockNumber = 2400;