Default to the wasm executor

https://github.com/paritytech/substrate/issues/ 10579 has the rationale for this.
This commit is contained in:
Luke Parker 2023-03-26 18:57:49 -04:00
parent aea6ac104f
commit 17818c2a02
No known key found for this signature in database
4 changed files with 37 additions and 20 deletions

1
Cargo.lock generated
View file

@ -8763,6 +8763,7 @@ dependencies = [
"sp-consensus-babe", "sp-consensus-babe",
"sp-core", "sp-core",
"sp-inherents", "sp-inherents",
"sp-io",
"sp-keyring", "sp-keyring",
"sp-runtime", "sp-runtime",
"sp-timestamp", "sp-timestamp",

View file

@ -23,6 +23,7 @@ sp-core = { git = "https://github.com/serai-dex/substrate" }
sp-keyring = { git = "https://github.com/serai-dex/substrate" } sp-keyring = { git = "https://github.com/serai-dex/substrate" }
sp-inherents = { git = "https://github.com/serai-dex/substrate" } sp-inherents = { git = "https://github.com/serai-dex/substrate" }
sp-timestamp = { git = "https://github.com/serai-dex/substrate" } sp-timestamp = { git = "https://github.com/serai-dex/substrate" }
sp-io = { git = "https://github.com/serai-dex/substrate" }
sp-runtime = { git = "https://github.com/serai-dex/substrate" } sp-runtime = { git = "https://github.com/serai-dex/substrate" }
sp-blockchain = { git = "https://github.com/serai-dex/substrate" } sp-blockchain = { git = "https://github.com/serai-dex/substrate" }
sp-api = { git = "https://github.com/serai-dex/substrate" } sp-api = { git = "https://github.com/serai-dex/substrate" }

View file

@ -99,7 +99,29 @@ pub fn run() -> sc_cli::Result<()> {
}), }),
Some(Subcommand::Benchmark(cmd)) => cli.create_runner(cmd)?.sync_run(|config| match cmd { Some(Subcommand::Benchmark(cmd)) => cli.create_runner(cmd)?.sync_run(|config| match cmd {
BenchmarkCmd::Pallet(cmd) => cmd.run::<Block, service::ExecutorDispatch>(config), BenchmarkCmd::Pallet(cmd) => {
use sc_executor::{NativeVersion, NativeExecutionDispatch};
use serai_runtime as runtime;
struct ExecutorDispatch;
impl 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<Vec<u8>> {
runtime::api::dispatch(method, data)
}
fn native_version() -> NativeVersion {
runtime::native_version()
}
}
cmd.run::<Block, ExecutorDispatch>(config)
}
BenchmarkCmd::Block(cmd) => cmd.run(service::new_partial(&config)?.client), BenchmarkCmd::Block(cmd) => cmd.run(service::new_partial(&config)?.client),

View file

@ -5,7 +5,8 @@ use futures::stream::StreamExt;
use sp_timestamp::InherentDataProvider as TimestampInherent; use sp_timestamp::InherentDataProvider as TimestampInherent;
use sp_consensus_babe::{SlotDuration, inherents::InherentDataProvider as BabeInherent}; use sp_consensus_babe::{SlotDuration, inherents::InherentDataProvider as BabeInherent};
use sc_executor::{NativeVersion, NativeExecutionDispatch, NativeElseWasmExecutor}; use sp_io::SubstrateHostFunctions;
use sc_executor::{sp_wasm_interface::ExtendedHostFunctions, WasmExecutor};
use sc_network_common::sync::warp::WarpSyncParams; use sc_network_common::sync::warp::WarpSyncParams;
use sc_network::{Event, NetworkEventStream}; use sc_network::{Event, NetworkEventStream};
@ -15,29 +16,20 @@ use sc_client_api::BlockBackend;
use sc_telemetry::{Telemetry, TelemetryWorker}; use sc_telemetry::{Telemetry, TelemetryWorker};
use serai_runtime::{self as runtime, opaque::Block, RuntimeApi}; use serai_runtime::{opaque::Block, RuntimeApi};
use sc_consensus_babe::{self, SlotProportion}; use sc_consensus_babe::{self, SlotProportion};
use sc_consensus_grandpa as grandpa; use sc_consensus_grandpa as grandpa;
pub struct ExecutorDispatch; #[cfg(not(feature = "runtime-benchmarks"))]
impl NativeExecutionDispatch for ExecutorDispatch { pub type Executor = WasmExecutor<ExtendedHostFunctions<SubstrateHostFunctions, ()>>;
#[cfg(feature = "runtime-benchmarks")] #[cfg(feature = "runtime-benchmarks")]
type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions; pub type Executor = WasmExecutor<
#[cfg(not(feature = "runtime-benchmarks"))] ExtendedHostFunctions<SubstrateHostFunctions, frame_benchmarking::benchmarking::HostFunctions>,
type ExtendHostFunctions = (); >;
fn dispatch(method: &str, data: &[u8]) -> Option<Vec<u8>> {
runtime::api::dispatch(method, data)
}
fn native_version() -> NativeVersion {
serai_runtime::native_version()
}
}
type FullBackend = sc_service::TFullBackend<Block>; type FullBackend = sc_service::TFullBackend<Block>;
pub type FullClient = TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<ExecutorDispatch>>; pub type FullClient = TFullClient<Block, RuntimeApi, Executor>;
type SelectChain = sc_consensus::LongestChain<FullBackend, Block>; type SelectChain = sc_consensus::LongestChain<FullBackend, Block>;
type GrandpaBlockImport = grandpa::GrandpaBlockImport<FullBackend, Block, FullClient, SelectChain>; type GrandpaBlockImport = grandpa::GrandpaBlockImport<FullBackend, Block, FullClient, SelectChain>;
@ -77,10 +69,11 @@ pub fn new_partial(config: &Configuration) -> Result<PartialComponents, ServiceE
}) })
.transpose()?; .transpose()?;
let executor = NativeElseWasmExecutor::<ExecutorDispatch>::new( let executor = Executor::new(
config.wasm_method, config.wasm_method,
config.default_heap_pages, config.default_heap_pages,
config.max_runtime_instances, config.max_runtime_instances,
None,
config.runtime_cache_size, config.runtime_cache_size,
); );