From 60146ba5d291530880e008e6650e2cfa74c9105c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Thei=C3=9Fen?= <alex.theissen@me.com> Date: Fri, 14 Feb 2025 14:16:08 +0100 Subject: [PATCH] pallet-revive: Fix the contract size related benchmarks (#7568) Partly addresses https://github.com/paritytech/polkadot-sdk/issues/6157 The benchmarks measuring the impact of contract sizes on calling or instantiating a contract were bogus because they needed to be written in assembly in order to tightly control the basic block size. This fixes the benchmarks for: - call_with_code_per_byte - upload_code - instantiate_with_code And adds a new benchmark that accounts for the fact that the interpreter will always compile whole basic blocks: - basic_block_compilation After this PR only the weight we assign to instructions need to be addressed. --------- Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: PG Herveou <pgherveou@gmail.com> --- Cargo.lock | 56 +- prdoc/pr_7568.prdoc | 24 + substrate/frame/revive/Cargo.toml | 5 +- substrate/frame/revive/fixtures/Cargo.toml | 2 +- .../frame/revive/fixtures/build/_Cargo.toml | 2 +- .../fixtures/contracts/caller_contract.rs | 9 +- .../frame/revive/src/benchmarking/code.rs | 46 +- .../frame/revive/src/benchmarking/mod.rs | 58 +- substrate/frame/revive/src/lib.rs | 1 + substrate/frame/revive/src/limits.rs | 24 +- substrate/frame/revive/src/tests.rs | 5 +- substrate/frame/revive/src/wasm/mod.rs | 8 + substrate/frame/revive/src/wasm/runtime.rs | 10 + substrate/frame/revive/src/weights.rs | 949 ++++++++++-------- substrate/frame/revive/uapi/Cargo.toml | 2 +- 15 files changed, 701 insertions(+), 500 deletions(-) create mode 100644 prdoc/pr_7568.prdoc diff --git a/Cargo.lock b/Cargo.lock index 4882caf032b..a86f82efc2d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14847,7 +14847,8 @@ dependencies = [ "pallet-utility 28.0.0", "parity-scale-codec", "paste", - "polkavm 0.19.0", + "polkavm 0.21.0", + "polkavm-common 0.21.0", "pretty_assertions", "rlp 0.6.1", "scale-info", @@ -14941,7 +14942,7 @@ name = "pallet-revive-fixtures" version = "0.1.0" dependencies = [ "anyhow", - "polkavm-linker 0.19.0", + "polkavm-linker 0.21.0", "sp-core 28.0.0", "sp-io 30.0.0", "toml 0.8.19", @@ -15056,7 +15057,7 @@ dependencies = [ "pallet-revive-proc-macro 0.1.0", "parity-scale-codec", "paste", - "polkavm-derive 0.19.0", + "polkavm-derive 0.21.0", "scale-info", ] @@ -19937,15 +19938,15 @@ dependencies = [ [[package]] name = "polkavm" -version = "0.19.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8379bb48ff026aa8ae0645ea45f27920bfd21c82b2e82ed914224bb233d59f83" +checksum = "cfd34e2f74206fff33482ae1718e275f11365ef8c4de7f0e69217f8845303867" dependencies = [ "libc", "log", - "polkavm-assembler 0.19.0", - "polkavm-common 0.19.0", - "polkavm-linux-raw 0.19.0", + "polkavm-assembler 0.21.0", + "polkavm-common 0.21.0", + "polkavm-linux-raw 0.21.0", ] [[package]] @@ -19977,9 +19978,9 @@ dependencies = [ [[package]] name = "polkavm-assembler" -version = "0.19.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57513b596cf0bafb052dab48e9c168f473c35f7522e17f70cc9f96603012d9b7" +checksum = "f512bc80cb10439391a7c13a9eb2d37cf66b7305e7df0a06d662eff4f5b07625" dependencies = [ "log", ] @@ -20015,12 +20016,13 @@ dependencies = [ [[package]] name = "polkavm-common" -version = "0.19.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a972bd305ba8cbf0de79951d6d49d2abfad47c277596be5a2c6a0924a163abbd" +checksum = "5c16b809cfd398f861261c045a8745e6c78b71ea7e0d3ef6f7cc553eb27bc17e" dependencies = [ + "blake3", "log", - "polkavm-assembler 0.19.0", + "polkavm-assembler 0.21.0", ] [[package]] @@ -20052,11 +20054,11 @@ dependencies = [ [[package]] name = "polkavm-derive" -version = "0.19.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8d866972a7532d82d05c26b4516563660dd6676d7ab9e64e681d8ef0e29255c" +checksum = "47239245f87329541932c0d7fec750a66a75b13aa87dfe4fbfd637bab86ad387" dependencies = [ - "polkavm-derive-impl-macro 0.19.0", + "polkavm-derive-impl-macro 0.21.0", ] [[package]] @@ -20097,11 +20099,11 @@ dependencies = [ [[package]] name = "polkavm-derive-impl" -version = "0.19.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cffca9d51b21153395a192b65698457687bc51daa41026629895542ccaa65c2" +checksum = "24fd6c6215450c3e57511df5c38a82eb4bde208de15ee15046ac33852f3c3eaa" dependencies = [ - "polkavm-common 0.19.0", + "polkavm-common 0.21.0", "proc-macro2 1.0.93", "quote 1.0.38", "syn 2.0.98", @@ -20139,11 +20141,11 @@ dependencies = [ [[package]] name = "polkavm-derive-impl-macro" -version = "0.19.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc0dc0cf2e8f4d30874131eccfa36bdabd4a52cfb79c15f8630508abaf06a2a6" +checksum = "36837f6b7edfd6f4498f8d25d81da16cf03bd6992c3e56f3d477dfc90f4fefca" dependencies = [ - "polkavm-derive-impl 0.19.0", + "polkavm-derive-impl 0.21.0", "syn 2.0.98", ] @@ -20195,16 +20197,16 @@ dependencies = [ [[package]] name = "polkavm-linker" -version = "0.19.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caec2308f1328b5a667da45322c04fad7ff97ad8b36817d18c7635ea4dd6c6f4" +checksum = "23bc764986c4a63f9ab9890c3f4eb9b4c13b6ff80d79685bd48ade147234aab4" dependencies = [ "dirs", "gimli 0.31.1", "hashbrown 0.14.5", "log", "object 0.36.1", - "polkavm-common 0.19.0", + "polkavm-common 0.21.0", "regalloc2 0.9.3", "rustc-demangle", ] @@ -20229,9 +20231,9 @@ checksum = "23eff02c070c70f31878a3d915e88a914ecf3e153741e2fb572dde28cce20fde" [[package]] name = "polkavm-linux-raw" -version = "0.19.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136ae072ab6fa38e584a06d12b1b216cff19f54d5cd202a8f8c5ec2e92e7e4bb" +checksum = "be6cd1d48c5e7814d287a3e12a339386a5dfa2f3ac72f932335f4cf56467f1b3" [[package]] name = "polling" diff --git a/prdoc/pr_7568.prdoc b/prdoc/pr_7568.prdoc new file mode 100644 index 00000000000..1c896415fd0 --- /dev/null +++ b/prdoc/pr_7568.prdoc @@ -0,0 +1,24 @@ +title: 'pallet-revive: Fix the contract size related benchmarks' +doc: +- audience: Runtime Dev + description: |- + Partly addresses https://github.com/paritytech/polkadot-sdk/issues/6157 + + The benchmarks measuring the impact of contract sizes on calling or instantiating a contract were bogus because they needed to be written in assembly in order to tightly control the basic block size. + + This fixes the benchmarks for: + - call_with_code_per_byte + - upload_code + - instantiate_with_code + + And adds a new benchmark that accounts for the fact that the interpreter will always compile whole basic blocks: + - basic_block_compilation + + After this PR only the weight we assign to instructions need to be addressed. +crates: +- name: pallet-revive + bump: major +- name: pallet-revive-fixtures + bump: major +- name: pallet-revive-uapi + bump: major diff --git a/substrate/frame/revive/Cargo.toml b/substrate/frame/revive/Cargo.toml index 09cbf0b49f5..77f0f7eb1e6 100644 --- a/substrate/frame/revive/Cargo.toml +++ b/substrate/frame/revive/Cargo.toml @@ -27,7 +27,8 @@ hex = { workspace = true } impl-trait-for-tuples = { workspace = true } log = { workspace = true } paste = { workspace = true } -polkavm = { version = "0.19.0", default-features = false } +polkavm = { version = "0.21.0", default-features = false } +polkavm-common = { version = "0.21.0", default-features = false, optional = true } rlp = { workspace = true } scale-info = { features = ["derive"], workspace = true } serde = { features = [ @@ -93,6 +94,7 @@ std = [ "pallet-timestamp/std", "pallet-transaction-payment/std", "pallet-utility/std", + "polkavm-common?/std", "polkavm/std", "rlp/std", "scale-info/std", @@ -122,6 +124,7 @@ runtime-benchmarks = [ "pallet-timestamp/runtime-benchmarks", "pallet-transaction-payment/runtime-benchmarks", "pallet-utility/runtime-benchmarks", + "polkavm-common/alloc", "sp-consensus-aura", "sp-consensus-babe", "sp-consensus-slots", diff --git a/substrate/frame/revive/fixtures/Cargo.toml b/substrate/frame/revive/fixtures/Cargo.toml index a6f25cc26f3..eaa2deefdc7 100644 --- a/substrate/frame/revive/fixtures/Cargo.toml +++ b/substrate/frame/revive/fixtures/Cargo.toml @@ -21,7 +21,7 @@ sp-io = { workspace = true, default-features = true, optional = true } [build-dependencies] anyhow = { workspace = true, default-features = true } -polkavm-linker = { version = "0.19.0" } +polkavm-linker = { version = "0.21.0" } toml = { workspace = true } [features] diff --git a/substrate/frame/revive/fixtures/build/_Cargo.toml b/substrate/frame/revive/fixtures/build/_Cargo.toml index 1a0a635420a..a5d505e066e 100644 --- a/substrate/frame/revive/fixtures/build/_Cargo.toml +++ b/substrate/frame/revive/fixtures/build/_Cargo.toml @@ -15,7 +15,7 @@ edition = "2021" uapi = { package = 'pallet-revive-uapi', path = "", features = ["unstable-hostfn"], default-features = false } common = { package = 'pallet-revive-fixtures-common', path = "" } hex-literal = { version = "0.4.1", default-features = false } -polkavm-derive = { version = "0.19.0" } +polkavm-derive = { version = "0.21.0" } [profile.release] opt-level = 3 diff --git a/substrate/frame/revive/fixtures/contracts/caller_contract.rs b/substrate/frame/revive/fixtures/contracts/caller_contract.rs index 236aec2e863..bb5e76b7fb4 100644 --- a/substrate/frame/revive/fixtures/contracts/caller_contract.rs +++ b/substrate/frame/revive/fixtures/contracts/caller_contract.rs @@ -31,7 +31,7 @@ pub extern "C" fn deploy() {} #[no_mangle] #[polkavm_derive::polkavm_export] pub extern "C" fn call() { - input!(code_hash: &[u8; 32], load_code_ref_time: u64,); + input!(code_hash: &[u8; 32], load_code_ref_time: u64, load_code_proof_size: u64,); // The value to transfer on instantiation and calls. Chosen to be greater than existential // deposit. @@ -122,9 +122,8 @@ pub extern "C" fn call() { let res = api::call( uapi::CallFlags::empty(), &callee, - load_code_ref_time, // Too little ref_time weight. - u64::MAX, /* How much proof_size weight to devote for the execution. u64::MAX - * = use all. */ + load_code_ref_time, // just enough to load the contract + load_code_proof_size, // just enough to load the contract &[u8::MAX; 32], // No deposit limit. &value, &INPUT, @@ -137,7 +136,7 @@ pub extern "C" fn call() { uapi::CallFlags::empty(), &callee, u64::MAX, // How much ref_time weight to devote for the execution. u64::MAX = use all. - 1u64, // too little proof_size weight + load_code_proof_size, //just enough to load the contract &[u8::MAX; 32], // No deposit limit. &value, &INPUT, diff --git a/substrate/frame/revive/src/benchmarking/code.rs b/substrate/frame/revive/src/benchmarking/code.rs index ede3bb69b11..ba498461074 100644 --- a/substrate/frame/revive/src/benchmarking/code.rs +++ b/substrate/frame/revive/src/benchmarking/code.rs @@ -24,7 +24,8 @@ //! we define this simple definition of a contract that can be passed to `create_code` that //! compiles it down into a `WasmModule` that can be used as a contract's code. -use alloc::vec::Vec; +use crate::limits; +use alloc::{fmt::Write, string::ToString, vec::Vec}; use pallet_revive_fixtures::bench as bench_fixtures; use sp_core::H256; use sp_io::hashing::keccak_256; @@ -47,9 +48,46 @@ impl WasmModule { Self::new(bench_fixtures::dummy_unique(replace_with)) } - /// A contract code of specified sizte that does nothing. - pub fn sized(_size: u32) -> Self { - Self::dummy() + /// Same as as `with_num_instructions` but based on the blob size. + /// + /// This is needed when we weigh a blob without knowing how much instructions it + /// contains. + pub fn sized(size: u32) -> Self { + // Due to variable length encoding of instructions this is not precise. But we only + // need rough numbers for our benchmarks. + Self::with_num_instructions(size / 3) + } + + /// A contract code of specified number of instructions that uses all its bytes for instructions + /// but will return immediately. + /// + /// All the basic blocks are maximum sized (only the first is important though). This is to + /// account for the fact that the interpreter will compile one basic block at a time even + /// when no code is executed. Hence this contract will trigger the compilation of a maximum + /// sized basic block and then return with its first instruction. + /// + /// All the code will be put into the "call" export. Hence this code can be safely used for the + /// `instantiate_with_code` benchmark where no compilation of any block should be measured. + pub fn with_num_instructions(num_instructions: u32) -> Self { + let mut text = " + pub @deploy: + ret + pub @call: + " + .to_string(); + for i in 0..num_instructions { + match i { + // return execution right away without breaking up basic block + // SENTINEL is a hard coded syscall that terminates execution + 0 => writeln!(text, "ecalli {}", crate::SENTINEL).unwrap(), + i if i % (limits::code::BASIC_BLOCK_SIZE - 1) == 0 => + text.push_str("fallthrough\n"), + _ => text.push_str("a0 = a1 + a2\n"), + } + } + text.push_str("ret\n"); + let code = polkavm_common::assembler::assemble(&text).unwrap(); + Self::new(code) } /// A contract code that calls the "noop" host function in a loop depending in the input. diff --git a/substrate/frame/revive/src/benchmarking/mod.rs b/substrate/frame/revive/src/benchmarking/mod.rs index 94d8edef777..f72b9f206c8 100644 --- a/substrate/frame/revive/src/benchmarking/mod.rs +++ b/substrate/frame/revive/src/benchmarking/mod.rs @@ -259,14 +259,19 @@ mod benchmarks { } // This benchmarks the overhead of loading a code of size `c` byte from storage and into - // the execution engine. This does **not** include the actual execution for which the gas meter - // is responsible. This is achieved by generating all code to the `deploy` function - // which is in the wasm module but not executed on `call`. - // The results are supposed to be used as `call_with_code_per_byte(c) - - // call_with_code_per_byte(0)`. + // the execution engine. + // + // `call_with_code_per_byte(c) - call_with_code_per_byte(0)` + // + // This does **not** include the actual execution for which the gas meter + // is responsible. The code used here will just return on call. + // + // We expect the influence of `c` to be none in this benchmark because every instruction that + // is not in the first basic block is never read. We are primarily interested in the + // `proof_size` result of this benchmark. #[benchmark(pov_mode = Measured)] fn call_with_code_per_byte( - c: Linear<0, { limits::code::BLOB_BYTES }>, + c: Linear<0, { limits::code::STATIC_MEMORY_BYTES / limits::code::BYTES_PER_INSTRUCTION }>, ) -> Result<(), BenchmarkError> { let instance = Contract::<T>::with_caller(whitelisted_caller(), WasmModule::sized(c), vec![])?; @@ -286,11 +291,46 @@ mod benchmarks { Ok(()) } + // Measure the amount of time it takes to compile a single basic block. + // + // (basic_block_compilation(1) - basic_block_compilation(0)).ref_time() + // + // This is needed because the interpreter will always compile a whole basic block at + // a time. To prevent a contract from triggering compilation without doing any execution + // we will always charge one max sized block per contract call. + // + // We ignore the proof size component when using this benchmark as this is already accounted + // for in `call_with_code_per_byte`. + #[benchmark(pov_mode = Measured)] + fn basic_block_compilation(b: Linear<0, 1>) -> Result<(), BenchmarkError> { + let instance = Contract::<T>::with_caller( + whitelisted_caller(), + WasmModule::with_num_instructions(limits::code::BASIC_BLOCK_SIZE), + vec![], + )?; + let value = Pallet::<T>::min_balance(); + let storage_deposit = default_deposit_limit::<T>(); + + #[block] + { + Pallet::<T>::call( + RawOrigin::Signed(instance.caller.clone()).into(), + instance.address, + value, + Weight::MAX, + storage_deposit, + vec![], + )?; + } + + Ok(()) + } + // `c`: Size of the code in bytes. // `i`: Size of the input in bytes. #[benchmark(pov_mode = Measured)] fn instantiate_with_code( - c: Linear<0, { limits::code::BLOB_BYTES }>, + c: Linear<0, { limits::code::STATIC_MEMORY_BYTES / limits::code::BYTES_PER_INSTRUCTION }>, i: Linear<0, { limits::code::BLOB_BYTES }>, ) { let input = vec![42u8; i as usize]; @@ -416,7 +456,9 @@ mod benchmarks { // It creates a maximum number of metering blocks per byte. // `c`: Size of the code in bytes. #[benchmark(pov_mode = Measured)] - fn upload_code(c: Linear<0, { limits::code::BLOB_BYTES }>) { + fn upload_code( + c: Linear<0, { limits::code::STATIC_MEMORY_BYTES / limits::code::BYTES_PER_INSTRUCTION }>, + ) { let caller = whitelisted_caller(); T::Currency::set_balance(&caller, caller_funding::<T>()); let WasmModule { code, hash, .. } = WasmModule::sized(c); diff --git a/substrate/frame/revive/src/lib.rs b/substrate/frame/revive/src/lib.rs index 9a86f6bf97d..5487a8eb069 100644 --- a/substrate/frame/revive/src/lib.rs +++ b/substrate/frame/revive/src/lib.rs @@ -654,6 +654,7 @@ pub mod pallet { num_topic: 0, len: max_payload_size, }) + .saturating_add(<RuntimeCosts as gas::Token<T>>::weight(&RuntimeCosts::HostFn)) .ref_time())) .saturating_mul(max_payload_size as u64)) .try_into() diff --git a/substrate/frame/revive/src/limits.rs b/substrate/frame/revive/src/limits.rs index 96f8131a723..09c611a9b64 100644 --- a/substrate/frame/revive/src/limits.rs +++ b/substrate/frame/revive/src/limits.rs @@ -91,22 +91,22 @@ pub mod code { /// the allowed code size by [`BYTE_PER_INSTRUCTION`]. pub const STATIC_MEMORY_BYTES: u32 = 2 * 1024 * 1024; + /// The maximum size of a basic block in number of instructions. + /// + /// We need to limit the size of basic blocks because the interpreters lazy compilation + /// compiles one basic block at a time. A malicious program could trigger the compilation + /// of the whole program by creating one giant basic block otherwise. + pub const BASIC_BLOCK_SIZE: u32 = 1000; + /// How much memory each instruction will take in-memory after compilation. /// /// This is `size_of<usize>() + 16`. But we don't use `usize` here so it isn't /// different on the native runtime (used for testing). - const BYTES_PER_INSTRUCTION: u32 = 20; + pub const BYTES_PER_INSTRUCTION: u32 = 20; /// The code is stored multiple times as part of the compiled program. const EXTRA_OVERHEAD_PER_CODE_BYTE: u32 = 4; - /// The maximum size of a basic block in number of instructions. - /// - /// We need to limit the size of basic blocks because the interpreters lazy compilation - /// compiles one basic block at a time. A malicious program could trigger the compilation - /// of the whole program by creating one giant basic block otherwise. - const BASIC_BLOCK_SIZE: u32 = 1000; - /// Make sure that the various program parts are within the defined limits. pub fn enforce<T: Config>( blob: Vec<u8>, @@ -179,6 +179,14 @@ pub mod code { log::debug!(target: LOG_TARGET, "sbrk instruction is not allowed. offset {}", inst.offset); return Err(<Error<T>>::InvalidInstruction.into()) }, + // Only benchmarking code is allowed to circumvent the import table. We might want + // to remove this magic syscall number later. Hence we need to prevent contracts + // from using it. + #[cfg(not(feature = "runtime-benchmarks"))] + Instruction::ecalli(idx) if idx == crate::SENTINEL => { + log::debug!(target: LOG_TARGET, "reserved syscall idx {idx}. offset {}", inst.offset); + return Err(<Error<T>>::InvalidInstruction.into()) + }, _ => (), } } diff --git a/substrate/frame/revive/src/tests.rs b/substrate/frame/revive/src/tests.rs index 39ac6fcaf34..44f2afc8b0e 100644 --- a/substrate/frame/revive/src/tests.rs +++ b/substrate/frame/revive/src/tests.rs @@ -1034,7 +1034,10 @@ fn deploy_and_call_other_contract() { // Call BOB contract, which attempts to instantiate and call the callee contract and // makes various assertions on the results from those calls. assert_ok!(builder::call(caller_addr) - .data((callee_code_hash, code_load_weight.ref_time()).encode()) + .data( + (callee_code_hash, code_load_weight.ref_time(), code_load_weight.proof_size()) + .encode() + ) .build()); assert_eq!( diff --git a/substrate/frame/revive/src/wasm/mod.rs b/substrate/frame/revive/src/wasm/mod.rs index 34244735201..512b8574eb1 100644 --- a/substrate/frame/revive/src/wasm/mod.rs +++ b/substrate/frame/revive/src/wasm/mod.rs @@ -110,8 +110,16 @@ struct CodeLoadToken(u32); impl<T: Config> Token<T> for CodeLoadToken { fn weight(&self) -> Weight { + // the proof size impact is accounted for in the `call_with_code_per_byte` + // strictly speaking we are double charging for the first BASIC_BLOCK_SIZE + // instructions here. Let's consider this as a safety margin. T::WeightInfo::call_with_code_per_byte(self.0) .saturating_sub(T::WeightInfo::call_with_code_per_byte(0)) + .saturating_add( + T::WeightInfo::basic_block_compilation(1) + .saturating_sub(T::WeightInfo::basic_block_compilation(0)) + .set_proof_size(0), + ) } } diff --git a/substrate/frame/revive/src/wasm/runtime.rs b/substrate/frame/revive/src/wasm/runtime.rs index 279d72b97ee..b15d461c62f 100644 --- a/substrate/frame/revive/src/wasm/runtime.rs +++ b/substrate/frame/revive/src/wasm/runtime.rs @@ -601,6 +601,16 @@ impl<'a, E: Ext, M: PolkaVmInstance<E::T>> Runtime<'a, E, M> { Ok(NotEnoughGas) => Some(Err(Error::<E::T>::OutOfGas.into())), Ok(Step) => None, Ok(Ecalli(idx)) => { + // This is a special hard coded syscall index which is used by benchmarks + // to abort contract execution. It is used to terminate the execution without + // breaking up a basic block. The fixed index is used so that the benchmarks + // don't have to deal with import tables. + if cfg!(feature = "runtime-benchmarks") && idx == SENTINEL { + return Some(Ok(ExecReturnValue { + flags: ReturnFlags::empty(), + data: Vec::new(), + })) + } let Some(syscall_symbol) = module.imports().get(idx) else { return Some(Err(<Error<E::T>>::InvalidSyscall.into())); }; diff --git a/substrate/frame/revive/src/weights.rs b/substrate/frame/revive/src/weights.rs index 42b8a9e5e72..217800798af 100644 --- a/substrate/frame/revive/src/weights.rs +++ b/substrate/frame/revive/src/weights.rs @@ -18,9 +18,9 @@ //! Autogenerated weights for `pallet_revive` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0 -//! DATE: 2025-02-04, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2025-02-13, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` -//! HOSTNAME: `11670a4f427b`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz` +//! HOSTNAME: `5bca1e6a0b2d`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz` //! WASM-EXECUTION: `Compiled`, CHAIN: `None`, DB CACHE: `1024` // Executed Command: @@ -48,7 +48,7 @@ #![allow(unused_parens)] #![allow(unused_imports)] #![allow(missing_docs)] -#[allow(dead_code)] +#![allow(dead_code)] use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; use core::marker::PhantomData; @@ -58,6 +58,7 @@ pub trait WeightInfo { fn on_process_deletion_queue_batch() -> Weight; fn on_initialize_per_trie_key(k: u32, ) -> Weight; fn call_with_code_per_byte(c: u32, ) -> Weight; + fn basic_block_compilation(b: u32, ) -> Weight; fn instantiate_with_code(c: u32, i: u32, ) -> Weight; fn instantiate(i: u32, ) -> Weight; fn call() -> Weight; @@ -144,8 +145,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `1485` - // Minimum execution time: 695_000 picoseconds. - Weight::from_parts(750_000, 1485) + // Minimum execution time: 657_000 picoseconds. + Weight::from_parts(703_000, 1485) .saturating_add(T::DbWeight::get().reads(1_u64)) } /// Storage: `Skipped::Metadata` (r:0 w:0) @@ -155,10 +156,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `230 + k * (69 ±0)` // Estimated: `222 + k * (70 ±0)` - // Minimum execution time: 10_509_000 picoseconds. - Weight::from_parts(10_896_000, 222) - // Standard Error: 2_549 - .saturating_add(Weight::from_parts(1_264_033, 0).saturating_mul(k.into())) + // Minimum execution time: 10_768_000 picoseconds. + Weight::from_parts(10_953_000, 222) + // Standard Error: 951 + .saturating_add(Weight::from_parts(1_172_145, 0).saturating_mul(k.into())) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(k.into()))) .saturating_add(T::DbWeight::get().writes(2_u64)) @@ -177,13 +178,40 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { /// Proof: `Timestamp::Now` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `Measured`) /// Storage: `System::Account` (r:1 w:1) /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `Measured`) - /// The range of component `c` is `[0, 262144]`. - fn call_with_code_per_byte(_c: u32, ) -> Weight { + /// The range of component `c` is `[0, 104857]`. + fn call_with_code_per_byte(c: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1194` - // Estimated: `7134` - // Minimum execution time: 84_008_000 picoseconds. - Weight::from_parts(91_138_296, 7134) + // Measured: `524 + c * (1 ±0)` + // Estimated: `6458 + c * (1 ±0)` + // Minimum execution time: 71_766_000 picoseconds. + Weight::from_parts(97_749_536, 6458) + // Standard Error: 12 + .saturating_add(Weight::from_parts(1_777, 0).saturating_mul(c.into())) + .saturating_add(T::DbWeight::get().reads(7_u64)) + .saturating_add(T::DbWeight::get().writes(2_u64)) + .saturating_add(Weight::from_parts(0, 1).saturating_mul(c.into())) + } + /// Storage: `Revive::AddressSuffix` (r:2 w:0) + /// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`) + /// Storage: `Revive::ContractInfoOf` (r:1 w:1) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) + /// Storage: `Revive::CodeInfoOf` (r:1 w:0) + /// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`) + /// Storage: `Revive::PristineCode` (r:1 w:0) + /// Proof: `Revive::PristineCode` (`max_values`: None, `max_size`: Some(262180), added: 264655, mode: `Measured`) + /// Storage: `Timestamp::Now` (r:1 w:0) + /// Proof: `Timestamp::Now` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `Measured`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `Measured`) + /// The range of component `b` is `[0, 1]`. + fn basic_block_compilation(b: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `3892` + // Estimated: `9832` + // Minimum execution time: 111_124_000 picoseconds. + Weight::from_parts(114_011_830, 9832) + // Standard Error: 218_655 + .saturating_add(Weight::from_parts(475_869, 0).saturating_mul(b.into())) .saturating_add(T::DbWeight::get().reads(7_u64)) .saturating_add(T::DbWeight::get().writes(2_u64)) } @@ -201,16 +229,18 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `Measured`) /// Storage: `Revive::PristineCode` (r:0 w:1) /// Proof: `Revive::PristineCode` (`max_values`: None, `max_size`: Some(262180), added: 264655, mode: `Measured`) - /// The range of component `c` is `[0, 262144]`. + /// The range of component `c` is `[0, 104857]`. /// The range of component `i` is `[0, 262144]`. - fn instantiate_with_code(_c: u32, i: u32, ) -> Weight { + fn instantiate_with_code(c: u32, i: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `93` // Estimated: `6033` - // Minimum execution time: 172_907_000 picoseconds. - Weight::from_parts(153_592_465, 6033) - // Standard Error: 12 - .saturating_add(Weight::from_parts(4_544, 0).saturating_mul(i.into())) + // Minimum execution time: 1_482_086_000 picoseconds. + Weight::from_parts(107_627_972, 6033) + // Standard Error: 39 + .saturating_add(Weight::from_parts(19_180, 0).saturating_mul(c.into())) + // Standard Error: 15 + .saturating_add(Weight::from_parts(5_307, 0).saturating_mul(i.into())) .saturating_add(T::DbWeight::get().reads(7_u64)) .saturating_add(T::DbWeight::get().writes(6_u64)) } @@ -233,10 +263,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `987` // Estimated: `4452` - // Minimum execution time: 143_169_000 picoseconds. - Weight::from_parts(120_653_436, 4452) - // Standard Error: 16 - .saturating_add(Weight::from_parts(4_444, 0).saturating_mul(i.into())) + // Minimum execution time: 139_661_000 picoseconds. + Weight::from_parts(75_448_171, 4452) + // Standard Error: 24 + .saturating_add(Weight::from_parts(5_303, 0).saturating_mul(i.into())) .saturating_add(T::DbWeight::get().reads(7_u64)) .saturating_add(T::DbWeight::get().writes(4_u64)) } @@ -256,8 +286,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `1194` // Estimated: `7134` - // Minimum execution time: 138_392_000 picoseconds. - Weight::from_parts(143_329_000, 7134) + // Minimum execution time: 74_015_000 picoseconds. + Weight::from_parts(76_281_000, 7134) .saturating_add(T::DbWeight::get().reads(7_u64)) .saturating_add(T::DbWeight::get().writes(2_u64)) } @@ -267,13 +297,15 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { /// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(409), added: 2884, mode: `Measured`) /// Storage: `Revive::PristineCode` (r:0 w:1) /// Proof: `Revive::PristineCode` (`max_values`: None, `max_size`: Some(262180), added: 264655, mode: `Measured`) - /// The range of component `c` is `[0, 262144]`. - fn upload_code(_c: u32, ) -> Weight { + /// The range of component `c` is `[0, 104857]`. + fn upload_code(c: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3465` - // Minimum execution time: 43_420_000 picoseconds. - Weight::from_parts(45_143_767, 3465) + // Minimum execution time: 39_512_000 picoseconds. + Weight::from_parts(19_845_671, 3465) + // Standard Error: 20 + .saturating_add(Weight::from_parts(14_190, 0).saturating_mul(c.into())) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(3_u64)) } @@ -287,8 +319,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `181` // Estimated: `3646` - // Minimum execution time: 35_828_000 picoseconds. - Weight::from_parts(36_853_000, 3646) + // Minimum execution time: 35_130_000 picoseconds. + Weight::from_parts(35_831_000, 3646) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(3_u64)) } @@ -300,8 +332,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `424` // Estimated: `6364` - // Minimum execution time: 19_678_000 picoseconds. - Weight::from_parts(21_266_000, 6364) + // Minimum execution time: 19_092_000 picoseconds. + Weight::from_parts(19_813_000, 6364) .saturating_add(T::DbWeight::get().reads(3_u64)) .saturating_add(T::DbWeight::get().writes(3_u64)) } @@ -313,8 +345,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3465` - // Minimum execution time: 37_024_000 picoseconds. - Weight::from_parts(37_440_000, 3465) + // Minimum execution time: 35_711_000 picoseconds. + Weight::from_parts(36_640_000, 3465) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(2_u64)) } @@ -326,8 +358,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `56` // Estimated: `3521` - // Minimum execution time: 31_228_000 picoseconds. - Weight::from_parts(32_183_000, 3521) + // Minimum execution time: 29_945_000 picoseconds. + Weight::from_parts(30_805_000, 3521) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(2_u64)) } @@ -339,8 +371,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3465` - // Minimum execution time: 6_241_000 picoseconds. - Weight::from_parts(6_467_000, 3465) + // Minimum execution time: 6_070_000 picoseconds. + Weight::from_parts(6_521_000, 3465) .saturating_add(T::DbWeight::get().reads(2_u64)) } /// The range of component `r` is `[0, 1600]`. @@ -348,24 +380,24 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_397_000 picoseconds. - Weight::from_parts(7_159_300, 0) - // Standard Error: 173 - .saturating_add(Weight::from_parts(167_265, 0).saturating_mul(r.into())) + // Minimum execution time: 6_281_000 picoseconds. + Weight::from_parts(8_053_095, 0) + // Standard Error: 290 + .saturating_add(Weight::from_parts(162_796, 0).saturating_mul(r.into())) } fn seal_caller() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 267_000 picoseconds. - Weight::from_parts(296_000, 0) + // Minimum execution time: 259_000 picoseconds. + Weight::from_parts(285_000, 0) } fn seal_origin() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 227_000 picoseconds. - Weight::from_parts(252_000, 0) + // Minimum execution time: 233_000 picoseconds. + Weight::from_parts(253_000, 0) } /// Storage: `Revive::ContractInfoOf` (r:1 w:0) /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) @@ -373,8 +405,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `202` // Estimated: `3667` - // Minimum execution time: 6_591_000 picoseconds. - Weight::from_parts(6_770_000, 3667) + // Minimum execution time: 6_459_000 picoseconds. + Weight::from_parts(6_695_000, 3667) .saturating_add(T::DbWeight::get().reads(1_u64)) } /// Storage: `Revive::AddressSuffix` (r:1 w:0) @@ -383,8 +415,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `144` // Estimated: `3609` - // Minimum execution time: 6_182_000 picoseconds. - Weight::from_parts(6_372_000, 3609) + // Minimum execution time: 6_068_000 picoseconds. + Weight::from_parts(6_312_000, 3609) .saturating_add(T::DbWeight::get().reads(1_u64)) } /// Storage: `Revive::ContractInfoOf` (r:1 w:0) @@ -393,16 +425,16 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `298` // Estimated: `3763` - // Minimum execution time: 7_327_000 picoseconds. - Weight::from_parts(7_612_000, 3763) + // Minimum execution time: 7_412_000 picoseconds. + Weight::from_parts(7_660_000, 3763) .saturating_add(T::DbWeight::get().reads(1_u64)) } fn seal_own_code_hash() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 232_000 picoseconds. - Weight::from_parts(287_000, 0) + // Minimum execution time: 266_000 picoseconds. + Weight::from_parts(282_000, 0) } /// Storage: `Revive::ContractInfoOf` (r:1 w:0) /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) @@ -412,51 +444,51 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `368` // Estimated: `3833` - // Minimum execution time: 10_918_000 picoseconds. - Weight::from_parts(11_323_000, 3833) + // Minimum execution time: 10_570_000 picoseconds. + Weight::from_parts(11_027_000, 3833) .saturating_add(T::DbWeight::get().reads(2_u64)) } fn seal_caller_is_origin() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 310_000 picoseconds. - Weight::from_parts(340_000, 0) + // Minimum execution time: 263_000 picoseconds. + Weight::from_parts(315_000, 0) } fn seal_caller_is_root() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 257_000 picoseconds. - Weight::from_parts(292_000, 0) + // Minimum execution time: 239_000 picoseconds. + Weight::from_parts(278_000, 0) } fn seal_address() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 240_000 picoseconds. - Weight::from_parts(249_000, 0) + // Minimum execution time: 229_000 picoseconds. + Weight::from_parts(246_000, 0) } fn seal_weight_left() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 599_000 picoseconds. - Weight::from_parts(645_000, 0) + // Minimum execution time: 590_000 picoseconds. + Weight::from_parts(633_000, 0) } fn seal_ref_time_left() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 208_000 picoseconds. - Weight::from_parts(244_000, 0) + // Minimum execution time: 237_000 picoseconds. + Weight::from_parts(258_000, 0) } fn seal_balance() -> Weight { // Proof Size summary in bytes: // Measured: `102` // Estimated: `0` - // Minimum execution time: 4_534_000 picoseconds. - Weight::from_parts(4_689_000, 0) + // Minimum execution time: 4_622_000 picoseconds. + Weight::from_parts(4_738_000, 0) } /// Storage: `Revive::AddressSuffix` (r:1 w:0) /// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`) @@ -466,8 +498,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `160` // Estimated: `3625` - // Minimum execution time: 8_640_000 picoseconds. - Weight::from_parts(8_971_000, 3625) + // Minimum execution time: 8_552_000 picoseconds. + Weight::from_parts(8_860_000, 3625) .saturating_add(T::DbWeight::get().reads(2_u64)) } /// Storage: `Revive::ImmutableDataOf` (r:1 w:0) @@ -477,10 +509,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `134 + n * (1 ±0)` // Estimated: `3599 + n * (1 ±0)` - // Minimum execution time: 4_875_000 picoseconds. - Weight::from_parts(6_212_863, 3599) + // Minimum execution time: 4_823_000 picoseconds. + Weight::from_parts(6_177_102, 3599) // Standard Error: 7 - .saturating_add(Weight::from_parts(671, 0).saturating_mul(n.into())) + .saturating_add(Weight::from_parts(522, 0).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into())) } @@ -491,67 +523,67 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_678_000 picoseconds. - Weight::from_parts(1_883_150, 0) + // Minimum execution time: 1_700_000 picoseconds. + Weight::from_parts(1_900_108, 0) // Standard Error: 2 - .saturating_add(Weight::from_parts(579, 0).saturating_mul(n.into())) + .saturating_add(Weight::from_parts(527, 0).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().writes(1_u64)) } fn seal_value_transferred() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 238_000 picoseconds. - Weight::from_parts(273_000, 0) + // Minimum execution time: 244_000 picoseconds. + Weight::from_parts(264_000, 0) } fn seal_minimum_balance() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 244_000 picoseconds. - Weight::from_parts(260_000, 0) + // Minimum execution time: 218_000 picoseconds. + Weight::from_parts(250_000, 0) } fn seal_return_data_size() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 249_000 picoseconds. - Weight::from_parts(265_000, 0) + // Minimum execution time: 211_000 picoseconds. + Weight::from_parts(253_000, 0) } fn seal_call_data_size() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 243_000 picoseconds. - Weight::from_parts(269_000, 0) + // Minimum execution time: 197_000 picoseconds. + Weight::from_parts(237_000, 0) } fn seal_gas_limit() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 228_000 picoseconds. - Weight::from_parts(268_000, 0) + // Minimum execution time: 262_000 picoseconds. + Weight::from_parts(273_000, 0) } fn seal_gas_price() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 222_000 picoseconds. - Weight::from_parts(251_000, 0) + // Minimum execution time: 200_000 picoseconds. + Weight::from_parts(245_000, 0) } fn seal_base_fee() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 226_000 picoseconds. + // Minimum execution time: 215_000 picoseconds. Weight::from_parts(250_000, 0) } fn seal_block_number() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 228_000 picoseconds. - Weight::from_parts(270_000, 0) + // Minimum execution time: 243_000 picoseconds. + Weight::from_parts(260_000, 0) } /// Storage: `Session::Validators` (r:1 w:0) /// Proof: `Session::Validators` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) @@ -559,8 +591,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `1485` - // Minimum execution time: 13_597_000 picoseconds. - Weight::from_parts(13_770_000, 1485) + // Minimum execution time: 13_573_000 picoseconds. + Weight::from_parts(13_953_000, 1485) .saturating_add(T::DbWeight::get().reads(1_u64)) } /// Storage: `System::BlockHash` (r:1 w:0) @@ -569,60 +601,60 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3465` - // Minimum execution time: 2_199_000 picoseconds. - Weight::from_parts(2_402_000, 3465) + // Minimum execution time: 2_210_000 picoseconds. + Weight::from_parts(2_384_000, 3465) .saturating_add(T::DbWeight::get().reads(1_u64)) } fn seal_now() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 230_000 picoseconds. - Weight::from_parts(256_000, 0) + // Minimum execution time: 216_000 picoseconds. + Weight::from_parts(253_000, 0) } fn seal_weight_to_fee() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_214_000 picoseconds. - Weight::from_parts(1_283_000, 0) + // Minimum execution time: 1_166_000 picoseconds. + Weight::from_parts(1_294_000, 0) } /// The range of component `n` is `[0, 262140]`. fn seal_copy_to_contract(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 376_000 picoseconds. - Weight::from_parts(569_136, 0) + // Minimum execution time: 377_000 picoseconds. + Weight::from_parts(521_343, 0) // Standard Error: 0 - .saturating_add(Weight::from_parts(236, 0).saturating_mul(n.into())) + .saturating_add(Weight::from_parts(201, 0).saturating_mul(n.into())) } fn seal_call_data_load() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 243_000 picoseconds. - Weight::from_parts(260_000, 0) + // Minimum execution time: 235_000 picoseconds. + Weight::from_parts(250_000, 0) } /// The range of component `n` is `[0, 262144]`. fn seal_call_data_copy(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 231_000 picoseconds. - Weight::from_parts(379_088, 0) + // Minimum execution time: 202_000 picoseconds. + Weight::from_parts(195_833, 0) // Standard Error: 0 - .saturating_add(Weight::from_parts(148, 0).saturating_mul(n.into())) + .saturating_add(Weight::from_parts(113, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 262140]`. fn seal_return(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 227_000 picoseconds. - Weight::from_parts(400_572, 0) + // Minimum execution time: 229_000 picoseconds. + Weight::from_parts(500_671, 0) // Standard Error: 0 - .saturating_add(Weight::from_parts(237, 0).saturating_mul(n.into())) + .saturating_add(Weight::from_parts(199, 0).saturating_mul(n.into())) } /// Storage: `Revive::AddressSuffix` (r:1 w:0) /// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`) @@ -638,8 +670,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `215` // Estimated: `3680` - // Minimum execution time: 14_216_000 picoseconds. - Weight::from_parts(14_533_000, 3680) + // Minimum execution time: 14_217_000 picoseconds. + Weight::from_parts(14_778_000, 3680) .saturating_add(T::DbWeight::get().reads(3_u64)) .saturating_add(T::DbWeight::get().writes(4_u64)) } @@ -649,12 +681,12 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 3_877_000 picoseconds. - Weight::from_parts(3_856_832, 0) - // Standard Error: 2_622 - .saturating_add(Weight::from_parts(201_206, 0).saturating_mul(t.into())) - // Standard Error: 28 - .saturating_add(Weight::from_parts(1_128, 0).saturating_mul(n.into())) + // Minimum execution time: 3_733_000 picoseconds. + Weight::from_parts(3_684_334, 0) + // Standard Error: 2_341 + .saturating_add(Weight::from_parts(198_319, 0).saturating_mul(t.into())) + // Standard Error: 25 + .saturating_add(Weight::from_parts(939, 0).saturating_mul(n.into())) } /// Storage: `Skipped::Metadata` (r:0 w:0) /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) @@ -662,8 +694,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `552` // Estimated: `552` - // Minimum execution time: 5_806_000 picoseconds. - Weight::from_parts(6_037_000, 552) + // Minimum execution time: 5_787_000 picoseconds. + Weight::from_parts(5_937_000, 552) .saturating_add(T::DbWeight::get().reads(1_u64)) } /// Storage: `Skipped::Metadata` (r:0 w:0) @@ -672,8 +704,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `10562` // Estimated: `10562` - // Minimum execution time: 39_517_000 picoseconds. - Weight::from_parts(40_698_000, 10562) + // Minimum execution time: 38_632_000 picoseconds. + Weight::from_parts(40_015_000, 10562) .saturating_add(T::DbWeight::get().reads(1_u64)) } /// Storage: `Skipped::Metadata` (r:0 w:0) @@ -682,8 +714,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `552` // Estimated: `552` - // Minimum execution time: 6_747_000 picoseconds. - Weight::from_parts(7_003_000, 552) + // Minimum execution time: 6_669_000 picoseconds. + Weight::from_parts(6_890_000, 552) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } @@ -693,8 +725,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `10562` // Estimated: `10562` - // Minimum execution time: 40_158_000 picoseconds. - Weight::from_parts(41_394_000, 10562) + // Minimum execution time: 40_347_000 picoseconds. + Weight::from_parts(41_382_000, 10562) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } @@ -706,12 +738,12 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `152 + o * (1 ±0)` // Estimated: `151 + o * (1 ±0)` - // Minimum execution time: 6_360_000 picoseconds. - Weight::from_parts(7_335_152, 151) - // Standard Error: 80 - .saturating_add(Weight::from_parts(716, 0).saturating_mul(n.into())) - // Standard Error: 80 - .saturating_add(Weight::from_parts(1_127, 0).saturating_mul(o.into())) + // Minimum execution time: 6_380_000 picoseconds. + Weight::from_parts(7_382_453, 151) + // Standard Error: 75 + .saturating_add(Weight::from_parts(447, 0).saturating_mul(n.into())) + // Standard Error: 75 + .saturating_add(Weight::from_parts(1_308, 0).saturating_mul(o.into())) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) .saturating_add(Weight::from_parts(0, 1).saturating_mul(o.into())) @@ -723,10 +755,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `152 + n * (1 ±0)` // Estimated: `151 + n * (1 ±0)` - // Minimum execution time: 5_980_000 picoseconds. - Weight::from_parts(7_164_266, 151) - // Standard Error: 130 - .saturating_add(Weight::from_parts(1_893, 0).saturating_mul(n.into())) + // Minimum execution time: 6_054_000 picoseconds. + Weight::from_parts(7_366_811, 151) + // Standard Error: 152 + .saturating_add(Weight::from_parts(1_752, 0).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) .saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into())) @@ -738,10 +770,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `152 + n * (1 ±0)` // Estimated: `151 + n * (1 ±0)` - // Minimum execution time: 5_823_000 picoseconds. - Weight::from_parts(7_045_557, 151) - // Standard Error: 123 - .saturating_add(Weight::from_parts(2_222, 0).saturating_mul(n.into())) + // Minimum execution time: 5_698_000 picoseconds. + Weight::from_parts(7_111_906, 151) + // Standard Error: 130 + .saturating_add(Weight::from_parts(2_353, 0).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into())) } @@ -752,10 +784,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `152 + n * (1 ±0)` // Estimated: `151 + n * (1 ±0)` - // Minimum execution time: 5_349_000 picoseconds. - Weight::from_parts(6_506_216, 151) - // Standard Error: 127 - .saturating_add(Weight::from_parts(1_605, 0).saturating_mul(n.into())) + // Minimum execution time: 5_343_000 picoseconds. + Weight::from_parts(6_656_245, 151) + // Standard Error: 122 + .saturating_add(Weight::from_parts(1_423, 0).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into())) } @@ -766,10 +798,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `152 + n * (1 ±0)` // Estimated: `151 + n * (1 ±0)` - // Minimum execution time: 6_151_000 picoseconds. - Weight::from_parts(7_812_180, 151) - // Standard Error: 159 - .saturating_add(Weight::from_parts(2_277, 0).saturating_mul(n.into())) + // Minimum execution time: 6_398_000 picoseconds. + Weight::from_parts(7_807_591, 151) + // Standard Error: 140 + .saturating_add(Weight::from_parts(2_397, 0).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) .saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into())) @@ -778,36 +810,36 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_344_000 picoseconds. - Weight::from_parts(1_462_000, 0) + // Minimum execution time: 1_357_000 picoseconds. + Weight::from_parts(1_421_000, 0) } fn set_transient_storage_full() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_680_000 picoseconds. - Weight::from_parts(1_785_000, 0) + // Minimum execution time: 1_738_000 picoseconds. + Weight::from_parts(1_859_000, 0) } fn get_transient_storage_empty() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_380_000 picoseconds. - Weight::from_parts(1_502_000, 0) + // Minimum execution time: 1_366_000 picoseconds. + Weight::from_parts(1_451_000, 0) } fn get_transient_storage_full() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_506_000 picoseconds. - Weight::from_parts(1_604_000, 0) + // Minimum execution time: 1_528_000 picoseconds. + Weight::from_parts(1_597_000, 0) } fn rollback_transient_storage() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 972_000 picoseconds. - Weight::from_parts(1_054_000, 0) + // Minimum execution time: 988_000 picoseconds. + Weight::from_parts(1_065_000, 0) } /// The range of component `n` is `[0, 416]`. /// The range of component `o` is `[0, 416]`. @@ -815,52 +847,52 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_048_000 picoseconds. - Weight::from_parts(2_304_120, 0) - // Standard Error: 17 - .saturating_add(Weight::from_parts(254, 0).saturating_mul(n.into())) - // Standard Error: 17 - .saturating_add(Weight::from_parts(321, 0).saturating_mul(o.into())) + // Minimum execution time: 2_089_000 picoseconds. + Weight::from_parts(2_254_604, 0) + // Standard Error: 12 + .saturating_add(Weight::from_parts(300, 0).saturating_mul(n.into())) + // Standard Error: 12 + .saturating_add(Weight::from_parts(299, 0).saturating_mul(o.into())) } /// The range of component `n` is `[0, 416]`. fn seal_clear_transient_storage(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_790_000 picoseconds. - Weight::from_parts(2_141_874, 0) - // Standard Error: 31 - .saturating_add(Weight::from_parts(378, 0).saturating_mul(n.into())) + // Minimum execution time: 1_830_000 picoseconds. + Weight::from_parts(2_116_394, 0) + // Standard Error: 17 + .saturating_add(Weight::from_parts(339, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 416]`. fn seal_get_transient_storage(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_662_000 picoseconds. - Weight::from_parts(1_938_172, 0) - // Standard Error: 14 - .saturating_add(Weight::from_parts(316, 0).saturating_mul(n.into())) + // Minimum execution time: 1_739_000 picoseconds. + Weight::from_parts(1_905_386, 0) + // Standard Error: 12 + .saturating_add(Weight::from_parts(321, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 416]`. fn seal_contains_transient_storage(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_570_000 picoseconds. - Weight::from_parts(1_769_617, 0) + // Minimum execution time: 1_596_000 picoseconds. + Weight::from_parts(1_755_488, 0) // Standard Error: 13 - .saturating_add(Weight::from_parts(152, 0).saturating_mul(n.into())) + .saturating_add(Weight::from_parts(183, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 416]`. fn seal_take_transient_storage(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_266_000 picoseconds. - Weight::from_parts(2_497_430, 0) - // Standard Error: 21 - .saturating_add(Weight::from_parts(38, 0).saturating_mul(n.into())) + // Minimum execution time: 2_290_000 picoseconds. + Weight::from_parts(2_476_305, 0) + // Standard Error: 15 + .saturating_add(Weight::from_parts(30, 0).saturating_mul(n.into())) } /// Storage: `Revive::AddressSuffix` (r:1 w:0) /// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`) @@ -878,10 +910,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `1163 + t * (206 ±0)` // Estimated: `4628 + t * (2417 ±0)` - // Minimum execution time: 30_368_000 picoseconds. - Weight::from_parts(31_023_429, 4628) - // Standard Error: 43_250 - .saturating_add(Weight::from_parts(5_949_452, 0).saturating_mul(t.into())) + // Minimum execution time: 29_060_000 picoseconds. + Weight::from_parts(29_968_423, 4628) + // Standard Error: 33_731 + .saturating_add(Weight::from_parts(6_570_214, 0).saturating_mul(t.into())) // Standard Error: 0 .saturating_add(Weight::from_parts(2, 0).saturating_mul(i.into())) .saturating_add(T::DbWeight::get().reads(4_u64)) @@ -899,8 +931,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `1108` // Estimated: `4573` - // Minimum execution time: 24_707_000 picoseconds. - Weight::from_parts(25_410_000, 4573) + // Minimum execution time: 23_974_000 picoseconds. + Weight::from_parts(24_501_000, 4573) .saturating_add(T::DbWeight::get().reads(3_u64)) } /// Storage: `Revive::CodeInfoOf` (r:1 w:1) @@ -914,12 +946,12 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { /// The range of component `i` is `[0, 262144]`. fn seal_instantiate(i: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1094` - // Estimated: `4579` - // Minimum execution time: 107_232_000 picoseconds. - Weight::from_parts(94_844_854, 4579) - // Standard Error: 10 - .saturating_add(Weight::from_parts(4_159, 0).saturating_mul(i.into())) + // Measured: `1093` + // Estimated: `4569` + // Minimum execution time: 105_123_000 picoseconds. + Weight::from_parts(92_491_823, 4569) + // Standard Error: 12 + .saturating_add(Weight::from_parts(4_068, 0).saturating_mul(i.into())) .saturating_add(T::DbWeight::get().reads(4_u64)) .saturating_add(T::DbWeight::get().writes(3_u64)) } @@ -928,64 +960,64 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 617_000 picoseconds. - Weight::from_parts(3_460_054, 0) + // Minimum execution time: 592_000 picoseconds. + Weight::from_parts(2_630_580, 0) // Standard Error: 2 - .saturating_add(Weight::from_parts(1_374, 0).saturating_mul(n.into())) + .saturating_add(Weight::from_parts(1_331, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 262144]`. fn seal_hash_keccak_256(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_040_000 picoseconds. - Weight::from_parts(3_026_644, 0) - // Standard Error: 2 - .saturating_add(Weight::from_parts(3_607, 0).saturating_mul(n.into())) + // Minimum execution time: 1_046_000 picoseconds. + Weight::from_parts(3_027_925, 0) + // Standard Error: 3 + .saturating_add(Weight::from_parts(3_551, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 262144]`. fn seal_hash_blake2_256(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 633_000 picoseconds. - Weight::from_parts(3_375_104, 0) - // Standard Error: 2 - .saturating_add(Weight::from_parts(1_494, 0).saturating_mul(n.into())) + // Minimum execution time: 600_000 picoseconds. + Weight::from_parts(3_041_920, 0) + // Standard Error: 3 + .saturating_add(Weight::from_parts(1_457, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 262144]`. fn seal_hash_blake2_128(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 601_000 picoseconds. - Weight::from_parts(3_802_060, 0) - // Standard Error: 2 - .saturating_add(Weight::from_parts(1_493, 0).saturating_mul(n.into())) + // Minimum execution time: 611_000 picoseconds. + Weight::from_parts(3_545_939, 0) + // Standard Error: 3 + .saturating_add(Weight::from_parts(1_444, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 261889]`. fn seal_sr25519_verify(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 42_419_000 picoseconds. - Weight::from_parts(26_760_986, 0) - // Standard Error: 12 - .saturating_add(Weight::from_parts(5_421, 0).saturating_mul(n.into())) + // Minimum execution time: 41_720_000 picoseconds. + Weight::from_parts(28_703_157, 0) + // Standard Error: 11 + .saturating_add(Weight::from_parts(5_264, 0).saturating_mul(n.into())) } fn seal_ecdsa_recover() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 48_672_000 picoseconds. - Weight::from_parts(49_840_000, 0) + // Minimum execution time: 46_815_000 picoseconds. + Weight::from_parts(47_603_000, 0) } fn seal_ecdsa_to_eth_address() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 12_307_000 picoseconds. - Weight::from_parts(12_500_000, 0) + // Minimum execution time: 12_477_000 picoseconds. + Weight::from_parts(12_598_000, 0) } /// Storage: `Revive::CodeInfoOf` (r:1 w:1) /// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`) @@ -993,8 +1025,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `196` // Estimated: `3661` - // Minimum execution time: 10_142_000 picoseconds. - Weight::from_parts(10_458_000, 3661) + // Minimum execution time: 9_829_000 picoseconds. + Weight::from_parts(10_206_000, 3661) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } @@ -1003,10 +1035,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 7_893_000 picoseconds. - Weight::from_parts(9_362_667, 0) - // Standard Error: 84 - .saturating_add(Weight::from_parts(74_272, 0).saturating_mul(r.into())) + // Minimum execution time: 7_771_000 picoseconds. + Weight::from_parts(9_469_115, 0) + // Standard Error: 99 + .saturating_add(Weight::from_parts(72_761, 0).saturating_mul(r.into())) } } @@ -1018,8 +1050,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `1485` - // Minimum execution time: 695_000 picoseconds. - Weight::from_parts(750_000, 1485) + // Minimum execution time: 657_000 picoseconds. + Weight::from_parts(703_000, 1485) .saturating_add(RocksDbWeight::get().reads(1_u64)) } /// Storage: `Skipped::Metadata` (r:0 w:0) @@ -1029,10 +1061,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `230 + k * (69 ±0)` // Estimated: `222 + k * (70 ±0)` - // Minimum execution time: 10_509_000 picoseconds. - Weight::from_parts(10_896_000, 222) - // Standard Error: 2_549 - .saturating_add(Weight::from_parts(1_264_033, 0).saturating_mul(k.into())) + // Minimum execution time: 10_768_000 picoseconds. + Weight::from_parts(10_953_000, 222) + // Standard Error: 951 + .saturating_add(Weight::from_parts(1_172_145, 0).saturating_mul(k.into())) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(k.into()))) .saturating_add(RocksDbWeight::get().writes(2_u64)) @@ -1051,13 +1083,40 @@ impl WeightInfo for () { /// Proof: `Timestamp::Now` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `Measured`) /// Storage: `System::Account` (r:1 w:1) /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `Measured`) - /// The range of component `c` is `[0, 262144]`. - fn call_with_code_per_byte(_c: u32, ) -> Weight { + /// The range of component `c` is `[0, 104857]`. + fn call_with_code_per_byte(c: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1194` - // Estimated: `7134` - // Minimum execution time: 84_008_000 picoseconds. - Weight::from_parts(91_138_296, 7134) + // Measured: `524 + c * (1 ±0)` + // Estimated: `6458 + c * (1 ±0)` + // Minimum execution time: 71_766_000 picoseconds. + Weight::from_parts(97_749_536, 6458) + // Standard Error: 12 + .saturating_add(Weight::from_parts(1_777, 0).saturating_mul(c.into())) + .saturating_add(RocksDbWeight::get().reads(7_u64)) + .saturating_add(RocksDbWeight::get().writes(2_u64)) + .saturating_add(Weight::from_parts(0, 1).saturating_mul(c.into())) + } + /// Storage: `Revive::AddressSuffix` (r:2 w:0) + /// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`) + /// Storage: `Revive::ContractInfoOf` (r:1 w:1) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) + /// Storage: `Revive::CodeInfoOf` (r:1 w:0) + /// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`) + /// Storage: `Revive::PristineCode` (r:1 w:0) + /// Proof: `Revive::PristineCode` (`max_values`: None, `max_size`: Some(262180), added: 264655, mode: `Measured`) + /// Storage: `Timestamp::Now` (r:1 w:0) + /// Proof: `Timestamp::Now` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `Measured`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `Measured`) + /// The range of component `b` is `[0, 1]`. + fn basic_block_compilation(b: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `3892` + // Estimated: `9832` + // Minimum execution time: 111_124_000 picoseconds. + Weight::from_parts(114_011_830, 9832) + // Standard Error: 218_655 + .saturating_add(Weight::from_parts(475_869, 0).saturating_mul(b.into())) .saturating_add(RocksDbWeight::get().reads(7_u64)) .saturating_add(RocksDbWeight::get().writes(2_u64)) } @@ -1075,16 +1134,18 @@ impl WeightInfo for () { /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `Measured`) /// Storage: `Revive::PristineCode` (r:0 w:1) /// Proof: `Revive::PristineCode` (`max_values`: None, `max_size`: Some(262180), added: 264655, mode: `Measured`) - /// The range of component `c` is `[0, 262144]`. + /// The range of component `c` is `[0, 104857]`. /// The range of component `i` is `[0, 262144]`. - fn instantiate_with_code(_c: u32, i: u32, ) -> Weight { + fn instantiate_with_code(c: u32, i: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `93` // Estimated: `6033` - // Minimum execution time: 172_907_000 picoseconds. - Weight::from_parts(153_592_465, 6033) - // Standard Error: 12 - .saturating_add(Weight::from_parts(4_544, 0).saturating_mul(i.into())) + // Minimum execution time: 1_482_086_000 picoseconds. + Weight::from_parts(107_627_972, 6033) + // Standard Error: 39 + .saturating_add(Weight::from_parts(19_180, 0).saturating_mul(c.into())) + // Standard Error: 15 + .saturating_add(Weight::from_parts(5_307, 0).saturating_mul(i.into())) .saturating_add(RocksDbWeight::get().reads(7_u64)) .saturating_add(RocksDbWeight::get().writes(6_u64)) } @@ -1107,10 +1168,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `987` // Estimated: `4452` - // Minimum execution time: 143_169_000 picoseconds. - Weight::from_parts(120_653_436, 4452) - // Standard Error: 16 - .saturating_add(Weight::from_parts(4_444, 0).saturating_mul(i.into())) + // Minimum execution time: 139_661_000 picoseconds. + Weight::from_parts(75_448_171, 4452) + // Standard Error: 24 + .saturating_add(Weight::from_parts(5_303, 0).saturating_mul(i.into())) .saturating_add(RocksDbWeight::get().reads(7_u64)) .saturating_add(RocksDbWeight::get().writes(4_u64)) } @@ -1130,8 +1191,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `1194` // Estimated: `7134` - // Minimum execution time: 138_392_000 picoseconds. - Weight::from_parts(143_329_000, 7134) + // Minimum execution time: 74_015_000 picoseconds. + Weight::from_parts(76_281_000, 7134) .saturating_add(RocksDbWeight::get().reads(7_u64)) .saturating_add(RocksDbWeight::get().writes(2_u64)) } @@ -1141,13 +1202,15 @@ impl WeightInfo for () { /// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(409), added: 2884, mode: `Measured`) /// Storage: `Revive::PristineCode` (r:0 w:1) /// Proof: `Revive::PristineCode` (`max_values`: None, `max_size`: Some(262180), added: 264655, mode: `Measured`) - /// The range of component `c` is `[0, 262144]`. - fn upload_code(_c: u32, ) -> Weight { + /// The range of component `c` is `[0, 104857]`. + fn upload_code(c: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3465` - // Minimum execution time: 43_420_000 picoseconds. - Weight::from_parts(45_143_767, 3465) + // Minimum execution time: 39_512_000 picoseconds. + Weight::from_parts(19_845_671, 3465) + // Standard Error: 20 + .saturating_add(Weight::from_parts(14_190, 0).saturating_mul(c.into())) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(3_u64)) } @@ -1161,8 +1224,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `181` // Estimated: `3646` - // Minimum execution time: 35_828_000 picoseconds. - Weight::from_parts(36_853_000, 3646) + // Minimum execution time: 35_130_000 picoseconds. + Weight::from_parts(35_831_000, 3646) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(3_u64)) } @@ -1174,8 +1237,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `424` // Estimated: `6364` - // Minimum execution time: 19_678_000 picoseconds. - Weight::from_parts(21_266_000, 6364) + // Minimum execution time: 19_092_000 picoseconds. + Weight::from_parts(19_813_000, 6364) .saturating_add(RocksDbWeight::get().reads(3_u64)) .saturating_add(RocksDbWeight::get().writes(3_u64)) } @@ -1187,8 +1250,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3465` - // Minimum execution time: 37_024_000 picoseconds. - Weight::from_parts(37_440_000, 3465) + // Minimum execution time: 35_711_000 picoseconds. + Weight::from_parts(36_640_000, 3465) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(2_u64)) } @@ -1200,8 +1263,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `56` // Estimated: `3521` - // Minimum execution time: 31_228_000 picoseconds. - Weight::from_parts(32_183_000, 3521) + // Minimum execution time: 29_945_000 picoseconds. + Weight::from_parts(30_805_000, 3521) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(2_u64)) } @@ -1213,8 +1276,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3465` - // Minimum execution time: 6_241_000 picoseconds. - Weight::from_parts(6_467_000, 3465) + // Minimum execution time: 6_070_000 picoseconds. + Weight::from_parts(6_521_000, 3465) .saturating_add(RocksDbWeight::get().reads(2_u64)) } /// The range of component `r` is `[0, 1600]`. @@ -1222,24 +1285,24 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_397_000 picoseconds. - Weight::from_parts(7_159_300, 0) - // Standard Error: 173 - .saturating_add(Weight::from_parts(167_265, 0).saturating_mul(r.into())) + // Minimum execution time: 6_281_000 picoseconds. + Weight::from_parts(8_053_095, 0) + // Standard Error: 290 + .saturating_add(Weight::from_parts(162_796, 0).saturating_mul(r.into())) } fn seal_caller() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 267_000 picoseconds. - Weight::from_parts(296_000, 0) + // Minimum execution time: 259_000 picoseconds. + Weight::from_parts(285_000, 0) } fn seal_origin() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 227_000 picoseconds. - Weight::from_parts(252_000, 0) + // Minimum execution time: 233_000 picoseconds. + Weight::from_parts(253_000, 0) } /// Storage: `Revive::ContractInfoOf` (r:1 w:0) /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) @@ -1247,8 +1310,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `202` // Estimated: `3667` - // Minimum execution time: 6_591_000 picoseconds. - Weight::from_parts(6_770_000, 3667) + // Minimum execution time: 6_459_000 picoseconds. + Weight::from_parts(6_695_000, 3667) .saturating_add(RocksDbWeight::get().reads(1_u64)) } /// Storage: `Revive::AddressSuffix` (r:1 w:0) @@ -1257,8 +1320,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `144` // Estimated: `3609` - // Minimum execution time: 6_182_000 picoseconds. - Weight::from_parts(6_372_000, 3609) + // Minimum execution time: 6_068_000 picoseconds. + Weight::from_parts(6_312_000, 3609) .saturating_add(RocksDbWeight::get().reads(1_u64)) } /// Storage: `Revive::ContractInfoOf` (r:1 w:0) @@ -1267,16 +1330,16 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `298` // Estimated: `3763` - // Minimum execution time: 7_327_000 picoseconds. - Weight::from_parts(7_612_000, 3763) + // Minimum execution time: 7_412_000 picoseconds. + Weight::from_parts(7_660_000, 3763) .saturating_add(RocksDbWeight::get().reads(1_u64)) } fn seal_own_code_hash() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 232_000 picoseconds. - Weight::from_parts(287_000, 0) + // Minimum execution time: 266_000 picoseconds. + Weight::from_parts(282_000, 0) } /// Storage: `Revive::ContractInfoOf` (r:1 w:0) /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) @@ -1286,51 +1349,51 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `368` // Estimated: `3833` - // Minimum execution time: 10_918_000 picoseconds. - Weight::from_parts(11_323_000, 3833) + // Minimum execution time: 10_570_000 picoseconds. + Weight::from_parts(11_027_000, 3833) .saturating_add(RocksDbWeight::get().reads(2_u64)) } fn seal_caller_is_origin() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 310_000 picoseconds. - Weight::from_parts(340_000, 0) + // Minimum execution time: 263_000 picoseconds. + Weight::from_parts(315_000, 0) } fn seal_caller_is_root() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 257_000 picoseconds. - Weight::from_parts(292_000, 0) + // Minimum execution time: 239_000 picoseconds. + Weight::from_parts(278_000, 0) } fn seal_address() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 240_000 picoseconds. - Weight::from_parts(249_000, 0) + // Minimum execution time: 229_000 picoseconds. + Weight::from_parts(246_000, 0) } fn seal_weight_left() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 599_000 picoseconds. - Weight::from_parts(645_000, 0) + // Minimum execution time: 590_000 picoseconds. + Weight::from_parts(633_000, 0) } fn seal_ref_time_left() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 208_000 picoseconds. - Weight::from_parts(244_000, 0) + // Minimum execution time: 237_000 picoseconds. + Weight::from_parts(258_000, 0) } fn seal_balance() -> Weight { // Proof Size summary in bytes: // Measured: `102` // Estimated: `0` - // Minimum execution time: 4_534_000 picoseconds. - Weight::from_parts(4_689_000, 0) + // Minimum execution time: 4_622_000 picoseconds. + Weight::from_parts(4_738_000, 0) } /// Storage: `Revive::AddressSuffix` (r:1 w:0) /// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`) @@ -1340,8 +1403,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `160` // Estimated: `3625` - // Minimum execution time: 8_640_000 picoseconds. - Weight::from_parts(8_971_000, 3625) + // Minimum execution time: 8_552_000 picoseconds. + Weight::from_parts(8_860_000, 3625) .saturating_add(RocksDbWeight::get().reads(2_u64)) } /// Storage: `Revive::ImmutableDataOf` (r:1 w:0) @@ -1351,10 +1414,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `134 + n * (1 ±0)` // Estimated: `3599 + n * (1 ±0)` - // Minimum execution time: 4_875_000 picoseconds. - Weight::from_parts(6_212_863, 3599) + // Minimum execution time: 4_823_000 picoseconds. + Weight::from_parts(6_177_102, 3599) // Standard Error: 7 - .saturating_add(Weight::from_parts(671, 0).saturating_mul(n.into())) + .saturating_add(Weight::from_parts(522, 0).saturating_mul(n.into())) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into())) } @@ -1365,67 +1428,67 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_678_000 picoseconds. - Weight::from_parts(1_883_150, 0) + // Minimum execution time: 1_700_000 picoseconds. + Weight::from_parts(1_900_108, 0) // Standard Error: 2 - .saturating_add(Weight::from_parts(579, 0).saturating_mul(n.into())) + .saturating_add(Weight::from_parts(527, 0).saturating_mul(n.into())) .saturating_add(RocksDbWeight::get().writes(1_u64)) } fn seal_value_transferred() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 238_000 picoseconds. - Weight::from_parts(273_000, 0) + // Minimum execution time: 244_000 picoseconds. + Weight::from_parts(264_000, 0) } fn seal_minimum_balance() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 244_000 picoseconds. - Weight::from_parts(260_000, 0) + // Minimum execution time: 218_000 picoseconds. + Weight::from_parts(250_000, 0) } fn seal_return_data_size() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 249_000 picoseconds. - Weight::from_parts(265_000, 0) + // Minimum execution time: 211_000 picoseconds. + Weight::from_parts(253_000, 0) } fn seal_call_data_size() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 243_000 picoseconds. - Weight::from_parts(269_000, 0) + // Minimum execution time: 197_000 picoseconds. + Weight::from_parts(237_000, 0) } fn seal_gas_limit() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 228_000 picoseconds. - Weight::from_parts(268_000, 0) + // Minimum execution time: 262_000 picoseconds. + Weight::from_parts(273_000, 0) } fn seal_gas_price() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 222_000 picoseconds. - Weight::from_parts(251_000, 0) + // Minimum execution time: 200_000 picoseconds. + Weight::from_parts(245_000, 0) } fn seal_base_fee() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 226_000 picoseconds. + // Minimum execution time: 215_000 picoseconds. Weight::from_parts(250_000, 0) } fn seal_block_number() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 228_000 picoseconds. - Weight::from_parts(270_000, 0) + // Minimum execution time: 243_000 picoseconds. + Weight::from_parts(260_000, 0) } /// Storage: `Session::Validators` (r:1 w:0) /// Proof: `Session::Validators` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) @@ -1433,8 +1496,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `1485` - // Minimum execution time: 13_597_000 picoseconds. - Weight::from_parts(13_770_000, 1485) + // Minimum execution time: 13_573_000 picoseconds. + Weight::from_parts(13_953_000, 1485) .saturating_add(RocksDbWeight::get().reads(1_u64)) } /// Storage: `System::BlockHash` (r:1 w:0) @@ -1443,60 +1506,60 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3465` - // Minimum execution time: 2_199_000 picoseconds. - Weight::from_parts(2_402_000, 3465) + // Minimum execution time: 2_210_000 picoseconds. + Weight::from_parts(2_384_000, 3465) .saturating_add(RocksDbWeight::get().reads(1_u64)) } fn seal_now() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 230_000 picoseconds. - Weight::from_parts(256_000, 0) + // Minimum execution time: 216_000 picoseconds. + Weight::from_parts(253_000, 0) } fn seal_weight_to_fee() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_214_000 picoseconds. - Weight::from_parts(1_283_000, 0) + // Minimum execution time: 1_166_000 picoseconds. + Weight::from_parts(1_294_000, 0) } /// The range of component `n` is `[0, 262140]`. fn seal_copy_to_contract(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 376_000 picoseconds. - Weight::from_parts(569_136, 0) + // Minimum execution time: 377_000 picoseconds. + Weight::from_parts(521_343, 0) // Standard Error: 0 - .saturating_add(Weight::from_parts(236, 0).saturating_mul(n.into())) + .saturating_add(Weight::from_parts(201, 0).saturating_mul(n.into())) } fn seal_call_data_load() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 243_000 picoseconds. - Weight::from_parts(260_000, 0) + // Minimum execution time: 235_000 picoseconds. + Weight::from_parts(250_000, 0) } /// The range of component `n` is `[0, 262144]`. fn seal_call_data_copy(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 231_000 picoseconds. - Weight::from_parts(379_088, 0) + // Minimum execution time: 202_000 picoseconds. + Weight::from_parts(195_833, 0) // Standard Error: 0 - .saturating_add(Weight::from_parts(148, 0).saturating_mul(n.into())) + .saturating_add(Weight::from_parts(113, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 262140]`. fn seal_return(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 227_000 picoseconds. - Weight::from_parts(400_572, 0) + // Minimum execution time: 229_000 picoseconds. + Weight::from_parts(500_671, 0) // Standard Error: 0 - .saturating_add(Weight::from_parts(237, 0).saturating_mul(n.into())) + .saturating_add(Weight::from_parts(199, 0).saturating_mul(n.into())) } /// Storage: `Revive::AddressSuffix` (r:1 w:0) /// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`) @@ -1512,8 +1575,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `215` // Estimated: `3680` - // Minimum execution time: 14_216_000 picoseconds. - Weight::from_parts(14_533_000, 3680) + // Minimum execution time: 14_217_000 picoseconds. + Weight::from_parts(14_778_000, 3680) .saturating_add(RocksDbWeight::get().reads(3_u64)) .saturating_add(RocksDbWeight::get().writes(4_u64)) } @@ -1523,12 +1586,12 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 3_877_000 picoseconds. - Weight::from_parts(3_856_832, 0) - // Standard Error: 2_622 - .saturating_add(Weight::from_parts(201_206, 0).saturating_mul(t.into())) - // Standard Error: 28 - .saturating_add(Weight::from_parts(1_128, 0).saturating_mul(n.into())) + // Minimum execution time: 3_733_000 picoseconds. + Weight::from_parts(3_684_334, 0) + // Standard Error: 2_341 + .saturating_add(Weight::from_parts(198_319, 0).saturating_mul(t.into())) + // Standard Error: 25 + .saturating_add(Weight::from_parts(939, 0).saturating_mul(n.into())) } /// Storage: `Skipped::Metadata` (r:0 w:0) /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) @@ -1536,8 +1599,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `552` // Estimated: `552` - // Minimum execution time: 5_806_000 picoseconds. - Weight::from_parts(6_037_000, 552) + // Minimum execution time: 5_787_000 picoseconds. + Weight::from_parts(5_937_000, 552) .saturating_add(RocksDbWeight::get().reads(1_u64)) } /// Storage: `Skipped::Metadata` (r:0 w:0) @@ -1546,8 +1609,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `10562` // Estimated: `10562` - // Minimum execution time: 39_517_000 picoseconds. - Weight::from_parts(40_698_000, 10562) + // Minimum execution time: 38_632_000 picoseconds. + Weight::from_parts(40_015_000, 10562) .saturating_add(RocksDbWeight::get().reads(1_u64)) } /// Storage: `Skipped::Metadata` (r:0 w:0) @@ -1556,8 +1619,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `552` // Estimated: `552` - // Minimum execution time: 6_747_000 picoseconds. - Weight::from_parts(7_003_000, 552) + // Minimum execution time: 6_669_000 picoseconds. + Weight::from_parts(6_890_000, 552) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } @@ -1567,8 +1630,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `10562` // Estimated: `10562` - // Minimum execution time: 40_158_000 picoseconds. - Weight::from_parts(41_394_000, 10562) + // Minimum execution time: 40_347_000 picoseconds. + Weight::from_parts(41_382_000, 10562) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } @@ -1580,12 +1643,12 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `152 + o * (1 ±0)` // Estimated: `151 + o * (1 ±0)` - // Minimum execution time: 6_360_000 picoseconds. - Weight::from_parts(7_335_152, 151) - // Standard Error: 80 - .saturating_add(Weight::from_parts(716, 0).saturating_mul(n.into())) - // Standard Error: 80 - .saturating_add(Weight::from_parts(1_127, 0).saturating_mul(o.into())) + // Minimum execution time: 6_380_000 picoseconds. + Weight::from_parts(7_382_453, 151) + // Standard Error: 75 + .saturating_add(Weight::from_parts(447, 0).saturating_mul(n.into())) + // Standard Error: 75 + .saturating_add(Weight::from_parts(1_308, 0).saturating_mul(o.into())) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) .saturating_add(Weight::from_parts(0, 1).saturating_mul(o.into())) @@ -1597,10 +1660,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `152 + n * (1 ±0)` // Estimated: `151 + n * (1 ±0)` - // Minimum execution time: 5_980_000 picoseconds. - Weight::from_parts(7_164_266, 151) - // Standard Error: 130 - .saturating_add(Weight::from_parts(1_893, 0).saturating_mul(n.into())) + // Minimum execution time: 6_054_000 picoseconds. + Weight::from_parts(7_366_811, 151) + // Standard Error: 152 + .saturating_add(Weight::from_parts(1_752, 0).saturating_mul(n.into())) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) .saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into())) @@ -1612,10 +1675,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `152 + n * (1 ±0)` // Estimated: `151 + n * (1 ±0)` - // Minimum execution time: 5_823_000 picoseconds. - Weight::from_parts(7_045_557, 151) - // Standard Error: 123 - .saturating_add(Weight::from_parts(2_222, 0).saturating_mul(n.into())) + // Minimum execution time: 5_698_000 picoseconds. + Weight::from_parts(7_111_906, 151) + // Standard Error: 130 + .saturating_add(Weight::from_parts(2_353, 0).saturating_mul(n.into())) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into())) } @@ -1626,10 +1689,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `152 + n * (1 ±0)` // Estimated: `151 + n * (1 ±0)` - // Minimum execution time: 5_349_000 picoseconds. - Weight::from_parts(6_506_216, 151) - // Standard Error: 127 - .saturating_add(Weight::from_parts(1_605, 0).saturating_mul(n.into())) + // Minimum execution time: 5_343_000 picoseconds. + Weight::from_parts(6_656_245, 151) + // Standard Error: 122 + .saturating_add(Weight::from_parts(1_423, 0).saturating_mul(n.into())) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into())) } @@ -1640,10 +1703,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `152 + n * (1 ±0)` // Estimated: `151 + n * (1 ±0)` - // Minimum execution time: 6_151_000 picoseconds. - Weight::from_parts(7_812_180, 151) - // Standard Error: 159 - .saturating_add(Weight::from_parts(2_277, 0).saturating_mul(n.into())) + // Minimum execution time: 6_398_000 picoseconds. + Weight::from_parts(7_807_591, 151) + // Standard Error: 140 + .saturating_add(Weight::from_parts(2_397, 0).saturating_mul(n.into())) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) .saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into())) @@ -1652,36 +1715,36 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_344_000 picoseconds. - Weight::from_parts(1_462_000, 0) + // Minimum execution time: 1_357_000 picoseconds. + Weight::from_parts(1_421_000, 0) } fn set_transient_storage_full() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_680_000 picoseconds. - Weight::from_parts(1_785_000, 0) + // Minimum execution time: 1_738_000 picoseconds. + Weight::from_parts(1_859_000, 0) } fn get_transient_storage_empty() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_380_000 picoseconds. - Weight::from_parts(1_502_000, 0) + // Minimum execution time: 1_366_000 picoseconds. + Weight::from_parts(1_451_000, 0) } fn get_transient_storage_full() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_506_000 picoseconds. - Weight::from_parts(1_604_000, 0) + // Minimum execution time: 1_528_000 picoseconds. + Weight::from_parts(1_597_000, 0) } fn rollback_transient_storage() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 972_000 picoseconds. - Weight::from_parts(1_054_000, 0) + // Minimum execution time: 988_000 picoseconds. + Weight::from_parts(1_065_000, 0) } /// The range of component `n` is `[0, 416]`. /// The range of component `o` is `[0, 416]`. @@ -1689,52 +1752,52 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_048_000 picoseconds. - Weight::from_parts(2_304_120, 0) - // Standard Error: 17 - .saturating_add(Weight::from_parts(254, 0).saturating_mul(n.into())) - // Standard Error: 17 - .saturating_add(Weight::from_parts(321, 0).saturating_mul(o.into())) + // Minimum execution time: 2_089_000 picoseconds. + Weight::from_parts(2_254_604, 0) + // Standard Error: 12 + .saturating_add(Weight::from_parts(300, 0).saturating_mul(n.into())) + // Standard Error: 12 + .saturating_add(Weight::from_parts(299, 0).saturating_mul(o.into())) } /// The range of component `n` is `[0, 416]`. fn seal_clear_transient_storage(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_790_000 picoseconds. - Weight::from_parts(2_141_874, 0) - // Standard Error: 31 - .saturating_add(Weight::from_parts(378, 0).saturating_mul(n.into())) + // Minimum execution time: 1_830_000 picoseconds. + Weight::from_parts(2_116_394, 0) + // Standard Error: 17 + .saturating_add(Weight::from_parts(339, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 416]`. fn seal_get_transient_storage(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_662_000 picoseconds. - Weight::from_parts(1_938_172, 0) - // Standard Error: 14 - .saturating_add(Weight::from_parts(316, 0).saturating_mul(n.into())) + // Minimum execution time: 1_739_000 picoseconds. + Weight::from_parts(1_905_386, 0) + // Standard Error: 12 + .saturating_add(Weight::from_parts(321, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 416]`. fn seal_contains_transient_storage(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_570_000 picoseconds. - Weight::from_parts(1_769_617, 0) + // Minimum execution time: 1_596_000 picoseconds. + Weight::from_parts(1_755_488, 0) // Standard Error: 13 - .saturating_add(Weight::from_parts(152, 0).saturating_mul(n.into())) + .saturating_add(Weight::from_parts(183, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 416]`. fn seal_take_transient_storage(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_266_000 picoseconds. - Weight::from_parts(2_497_430, 0) - // Standard Error: 21 - .saturating_add(Weight::from_parts(38, 0).saturating_mul(n.into())) + // Minimum execution time: 2_290_000 picoseconds. + Weight::from_parts(2_476_305, 0) + // Standard Error: 15 + .saturating_add(Weight::from_parts(30, 0).saturating_mul(n.into())) } /// Storage: `Revive::AddressSuffix` (r:1 w:0) /// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`) @@ -1752,10 +1815,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `1163 + t * (206 ±0)` // Estimated: `4628 + t * (2417 ±0)` - // Minimum execution time: 30_368_000 picoseconds. - Weight::from_parts(31_023_429, 4628) - // Standard Error: 43_250 - .saturating_add(Weight::from_parts(5_949_452, 0).saturating_mul(t.into())) + // Minimum execution time: 29_060_000 picoseconds. + Weight::from_parts(29_968_423, 4628) + // Standard Error: 33_731 + .saturating_add(Weight::from_parts(6_570_214, 0).saturating_mul(t.into())) // Standard Error: 0 .saturating_add(Weight::from_parts(2, 0).saturating_mul(i.into())) .saturating_add(RocksDbWeight::get().reads(4_u64)) @@ -1773,8 +1836,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `1108` // Estimated: `4573` - // Minimum execution time: 24_707_000 picoseconds. - Weight::from_parts(25_410_000, 4573) + // Minimum execution time: 23_974_000 picoseconds. + Weight::from_parts(24_501_000, 4573) .saturating_add(RocksDbWeight::get().reads(3_u64)) } /// Storage: `Revive::CodeInfoOf` (r:1 w:1) @@ -1788,12 +1851,12 @@ impl WeightInfo for () { /// The range of component `i` is `[0, 262144]`. fn seal_instantiate(i: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1094` - // Estimated: `4579` - // Minimum execution time: 107_232_000 picoseconds. - Weight::from_parts(94_844_854, 4579) - // Standard Error: 10 - .saturating_add(Weight::from_parts(4_159, 0).saturating_mul(i.into())) + // Measured: `1093` + // Estimated: `4569` + // Minimum execution time: 105_123_000 picoseconds. + Weight::from_parts(92_491_823, 4569) + // Standard Error: 12 + .saturating_add(Weight::from_parts(4_068, 0).saturating_mul(i.into())) .saturating_add(RocksDbWeight::get().reads(4_u64)) .saturating_add(RocksDbWeight::get().writes(3_u64)) } @@ -1802,64 +1865,64 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 617_000 picoseconds. - Weight::from_parts(3_460_054, 0) + // Minimum execution time: 592_000 picoseconds. + Weight::from_parts(2_630_580, 0) // Standard Error: 2 - .saturating_add(Weight::from_parts(1_374, 0).saturating_mul(n.into())) + .saturating_add(Weight::from_parts(1_331, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 262144]`. fn seal_hash_keccak_256(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_040_000 picoseconds. - Weight::from_parts(3_026_644, 0) - // Standard Error: 2 - .saturating_add(Weight::from_parts(3_607, 0).saturating_mul(n.into())) + // Minimum execution time: 1_046_000 picoseconds. + Weight::from_parts(3_027_925, 0) + // Standard Error: 3 + .saturating_add(Weight::from_parts(3_551, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 262144]`. fn seal_hash_blake2_256(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 633_000 picoseconds. - Weight::from_parts(3_375_104, 0) - // Standard Error: 2 - .saturating_add(Weight::from_parts(1_494, 0).saturating_mul(n.into())) + // Minimum execution time: 600_000 picoseconds. + Weight::from_parts(3_041_920, 0) + // Standard Error: 3 + .saturating_add(Weight::from_parts(1_457, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 262144]`. fn seal_hash_blake2_128(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 601_000 picoseconds. - Weight::from_parts(3_802_060, 0) - // Standard Error: 2 - .saturating_add(Weight::from_parts(1_493, 0).saturating_mul(n.into())) + // Minimum execution time: 611_000 picoseconds. + Weight::from_parts(3_545_939, 0) + // Standard Error: 3 + .saturating_add(Weight::from_parts(1_444, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 261889]`. fn seal_sr25519_verify(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 42_419_000 picoseconds. - Weight::from_parts(26_760_986, 0) - // Standard Error: 12 - .saturating_add(Weight::from_parts(5_421, 0).saturating_mul(n.into())) + // Minimum execution time: 41_720_000 picoseconds. + Weight::from_parts(28_703_157, 0) + // Standard Error: 11 + .saturating_add(Weight::from_parts(5_264, 0).saturating_mul(n.into())) } fn seal_ecdsa_recover() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 48_672_000 picoseconds. - Weight::from_parts(49_840_000, 0) + // Minimum execution time: 46_815_000 picoseconds. + Weight::from_parts(47_603_000, 0) } fn seal_ecdsa_to_eth_address() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 12_307_000 picoseconds. - Weight::from_parts(12_500_000, 0) + // Minimum execution time: 12_477_000 picoseconds. + Weight::from_parts(12_598_000, 0) } /// Storage: `Revive::CodeInfoOf` (r:1 w:1) /// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`) @@ -1867,8 +1930,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `196` // Estimated: `3661` - // Minimum execution time: 10_142_000 picoseconds. - Weight::from_parts(10_458_000, 3661) + // Minimum execution time: 9_829_000 picoseconds. + Weight::from_parts(10_206_000, 3661) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } @@ -1877,9 +1940,9 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 7_893_000 picoseconds. - Weight::from_parts(9_362_667, 0) - // Standard Error: 84 - .saturating_add(Weight::from_parts(74_272, 0).saturating_mul(r.into())) + // Minimum execution time: 7_771_000 picoseconds. + Weight::from_parts(9_469_115, 0) + // Standard Error: 99 + .saturating_add(Weight::from_parts(72_761, 0).saturating_mul(r.into())) } } diff --git a/substrate/frame/revive/uapi/Cargo.toml b/substrate/frame/revive/uapi/Cargo.toml index cf006941cfd..33a2506d5fe 100644 --- a/substrate/frame/revive/uapi/Cargo.toml +++ b/substrate/frame/revive/uapi/Cargo.toml @@ -22,7 +22,7 @@ paste = { workspace = true } scale-info = { features = ["derive"], optional = true, workspace = true } [target.'cfg(target_arch = "riscv64")'.dependencies] -polkavm-derive = { version = "0.19.0" } +polkavm-derive = { version = "0.21.0" } [package.metadata.docs.rs] features = ["unstable-hostfn"] -- GitLab