From cf483e2c63f23a92818b4f3bd2b4683b18423eda Mon Sep 17 00:00:00 2001 From: Yaroslav Bolyukin Date: Fri, 23 Dec 2022 13:35:30 +0000 Subject: [PATCH] Merge pull request #808 from UniqueNetwork/fix/try-runtime-0.9.36 --- --- a/.docker/Dockerfile-try-runtime +++ b/.docker/Dockerfile-try-runtime @@ -46,4 +46,4 @@ echo "Fork from: $REPLICA_FROM\n" && \ cargo build --features=try-runtime,${NETWORK}-runtime --release -CMD cargo run --features=try-runtime,${NETWORK}-runtime --release -- try-runtime -ltry-runtime::cli=debug --no-spec-check-panic on-runtime-upgrade live --uri $REPLICA_FROM +CMD cargo run --release --features ${NETWORK}-runtime,try-runtime -- try-runtime --runtime target/release/wbuild/${NETWORK}-runtime/${NETWORK}_runtime.compact.compressed.wasm -lruntime=debug -ltry-runtime::cli=debug on-runtime-upgrade --checks live --uri $REPLICA_FROM --- a/Cargo.lock +++ b/Cargo.lock @@ -2467,7 +2467,7 @@ [[package]] name = "fc-consensus" version = "2.0.0-dev" -source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#db60b911813df1d82e60e0de7f3dfa290e60d2f0" +source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14" dependencies = [ "async-trait", "fc-db", @@ -2486,7 +2486,7 @@ [[package]] name = "fc-db" version = "2.0.0-dev" -source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#db60b911813df1d82e60e0de7f3dfa290e60d2f0" +source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14" dependencies = [ "fp-storage", "kvdb-rocksdb", @@ -2505,7 +2505,7 @@ [[package]] name = "fc-mapping-sync" version = "2.0.0-dev" -source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#db60b911813df1d82e60e0de7f3dfa290e60d2f0" +source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14" dependencies = [ "fc-db", "fp-consensus", @@ -2522,7 +2522,7 @@ [[package]] name = "fc-rpc" version = "2.0.0-dev" -source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#db60b911813df1d82e60e0de7f3dfa290e60d2f0" +source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14" dependencies = [ "ethereum 0.14.0", "ethereum-types 0.14.1", @@ -2565,7 +2565,7 @@ [[package]] name = "fc-rpc-core" version = "1.1.0-dev" -source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#db60b911813df1d82e60e0de7f3dfa290e60d2f0" +source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14" dependencies = [ "ethereum 0.14.0", "ethereum-types 0.14.1", @@ -2730,7 +2730,7 @@ [[package]] name = "fp-consensus" version = "2.0.0-dev" -source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#db60b911813df1d82e60e0de7f3dfa290e60d2f0" +source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14" dependencies = [ "ethereum 0.14.0", "parity-scale-codec 3.2.1", @@ -2742,7 +2742,7 @@ [[package]] name = "fp-ethereum" version = "1.0.0-dev" -source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#db60b911813df1d82e60e0de7f3dfa290e60d2f0" +source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14" dependencies = [ "ethereum 0.14.0", "ethereum-types 0.14.1", @@ -2757,7 +2757,7 @@ [[package]] name = "fp-evm" version = "3.0.0-dev" -source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#db60b911813df1d82e60e0de7f3dfa290e60d2f0" +source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14" dependencies = [ "evm", "frame-support", @@ -2771,7 +2771,7 @@ [[package]] name = "fp-evm-mapping" version = "0.1.0" -source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#db60b911813df1d82e60e0de7f3dfa290e60d2f0" +source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14" dependencies = [ "frame-support", "sp-core", @@ -2780,7 +2780,7 @@ [[package]] name = "fp-rpc" version = "3.0.0-dev" -source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#db60b911813df1d82e60e0de7f3dfa290e60d2f0" +source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14" dependencies = [ "ethereum 0.14.0", "ethereum-types 0.14.1", @@ -2797,7 +2797,7 @@ [[package]] name = "fp-self-contained" version = "1.0.0-dev" -source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#db60b911813df1d82e60e0de7f3dfa290e60d2f0" +source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14" dependencies = [ "ethereum 0.14.0", "frame-support", @@ -2810,7 +2810,7 @@ [[package]] name = "fp-storage" version = "2.0.0" -source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#db60b911813df1d82e60e0de7f3dfa290e60d2f0" +source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14" dependencies = [ "parity-scale-codec 3.2.1", "serde", @@ -5682,7 +5682,7 @@ [[package]] name = "pallet-base-fee" version = "1.0.0" -source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#db60b911813df1d82e60e0de7f3dfa290e60d2f0" +source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14" dependencies = [ "fp-evm", "frame-support", @@ -5918,7 +5918,7 @@ [[package]] name = "pallet-ethereum" version = "4.0.0-dev" -source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#db60b911813df1d82e60e0de7f3dfa290e60d2f0" +source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14" dependencies = [ "ethereum 0.14.0", "ethereum-types 0.14.1", @@ -5946,7 +5946,7 @@ [[package]] name = "pallet-evm" version = "6.0.0-dev" -source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#db60b911813df1d82e60e0de7f3dfa290e60d2f0" +source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14" dependencies = [ "environmental", "evm", @@ -6032,7 +6032,7 @@ [[package]] name = "pallet-evm-precompile-simple" version = "2.0.0-dev" -source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#db60b911813df1d82e60e0de7f3dfa290e60d2f0" +source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14" dependencies = [ "fp-evm", "ripemd", @@ -12965,6 +12965,7 @@ "sp-core", "sp-finality-grandpa", "sp-inherents", + "sp-io", "sp-keystore", "sp-offchain", "sp-runtime", --- a/node/cli/Cargo.toml +++ b/node/cli/Cargo.toml @@ -122,6 +122,10 @@ git = "https://github.com/paritytech/substrate" branch = "polkadot-v0.9.36" +[dependencies.sp-io] +git = "https://github.com/paritytech/substrate" +branch = "polkadot-v0.9.36" + [dependencies.sp-finality-grandpa] git = "https://github.com/paritytech/substrate" branch = "polkadot-v0.9.36" --- a/node/cli/src/command.rs +++ b/node/cli/src/command.rs @@ -412,6 +412,7 @@ #[cfg(feature = "try-runtime")] Some(Subcommand::TryRuntime(cmd)) => { use std::{future::Future, pin::Pin}; + use sc_executor::{sp_wasm_interface::ExtendedHostFunctions, NativeExecutionDispatch}; let runner = cli.create_runner(cmd)?; @@ -429,12 +430,21 @@ Ok(( match config.chain_spec.runtime_id() { #[cfg(feature = "unique-runtime")] - RuntimeId::Unique => Box::pin(cmd.run::(config)), + RuntimeId::Unique => Box::pin(cmd.run::::ExtendHostFunctions, + >>()), #[cfg(feature = "quartz-runtime")] - RuntimeId::Quartz => Box::pin(cmd.run::(config)), + RuntimeId::Quartz => Box::pin(cmd.run::::ExtendHostFunctions, + >>()), - RuntimeId::Opal => Box::pin(cmd.run::(config)), + RuntimeId::Opal => Box::pin(cmd.run::::ExtendHostFunctions, + >>()), RuntimeId::Unknown(chain) => return Err(no_runtime_err!(chain).into()), }, task_manager, --- a/node/cli/src/service.rs +++ b/node/cli/src/service.rs @@ -106,7 +106,12 @@ #[cfg(feature = "unique-runtime")] impl NativeExecutionDispatch for UniqueRuntimeExecutor { + /// Only enable the benchmarking host functions when we actually want to benchmark. + #[cfg(feature = "runtime-benchmarks")] type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions; + /// Otherwise we only use the default Substrate host functions. + #[cfg(not(feature = "runtime-benchmarks"))] + type ExtendHostFunctions = (); fn dispatch(method: &str, data: &[u8]) -> Option> { unique_runtime::api::dispatch(method, data) @@ -119,7 +124,12 @@ #[cfg(feature = "quartz-runtime")] impl NativeExecutionDispatch for QuartzRuntimeExecutor { + /// Only enable the benchmarking host functions when we actually want to benchmark. + #[cfg(feature = "runtime-benchmarks")] type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions; + /// Otherwise we only use the default Substrate host functions. + #[cfg(not(feature = "runtime-benchmarks"))] + type ExtendHostFunctions = (); fn dispatch(method: &str, data: &[u8]) -> Option> { quartz_runtime::api::dispatch(method, data) @@ -131,7 +141,12 @@ } impl NativeExecutionDispatch for OpalRuntimeExecutor { + /// Only enable the benchmarking host functions when we actually want to benchmark. + #[cfg(feature = "runtime-benchmarks")] type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions; + /// Otherwise we only use the default Substrate host functions. + #[cfg(not(feature = "runtime-benchmarks"))] + type ExtendHostFunctions = (); fn dispatch(method: &str, data: &[u8]) -> Option> { opal_runtime::api::dispatch(method, data) --- a/runtime/common/runtime_apis.rs +++ b/runtime/common/runtime_apis.rs @@ -780,15 +780,16 @@ #[cfg(feature = "try-runtime")] impl frame_try_runtime::TryRuntime for Runtime { - fn on_runtime_upgrade() -> (frame_support::pallet_prelude::Weight, frame_support::pallet_prelude::Weight) { + fn on_runtime_upgrade(checks: bool) -> (frame_support::pallet_prelude::Weight, frame_support::pallet_prelude::Weight) { log::info!("try-runtime::on_runtime_upgrade unique-chain."); - let weight = Executive::try_runtime_upgrade().unwrap(); + let weight = Executive::try_runtime_upgrade(checks).unwrap(); (weight, crate::config::substrate::RuntimeBlockWeights::get().max_block) } fn execute_block( block: Block, state_root_check: bool, + signature_check: bool, select: frame_try_runtime::TryStateSelect ) -> frame_support::pallet_prelude::Weight { log::info!( @@ -799,7 +800,7 @@ select, ); - Executive::try_execute_block(block, state_root_check, select).unwrap() + Executive::try_execute_block(block, state_root_check, signature_check, select).unwrap() } } } --- a/runtime/opal/Cargo.toml +++ b/runtime/opal/Cargo.toml @@ -91,6 +91,7 @@ 'pallet-unique-scheduler-v2/try-runtime', 'pallet-maintenance/try-runtime', 'pallet-test-utils?/try-runtime', + 'fp-self-contained/try-runtime', ] std = [ 'codec/std', --- a/runtime/quartz/Cargo.toml +++ b/runtime/quartz/Cargo.toml @@ -86,6 +86,7 @@ 'pallet-evm-transaction-payment/try-runtime', 'pallet-evm-migration/try-runtime', 'pallet-maintenance/try-runtime', + 'fp-self-contained/try-runtime', ] std = [ 'codec/std', --- a/runtime/unique/Cargo.toml +++ b/runtime/unique/Cargo.toml @@ -87,6 +87,7 @@ 'pallet-evm-transaction-payment/try-runtime', 'pallet-evm-migration/try-runtime', 'pallet-maintenance/try-runtime', + 'fp-self-contained/try-runtime', ] std = [ 'codec/std', -- gitstuff