From 0818456121b791e6148fefa68740827d389ffe84 Mon Sep 17 00:00:00 2001 From: Vadim Smirnov Date: Mon, 11 Sep 2023 14:43:31 +0200 Subject: [PATCH 01/21] chore(runtime): Update weights (#3243) --- pallets/gear/src/weights.rs | 3010 ++++++++--------- runtime/gear/src/tests.rs | 12 +- runtime/gear/src/weights/frame_system.rs | 90 +- runtime/gear/src/weights/pallet_balances.rs | 62 +- runtime/gear/src/weights/pallet_gear.rs | 3010 ++++++++--------- .../gear/src/weights/pallet_gear_voucher.rs | 14 +- runtime/gear/src/weights/pallet_timestamp.rs | 30 +- runtime/gear/src/weights/pallet_utility.rs | 70 +- runtime/vara/src/tests.rs | 6 +- runtime/vara/src/weights/frame_system.rs | 86 +- runtime/vara/src/weights/pallet_airdrop.rs | 26 +- runtime/vara/src/weights/pallet_balances.rs | 58 +- runtime/vara/src/weights/pallet_gear.rs | 3006 ++++++++-------- .../vara/src/weights/pallet_gear_voucher.rs | 10 +- runtime/vara/src/weights/pallet_timestamp.rs | 26 +- runtime/vara/src/weights/pallet_utility.rs | 66 +- 16 files changed, 4779 insertions(+), 4803 deletions(-) diff --git a/pallets/gear/src/weights.rs b/pallets/gear/src/weights.rs index 07935956903..c52d1f58fac 100644 --- a/pallets/gear/src/weights.rs +++ b/pallets/gear/src/weights.rs @@ -19,13 +19,13 @@ //! Autogenerated weights for pallet_gear //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-08-20, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-09-11, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` //! CPU: `Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("gear-dev"), DB CACHE: 1024 +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("vara-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/gear benchmark pallet --chain=gear-dev --steps=50 --repeat=20 --pallet=pallet_gear --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./scripts/benchmarking/weights-output/pallet_gear.rs --template=.maintain/frame-weight-template.hbs +// ./target/production/gear benchmark pallet --chain=vara-dev --steps=50 --repeat=20 --pallet=pallet_gear --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./scripts/benchmarking/weights-output/pallet_gear.rs --template=.maintain/frame-weight-template.hbs #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -244,21 +244,21 @@ impl WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 951_000 picoseconds. - Weight::from_parts(1_020_000, 0) - // Standard Error: 722 - .saturating_add(Weight::from_parts(240_031, 0).saturating_mul(c.into())) + // Minimum execution time: 1_023_000 picoseconds. + Weight::from_parts(1_051_000, 0) + // Standard Error: 912 + .saturating_add(Weight::from_parts(213_761, 0).saturating_mul(c.into())) .saturating_add(T::DbWeight::get().writes(1_u64)) } /// The range of component `c` is `[0, 512]`. fn db_read_per_kb(c: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `42 + c * (1024 ±0)` - // Estimated: `3506 + c * (1024 ±0)` - // Minimum execution time: 2_762_000 picoseconds. - Weight::from_parts(2_859_000, 3506) - // Standard Error: 813 - .saturating_add(Weight::from_parts(665_139, 0).saturating_mul(c.into())) + // Measured: `146 + c * (1024 ±0)` + // Estimated: `3610 + c * (1024 ±0)` + // Minimum execution time: 3_252_000 picoseconds. + Weight::from_parts(3_416_000, 3610) + // Standard Error: 1_261 + .saturating_add(Weight::from_parts(689_572, 0).saturating_mul(c.into())) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(Weight::from_parts(0, 1024).saturating_mul(c.into())) } @@ -267,35 +267,35 @@ impl WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 50_591_000 picoseconds. - Weight::from_parts(61_353_023, 0) - // Standard Error: 9_186 - .saturating_add(Weight::from_parts(2_404_810, 0).saturating_mul(c.into())) + // Minimum execution time: 59_805_000 picoseconds. + Weight::from_parts(86_729_126, 0) + // Standard Error: 7_023 + .saturating_add(Weight::from_parts(2_475_519, 0).saturating_mul(c.into())) } fn claim_value() -> Weight { // Proof Size summary in bytes: - // Measured: `979` - // Estimated: `42236` - // Minimum execution time: 81_660_000 picoseconds. - Weight::from_parts(83_840_000, 42236) - .saturating_add(T::DbWeight::get().reads(13_u64)) - .saturating_add(T::DbWeight::get().writes(10_u64)) + // Measured: `1372` + // Estimated: `51905` + // Minimum execution time: 107_694_000 picoseconds. + Weight::from_parts(110_328_000, 51905) + .saturating_add(T::DbWeight::get().reads(15_u64)) + .saturating_add(T::DbWeight::get().writes(12_u64)) } fn pay_program_rent() -> Weight { // Proof Size summary in bytes: - // Measured: `886` - // Estimated: `21261` - // Minimum execution time: 54_005_000 picoseconds. - Weight::from_parts(55_095_000, 21261) + // Measured: `992` + // Estimated: `21579` + // Minimum execution time: 55_980_000 picoseconds. + Weight::from_parts(56_766_000, 21579) .saturating_add(T::DbWeight::get().reads(7_u64)) .saturating_add(T::DbWeight::get().writes(6_u64)) } fn resume_session_init() -> Weight { // Proof Size summary in bytes: - // Measured: `534` - // Estimated: `17070` - // Minimum execution time: 28_880_000 picoseconds. - Weight::from_parts(29_583_000, 17070) + // Measured: `638` + // Estimated: `17486` + // Minimum execution time: 29_973_000 picoseconds. + Weight::from_parts(31_008_000, 17486) .saturating_add(T::DbWeight::get().reads(6_u64)) .saturating_add(T::DbWeight::get().writes(4_u64)) } @@ -304,22 +304,22 @@ impl WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `355` // Estimated: `7640` - // Minimum execution time: 7_744_000 picoseconds. - Weight::from_parts(4_233_092, 7640) - // Standard Error: 39_690 - .saturating_add(Weight::from_parts(14_033_179, 0).saturating_mul(c.into())) + // Minimum execution time: 8_054_000 picoseconds. + Weight::from_parts(8_342_000, 7640) + // Standard Error: 17_771 + .saturating_add(Weight::from_parts(13_335_661, 0).saturating_mul(c.into())) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(2_u64)) } /// The range of component `c` is `[0, 2044]`. fn resume_session_commit(c: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1297 + c * (16389 ±0)` - // Estimated: `40898 + c * (131112 ±0)` - // Minimum execution time: 70_301_000 picoseconds. - Weight::from_parts(70_991_000, 40898) - // Standard Error: 177_223 - .saturating_add(Weight::from_parts(54_687_249, 0).saturating_mul(c.into())) + // Measured: `1593 + c * (16389 ±0)` + // Estimated: `43266 + c * (131112 ±0)` + // Minimum execution time: 72_178_000 picoseconds. + Weight::from_parts(73_341_000, 43266) + // Standard Error: 167_723 + .saturating_add(Weight::from_parts(54_442_045, 0).saturating_mul(c.into())) .saturating_add(T::DbWeight::get().reads(11_u64)) .saturating_add(T::DbWeight::get().writes(9_u64)) .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(c.into()))) @@ -328,97 +328,97 @@ impl WeightInfo for SubstrateWeight { /// The range of component `c` is `[0, 250]`. fn upload_code(c: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `10` - // Estimated: `4990` - // Minimum execution time: 61_715_000 picoseconds. - Weight::from_parts(40_384_385, 4990) - // Standard Error: 57_496 - .saturating_add(Weight::from_parts(53_210_788, 0).saturating_mul(c.into())) + // Measured: `113` + // Estimated: `5402` + // Minimum execution time: 78_662_000 picoseconds. + Weight::from_parts(42_066_175, 5402) + // Standard Error: 52_075 + .saturating_add(Weight::from_parts(60_249_549, 0).saturating_mul(c.into())) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(4_u64)) } /// The range of component `s` is `[0, 4194304]`. fn create_program(s: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `671` - // Estimated: `38638` - // Minimum execution time: 63_077_000 picoseconds. - Weight::from_parts(96_840_506, 38638) - // Standard Error: 0 - .saturating_add(Weight::from_parts(2_609, 0).saturating_mul(s.into())) - .saturating_add(T::DbWeight::get().reads(13_u64)) - .saturating_add(T::DbWeight::get().writes(10_u64)) + // Measured: `1111` + // Estimated: `50600` + // Minimum execution time: 94_321_000 picoseconds. + Weight::from_parts(129_113_540, 50600) + // Standard Error: 1 + .saturating_add(Weight::from_parts(2_625, 0).saturating_mul(s.into())) + .saturating_add(T::DbWeight::get().reads(15_u64)) + .saturating_add(T::DbWeight::get().writes(12_u64)) } /// The range of component `c` is `[0, 250]`. /// The range of component `s` is `[0, 4194304]`. fn upload_program(c: u32, s: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `235` - // Estimated: `34312` - // Minimum execution time: 11_049_858_000 picoseconds. - Weight::from_parts(11_090_406_000, 34312) - // Standard Error: 517_330 - .saturating_add(Weight::from_parts(25_497_137, 0).saturating_mul(c.into())) - // Standard Error: 30 - .saturating_add(Weight::from_parts(910, 0).saturating_mul(s.into())) - .saturating_add(T::DbWeight::get().reads(13_u64)) - .saturating_add(T::DbWeight::get().writes(14_u64)) + // Measured: `521` + // Estimated: `45152` + // Minimum execution time: 11_148_491_000 picoseconds. + Weight::from_parts(21_065_971, 45152) + // Standard Error: 173_883 + .saturating_add(Weight::from_parts(60_839_567, 0).saturating_mul(c.into())) + // Standard Error: 10 + .saturating_add(Weight::from_parts(2_652, 0).saturating_mul(s.into())) + .saturating_add(T::DbWeight::get().reads(15_u64)) + .saturating_add(T::DbWeight::get().writes(16_u64)) } /// The range of component `p` is `[0, 2097152]`. fn send_message(p: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `348` - // Estimated: `23853` - // Minimum execution time: 56_305_000 picoseconds. - Weight::from_parts(38_705_997, 23853) + // Measured: `531` + // Estimated: `31266` + // Minimum execution time: 73_302_000 picoseconds. + Weight::from_parts(47_279_667, 31266) // Standard Error: 1 - .saturating_add(Weight::from_parts(1_034, 0).saturating_mul(p.into())) - .saturating_add(T::DbWeight::get().reads(9_u64)) - .saturating_add(T::DbWeight::get().writes(8_u64)) + .saturating_add(Weight::from_parts(1_055, 0).saturating_mul(p.into())) + .saturating_add(T::DbWeight::get().reads(11_u64)) + .saturating_add(T::DbWeight::get().writes(10_u64)) } /// The range of component `p` is `[0, 2097152]`. fn send_reply(p: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `978` - // Estimated: `42227` - // Minimum execution time: 83_033_000 picoseconds. - Weight::from_parts(69_135_468, 42227) - // Standard Error: 1 - .saturating_add(Weight::from_parts(1_035, 0).saturating_mul(p.into())) - .saturating_add(T::DbWeight::get().reads(13_u64)) - .saturating_add(T::DbWeight::get().writes(10_u64)) + // Measured: `1371` + // Estimated: `54435` + // Minimum execution time: 124_173_000 picoseconds. + Weight::from_parts(96_458_887, 54435) + // Standard Error: 2 + .saturating_add(Weight::from_parts(1_078, 0).saturating_mul(p.into())) + .saturating_add(T::DbWeight::get().reads(16_u64)) + .saturating_add(T::DbWeight::get().writes(13_u64)) } /// The range of component `q` is `[1, 512]`. - fn initial_allocation(q: u32, ) -> Weight { + fn initial_allocation(_q: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `760` - // Estimated: `74319` - // Minimum execution time: 295_535_000 picoseconds. - Weight::from_parts(306_791_413, 74319) - // Standard Error: 1_111 - .saturating_add(Weight::from_parts(1_568, 0).saturating_mul(q.into())) - .saturating_add(T::DbWeight::get().reads(27_u64)) - .saturating_add(T::DbWeight::get().writes(22_u64)) + // Measured: `1893` + // Estimated: `114612` + // Minimum execution time: 365_983_000 picoseconds. + Weight::from_parts(387_416_952, 114612) + .saturating_add(T::DbWeight::get().reads(33_u64)) + .saturating_add(T::DbWeight::get().writes(26_u64)) } /// The range of component `q` is `[0, 512]`. - fn alloc_in_handle(_q: u32, ) -> Weight { + fn alloc_in_handle(q: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `760` - // Estimated: `74319` - // Minimum execution time: 309_253_000 picoseconds. - Weight::from_parts(323_694_389, 74319) - .saturating_add(T::DbWeight::get().reads(27_u64)) - .saturating_add(T::DbWeight::get().writes(22_u64)) + // Measured: `1893` + // Estimated: `114612` + // Minimum execution time: 380_430_000 picoseconds. + Weight::from_parts(403_376_118, 114612) + // Standard Error: 2_451 + .saturating_add(Weight::from_parts(1_137, 0).saturating_mul(q.into())) + .saturating_add(T::DbWeight::get().reads(33_u64)) + .saturating_add(T::DbWeight::get().writes(26_u64)) } /// The range of component `c` is `[0, 512]`. fn reinstrument_per_kb(c: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `211 + c * (1075 ±0)` // Estimated: `3899 + c * (2150 ±0)` - // Minimum execution time: 44_806_000 picoseconds. - Weight::from_parts(45_498_000, 3899) - // Standard Error: 44_467 - .saturating_add(Weight::from_parts(54_603_581, 0).saturating_mul(c.into())) + // Minimum execution time: 58_080_000 picoseconds. + Weight::from_parts(58_601_000, 3899) + // Standard Error: 36_083 + .saturating_add(Weight::from_parts(58_395_643, 0).saturating_mul(c.into())) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(2_u64)) .saturating_add(Weight::from_parts(0, 2150).saturating_mul(c.into())) @@ -428,630 +428,628 @@ impl WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 82_307_000 picoseconds. - Weight::from_parts(84_226_000, 0) - // Standard Error: 4_203_577 - .saturating_add(Weight::from_parts(574_493_471, 0).saturating_mul(r.into())) + // Minimum execution time: 91_412_000 picoseconds. + Weight::from_parts(94_168_000, 0) + // Standard Error: 3_806_298 + .saturating_add(Weight::from_parts(673_774_453, 0).saturating_mul(r.into())) } /// The range of component `p` is `[1, 512]`. fn alloc_per_page(p: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 309_893_000 picoseconds. - Weight::from_parts(234_558_588, 0) - // Standard Error: 7_966 - .saturating_add(Weight::from_parts(32_022_587, 0).saturating_mul(p.into())) + // Minimum execution time: 452_549_000 picoseconds. + Weight::from_parts(398_963_700, 0) + // Standard Error: 7_042 + .saturating_add(Weight::from_parts(29_406_609, 0).saturating_mul(p.into())) } /// The range of component `r` is `[0, 20]`. fn free(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 142_319_000 picoseconds. - Weight::from_parts(121_865_521, 0) - // Standard Error: 314_080 - .saturating_add(Weight::from_parts(64_422_856, 0).saturating_mul(r.into())) + // Minimum execution time: 207_052_000 picoseconds. + Weight::from_parts(209_606_478, 0) + // Standard Error: 255_281 + .saturating_add(Weight::from_parts(62_959_531, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 256]`. fn gr_reserve_gas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 85_527_000 picoseconds. - Weight::from_parts(91_967_528, 0) - // Standard Error: 3_856 - .saturating_add(Weight::from_parts(2_363_669, 0).saturating_mul(r.into())) + // Minimum execution time: 97_729_000 picoseconds. + Weight::from_parts(105_964_750, 0) + // Standard Error: 4_847 + .saturating_add(Weight::from_parts(2_433_966, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 256]`. fn gr_unreserve_gas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 144_133_000 picoseconds. - Weight::from_parts(156_991_945, 0) - // Standard Error: 24_223 - .saturating_add(Weight::from_parts(2_431_525, 0).saturating_mul(r.into())) + // Minimum execution time: 175_010_000 picoseconds. + Weight::from_parts(229_153_209, 0) + // Standard Error: 17_116 + .saturating_add(Weight::from_parts(1_991_260, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_system_reserve_gas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 86_811_000 picoseconds. - Weight::from_parts(101_122_470, 0) - // Standard Error: 303_533 - .saturating_add(Weight::from_parts(92_415_204, 0).saturating_mul(r.into())) + // Minimum execution time: 94_696_000 picoseconds. + Weight::from_parts(119_674_535, 0) + // Standard Error: 387_178 + .saturating_add(Weight::from_parts(98_102_856, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_message_id(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_453_000 picoseconds. - Weight::from_parts(79_049_804, 0) - // Standard Error: 305_992 - .saturating_add(Weight::from_parts(79_382_630, 0).saturating_mul(r.into())) + // Minimum execution time: 95_794_000 picoseconds. + Weight::from_parts(89_931_979, 0) + // Standard Error: 371_349 + .saturating_add(Weight::from_parts(86_524_059, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_program_id(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 82_650_000 picoseconds. - Weight::from_parts(79_085_060, 0) - // Standard Error: 293_080 - .saturating_add(Weight::from_parts(77_346_019, 0).saturating_mul(r.into())) + // Minimum execution time: 97_924_000 picoseconds. + Weight::from_parts(84_041_201, 0) + // Standard Error: 327_841 + .saturating_add(Weight::from_parts(95_483_315, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_source(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_545_000 picoseconds. - Weight::from_parts(72_777_984, 0) - // Standard Error: 351_302 - .saturating_add(Weight::from_parts(80_634_984, 0).saturating_mul(r.into())) + // Minimum execution time: 97_122_000 picoseconds. + Weight::from_parts(86_789_268, 0) + // Standard Error: 353_259 + .saturating_add(Weight::from_parts(85_698_317, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_value(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_245_000 picoseconds. - Weight::from_parts(76_181_868, 0) - // Standard Error: 354_266 - .saturating_add(Weight::from_parts(79_459_120, 0).saturating_mul(r.into())) + // Minimum execution time: 94_821_000 picoseconds. + Weight::from_parts(92_694_130, 0) + // Standard Error: 340_146 + .saturating_add(Weight::from_parts(84_623_945, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_value_available(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 85_064_000 picoseconds. - Weight::from_parts(77_882_516, 0) - // Standard Error: 377_997 - .saturating_add(Weight::from_parts(78_533_852, 0).saturating_mul(r.into())) + // Minimum execution time: 93_840_000 picoseconds. + Weight::from_parts(87_888_572, 0) + // Standard Error: 369_465 + .saturating_add(Weight::from_parts(85_638_902, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_gas_available(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_522_000 picoseconds. - Weight::from_parts(66_328_137, 0) - // Standard Error: 360_143 - .saturating_add(Weight::from_parts(79_838_604, 0).saturating_mul(r.into())) + // Minimum execution time: 98_597_000 picoseconds. + Weight::from_parts(86_642_386, 0) + // Standard Error: 362_257 + .saturating_add(Weight::from_parts(85_598_887, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_size(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_961_000 picoseconds. - Weight::from_parts(72_789_065, 0) - // Standard Error: 366_577 - .saturating_add(Weight::from_parts(79_031_060, 0).saturating_mul(r.into())) + // Minimum execution time: 94_546_000 picoseconds. + Weight::from_parts(91_466_289, 0) + // Standard Error: 344_423 + .saturating_add(Weight::from_parts(84_318_848, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_read(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 700_686_000 picoseconds. - Weight::from_parts(749_297_529, 0) - // Standard Error: 383_897 - .saturating_add(Weight::from_parts(132_242_102, 0).saturating_mul(r.into())) + // Minimum execution time: 578_036_000 picoseconds. + Weight::from_parts(696_140_951, 0) + // Standard Error: 559_498 + .saturating_add(Weight::from_parts(149_397_501, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_read_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 830_957_000 picoseconds. - Weight::from_parts(850_017_000, 0) - // Standard Error: 67_693 - .saturating_add(Weight::from_parts(13_570_326, 0).saturating_mul(n.into())) + // Minimum execution time: 723_788_000 picoseconds. + Weight::from_parts(740_225_000, 0) + // Standard Error: 52_895 + .saturating_add(Weight::from_parts(13_188_120, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_block_height(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_261_000 picoseconds. - Weight::from_parts(70_573_139, 0) - // Standard Error: 351_239 - .saturating_add(Weight::from_parts(80_441_776, 0).saturating_mul(r.into())) + // Minimum execution time: 99_012_000 picoseconds. + Weight::from_parts(88_269_135, 0) + // Standard Error: 296_136 + .saturating_add(Weight::from_parts(92_296_104, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_block_timestamp(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_164_000 picoseconds. - Weight::from_parts(70_866_987, 0) - // Standard Error: 346_107 - .saturating_add(Weight::from_parts(82_471_591, 0).saturating_mul(r.into())) + // Minimum execution time: 93_803_000 picoseconds. + Weight::from_parts(87_097_769, 0) + // Standard Error: 367_325 + .saturating_add(Weight::from_parts(84_987_043, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 20]`. fn gr_random(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 81_192_000 picoseconds. - Weight::from_parts(101_814_078, 0) - // Standard Error: 391_508 - .saturating_add(Weight::from_parts(166_873_282, 0).saturating_mul(n.into())) + // Minimum execution time: 96_663_000 picoseconds. + Weight::from_parts(105_357_427, 0) + // Standard Error: 366_135 + .saturating_add(Weight::from_parts(172_109_201, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_deposit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_974_000 picoseconds. - Weight::from_parts(87_244_000, 0) - // Standard Error: 3_619_557 - .saturating_add(Weight::from_parts(749_950_767, 0).saturating_mul(r.into())) + // Minimum execution time: 99_210_000 picoseconds. + Weight::from_parts(102_217_000, 0) + // Standard Error: 4_527_119 + .saturating_add(Weight::from_parts(845_784_967, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 81_612_000 picoseconds. - Weight::from_parts(147_822_399, 0) - // Standard Error: 421_408 - .saturating_add(Weight::from_parts(250_730_230, 0).saturating_mul(r.into())) + // Minimum execution time: 96_579_000 picoseconds. + Weight::from_parts(162_452_429, 0) + // Standard Error: 416_836 + .saturating_add(Weight::from_parts(257_900_517, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_send_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 332_130_000 picoseconds. - Weight::from_parts(337_780_000, 0) - // Standard Error: 52_652 - .saturating_add(Weight::from_parts(20_743_155, 0).saturating_mul(n.into())) + // Minimum execution time: 353_526_000 picoseconds. + Weight::from_parts(358_025_000, 0) + // Standard Error: 61_984 + .saturating_add(Weight::from_parts(21_521_461, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 82_722_000 picoseconds. - Weight::from_parts(147_881_270, 0) - // Standard Error: 390_429 - .saturating_add(Weight::from_parts(259_701_373, 0).saturating_mul(r.into())) + // Minimum execution time: 94_822_000 picoseconds. + Weight::from_parts(168_431_611, 0) + // Standard Error: 378_696 + .saturating_add(Weight::from_parts(263_135_958, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_send_wgas_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 337_753_000 picoseconds. - Weight::from_parts(343_454_000, 0) - // Standard Error: 66_604 - .saturating_add(Weight::from_parts(21_189_034, 0).saturating_mul(n.into())) + // Minimum execution time: 351_828_000 picoseconds. + Weight::from_parts(355_382_000, 0) + // Standard Error: 60_589 + .saturating_add(Weight::from_parts(21_325_400, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_input(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 708_454_000 picoseconds. - Weight::from_parts(775_673_824, 0) - // Standard Error: 380_634 - .saturating_add(Weight::from_parts(268_253_890, 0).saturating_mul(r.into())) + // Minimum execution time: 569_384_000 picoseconds. + Weight::from_parts(638_474_730, 0) + // Standard Error: 425_903 + .saturating_add(Weight::from_parts(275_691_711, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_input_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 706_799_000 picoseconds. - Weight::from_parts(782_052_003, 0) - // Standard Error: 385_065 - .saturating_add(Weight::from_parts(265_280_556, 0).saturating_mul(r.into())) + // Minimum execution time: 573_053_000 picoseconds. + Weight::from_parts(640_078_802, 0) + // Standard Error: 475_389 + .saturating_add(Weight::from_parts(284_337_155, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_init(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_511_000 picoseconds. - Weight::from_parts(61_459_678, 0) - // Standard Error: 362_497 - .saturating_add(Weight::from_parts(87_903_947, 0).saturating_mul(r.into())) + // Minimum execution time: 98_223_000 picoseconds. + Weight::from_parts(85_732_985, 0) + // Standard Error: 336_308 + .saturating_add(Weight::from_parts(92_936_006, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_push(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_676_718_000 picoseconds. - Weight::from_parts(1_838_206_733, 0) - // Standard Error: 440_793 - .saturating_add(Weight::from_parts(156_352_100, 0).saturating_mul(r.into())) + // Minimum execution time: 1_822_621_000 picoseconds. + Weight::from_parts(1_951_955_018, 0) + // Standard Error: 339_415 + .saturating_add(Weight::from_parts(157_557_756, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_send_push_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 284_222_000 picoseconds. - Weight::from_parts(293_316_000, 0) - // Standard Error: 54_796 - .saturating_add(Weight::from_parts(30_939_288, 0).saturating_mul(n.into())) + // Minimum execution time: 314_296_000 picoseconds. + Weight::from_parts(317_522_000, 0) + // Standard Error: 61_360 + .saturating_add(Weight::from_parts(29_499_741, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_commit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_682_466_000 picoseconds. - Weight::from_parts(1_829_413_701, 0) - // Standard Error: 510_421 - .saturating_add(Weight::from_parts(216_009_232, 0).saturating_mul(r.into())) + // Minimum execution time: 1_835_106_000 picoseconds. + Weight::from_parts(1_948_516_646, 0) + // Standard Error: 382_008 + .saturating_add(Weight::from_parts(214_812_508, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_commit_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_681_160_000 picoseconds. - Weight::from_parts(1_819_797_788, 0) - // Standard Error: 453_707 - .saturating_add(Weight::from_parts(215_589_534, 0).saturating_mul(r.into())) + // Minimum execution time: 1_827_496_000 picoseconds. + Weight::from_parts(1_949_190_773, 0) + // Standard Error: 340_175 + .saturating_add(Weight::from_parts(218_001_536, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reservation_send(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 242_556_000 picoseconds. - Weight::from_parts(314_306_159, 0) - // Standard Error: 376_142 - .saturating_add(Weight::from_parts(260_614_468, 0).saturating_mul(r.into())) + // Minimum execution time: 264_306_000 picoseconds. + Weight::from_parts(363_536_651, 0) + // Standard Error: 467_914 + .saturating_add(Weight::from_parts(265_564_072, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reservation_send_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 495_430_000 picoseconds. - Weight::from_parts(502_714_000, 0) - // Standard Error: 52_049 - .saturating_add(Weight::from_parts(21_259_132, 0).saturating_mul(n.into())) + // Minimum execution time: 523_150_000 picoseconds. + Weight::from_parts(535_842_000, 0) + // Standard Error: 65_412 + .saturating_add(Weight::from_parts(21_698_063, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reservation_send_commit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_809_658_000 picoseconds. - Weight::from_parts(2_002_681_446, 0) - // Standard Error: 414_919 - .saturating_add(Weight::from_parts(227_942_929, 0).saturating_mul(r.into())) + // Minimum execution time: 1_974_743_000 picoseconds. + Weight::from_parts(2_096_494_995, 0) + // Standard Error: 474_778 + .saturating_add(Weight::from_parts(232_524_299, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 80_821_000 picoseconds. - Weight::from_parts(84_783_126, 0) - // Standard Error: 234_696 - .saturating_add(Weight::from_parts(22_124_873, 0).saturating_mul(r.into())) + // Minimum execution time: 94_139_000 picoseconds. + Weight::from_parts(101_775_569, 0) + // Standard Error: 452_439 + .saturating_add(Weight::from_parts(16_839_430, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reply_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 100_040_000 picoseconds. - Weight::from_parts(92_861_700, 0) - // Standard Error: 1_021 - .saturating_add(Weight::from_parts(419_414, 0).saturating_mul(n.into())) + // Minimum execution time: 112_050_000 picoseconds. + Weight::from_parts(102_205_366, 0) + // Standard Error: 1_008 + .saturating_add(Weight::from_parts(431_304, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 80_986_000 picoseconds. - Weight::from_parts(85_723_530, 0) - // Standard Error: 278_519 - .saturating_add(Weight::from_parts(19_484_469, 0).saturating_mul(r.into())) + // Minimum execution time: 93_528_000 picoseconds. + Weight::from_parts(99_748_422, 0) + // Standard Error: 396_992 + .saturating_add(Weight::from_parts(20_536_877, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reply_wgas_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 104_879_000 picoseconds. - Weight::from_parts(88_056_044, 0) - // Standard Error: 1_087 - .saturating_add(Weight::from_parts(427_201, 0).saturating_mul(n.into())) + // Minimum execution time: 117_832_000 picoseconds. + Weight::from_parts(104_552_847, 0) + // Standard Error: 1_402 + .saturating_add(Weight::from_parts(432_018, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply_commit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 80_548_000 picoseconds. - Weight::from_parts(84_139_208, 0) - // Standard Error: 235_150 - .saturating_add(Weight::from_parts(17_533_491, 0).saturating_mul(r.into())) + // Minimum execution time: 93_325_000 picoseconds. + Weight::from_parts(101_074_097, 0) + // Standard Error: 454_790 + .saturating_add(Weight::from_parts(20_838_102, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply_commit_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_118_000 picoseconds. - Weight::from_parts(88_086_604, 0) - // Standard Error: 244_958 - .saturating_add(Weight::from_parts(17_286_195, 0).saturating_mul(r.into())) + // Minimum execution time: 93_800_000 picoseconds. + Weight::from_parts(102_249_326, 0) + // Standard Error: 463_488 + .saturating_add(Weight::from_parts(15_991_473, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_push(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_393_000 picoseconds. - Weight::from_parts(132_631_342, 0) - // Standard Error: 436_134 - .saturating_add(Weight::from_parts(141_520_417, 0).saturating_mul(r.into())) + // Minimum execution time: 93_153_000 picoseconds. + Weight::from_parts(121_452_989, 0) + // Standard Error: 390_540 + .saturating_add(Weight::from_parts(145_641_178, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 8192]`. fn gr_reply_push_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 97_567_000 picoseconds. - Weight::from_parts(99_600_000, 0) - // Standard Error: 2_187 - .saturating_add(Weight::from_parts(639_729, 0).saturating_mul(n.into())) + // Minimum execution time: 115_529_000 picoseconds. + Weight::from_parts(120_413_000, 0) + // Standard Error: 3_105 + .saturating_add(Weight::from_parts(640_863, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply_input(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 696_739_000 picoseconds. - Weight::from_parts(711_247_336, 0) - // Standard Error: 1_403_605 - .saturating_add(Weight::from_parts(15_869_663, 0).saturating_mul(r.into())) + // Minimum execution time: 566_859_000 picoseconds. + Weight::from_parts(631_111_316, 0) + // Standard Error: 7_012_228 + .saturating_add(Weight::from_parts(21_896_983, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. - fn gr_reply_input_wgas(r: u32, ) -> Weight { + fn gr_reply_input_wgas(_r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 697_432_000 picoseconds. - Weight::from_parts(712_096_565, 0) - // Standard Error: 1_674_352 - .saturating_add(Weight::from_parts(32_103_934, 0).saturating_mul(r.into())) + // Minimum execution time: 565_382_000 picoseconds. + Weight::from_parts(613_048_008, 0) } /// The range of component `r` is `[0, 1]`. fn gr_reservation_reply(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 92_685_000 picoseconds. - Weight::from_parts(96_156_389, 0) - // Standard Error: 262_969 - .saturating_add(Weight::from_parts(8_983_510, 0).saturating_mul(r.into())) + // Minimum execution time: 104_401_000 picoseconds. + Weight::from_parts(112_651_320, 0) + // Standard Error: 438_590 + .saturating_add(Weight::from_parts(11_095_379, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reservation_reply_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 105_746_000 picoseconds. - Weight::from_parts(89_918_273, 0) - // Standard Error: 1_055 - .saturating_add(Weight::from_parts(427_838, 0).saturating_mul(n.into())) + // Minimum execution time: 115_615_000 picoseconds. + Weight::from_parts(112_987_750, 0) + // Standard Error: 960 + .saturating_add(Weight::from_parts(423_774, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reservation_reply_commit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 95_634_000 picoseconds. - Weight::from_parts(99_574_926, 0) - // Standard Error: 267_301 - .saturating_add(Weight::from_parts(3_125_673, 0).saturating_mul(r.into())) + // Minimum execution time: 105_056_000 picoseconds. + Weight::from_parts(113_735_922, 0) + // Standard Error: 466_586 + .saturating_add(Weight::from_parts(5_305_577, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reservation_reply_commit_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 99_268_000 picoseconds. - Weight::from_parts(93_140_981, 0) - // Standard Error: 1_101 - .saturating_add(Weight::from_parts(419_078, 0).saturating_mul(n.into())) + // Minimum execution time: 113_897_000 picoseconds. + Weight::from_parts(112_616_408, 0) + // Standard Error: 1_722 + .saturating_add(Weight::from_parts(428_420, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_to(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_167_000 picoseconds. - Weight::from_parts(80_305_860, 0) - // Standard Error: 357_986 - .saturating_add(Weight::from_parts(80_422_820, 0).saturating_mul(r.into())) + // Minimum execution time: 93_845_000 picoseconds. + Weight::from_parts(97_247_314, 0) + // Standard Error: 366_814 + .saturating_add(Weight::from_parts(85_900_587, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_signal_from(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 81_137_000 picoseconds. - Weight::from_parts(76_881_656, 0) - // Standard Error: 302_504 - .saturating_add(Weight::from_parts(80_036_963, 0).saturating_mul(r.into())) + // Minimum execution time: 93_761_000 picoseconds. + Weight::from_parts(92_637_129, 0) + // Standard Error: 309_799 + .saturating_add(Weight::from_parts(85_725_727, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_push_input(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 707_922_000 picoseconds. - Weight::from_parts(767_820_244, 0) - // Standard Error: 418_647 - .saturating_add(Weight::from_parts(97_993_049, 0).saturating_mul(r.into())) + // Minimum execution time: 565_388_000 picoseconds. + Weight::from_parts(606_358_854, 0) + // Standard Error: 430_766 + .saturating_add(Weight::from_parts(108_769_267, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reply_push_input_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 724_683_000 picoseconds. - Weight::from_parts(732_157_836, 0) - // Standard Error: 618 - .saturating_add(Weight::from_parts(151_809, 0).saturating_mul(n.into())) + // Minimum execution time: 591_660_000 picoseconds. + Weight::from_parts(597_035_528, 0) + // Standard Error: 2_641 + .saturating_add(Weight::from_parts(153_781, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_push_input(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_304_055_000 picoseconds. - Weight::from_parts(2_435_844_780, 0) - // Standard Error: 420_214 - .saturating_add(Weight::from_parts(120_405_108, 0).saturating_mul(r.into())) + // Minimum execution time: 2_317_147_000 picoseconds. + Weight::from_parts(2_514_940_964, 0) + // Standard Error: 546_319 + .saturating_add(Weight::from_parts(128_825_542, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_send_push_input_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_431_524_000 picoseconds. - Weight::from_parts(2_669_711_936, 0) - // Standard Error: 12_819 - .saturating_add(Weight::from_parts(13_546_418, 0).saturating_mul(n.into())) + // Minimum execution time: 2_560_344_000 picoseconds. + Weight::from_parts(2_512_409_449, 0) + // Standard Error: 15_466 + .saturating_add(Weight::from_parts(12_395_144, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_debug(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 85_238_000 picoseconds. - Weight::from_parts(104_905_012, 0) - // Standard Error: 392_000 - .saturating_add(Weight::from_parts(116_570_175, 0).saturating_mul(r.into())) + // Minimum execution time: 97_996_000 picoseconds. + Weight::from_parts(130_630_238, 0) + // Standard Error: 414_418 + .saturating_add(Weight::from_parts(114_735_577, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_debug_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 143_132_000 picoseconds. - Weight::from_parts(145_448_000, 0) - // Standard Error: 51_056 - .saturating_add(Weight::from_parts(25_497_066, 0).saturating_mul(n.into())) + // Minimum execution time: 157_513_000 picoseconds. + Weight::from_parts(160_584_000, 0) + // Standard Error: 57_227 + .saturating_add(Weight::from_parts(25_738_939, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_code(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_055_000 picoseconds. - Weight::from_parts(75_514_507, 0) - // Standard Error: 342_511 - .saturating_add(Weight::from_parts(78_022_368, 0).saturating_mul(r.into())) + // Minimum execution time: 92_652_000 picoseconds. + Weight::from_parts(88_138_429, 0) + // Standard Error: 330_537 + .saturating_add(Weight::from_parts(83_235_234, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_exit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_725_000 picoseconds. - Weight::from_parts(87_574_873, 0) - // Standard Error: 249_331 - .saturating_add(Weight::from_parts(24_890_126, 0).saturating_mul(r.into())) + // Minimum execution time: 93_824_000 picoseconds. + Weight::from_parts(102_740_497, 0) + // Standard Error: 428_593 + .saturating_add(Weight::from_parts(23_682_102, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_leave(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 82_761_000 picoseconds. - Weight::from_parts(86_511_404, 0) - // Standard Error: 240_746 - .saturating_add(Weight::from_parts(16_767_395, 0).saturating_mul(r.into())) + // Minimum execution time: 92_530_000 picoseconds. + Weight::from_parts(101_410_861, 0) + // Standard Error: 432_236 + .saturating_add(Weight::from_parts(12_196_938, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_wait(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_794_000 picoseconds. - Weight::from_parts(88_401_167, 0) - // Standard Error: 217_438 - .saturating_add(Weight::from_parts(11_267_632, 0).saturating_mul(r.into())) + // Minimum execution time: 93_402_000 picoseconds. + Weight::from_parts(102_285_877, 0) + // Standard Error: 466_463 + .saturating_add(Weight::from_parts(13_156_522, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_wait_for(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_664_000 picoseconds. - Weight::from_parts(89_193_048, 0) - // Standard Error: 336_699 - .saturating_add(Weight::from_parts(12_350_251, 0).saturating_mul(r.into())) + // Minimum execution time: 95_706_000 picoseconds. + Weight::from_parts(102_513_059, 0) + // Standard Error: 464_787 + .saturating_add(Weight::from_parts(13_986_540, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_wait_up_to(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_815_000 picoseconds. - Weight::from_parts(87_397_869, 0) - // Standard Error: 235_037 - .saturating_add(Weight::from_parts(16_313_030, 0).saturating_mul(r.into())) + // Minimum execution time: 93_057_000 picoseconds. + Weight::from_parts(99_083_869, 0) + // Standard Error: 378_747 + .saturating_add(Weight::from_parts(12_230_330, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_wake(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 139_190_000 picoseconds. - Weight::from_parts(186_267_428, 0) - // Standard Error: 346_204 - .saturating_add(Weight::from_parts(158_103_512, 0).saturating_mul(r.into())) + // Minimum execution time: 177_947_000 picoseconds. + Weight::from_parts(226_692_243, 0) + // Standard Error: 265_725 + .saturating_add(Weight::from_parts(156_938_838, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_create_program(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 96_748_000 picoseconds. - Weight::from_parts(148_556_306, 0) - // Standard Error: 400_680 - .saturating_add(Weight::from_parts(333_100_790, 0).saturating_mul(r.into())) + // Minimum execution time: 107_346_000 picoseconds. + Weight::from_parts(160_631_540, 0) + // Standard Error: 352_753 + .saturating_add(Weight::from_parts(338_685_448, 0).saturating_mul(r.into())) } /// The range of component `p` is `[0, 2048]`. /// The range of component `s` is `[1, 2048]`. @@ -1059,22 +1057,22 @@ impl WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 44_452_286_000 picoseconds. - Weight::from_parts(44_568_744_000, 0) - // Standard Error: 268_880 - .saturating_add(Weight::from_parts(7_444_126, 0).saturating_mul(p.into())) - // Standard Error: 268_867 - .saturating_add(Weight::from_parts(179_724_917, 0).saturating_mul(s.into())) + // Minimum execution time: 44_754_074_000 picoseconds. + Weight::from_parts(44_833_050_000, 0) + // Standard Error: 269_308 + .saturating_add(Weight::from_parts(7_629_892, 0).saturating_mul(p.into())) + // Standard Error: 269_294 + .saturating_add(Weight::from_parts(179_148_245, 0).saturating_mul(s.into())) } /// The range of component `r` is `[0, 20]`. fn gr_create_program_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 96_042_000 picoseconds. - Weight::from_parts(163_443_462, 0) - // Standard Error: 381_777 - .saturating_add(Weight::from_parts(338_839_702, 0).saturating_mul(r.into())) + // Minimum execution time: 108_278_000 picoseconds. + Weight::from_parts(161_208_126, 0) + // Standard Error: 368_644 + .saturating_add(Weight::from_parts(346_324_329, 0).saturating_mul(r.into())) } /// The range of component `p` is `[0, 2048]`. /// The range of component `s` is `[1, 2048]`. @@ -1082,32 +1080,32 @@ impl WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 42_724_116_000 picoseconds. - Weight::from_parts(42_849_968_000, 0) - // Standard Error: 263_445 - .saturating_add(Weight::from_parts(8_197_177, 0).saturating_mul(p.into())) - // Standard Error: 263_432 - .saturating_add(Weight::from_parts(180_050_572, 0).saturating_mul(s.into())) + // Minimum execution time: 44_266_209_000 picoseconds. + Weight::from_parts(44_559_345_000, 0) + // Standard Error: 270_420 + .saturating_add(Weight::from_parts(7_460_172, 0).saturating_mul(p.into())) + // Standard Error: 270_407 + .saturating_add(Weight::from_parts(179_211_260, 0).saturating_mul(s.into())) } /// The range of component `r` is `[0, 20]`. fn gr_pay_program_rent(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 86_607_000 picoseconds. - Weight::from_parts(100_957_693, 0) - // Standard Error: 29_067 - .saturating_add(Weight::from_parts(1_762_813, 0).saturating_mul(r.into())) + // Minimum execution time: 94_889_000 picoseconds. + Weight::from_parts(115_310_524, 0) + // Standard Error: 34_049 + .saturating_add(Weight::from_parts(1_916_607, 0).saturating_mul(r.into())) } /// The range of component `p` is `[0, 512]`. fn lazy_pages_signal_read(p: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `141` // Estimated: `1131 + p * (9900 ±0)` - // Minimum execution time: 87_305_000 picoseconds. - Weight::from_parts(108_825_748, 1131) - // Standard Error: 5_956 - .saturating_add(Weight::from_parts(11_809_647, 0).saturating_mul(p.into())) + // Minimum execution time: 97_825_000 picoseconds. + Weight::from_parts(251_440_245, 1131) + // Standard Error: 70_641 + .saturating_add(Weight::from_parts(15_652_952, 0).saturating_mul(p.into())) .saturating_add(T::DbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 9900).saturating_mul(p.into())) } @@ -1116,10 +1114,10 @@ impl WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `141` // Estimated: `1131 + p * (9900 ±0)` - // Minimum execution time: 87_531_000 picoseconds. - Weight::from_parts(88_749_000, 1131) - // Standard Error: 27_438 - .saturating_add(Weight::from_parts(35_435_114, 0).saturating_mul(p.into())) + // Minimum execution time: 96_761_000 picoseconds. + Weight::from_parts(100_398_000, 1131) + // Standard Error: 45_532 + .saturating_add(Weight::from_parts(39_790_625, 0).saturating_mul(p.into())) .saturating_add(T::DbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 9900).saturating_mul(p.into())) } @@ -1128,10 +1126,10 @@ impl WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `141` // Estimated: `5069931` - // Minimum execution time: 6_087_078_000 picoseconds. - Weight::from_parts(5_882_681_000, 5069931) - // Standard Error: 87_545 - .saturating_add(Weight::from_parts(37_047_042, 0).saturating_mul(p.into())) + // Minimum execution time: 7_471_807_000 picoseconds. + Weight::from_parts(7_440_591_962, 5069931) + // Standard Error: 168_373 + .saturating_add(Weight::from_parts(40_244_359, 0).saturating_mul(p.into())) .saturating_add(T::DbWeight::get().reads(2048_u64)) } /// The range of component `p` is `[0, 512]`. @@ -1139,10 +1137,10 @@ impl WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `1813 + p * (65580 ±0)` // Estimated: `1939 + p * (75482 ±0)` - // Minimum execution time: 85_432_000 picoseconds. - Weight::from_parts(87_001_000, 1939) - // Standard Error: 47_768 - .saturating_add(Weight::from_parts(47_598_234, 0).saturating_mul(p.into())) + // Minimum execution time: 97_303_000 picoseconds. + Weight::from_parts(98_185_000, 1939) + // Standard Error: 38_471 + .saturating_add(Weight::from_parts(55_016_921, 0).saturating_mul(p.into())) .saturating_add(T::DbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 75482).saturating_mul(p.into())) } @@ -1151,10 +1149,10 @@ impl WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `141` // Estimated: `1131 + p * (9900 ±0)` - // Minimum execution time: 92_594_000 picoseconds. - Weight::from_parts(93_795_036, 1131) - // Standard Error: 53_549 - .saturating_add(Weight::from_parts(35_797_869, 0).saturating_mul(p.into())) + // Minimum execution time: 102_497_000 picoseconds. + Weight::from_parts(104_932_685, 1131) + // Standard Error: 78_974 + .saturating_add(Weight::from_parts(39_257_150, 0).saturating_mul(p.into())) .saturating_add(T::DbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 9900).saturating_mul(p.into())) } @@ -1163,10 +1161,10 @@ impl WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `141` // Estimated: `1496 + p * (9883 ±2)` - // Minimum execution time: 769_397_000 picoseconds. - Weight::from_parts(792_321_925, 1496) - // Standard Error: 237_986 - .saturating_add(Weight::from_parts(48_847_504, 0).saturating_mul(p.into())) + // Minimum execution time: 612_308_000 picoseconds. + Weight::from_parts(642_079_999, 1496) + // Standard Error: 357_245 + .saturating_add(Weight::from_parts(46_518_860, 0).saturating_mul(p.into())) .saturating_add(T::DbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 9883).saturating_mul(p.into())) } @@ -1175,10 +1173,10 @@ impl WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `141` // Estimated: `317931` - // Minimum execution time: 1_113_735_000 picoseconds. - Weight::from_parts(1_148_020_828, 317931) - // Standard Error: 167_371 - .saturating_add(Weight::from_parts(47_795_831, 0).saturating_mul(p.into())) + // Minimum execution time: 1_068_248_000 picoseconds. + Weight::from_parts(1_080_741_205, 317931) + // Standard Error: 262_216 + .saturating_add(Weight::from_parts(50_047_907, 0).saturating_mul(p.into())) .saturating_add(T::DbWeight::get().reads(128_u64)) } /// The range of component `r` is `[0, 20]`. @@ -1186,885 +1184,883 @@ impl WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 4_154_000 picoseconds. - Weight::from_parts(4_280_364, 0) - // Standard Error: 8_638 - .saturating_add(Weight::from_parts(24_150_721, 0).saturating_mul(r.into())) + // Minimum execution time: 3_099_000 picoseconds. + Weight::from_parts(6_340_084, 0) + // Standard Error: 180_257 + .saturating_add(Weight::from_parts(74_666_091, 0).saturating_mul(r.into())) } /// The range of component `r` is `[50, 500]`. fn instr_i64load(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 4_339_689_000 picoseconds. - Weight::from_parts(4_202_598_633, 0) - // Standard Error: 74_721 - .saturating_add(Weight::from_parts(4_468_109, 0).saturating_mul(r.into())) + // Minimum execution time: 4_391_547_000 picoseconds. + Weight::from_parts(4_140_785_425, 0) + // Standard Error: 89_369 + .saturating_add(Weight::from_parts(5_769_622, 0).saturating_mul(r.into())) } /// The range of component `r` is `[50, 500]`. fn instr_i32load(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 4_343_068_000 picoseconds. - Weight::from_parts(4_226_706_212, 0) - // Standard Error: 60_538 - .saturating_add(Weight::from_parts(4_325_162, 0).saturating_mul(r.into())) + // Minimum execution time: 4_386_802_000 picoseconds. + Weight::from_parts(4_243_536_456, 0) + // Standard Error: 95_210 + .saturating_add(Weight::from_parts(5_278_131, 0).saturating_mul(r.into())) } /// The range of component `r` is `[50, 500]`. fn instr_i64store(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 11_409_473_000 picoseconds. - Weight::from_parts(11_882_222_938, 0) - // Standard Error: 194_167 - .saturating_add(Weight::from_parts(8_210_890, 0).saturating_mul(r.into())) + // Minimum execution time: 11_072_272_000 picoseconds. + Weight::from_parts(11_558_306_225, 0) + // Standard Error: 165_659 + .saturating_add(Weight::from_parts(9_828_260, 0).saturating_mul(r.into())) } /// The range of component `r` is `[50, 500]`. fn instr_i32store(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 10_212_512_000 picoseconds. - Weight::from_parts(10_628_957_808, 0) - // Standard Error: 170_508 - .saturating_add(Weight::from_parts(11_560_237, 0).saturating_mul(r.into())) + // Minimum execution time: 10_285_071_000 picoseconds. + Weight::from_parts(11_137_621_942, 0) + // Standard Error: 147_513 + .saturating_add(Weight::from_parts(9_014_757, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_select(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_229_000 picoseconds. - Weight::from_parts(2_319_000, 0) - // Standard Error: 9_576 - .saturating_add(Weight::from_parts(3_794_717, 0).saturating_mul(r.into())) + // Minimum execution time: 2_285_000 picoseconds. + Weight::from_parts(2_410_000, 0) + // Standard Error: 7_624 + .saturating_add(Weight::from_parts(3_864_490, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_if(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_265_000 picoseconds. - Weight::from_parts(2_353_000, 0) - // Standard Error: 5_018 - .saturating_add(Weight::from_parts(3_059_511, 0).saturating_mul(r.into())) + // Minimum execution time: 2_342_000 picoseconds. + Weight::from_parts(2_433_000, 0) + // Standard Error: 6_413 + .saturating_add(Weight::from_parts(3_120_732, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_br(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_287_000 picoseconds. - Weight::from_parts(3_531_925, 0) - // Standard Error: 1_167 - .saturating_add(Weight::from_parts(1_569_201, 0).saturating_mul(r.into())) + // Minimum execution time: 2_301_000 picoseconds. + Weight::from_parts(3_591_730, 0) + // Standard Error: 1_106 + .saturating_add(Weight::from_parts(1_565_415, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_br_if(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_294_000 picoseconds. - Weight::from_parts(2_359_000, 0) - // Standard Error: 9_672 - .saturating_add(Weight::from_parts(2_884_305, 0).saturating_mul(r.into())) + // Minimum execution time: 2_306_000 picoseconds. + Weight::from_parts(2_461_000, 0) + // Standard Error: 7_711 + .saturating_add(Weight::from_parts(2_932_880, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_br_table(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_256_000 picoseconds. - Weight::from_parts(2_344_000, 0) - // Standard Error: 8_373 - .saturating_add(Weight::from_parts(5_256_648, 0).saturating_mul(r.into())) + // Minimum execution time: 2_358_000 picoseconds. + Weight::from_parts(2_144_801, 0) + // Standard Error: 22_082 + .saturating_add(Weight::from_parts(5_266_139, 0).saturating_mul(r.into())) } /// The range of component `e` is `[1, 256]`. fn instr_br_table_per_entry(e: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 7_012_000 picoseconds. - Weight::from_parts(4_938_253, 0) - // Standard Error: 2_214 - .saturating_add(Weight::from_parts(151_870, 0).saturating_mul(e.into())) + // Minimum execution time: 6_803_000 picoseconds. + Weight::from_parts(5_374_690, 0) + // Standard Error: 1_699 + .saturating_add(Weight::from_parts(171_193, 0).saturating_mul(e.into())) } /// The range of component `r` is `[0, 50]`. fn instr_call_const(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_309_000 picoseconds. - Weight::from_parts(4_232_448, 0) - // Standard Error: 6_359 - .saturating_add(Weight::from_parts(2_596_672, 0).saturating_mul(r.into())) + // Minimum execution time: 2_431_000 picoseconds. + Weight::from_parts(4_875_813, 0) + // Standard Error: 8_258 + .saturating_add(Weight::from_parts(2_629_733, 0).saturating_mul(r.into())) } fn instr_i64const(r: u32, ) -> Weight { Weight::from_parts(0, 0) - .saturating_add(Weight::from_parts(2_596_672 - - 2_404_212, 0).saturating_mul(r.into())) + .saturating_add(Weight::from_parts(2_629_733 - + 2_421_700, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_call(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_287_000 picoseconds. - Weight::from_parts(4_432_470, 0) - // Standard Error: 11_941 - .saturating_add(Weight::from_parts(2_404_212, 0).saturating_mul(r.into())) + // Minimum execution time: 2_403_000 picoseconds. + Weight::from_parts(5_140_243, 0) + // Standard Error: 13_164 + .saturating_add(Weight::from_parts(2_421_700, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_call_indirect(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_776_000 picoseconds. - Weight::from_parts(12_954_286, 0) - // Standard Error: 30_568 - .saturating_add(Weight::from_parts(10_260_958, 0).saturating_mul(r.into())) + // Minimum execution time: 2_669_000 picoseconds. + Weight::from_parts(22_369_265, 0) + // Standard Error: 28_577 + .saturating_add(Weight::from_parts(9_740_558, 0).saturating_mul(r.into())) } /// The range of component `p` is `[0, 128]`. fn instr_call_indirect_per_param(p: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 11_935_000 picoseconds. - Weight::from_parts(1_635_475, 0) - // Standard Error: 7_669 - .saturating_add(Weight::from_parts(1_285_084, 0).saturating_mul(p.into())) + // Minimum execution time: 12_277_000 picoseconds. + Weight::from_parts(3_596_853, 0) + // Standard Error: 5_869 + .saturating_add(Weight::from_parts(1_258_605, 0).saturating_mul(p.into())) } /// The range of component `l` is `[0, 1024]`. - fn instr_call_per_local(l: u32, ) -> Weight { + fn instr_call_per_local(_l: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 5_316_000 picoseconds. - Weight::from_parts(5_699_758, 0) - // Standard Error: 13 - .saturating_add(Weight::from_parts(34, 0).saturating_mul(l.into())) + // Minimum execution time: 5_391_000 picoseconds. + Weight::from_parts(5_778_137, 0) } /// The range of component `r` is `[0, 50]`. fn instr_local_get(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_315_000 picoseconds. - Weight::from_parts(2_460_643, 0) - // Standard Error: 2_850 - .saturating_add(Weight::from_parts(235_587, 0).saturating_mul(r.into())) + // Minimum execution time: 4_835_000 picoseconds. + Weight::from_parts(6_065_483, 0) + // Standard Error: 3_006 + .saturating_add(Weight::from_parts(378_512, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_local_set(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_202_000 picoseconds. - Weight::from_parts(2_270_000, 0) - // Standard Error: 6_150 - .saturating_add(Weight::from_parts(730_523, 0).saturating_mul(r.into())) + // Minimum execution time: 4_722_000 picoseconds. + Weight::from_parts(3_902_309, 0) + // Standard Error: 5_742 + .saturating_add(Weight::from_parts(1_056_408, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_local_tee(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_244_000 picoseconds. - Weight::from_parts(2_338_000, 0) - // Standard Error: 5_205 - .saturating_add(Weight::from_parts(679_669, 0).saturating_mul(r.into())) + // Minimum execution time: 4_888_000 picoseconds. + Weight::from_parts(4_512_058, 0) + // Standard Error: 6_410 + .saturating_add(Weight::from_parts(1_001_510, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_global_get(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_412_000 picoseconds. - Weight::from_parts(2_087_064, 0) - // Standard Error: 9_824 - .saturating_add(Weight::from_parts(743_737, 0).saturating_mul(r.into())) + // Minimum execution time: 6_413_000 picoseconds. + Weight::from_parts(2_704_134, 0) + // Standard Error: 7_244 + .saturating_add(Weight::from_parts(804_200, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_global_set(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_388_000 picoseconds. - Weight::from_parts(6_512_000, 0) - // Standard Error: 7_958 - .saturating_add(Weight::from_parts(1_283_588, 0).saturating_mul(r.into())) + // Minimum execution time: 6_516_000 picoseconds. + Weight::from_parts(1_028_752, 0) + // Standard Error: 8_792 + .saturating_add(Weight::from_parts(1_494_630, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_memory_current(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_885_000 picoseconds. - Weight::from_parts(4_075_795, 0) - // Standard Error: 12_241 - .saturating_add(Weight::from_parts(6_965_908, 0).saturating_mul(r.into())) + // Minimum execution time: 5_560_000 picoseconds. + Weight::from_parts(1_126_442, 0) + // Standard Error: 14_476 + .saturating_add(Weight::from_parts(7_240_597, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64clz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_259_000 picoseconds. - Weight::from_parts(2_312_000, 0) - // Standard Error: 5_936 - .saturating_add(Weight::from_parts(3_299_707, 0).saturating_mul(r.into())) + // Minimum execution time: 2_299_000 picoseconds. + Weight::from_parts(2_449_000, 0) + // Standard Error: 7_416 + .saturating_add(Weight::from_parts(3_344_387, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32clz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_255_000 picoseconds. - Weight::from_parts(2_294_000, 0) - // Standard Error: 6_255 - .saturating_add(Weight::from_parts(2_999_382, 0).saturating_mul(r.into())) + // Minimum execution time: 2_389_000 picoseconds. + Weight::from_parts(2_551_000, 0) + // Standard Error: 5_708 + .saturating_add(Weight::from_parts(3_133_430, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64ctz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_236_000 picoseconds. - Weight::from_parts(2_271_000, 0) - // Standard Error: 6_896 - .saturating_add(Weight::from_parts(2_967_047, 0).saturating_mul(r.into())) + // Minimum execution time: 2_428_000 picoseconds. + Weight::from_parts(2_511_000, 0) + // Standard Error: 7_262 + .saturating_add(Weight::from_parts(3_192_675, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32ctz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_221_000 picoseconds. - Weight::from_parts(2_268_000, 0) - // Standard Error: 4_893 - .saturating_add(Weight::from_parts(2_579_110, 0).saturating_mul(r.into())) + // Minimum execution time: 2_333_000 picoseconds. + Weight::from_parts(2_426_000, 0) + // Standard Error: 4_554 + .saturating_add(Weight::from_parts(2_683_293, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64popcnt(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_256_000 picoseconds. - Weight::from_parts(2_304_000, 0) - // Standard Error: 3_852 - .saturating_add(Weight::from_parts(520_005, 0).saturating_mul(r.into())) + // Minimum execution time: 2_334_000 picoseconds. + Weight::from_parts(2_385_000, 0) + // Standard Error: 4_686 + .saturating_add(Weight::from_parts(631_609, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32popcnt(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_274_000 picoseconds. - Weight::from_parts(1_794_591, 0) - // Standard Error: 3_416 - .saturating_add(Weight::from_parts(359_819, 0).saturating_mul(r.into())) + // Minimum execution time: 2_356_000 picoseconds. + Weight::from_parts(1_221_890, 0) + // Standard Error: 3_960 + .saturating_add(Weight::from_parts(452_047, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64eqz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_189_000 picoseconds. - Weight::from_parts(2_287_000, 0) - // Standard Error: 10_307 - .saturating_add(Weight::from_parts(1_833_775, 0).saturating_mul(r.into())) + // Minimum execution time: 2_318_000 picoseconds. + Weight::from_parts(2_390_000, 0) + // Standard Error: 11_114 + .saturating_add(Weight::from_parts(1_916_122, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32eqz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_287_000 picoseconds. - Weight::from_parts(2_349_000, 0) - // Standard Error: 9_393 - .saturating_add(Weight::from_parts(1_178_942, 0).saturating_mul(r.into())) + // Minimum execution time: 2_436_000 picoseconds. + Weight::from_parts(2_504_000, 0) + // Standard Error: 7_104 + .saturating_add(Weight::from_parts(1_156_958, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32extend8s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_259_000 picoseconds. - Weight::from_parts(2_256_508, 0) - // Standard Error: 3_133 - .saturating_add(Weight::from_parts(326_908, 0).saturating_mul(r.into())) + // Minimum execution time: 2_276_000 picoseconds. + Weight::from_parts(1_708_596, 0) + // Standard Error: 2_843 + .saturating_add(Weight::from_parts(377_083, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32extend16s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_298_000 picoseconds. - Weight::from_parts(1_792_383, 0) - // Standard Error: 2_981 - .saturating_add(Weight::from_parts(325_072, 0).saturating_mul(r.into())) + // Minimum execution time: 2_386_000 picoseconds. + Weight::from_parts(1_424_415, 0) + // Standard Error: 3_599 + .saturating_add(Weight::from_parts(395_934, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extend8s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_218_000 picoseconds. - Weight::from_parts(236_190, 0) - // Standard Error: 5_791 - .saturating_add(Weight::from_parts(526_784, 0).saturating_mul(r.into())) + // Minimum execution time: 2_396_000 picoseconds. + Weight::from_parts(2_491_000, 0) + // Standard Error: 3_774 + .saturating_add(Weight::from_parts(516_281, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extend16s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_278_000 picoseconds. - Weight::from_parts(18_346, 0) - // Standard Error: 5_882 - .saturating_add(Weight::from_parts(538_848, 0).saturating_mul(r.into())) + // Minimum execution time: 2_308_000 picoseconds. + Weight::from_parts(548_192, 0) + // Standard Error: 4_583 + .saturating_add(Weight::from_parts(556_734, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extend32s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_213_000 picoseconds. - Weight::from_parts(2_322_000, 0) - // Standard Error: 4_502 - .saturating_add(Weight::from_parts(463_034, 0).saturating_mul(r.into())) + // Minimum execution time: 2_333_000 picoseconds. + Weight::from_parts(447_271, 0) + // Standard Error: 5_300 + .saturating_add(Weight::from_parts(535_915, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extendsi32(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_272_000 picoseconds. - Weight::from_parts(2_193_450, 0) - // Standard Error: 3_655 - .saturating_add(Weight::from_parts(304_226, 0).saturating_mul(r.into())) + // Minimum execution time: 2_340_000 picoseconds. + Weight::from_parts(1_639_695, 0) + // Standard Error: 3_519 + .saturating_add(Weight::from_parts(368_523, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extendui32(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_174_000 picoseconds. - Weight::from_parts(2_803_358, 0) - // Standard Error: 2_256 - .saturating_add(Weight::from_parts(163_489, 0).saturating_mul(r.into())) + // Minimum execution time: 2_305_000 picoseconds. + Weight::from_parts(2_843_474, 0) + // Standard Error: 1_950 + .saturating_add(Weight::from_parts(176_592, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32wrapi64(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_242_000 picoseconds. - Weight::from_parts(3_087_274, 0) - // Standard Error: 1_907 - .saturating_add(Weight::from_parts(146_988, 0).saturating_mul(r.into())) + // Minimum execution time: 2_351_000 picoseconds. + Weight::from_parts(2_894_613, 0) + // Standard Error: 2_024 + .saturating_add(Weight::from_parts(188_853, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64eq(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_268_000 picoseconds. - Weight::from_parts(2_335_000, 0) - // Standard Error: 9_220 - .saturating_add(Weight::from_parts(1_682_986, 0).saturating_mul(r.into())) + // Minimum execution time: 2_353_000 picoseconds. + Weight::from_parts(2_418_000, 0) + // Standard Error: 9_504 + .saturating_add(Weight::from_parts(1_936_605, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32eq(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_244_000 picoseconds. - Weight::from_parts(2_290_000, 0) - // Standard Error: 7_751 - .saturating_add(Weight::from_parts(1_073_438, 0).saturating_mul(r.into())) + // Minimum execution time: 2_291_000 picoseconds. + Weight::from_parts(2_364_000, 0) + // Standard Error: 8_346 + .saturating_add(Weight::from_parts(1_222_521, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64ne(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_225_000 picoseconds. - Weight::from_parts(2_297_000, 0) - // Standard Error: 9_887 - .saturating_add(Weight::from_parts(1_746_888, 0).saturating_mul(r.into())) + // Minimum execution time: 2_345_000 picoseconds. + Weight::from_parts(2_452_000, 0) + // Standard Error: 10_232 + .saturating_add(Weight::from_parts(1_883_867, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32ne(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_225_000 picoseconds. - Weight::from_parts(2_305_000, 0) - // Standard Error: 8_241 - .saturating_add(Weight::from_parts(1_123_968, 0).saturating_mul(r.into())) + // Minimum execution time: 2_323_000 picoseconds. + Weight::from_parts(2_387_000, 0) + // Standard Error: 7_581 + .saturating_add(Weight::from_parts(1_200_178, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64lts(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_325_000 picoseconds. - Weight::from_parts(2_368_000, 0) - // Standard Error: 10_199 - .saturating_add(Weight::from_parts(1_754_281, 0).saturating_mul(r.into())) + // Minimum execution time: 2_410_000 picoseconds. + Weight::from_parts(2_459_000, 0) + // Standard Error: 11_139 + .saturating_add(Weight::from_parts(1_877_766, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32lts(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_254_000 picoseconds. - Weight::from_parts(2_296_000, 0) - // Standard Error: 7_885 - .saturating_add(Weight::from_parts(1_054_096, 0).saturating_mul(r.into())) + // Minimum execution time: 2_273_000 picoseconds. + Weight::from_parts(2_387_000, 0) + // Standard Error: 8_083 + .saturating_add(Weight::from_parts(1_217_904, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64ltu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_212_000 picoseconds. - Weight::from_parts(2_244_000, 0) - // Standard Error: 11_272 - .saturating_add(Weight::from_parts(1_769_874, 0).saturating_mul(r.into())) + // Minimum execution time: 2_403_000 picoseconds. + Weight::from_parts(2_482_000, 0) + // Standard Error: 11_044 + .saturating_add(Weight::from_parts(1_956_302, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32ltu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_248_000 picoseconds. - Weight::from_parts(2_341_000, 0) - // Standard Error: 8_360 - .saturating_add(Weight::from_parts(1_115_362, 0).saturating_mul(r.into())) + // Minimum execution time: 2_353_000 picoseconds. + Weight::from_parts(2_420_000, 0) + // Standard Error: 7_870 + .saturating_add(Weight::from_parts(1_213_570, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64gts(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_243_000 picoseconds. - Weight::from_parts(2_309_000, 0) - // Standard Error: 9_424 - .saturating_add(Weight::from_parts(1_807_643, 0).saturating_mul(r.into())) + // Minimum execution time: 2_364_000 picoseconds. + Weight::from_parts(2_430_000, 0) + // Standard Error: 10_577 + .saturating_add(Weight::from_parts(1_968_043, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32gts(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_213_000 picoseconds. - Weight::from_parts(2_310_000, 0) - // Standard Error: 7_499 - .saturating_add(Weight::from_parts(1_087_178, 0).saturating_mul(r.into())) + // Minimum execution time: 2_328_000 picoseconds. + Weight::from_parts(2_442_000, 0) + // Standard Error: 7_838 + .saturating_add(Weight::from_parts(1_267_211, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64gtu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_267_000 picoseconds. - Weight::from_parts(2_342_000, 0) - // Standard Error: 11_743 - .saturating_add(Weight::from_parts(1_703_075, 0).saturating_mul(r.into())) + // Minimum execution time: 2_395_000 picoseconds. + Weight::from_parts(2_460_000, 0) + // Standard Error: 10_856 + .saturating_add(Weight::from_parts(1_910_357, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32gtu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_137_000 picoseconds. - Weight::from_parts(2_254_000, 0) - // Standard Error: 8_099 - .saturating_add(Weight::from_parts(1_080_763, 0).saturating_mul(r.into())) + // Minimum execution time: 2_343_000 picoseconds. + Weight::from_parts(2_409_000, 0) + // Standard Error: 5_786 + .saturating_add(Weight::from_parts(1_128_653, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64les(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_183_000 picoseconds. - Weight::from_parts(2_301_000, 0) - // Standard Error: 10_230 - .saturating_add(Weight::from_parts(1_738_567, 0).saturating_mul(r.into())) + // Minimum execution time: 2_318_000 picoseconds. + Weight::from_parts(2_433_000, 0) + // Standard Error: 10_344 + .saturating_add(Weight::from_parts(1_897_480, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32les(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_209_000 picoseconds. - Weight::from_parts(2_309_000, 0) - // Standard Error: 8_536 - .saturating_add(Weight::from_parts(1_161_928, 0).saturating_mul(r.into())) + // Minimum execution time: 2_355_000 picoseconds. + Weight::from_parts(2_460_000, 0) + // Standard Error: 6_963 + .saturating_add(Weight::from_parts(1_125_698, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64leu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_208_000 picoseconds. - Weight::from_parts(2_255_000, 0) - // Standard Error: 10_368 - .saturating_add(Weight::from_parts(1_847_441, 0).saturating_mul(r.into())) + // Minimum execution time: 2_356_000 picoseconds. + Weight::from_parts(2_447_000, 0) + // Standard Error: 8_285 + .saturating_add(Weight::from_parts(1_848_149, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32leu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_223_000 picoseconds. - Weight::from_parts(2_299_000, 0) - // Standard Error: 8_213 - .saturating_add(Weight::from_parts(1_112_048, 0).saturating_mul(r.into())) + // Minimum execution time: 2_327_000 picoseconds. + Weight::from_parts(2_394_000, 0) + // Standard Error: 7_282 + .saturating_add(Weight::from_parts(1_176_423, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64ges(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_221_000 picoseconds. - Weight::from_parts(2_270_000, 0) - // Standard Error: 12_684 - .saturating_add(Weight::from_parts(1_728_765, 0).saturating_mul(r.into())) + // Minimum execution time: 2_372_000 picoseconds. + Weight::from_parts(2_439_000, 0) + // Standard Error: 9_207 + .saturating_add(Weight::from_parts(1_837_009, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32ges(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_573_000 picoseconds. - Weight::from_parts(2_655_000, 0) - // Standard Error: 7_404 - .saturating_add(Weight::from_parts(1_080_080, 0).saturating_mul(r.into())) + // Minimum execution time: 2_368_000 picoseconds. + Weight::from_parts(2_427_000, 0) + // Standard Error: 8_320 + .saturating_add(Weight::from_parts(1_231_088, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64geu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_259_000 picoseconds. - Weight::from_parts(2_316_000, 0) - // Standard Error: 9_739 - .saturating_add(Weight::from_parts(1_807_913, 0).saturating_mul(r.into())) + // Minimum execution time: 2_373_000 picoseconds. + Weight::from_parts(2_461_000, 0) + // Standard Error: 9_499 + .saturating_add(Weight::from_parts(1_922_588, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32geu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_198_000 picoseconds. - Weight::from_parts(2_296_000, 0) - // Standard Error: 7_265 - .saturating_add(Weight::from_parts(1_087_210, 0).saturating_mul(r.into())) + // Minimum execution time: 2_387_000 picoseconds. + Weight::from_parts(2_455_000, 0) + // Standard Error: 7_681 + .saturating_add(Weight::from_parts(1_198_894, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64add(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_252_000 picoseconds. - Weight::from_parts(2_311_000, 0) - // Standard Error: 7_444 - .saturating_add(Weight::from_parts(1_191_685, 0).saturating_mul(r.into())) + // Minimum execution time: 2_308_000 picoseconds. + Weight::from_parts(2_389_000, 0) + // Standard Error: 7_797 + .saturating_add(Weight::from_parts(1_286_566, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32add(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_263_000 picoseconds. - Weight::from_parts(2_320_000, 0) - // Standard Error: 5_023 - .saturating_add(Weight::from_parts(585_667, 0).saturating_mul(r.into())) + // Minimum execution time: 2_329_000 picoseconds. + Weight::from_parts(2_389_000, 0) + // Standard Error: 4_968 + .saturating_add(Weight::from_parts(645_254, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64sub(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_213_000 picoseconds. - Weight::from_parts(2_320_000, 0) - // Standard Error: 10_018 - .saturating_add(Weight::from_parts(1_297_791, 0).saturating_mul(r.into())) + // Minimum execution time: 2_409_000 picoseconds. + Weight::from_parts(2_489_000, 0) + // Standard Error: 7_055 + .saturating_add(Weight::from_parts(1_232_084, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32sub(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_291_000 picoseconds. - Weight::from_parts(2_312_000, 0) - // Standard Error: 4_776 - .saturating_add(Weight::from_parts(612_864, 0).saturating_mul(r.into())) + // Minimum execution time: 2_371_000 picoseconds. + Weight::from_parts(2_420_000, 0) + // Standard Error: 4_348 + .saturating_add(Weight::from_parts(633_810, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64mul(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_286_000 picoseconds. - Weight::from_parts(2_356_000, 0) - // Standard Error: 11_619 - .saturating_add(Weight::from_parts(1_743_809, 0).saturating_mul(r.into())) + // Minimum execution time: 2_336_000 picoseconds. + Weight::from_parts(2_413_000, 0) + // Standard Error: 8_202 + .saturating_add(Weight::from_parts(1_777_425, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32mul(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_302_000 picoseconds. - Weight::from_parts(2_343_000, 0) - // Standard Error: 8_638 - .saturating_add(Weight::from_parts(1_136_060, 0).saturating_mul(r.into())) + // Minimum execution time: 2_314_000 picoseconds. + Weight::from_parts(2_369_000, 0) + // Standard Error: 6_935 + .saturating_add(Weight::from_parts(1_201_570, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64divs(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_236_000 picoseconds. - Weight::from_parts(2_309_000, 0) - // Standard Error: 7_114 - .saturating_add(Weight::from_parts(2_599_346, 0).saturating_mul(r.into())) + // Minimum execution time: 2_276_000 picoseconds. + Weight::from_parts(6_846_840, 0) + // Standard Error: 17_822 + .saturating_add(Weight::from_parts(2_268_370, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32divs(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_200_000 picoseconds. - Weight::from_parts(3_823_403, 0) - // Standard Error: 18_912 - .saturating_add(Weight::from_parts(2_161_963, 0).saturating_mul(r.into())) + // Minimum execution time: 2_394_000 picoseconds. + Weight::from_parts(4_704_336, 0) + // Standard Error: 10_960 + .saturating_add(Weight::from_parts(2_182_711, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64divu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_199_000 picoseconds. - Weight::from_parts(2_817_173, 0) - // Standard Error: 17_341 - .saturating_add(Weight::from_parts(2_740_748, 0).saturating_mul(r.into())) + // Minimum execution time: 2_375_000 picoseconds. + Weight::from_parts(1_968_824, 0) + // Standard Error: 15_899 + .saturating_add(Weight::from_parts(2_762_269, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32divu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_294_000 picoseconds. - Weight::from_parts(88_235, 0) - // Standard Error: 10_326 - .saturating_add(Weight::from_parts(2_481_087, 0).saturating_mul(r.into())) + // Minimum execution time: 2_335_000 picoseconds. + Weight::from_parts(1_450_000, 0) + // Standard Error: 13_496 + .saturating_add(Weight::from_parts(2_401_407, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64rems(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_232_000 picoseconds. - Weight::from_parts(2_294_000, 0) - // Standard Error: 14_480 - .saturating_add(Weight::from_parts(9_604_981, 0).saturating_mul(r.into())) + // Minimum execution time: 2_448_000 picoseconds. + Weight::from_parts(2_513_000, 0) + // Standard Error: 19_401 + .saturating_add(Weight::from_parts(9_309_211, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32rems(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_213_000 picoseconds. - Weight::from_parts(2_260_000, 0) - // Standard Error: 21_926 - .saturating_add(Weight::from_parts(7_501_289, 0).saturating_mul(r.into())) + // Minimum execution time: 2_273_000 picoseconds. + Weight::from_parts(1_738_370, 0) + // Standard Error: 42_672 + .saturating_add(Weight::from_parts(7_512_557, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64remu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_309_000 picoseconds. - Weight::from_parts(10_308_173, 0) - // Standard Error: 30_680 - .saturating_add(Weight::from_parts(2_288_505, 0).saturating_mul(r.into())) + // Minimum execution time: 2_371_000 picoseconds. + Weight::from_parts(2_215_088, 0) + // Standard Error: 15_445 + .saturating_add(Weight::from_parts(2_956_278, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32remu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_211_000 picoseconds. - Weight::from_parts(2_290_000, 0) - // Standard Error: 5_007 - .saturating_add(Weight::from_parts(2_516_076, 0).saturating_mul(r.into())) + // Minimum execution time: 2_409_000 picoseconds. + Weight::from_parts(217_500, 0) + // Standard Error: 7_904 + .saturating_add(Weight::from_parts(2_576_151, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64and(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_228_000 picoseconds. - Weight::from_parts(2_300_000, 0) - // Standard Error: 8_948 - .saturating_add(Weight::from_parts(1_264_596, 0).saturating_mul(r.into())) + // Minimum execution time: 2_456_000 picoseconds. + Weight::from_parts(2_503_000, 0) + // Standard Error: 7_920 + .saturating_add(Weight::from_parts(1_321_543, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32and(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_213_000 picoseconds. - Weight::from_parts(2_323_000, 0) - // Standard Error: 5_099 - .saturating_add(Weight::from_parts(612_107, 0).saturating_mul(r.into())) + // Minimum execution time: 2_346_000 picoseconds. + Weight::from_parts(2_479_000, 0) + // Standard Error: 4_711 + .saturating_add(Weight::from_parts(689_892, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64or(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_282_000 picoseconds. - Weight::from_parts(2_326_000, 0) - // Standard Error: 10_004 - .saturating_add(Weight::from_parts(1_278_365, 0).saturating_mul(r.into())) + // Minimum execution time: 2_339_000 picoseconds. + Weight::from_parts(2_427_000, 0) + // Standard Error: 8_029 + .saturating_add(Weight::from_parts(1_256_838, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32or(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_258_000 picoseconds. - Weight::from_parts(2_341_000, 0) - // Standard Error: 5_578 - .saturating_add(Weight::from_parts(645_196, 0).saturating_mul(r.into())) + // Minimum execution time: 2_334_000 picoseconds. + Weight::from_parts(2_480_000, 0) + // Standard Error: 3_812 + .saturating_add(Weight::from_parts(607_420, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64xor(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_338_000 picoseconds. - Weight::from_parts(2_363_000, 0) - // Standard Error: 8_554 - .saturating_add(Weight::from_parts(1_288_676, 0).saturating_mul(r.into())) + // Minimum execution time: 2_328_000 picoseconds. + Weight::from_parts(2_392_000, 0) + // Standard Error: 7_362 + .saturating_add(Weight::from_parts(1_248_739, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32xor(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_214_000 picoseconds. - Weight::from_parts(2_332_000, 0) - // Standard Error: 3_999 - .saturating_add(Weight::from_parts(594_484, 0).saturating_mul(r.into())) + // Minimum execution time: 2_419_000 picoseconds. + Weight::from_parts(2_465_000, 0) + // Standard Error: 4_304 + .saturating_add(Weight::from_parts(604_813, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64shl(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_198_000 picoseconds. - Weight::from_parts(2_258_000, 0) - // Standard Error: 7_437 - .saturating_add(Weight::from_parts(1_044_306, 0).saturating_mul(r.into())) + // Minimum execution time: 2_298_000 picoseconds. + Weight::from_parts(2_433_000, 0) + // Standard Error: 8_043 + .saturating_add(Weight::from_parts(1_073_194, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32shl(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_226_000 picoseconds. - Weight::from_parts(2_308_000, 0) - // Standard Error: 4_658 - .saturating_add(Weight::from_parts(537_262, 0).saturating_mul(r.into())) + // Minimum execution time: 2_427_000 picoseconds. + Weight::from_parts(2_511_000, 0) + // Standard Error: 4_969 + .saturating_add(Weight::from_parts(594_802, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64shrs(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_231_000 picoseconds. - Weight::from_parts(2_296_000, 0) - // Standard Error: 10_254 - .saturating_add(Weight::from_parts(1_154_138, 0).saturating_mul(r.into())) + // Minimum execution time: 2_312_000 picoseconds. + Weight::from_parts(2_399_000, 0) + // Standard Error: 7_093 + .saturating_add(Weight::from_parts(1_110_114, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32shrs(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_234_000 picoseconds. - Weight::from_parts(2_313_000, 0) - // Standard Error: 4_960 - .saturating_add(Weight::from_parts(607_930, 0).saturating_mul(r.into())) + // Minimum execution time: 2_331_000 picoseconds. + Weight::from_parts(2_433_000, 0) + // Standard Error: 4_140 + .saturating_add(Weight::from_parts(600_354, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64shru(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_279_000 picoseconds. - Weight::from_parts(2_342_000, 0) - // Standard Error: 7_909 - .saturating_add(Weight::from_parts(1_094_660, 0).saturating_mul(r.into())) + // Minimum execution time: 2_300_000 picoseconds. + Weight::from_parts(2_419_000, 0) + // Standard Error: 7_150 + .saturating_add(Weight::from_parts(1_154_649, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32shru(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_232_000 picoseconds. - Weight::from_parts(39_069, 0) - // Standard Error: 6_710 - .saturating_add(Weight::from_parts(599_572, 0).saturating_mul(r.into())) + // Minimum execution time: 2_356_000 picoseconds. + Weight::from_parts(2_423_000, 0) + // Standard Error: 5_067 + .saturating_add(Weight::from_parts(594_487, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64rotl(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_254_000 picoseconds. - Weight::from_parts(2_309_000, 0) - // Standard Error: 8_785 - .saturating_add(Weight::from_parts(1_060_321, 0).saturating_mul(r.into())) + // Minimum execution time: 2_339_000 picoseconds. + Weight::from_parts(2_406_000, 0) + // Standard Error: 5_674 + .saturating_add(Weight::from_parts(1_051_819, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32rotl(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_257_000 picoseconds. - Weight::from_parts(2_310_000, 0) - // Standard Error: 4_191 - .saturating_add(Weight::from_parts(528_319, 0).saturating_mul(r.into())) + // Minimum execution time: 2_383_000 picoseconds. + Weight::from_parts(114_723, 0) + // Standard Error: 5_881 + .saturating_add(Weight::from_parts(646_798, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64rotr(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_256_000 picoseconds. - Weight::from_parts(2_310_000, 0) - // Standard Error: 9_328 - .saturating_add(Weight::from_parts(1_114_164, 0).saturating_mul(r.into())) + // Minimum execution time: 2_292_000 picoseconds. + Weight::from_parts(2_422_000, 0) + // Standard Error: 6_697 + .saturating_add(Weight::from_parts(1_053_580, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32rotr(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_210_000 picoseconds. - Weight::from_parts(390_951, 0) - // Standard Error: 5_316 - .saturating_add(Weight::from_parts(609_568, 0).saturating_mul(r.into())) + // Minimum execution time: 2_325_000 picoseconds. + Weight::from_parts(206_699, 0) + // Standard Error: 5_851 + .saturating_add(Weight::from_parts(639_333, 0).saturating_mul(r.into())) } } @@ -2089,21 +2085,21 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 951_000 picoseconds. - Weight::from_parts(1_020_000, 0) - // Standard Error: 722 - .saturating_add(Weight::from_parts(240_031, 0).saturating_mul(c.into())) + // Minimum execution time: 1_023_000 picoseconds. + Weight::from_parts(1_051_000, 0) + // Standard Error: 912 + .saturating_add(Weight::from_parts(213_761, 0).saturating_mul(c.into())) .saturating_add(RocksDbWeight::get().writes(1_u64)) } /// The range of component `c` is `[0, 512]`. fn db_read_per_kb(c: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `42 + c * (1024 ±0)` - // Estimated: `3506 + c * (1024 ±0)` - // Minimum execution time: 2_762_000 picoseconds. - Weight::from_parts(2_859_000, 3506) - // Standard Error: 813 - .saturating_add(Weight::from_parts(665_139, 0).saturating_mul(c.into())) + // Measured: `146 + c * (1024 ±0)` + // Estimated: `3610 + c * (1024 ±0)` + // Minimum execution time: 3_252_000 picoseconds. + Weight::from_parts(3_416_000, 3610) + // Standard Error: 1_261 + .saturating_add(Weight::from_parts(689_572, 0).saturating_mul(c.into())) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(Weight::from_parts(0, 1024).saturating_mul(c.into())) } @@ -2112,35 +2108,35 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 50_591_000 picoseconds. - Weight::from_parts(61_353_023, 0) - // Standard Error: 9_186 - .saturating_add(Weight::from_parts(2_404_810, 0).saturating_mul(c.into())) + // Minimum execution time: 59_805_000 picoseconds. + Weight::from_parts(86_729_126, 0) + // Standard Error: 7_023 + .saturating_add(Weight::from_parts(2_475_519, 0).saturating_mul(c.into())) } fn claim_value() -> Weight { // Proof Size summary in bytes: - // Measured: `979` - // Estimated: `42236` - // Minimum execution time: 81_660_000 picoseconds. - Weight::from_parts(83_840_000, 42236) - .saturating_add(RocksDbWeight::get().reads(13_u64)) - .saturating_add(RocksDbWeight::get().writes(10_u64)) + // Measured: `1372` + // Estimated: `51905` + // Minimum execution time: 107_694_000 picoseconds. + Weight::from_parts(110_328_000, 51905) + .saturating_add(RocksDbWeight::get().reads(15_u64)) + .saturating_add(RocksDbWeight::get().writes(12_u64)) } fn pay_program_rent() -> Weight { // Proof Size summary in bytes: - // Measured: `886` - // Estimated: `21261` - // Minimum execution time: 54_005_000 picoseconds. - Weight::from_parts(55_095_000, 21261) + // Measured: `992` + // Estimated: `21579` + // Minimum execution time: 55_980_000 picoseconds. + Weight::from_parts(56_766_000, 21579) .saturating_add(RocksDbWeight::get().reads(7_u64)) .saturating_add(RocksDbWeight::get().writes(6_u64)) } fn resume_session_init() -> Weight { // Proof Size summary in bytes: - // Measured: `534` - // Estimated: `17070` - // Minimum execution time: 28_880_000 picoseconds. - Weight::from_parts(29_583_000, 17070) + // Measured: `638` + // Estimated: `17486` + // Minimum execution time: 29_973_000 picoseconds. + Weight::from_parts(31_008_000, 17486) .saturating_add(RocksDbWeight::get().reads(6_u64)) .saturating_add(RocksDbWeight::get().writes(4_u64)) } @@ -2149,22 +2145,22 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `355` // Estimated: `7640` - // Minimum execution time: 7_744_000 picoseconds. - Weight::from_parts(4_233_092, 7640) - // Standard Error: 39_690 - .saturating_add(Weight::from_parts(14_033_179, 0).saturating_mul(c.into())) + // Minimum execution time: 8_054_000 picoseconds. + Weight::from_parts(8_342_000, 7640) + // Standard Error: 17_771 + .saturating_add(Weight::from_parts(13_335_661, 0).saturating_mul(c.into())) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(2_u64)) } /// The range of component `c` is `[0, 2044]`. fn resume_session_commit(c: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1297 + c * (16389 ±0)` - // Estimated: `40898 + c * (131112 ±0)` - // Minimum execution time: 70_301_000 picoseconds. - Weight::from_parts(70_991_000, 40898) - // Standard Error: 177_223 - .saturating_add(Weight::from_parts(54_687_249, 0).saturating_mul(c.into())) + // Measured: `1593 + c * (16389 ±0)` + // Estimated: `43266 + c * (131112 ±0)` + // Minimum execution time: 72_178_000 picoseconds. + Weight::from_parts(73_341_000, 43266) + // Standard Error: 167_723 + .saturating_add(Weight::from_parts(54_442_045, 0).saturating_mul(c.into())) .saturating_add(RocksDbWeight::get().reads(11_u64)) .saturating_add(RocksDbWeight::get().writes(9_u64)) .saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(c.into()))) @@ -2173,97 +2169,97 @@ impl WeightInfo for () { /// The range of component `c` is `[0, 250]`. fn upload_code(c: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `10` - // Estimated: `4990` - // Minimum execution time: 61_715_000 picoseconds. - Weight::from_parts(40_384_385, 4990) - // Standard Error: 57_496 - .saturating_add(Weight::from_parts(53_210_788, 0).saturating_mul(c.into())) + // Measured: `113` + // Estimated: `5402` + // Minimum execution time: 78_662_000 picoseconds. + Weight::from_parts(42_066_175, 5402) + // Standard Error: 52_075 + .saturating_add(Weight::from_parts(60_249_549, 0).saturating_mul(c.into())) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(4_u64)) } /// The range of component `s` is `[0, 4194304]`. fn create_program(s: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `671` - // Estimated: `38638` - // Minimum execution time: 63_077_000 picoseconds. - Weight::from_parts(96_840_506, 38638) - // Standard Error: 0 - .saturating_add(Weight::from_parts(2_609, 0).saturating_mul(s.into())) - .saturating_add(RocksDbWeight::get().reads(13_u64)) - .saturating_add(RocksDbWeight::get().writes(10_u64)) + // Measured: `1111` + // Estimated: `50600` + // Minimum execution time: 94_321_000 picoseconds. + Weight::from_parts(129_113_540, 50600) + // Standard Error: 1 + .saturating_add(Weight::from_parts(2_625, 0).saturating_mul(s.into())) + .saturating_add(RocksDbWeight::get().reads(15_u64)) + .saturating_add(RocksDbWeight::get().writes(12_u64)) } /// The range of component `c` is `[0, 250]`. /// The range of component `s` is `[0, 4194304]`. fn upload_program(c: u32, s: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `235` - // Estimated: `34312` - // Minimum execution time: 11_049_858_000 picoseconds. - Weight::from_parts(11_090_406_000, 34312) - // Standard Error: 517_330 - .saturating_add(Weight::from_parts(25_497_137, 0).saturating_mul(c.into())) - // Standard Error: 30 - .saturating_add(Weight::from_parts(910, 0).saturating_mul(s.into())) - .saturating_add(RocksDbWeight::get().reads(13_u64)) - .saturating_add(RocksDbWeight::get().writes(14_u64)) + // Measured: `521` + // Estimated: `45152` + // Minimum execution time: 11_148_491_000 picoseconds. + Weight::from_parts(21_065_971, 45152) + // Standard Error: 173_883 + .saturating_add(Weight::from_parts(60_839_567, 0).saturating_mul(c.into())) + // Standard Error: 10 + .saturating_add(Weight::from_parts(2_652, 0).saturating_mul(s.into())) + .saturating_add(RocksDbWeight::get().reads(15_u64)) + .saturating_add(RocksDbWeight::get().writes(16_u64)) } /// The range of component `p` is `[0, 2097152]`. fn send_message(p: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `348` - // Estimated: `23853` - // Minimum execution time: 56_305_000 picoseconds. - Weight::from_parts(38_705_997, 23853) + // Measured: `531` + // Estimated: `31266` + // Minimum execution time: 73_302_000 picoseconds. + Weight::from_parts(47_279_667, 31266) // Standard Error: 1 - .saturating_add(Weight::from_parts(1_034, 0).saturating_mul(p.into())) - .saturating_add(RocksDbWeight::get().reads(9_u64)) - .saturating_add(RocksDbWeight::get().writes(8_u64)) + .saturating_add(Weight::from_parts(1_055, 0).saturating_mul(p.into())) + .saturating_add(RocksDbWeight::get().reads(11_u64)) + .saturating_add(RocksDbWeight::get().writes(10_u64)) } /// The range of component `p` is `[0, 2097152]`. fn send_reply(p: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `978` - // Estimated: `42227` - // Minimum execution time: 83_033_000 picoseconds. - Weight::from_parts(69_135_468, 42227) - // Standard Error: 1 - .saturating_add(Weight::from_parts(1_035, 0).saturating_mul(p.into())) - .saturating_add(RocksDbWeight::get().reads(13_u64)) - .saturating_add(RocksDbWeight::get().writes(10_u64)) + // Measured: `1371` + // Estimated: `54435` + // Minimum execution time: 124_173_000 picoseconds. + Weight::from_parts(96_458_887, 54435) + // Standard Error: 2 + .saturating_add(Weight::from_parts(1_078, 0).saturating_mul(p.into())) + .saturating_add(RocksDbWeight::get().reads(16_u64)) + .saturating_add(RocksDbWeight::get().writes(13_u64)) } /// The range of component `q` is `[1, 512]`. - fn initial_allocation(q: u32, ) -> Weight { + fn initial_allocation(_q: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `760` - // Estimated: `74319` - // Minimum execution time: 295_535_000 picoseconds. - Weight::from_parts(306_791_413, 74319) - // Standard Error: 1_111 - .saturating_add(Weight::from_parts(1_568, 0).saturating_mul(q.into())) - .saturating_add(RocksDbWeight::get().reads(27_u64)) - .saturating_add(RocksDbWeight::get().writes(22_u64)) + // Measured: `1893` + // Estimated: `114612` + // Minimum execution time: 365_983_000 picoseconds. + Weight::from_parts(387_416_952, 114612) + .saturating_add(RocksDbWeight::get().reads(33_u64)) + .saturating_add(RocksDbWeight::get().writes(26_u64)) } /// The range of component `q` is `[0, 512]`. - fn alloc_in_handle(_q: u32, ) -> Weight { + fn alloc_in_handle(q: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `760` - // Estimated: `74319` - // Minimum execution time: 309_253_000 picoseconds. - Weight::from_parts(323_694_389, 74319) - .saturating_add(RocksDbWeight::get().reads(27_u64)) - .saturating_add(RocksDbWeight::get().writes(22_u64)) + // Measured: `1893` + // Estimated: `114612` + // Minimum execution time: 380_430_000 picoseconds. + Weight::from_parts(403_376_118, 114612) + // Standard Error: 2_451 + .saturating_add(Weight::from_parts(1_137, 0).saturating_mul(q.into())) + .saturating_add(RocksDbWeight::get().reads(33_u64)) + .saturating_add(RocksDbWeight::get().writes(26_u64)) } /// The range of component `c` is `[0, 512]`. fn reinstrument_per_kb(c: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `211 + c * (1075 ±0)` // Estimated: `3899 + c * (2150 ±0)` - // Minimum execution time: 44_806_000 picoseconds. - Weight::from_parts(45_498_000, 3899) - // Standard Error: 44_467 - .saturating_add(Weight::from_parts(54_603_581, 0).saturating_mul(c.into())) + // Minimum execution time: 58_080_000 picoseconds. + Weight::from_parts(58_601_000, 3899) + // Standard Error: 36_083 + .saturating_add(Weight::from_parts(58_395_643, 0).saturating_mul(c.into())) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(2_u64)) .saturating_add(Weight::from_parts(0, 2150).saturating_mul(c.into())) @@ -2273,630 +2269,628 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 82_307_000 picoseconds. - Weight::from_parts(84_226_000, 0) - // Standard Error: 4_203_577 - .saturating_add(Weight::from_parts(574_493_471, 0).saturating_mul(r.into())) + // Minimum execution time: 91_412_000 picoseconds. + Weight::from_parts(94_168_000, 0) + // Standard Error: 3_806_298 + .saturating_add(Weight::from_parts(673_774_453, 0).saturating_mul(r.into())) } /// The range of component `p` is `[1, 512]`. fn alloc_per_page(p: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 309_893_000 picoseconds. - Weight::from_parts(234_558_588, 0) - // Standard Error: 7_966 - .saturating_add(Weight::from_parts(32_022_587, 0).saturating_mul(p.into())) + // Minimum execution time: 452_549_000 picoseconds. + Weight::from_parts(398_963_700, 0) + // Standard Error: 7_042 + .saturating_add(Weight::from_parts(29_406_609, 0).saturating_mul(p.into())) } /// The range of component `r` is `[0, 20]`. fn free(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 142_319_000 picoseconds. - Weight::from_parts(121_865_521, 0) - // Standard Error: 314_080 - .saturating_add(Weight::from_parts(64_422_856, 0).saturating_mul(r.into())) + // Minimum execution time: 207_052_000 picoseconds. + Weight::from_parts(209_606_478, 0) + // Standard Error: 255_281 + .saturating_add(Weight::from_parts(62_959_531, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 256]`. fn gr_reserve_gas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 85_527_000 picoseconds. - Weight::from_parts(91_967_528, 0) - // Standard Error: 3_856 - .saturating_add(Weight::from_parts(2_363_669, 0).saturating_mul(r.into())) + // Minimum execution time: 97_729_000 picoseconds. + Weight::from_parts(105_964_750, 0) + // Standard Error: 4_847 + .saturating_add(Weight::from_parts(2_433_966, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 256]`. fn gr_unreserve_gas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 144_133_000 picoseconds. - Weight::from_parts(156_991_945, 0) - // Standard Error: 24_223 - .saturating_add(Weight::from_parts(2_431_525, 0).saturating_mul(r.into())) + // Minimum execution time: 175_010_000 picoseconds. + Weight::from_parts(229_153_209, 0) + // Standard Error: 17_116 + .saturating_add(Weight::from_parts(1_991_260, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_system_reserve_gas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 86_811_000 picoseconds. - Weight::from_parts(101_122_470, 0) - // Standard Error: 303_533 - .saturating_add(Weight::from_parts(92_415_204, 0).saturating_mul(r.into())) + // Minimum execution time: 94_696_000 picoseconds. + Weight::from_parts(119_674_535, 0) + // Standard Error: 387_178 + .saturating_add(Weight::from_parts(98_102_856, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_message_id(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_453_000 picoseconds. - Weight::from_parts(79_049_804, 0) - // Standard Error: 305_992 - .saturating_add(Weight::from_parts(79_382_630, 0).saturating_mul(r.into())) + // Minimum execution time: 95_794_000 picoseconds. + Weight::from_parts(89_931_979, 0) + // Standard Error: 371_349 + .saturating_add(Weight::from_parts(86_524_059, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_program_id(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 82_650_000 picoseconds. - Weight::from_parts(79_085_060, 0) - // Standard Error: 293_080 - .saturating_add(Weight::from_parts(77_346_019, 0).saturating_mul(r.into())) + // Minimum execution time: 97_924_000 picoseconds. + Weight::from_parts(84_041_201, 0) + // Standard Error: 327_841 + .saturating_add(Weight::from_parts(95_483_315, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_source(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_545_000 picoseconds. - Weight::from_parts(72_777_984, 0) - // Standard Error: 351_302 - .saturating_add(Weight::from_parts(80_634_984, 0).saturating_mul(r.into())) + // Minimum execution time: 97_122_000 picoseconds. + Weight::from_parts(86_789_268, 0) + // Standard Error: 353_259 + .saturating_add(Weight::from_parts(85_698_317, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_value(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_245_000 picoseconds. - Weight::from_parts(76_181_868, 0) - // Standard Error: 354_266 - .saturating_add(Weight::from_parts(79_459_120, 0).saturating_mul(r.into())) + // Minimum execution time: 94_821_000 picoseconds. + Weight::from_parts(92_694_130, 0) + // Standard Error: 340_146 + .saturating_add(Weight::from_parts(84_623_945, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_value_available(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 85_064_000 picoseconds. - Weight::from_parts(77_882_516, 0) - // Standard Error: 377_997 - .saturating_add(Weight::from_parts(78_533_852, 0).saturating_mul(r.into())) + // Minimum execution time: 93_840_000 picoseconds. + Weight::from_parts(87_888_572, 0) + // Standard Error: 369_465 + .saturating_add(Weight::from_parts(85_638_902, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_gas_available(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_522_000 picoseconds. - Weight::from_parts(66_328_137, 0) - // Standard Error: 360_143 - .saturating_add(Weight::from_parts(79_838_604, 0).saturating_mul(r.into())) + // Minimum execution time: 98_597_000 picoseconds. + Weight::from_parts(86_642_386, 0) + // Standard Error: 362_257 + .saturating_add(Weight::from_parts(85_598_887, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_size(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_961_000 picoseconds. - Weight::from_parts(72_789_065, 0) - // Standard Error: 366_577 - .saturating_add(Weight::from_parts(79_031_060, 0).saturating_mul(r.into())) + // Minimum execution time: 94_546_000 picoseconds. + Weight::from_parts(91_466_289, 0) + // Standard Error: 344_423 + .saturating_add(Weight::from_parts(84_318_848, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_read(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 700_686_000 picoseconds. - Weight::from_parts(749_297_529, 0) - // Standard Error: 383_897 - .saturating_add(Weight::from_parts(132_242_102, 0).saturating_mul(r.into())) + // Minimum execution time: 578_036_000 picoseconds. + Weight::from_parts(696_140_951, 0) + // Standard Error: 559_498 + .saturating_add(Weight::from_parts(149_397_501, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_read_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 830_957_000 picoseconds. - Weight::from_parts(850_017_000, 0) - // Standard Error: 67_693 - .saturating_add(Weight::from_parts(13_570_326, 0).saturating_mul(n.into())) + // Minimum execution time: 723_788_000 picoseconds. + Weight::from_parts(740_225_000, 0) + // Standard Error: 52_895 + .saturating_add(Weight::from_parts(13_188_120, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_block_height(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_261_000 picoseconds. - Weight::from_parts(70_573_139, 0) - // Standard Error: 351_239 - .saturating_add(Weight::from_parts(80_441_776, 0).saturating_mul(r.into())) + // Minimum execution time: 99_012_000 picoseconds. + Weight::from_parts(88_269_135, 0) + // Standard Error: 296_136 + .saturating_add(Weight::from_parts(92_296_104, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_block_timestamp(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_164_000 picoseconds. - Weight::from_parts(70_866_987, 0) - // Standard Error: 346_107 - .saturating_add(Weight::from_parts(82_471_591, 0).saturating_mul(r.into())) + // Minimum execution time: 93_803_000 picoseconds. + Weight::from_parts(87_097_769, 0) + // Standard Error: 367_325 + .saturating_add(Weight::from_parts(84_987_043, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 20]`. fn gr_random(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 81_192_000 picoseconds. - Weight::from_parts(101_814_078, 0) - // Standard Error: 391_508 - .saturating_add(Weight::from_parts(166_873_282, 0).saturating_mul(n.into())) + // Minimum execution time: 96_663_000 picoseconds. + Weight::from_parts(105_357_427, 0) + // Standard Error: 366_135 + .saturating_add(Weight::from_parts(172_109_201, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_deposit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_974_000 picoseconds. - Weight::from_parts(87_244_000, 0) - // Standard Error: 3_619_557 - .saturating_add(Weight::from_parts(749_950_767, 0).saturating_mul(r.into())) + // Minimum execution time: 99_210_000 picoseconds. + Weight::from_parts(102_217_000, 0) + // Standard Error: 4_527_119 + .saturating_add(Weight::from_parts(845_784_967, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 81_612_000 picoseconds. - Weight::from_parts(147_822_399, 0) - // Standard Error: 421_408 - .saturating_add(Weight::from_parts(250_730_230, 0).saturating_mul(r.into())) + // Minimum execution time: 96_579_000 picoseconds. + Weight::from_parts(162_452_429, 0) + // Standard Error: 416_836 + .saturating_add(Weight::from_parts(257_900_517, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_send_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 332_130_000 picoseconds. - Weight::from_parts(337_780_000, 0) - // Standard Error: 52_652 - .saturating_add(Weight::from_parts(20_743_155, 0).saturating_mul(n.into())) + // Minimum execution time: 353_526_000 picoseconds. + Weight::from_parts(358_025_000, 0) + // Standard Error: 61_984 + .saturating_add(Weight::from_parts(21_521_461, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 82_722_000 picoseconds. - Weight::from_parts(147_881_270, 0) - // Standard Error: 390_429 - .saturating_add(Weight::from_parts(259_701_373, 0).saturating_mul(r.into())) + // Minimum execution time: 94_822_000 picoseconds. + Weight::from_parts(168_431_611, 0) + // Standard Error: 378_696 + .saturating_add(Weight::from_parts(263_135_958, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_send_wgas_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 337_753_000 picoseconds. - Weight::from_parts(343_454_000, 0) - // Standard Error: 66_604 - .saturating_add(Weight::from_parts(21_189_034, 0).saturating_mul(n.into())) + // Minimum execution time: 351_828_000 picoseconds. + Weight::from_parts(355_382_000, 0) + // Standard Error: 60_589 + .saturating_add(Weight::from_parts(21_325_400, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_input(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 708_454_000 picoseconds. - Weight::from_parts(775_673_824, 0) - // Standard Error: 380_634 - .saturating_add(Weight::from_parts(268_253_890, 0).saturating_mul(r.into())) + // Minimum execution time: 569_384_000 picoseconds. + Weight::from_parts(638_474_730, 0) + // Standard Error: 425_903 + .saturating_add(Weight::from_parts(275_691_711, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_input_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 706_799_000 picoseconds. - Weight::from_parts(782_052_003, 0) - // Standard Error: 385_065 - .saturating_add(Weight::from_parts(265_280_556, 0).saturating_mul(r.into())) + // Minimum execution time: 573_053_000 picoseconds. + Weight::from_parts(640_078_802, 0) + // Standard Error: 475_389 + .saturating_add(Weight::from_parts(284_337_155, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_init(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_511_000 picoseconds. - Weight::from_parts(61_459_678, 0) - // Standard Error: 362_497 - .saturating_add(Weight::from_parts(87_903_947, 0).saturating_mul(r.into())) + // Minimum execution time: 98_223_000 picoseconds. + Weight::from_parts(85_732_985, 0) + // Standard Error: 336_308 + .saturating_add(Weight::from_parts(92_936_006, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_push(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_676_718_000 picoseconds. - Weight::from_parts(1_838_206_733, 0) - // Standard Error: 440_793 - .saturating_add(Weight::from_parts(156_352_100, 0).saturating_mul(r.into())) + // Minimum execution time: 1_822_621_000 picoseconds. + Weight::from_parts(1_951_955_018, 0) + // Standard Error: 339_415 + .saturating_add(Weight::from_parts(157_557_756, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_send_push_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 284_222_000 picoseconds. - Weight::from_parts(293_316_000, 0) - // Standard Error: 54_796 - .saturating_add(Weight::from_parts(30_939_288, 0).saturating_mul(n.into())) + // Minimum execution time: 314_296_000 picoseconds. + Weight::from_parts(317_522_000, 0) + // Standard Error: 61_360 + .saturating_add(Weight::from_parts(29_499_741, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_commit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_682_466_000 picoseconds. - Weight::from_parts(1_829_413_701, 0) - // Standard Error: 510_421 - .saturating_add(Weight::from_parts(216_009_232, 0).saturating_mul(r.into())) + // Minimum execution time: 1_835_106_000 picoseconds. + Weight::from_parts(1_948_516_646, 0) + // Standard Error: 382_008 + .saturating_add(Weight::from_parts(214_812_508, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_commit_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_681_160_000 picoseconds. - Weight::from_parts(1_819_797_788, 0) - // Standard Error: 453_707 - .saturating_add(Weight::from_parts(215_589_534, 0).saturating_mul(r.into())) + // Minimum execution time: 1_827_496_000 picoseconds. + Weight::from_parts(1_949_190_773, 0) + // Standard Error: 340_175 + .saturating_add(Weight::from_parts(218_001_536, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reservation_send(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 242_556_000 picoseconds. - Weight::from_parts(314_306_159, 0) - // Standard Error: 376_142 - .saturating_add(Weight::from_parts(260_614_468, 0).saturating_mul(r.into())) + // Minimum execution time: 264_306_000 picoseconds. + Weight::from_parts(363_536_651, 0) + // Standard Error: 467_914 + .saturating_add(Weight::from_parts(265_564_072, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reservation_send_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 495_430_000 picoseconds. - Weight::from_parts(502_714_000, 0) - // Standard Error: 52_049 - .saturating_add(Weight::from_parts(21_259_132, 0).saturating_mul(n.into())) + // Minimum execution time: 523_150_000 picoseconds. + Weight::from_parts(535_842_000, 0) + // Standard Error: 65_412 + .saturating_add(Weight::from_parts(21_698_063, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reservation_send_commit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_809_658_000 picoseconds. - Weight::from_parts(2_002_681_446, 0) - // Standard Error: 414_919 - .saturating_add(Weight::from_parts(227_942_929, 0).saturating_mul(r.into())) + // Minimum execution time: 1_974_743_000 picoseconds. + Weight::from_parts(2_096_494_995, 0) + // Standard Error: 474_778 + .saturating_add(Weight::from_parts(232_524_299, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 80_821_000 picoseconds. - Weight::from_parts(84_783_126, 0) - // Standard Error: 234_696 - .saturating_add(Weight::from_parts(22_124_873, 0).saturating_mul(r.into())) + // Minimum execution time: 94_139_000 picoseconds. + Weight::from_parts(101_775_569, 0) + // Standard Error: 452_439 + .saturating_add(Weight::from_parts(16_839_430, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reply_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 100_040_000 picoseconds. - Weight::from_parts(92_861_700, 0) - // Standard Error: 1_021 - .saturating_add(Weight::from_parts(419_414, 0).saturating_mul(n.into())) + // Minimum execution time: 112_050_000 picoseconds. + Weight::from_parts(102_205_366, 0) + // Standard Error: 1_008 + .saturating_add(Weight::from_parts(431_304, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 80_986_000 picoseconds. - Weight::from_parts(85_723_530, 0) - // Standard Error: 278_519 - .saturating_add(Weight::from_parts(19_484_469, 0).saturating_mul(r.into())) + // Minimum execution time: 93_528_000 picoseconds. + Weight::from_parts(99_748_422, 0) + // Standard Error: 396_992 + .saturating_add(Weight::from_parts(20_536_877, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reply_wgas_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 104_879_000 picoseconds. - Weight::from_parts(88_056_044, 0) - // Standard Error: 1_087 - .saturating_add(Weight::from_parts(427_201, 0).saturating_mul(n.into())) + // Minimum execution time: 117_832_000 picoseconds. + Weight::from_parts(104_552_847, 0) + // Standard Error: 1_402 + .saturating_add(Weight::from_parts(432_018, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply_commit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 80_548_000 picoseconds. - Weight::from_parts(84_139_208, 0) - // Standard Error: 235_150 - .saturating_add(Weight::from_parts(17_533_491, 0).saturating_mul(r.into())) + // Minimum execution time: 93_325_000 picoseconds. + Weight::from_parts(101_074_097, 0) + // Standard Error: 454_790 + .saturating_add(Weight::from_parts(20_838_102, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply_commit_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_118_000 picoseconds. - Weight::from_parts(88_086_604, 0) - // Standard Error: 244_958 - .saturating_add(Weight::from_parts(17_286_195, 0).saturating_mul(r.into())) + // Minimum execution time: 93_800_000 picoseconds. + Weight::from_parts(102_249_326, 0) + // Standard Error: 463_488 + .saturating_add(Weight::from_parts(15_991_473, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_push(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_393_000 picoseconds. - Weight::from_parts(132_631_342, 0) - // Standard Error: 436_134 - .saturating_add(Weight::from_parts(141_520_417, 0).saturating_mul(r.into())) + // Minimum execution time: 93_153_000 picoseconds. + Weight::from_parts(121_452_989, 0) + // Standard Error: 390_540 + .saturating_add(Weight::from_parts(145_641_178, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 8192]`. fn gr_reply_push_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 97_567_000 picoseconds. - Weight::from_parts(99_600_000, 0) - // Standard Error: 2_187 - .saturating_add(Weight::from_parts(639_729, 0).saturating_mul(n.into())) + // Minimum execution time: 115_529_000 picoseconds. + Weight::from_parts(120_413_000, 0) + // Standard Error: 3_105 + .saturating_add(Weight::from_parts(640_863, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply_input(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 696_739_000 picoseconds. - Weight::from_parts(711_247_336, 0) - // Standard Error: 1_403_605 - .saturating_add(Weight::from_parts(15_869_663, 0).saturating_mul(r.into())) + // Minimum execution time: 566_859_000 picoseconds. + Weight::from_parts(631_111_316, 0) + // Standard Error: 7_012_228 + .saturating_add(Weight::from_parts(21_896_983, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. - fn gr_reply_input_wgas(r: u32, ) -> Weight { + fn gr_reply_input_wgas(_r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 697_432_000 picoseconds. - Weight::from_parts(712_096_565, 0) - // Standard Error: 1_674_352 - .saturating_add(Weight::from_parts(32_103_934, 0).saturating_mul(r.into())) + // Minimum execution time: 565_382_000 picoseconds. + Weight::from_parts(613_048_008, 0) } /// The range of component `r` is `[0, 1]`. fn gr_reservation_reply(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 92_685_000 picoseconds. - Weight::from_parts(96_156_389, 0) - // Standard Error: 262_969 - .saturating_add(Weight::from_parts(8_983_510, 0).saturating_mul(r.into())) + // Minimum execution time: 104_401_000 picoseconds. + Weight::from_parts(112_651_320, 0) + // Standard Error: 438_590 + .saturating_add(Weight::from_parts(11_095_379, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reservation_reply_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 105_746_000 picoseconds. - Weight::from_parts(89_918_273, 0) - // Standard Error: 1_055 - .saturating_add(Weight::from_parts(427_838, 0).saturating_mul(n.into())) + // Minimum execution time: 115_615_000 picoseconds. + Weight::from_parts(112_987_750, 0) + // Standard Error: 960 + .saturating_add(Weight::from_parts(423_774, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reservation_reply_commit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 95_634_000 picoseconds. - Weight::from_parts(99_574_926, 0) - // Standard Error: 267_301 - .saturating_add(Weight::from_parts(3_125_673, 0).saturating_mul(r.into())) + // Minimum execution time: 105_056_000 picoseconds. + Weight::from_parts(113_735_922, 0) + // Standard Error: 466_586 + .saturating_add(Weight::from_parts(5_305_577, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reservation_reply_commit_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 99_268_000 picoseconds. - Weight::from_parts(93_140_981, 0) - // Standard Error: 1_101 - .saturating_add(Weight::from_parts(419_078, 0).saturating_mul(n.into())) + // Minimum execution time: 113_897_000 picoseconds. + Weight::from_parts(112_616_408, 0) + // Standard Error: 1_722 + .saturating_add(Weight::from_parts(428_420, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_to(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_167_000 picoseconds. - Weight::from_parts(80_305_860, 0) - // Standard Error: 357_986 - .saturating_add(Weight::from_parts(80_422_820, 0).saturating_mul(r.into())) + // Minimum execution time: 93_845_000 picoseconds. + Weight::from_parts(97_247_314, 0) + // Standard Error: 366_814 + .saturating_add(Weight::from_parts(85_900_587, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_signal_from(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 81_137_000 picoseconds. - Weight::from_parts(76_881_656, 0) - // Standard Error: 302_504 - .saturating_add(Weight::from_parts(80_036_963, 0).saturating_mul(r.into())) + // Minimum execution time: 93_761_000 picoseconds. + Weight::from_parts(92_637_129, 0) + // Standard Error: 309_799 + .saturating_add(Weight::from_parts(85_725_727, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_push_input(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 707_922_000 picoseconds. - Weight::from_parts(767_820_244, 0) - // Standard Error: 418_647 - .saturating_add(Weight::from_parts(97_993_049, 0).saturating_mul(r.into())) + // Minimum execution time: 565_388_000 picoseconds. + Weight::from_parts(606_358_854, 0) + // Standard Error: 430_766 + .saturating_add(Weight::from_parts(108_769_267, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reply_push_input_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 724_683_000 picoseconds. - Weight::from_parts(732_157_836, 0) - // Standard Error: 618 - .saturating_add(Weight::from_parts(151_809, 0).saturating_mul(n.into())) + // Minimum execution time: 591_660_000 picoseconds. + Weight::from_parts(597_035_528, 0) + // Standard Error: 2_641 + .saturating_add(Weight::from_parts(153_781, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_push_input(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_304_055_000 picoseconds. - Weight::from_parts(2_435_844_780, 0) - // Standard Error: 420_214 - .saturating_add(Weight::from_parts(120_405_108, 0).saturating_mul(r.into())) + // Minimum execution time: 2_317_147_000 picoseconds. + Weight::from_parts(2_514_940_964, 0) + // Standard Error: 546_319 + .saturating_add(Weight::from_parts(128_825_542, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_send_push_input_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_431_524_000 picoseconds. - Weight::from_parts(2_669_711_936, 0) - // Standard Error: 12_819 - .saturating_add(Weight::from_parts(13_546_418, 0).saturating_mul(n.into())) + // Minimum execution time: 2_560_344_000 picoseconds. + Weight::from_parts(2_512_409_449, 0) + // Standard Error: 15_466 + .saturating_add(Weight::from_parts(12_395_144, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_debug(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 85_238_000 picoseconds. - Weight::from_parts(104_905_012, 0) - // Standard Error: 392_000 - .saturating_add(Weight::from_parts(116_570_175, 0).saturating_mul(r.into())) + // Minimum execution time: 97_996_000 picoseconds. + Weight::from_parts(130_630_238, 0) + // Standard Error: 414_418 + .saturating_add(Weight::from_parts(114_735_577, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_debug_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 143_132_000 picoseconds. - Weight::from_parts(145_448_000, 0) - // Standard Error: 51_056 - .saturating_add(Weight::from_parts(25_497_066, 0).saturating_mul(n.into())) + // Minimum execution time: 157_513_000 picoseconds. + Weight::from_parts(160_584_000, 0) + // Standard Error: 57_227 + .saturating_add(Weight::from_parts(25_738_939, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_code(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_055_000 picoseconds. - Weight::from_parts(75_514_507, 0) - // Standard Error: 342_511 - .saturating_add(Weight::from_parts(78_022_368, 0).saturating_mul(r.into())) + // Minimum execution time: 92_652_000 picoseconds. + Weight::from_parts(88_138_429, 0) + // Standard Error: 330_537 + .saturating_add(Weight::from_parts(83_235_234, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_exit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_725_000 picoseconds. - Weight::from_parts(87_574_873, 0) - // Standard Error: 249_331 - .saturating_add(Weight::from_parts(24_890_126, 0).saturating_mul(r.into())) + // Minimum execution time: 93_824_000 picoseconds. + Weight::from_parts(102_740_497, 0) + // Standard Error: 428_593 + .saturating_add(Weight::from_parts(23_682_102, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_leave(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 82_761_000 picoseconds. - Weight::from_parts(86_511_404, 0) - // Standard Error: 240_746 - .saturating_add(Weight::from_parts(16_767_395, 0).saturating_mul(r.into())) + // Minimum execution time: 92_530_000 picoseconds. + Weight::from_parts(101_410_861, 0) + // Standard Error: 432_236 + .saturating_add(Weight::from_parts(12_196_938, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_wait(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_794_000 picoseconds. - Weight::from_parts(88_401_167, 0) - // Standard Error: 217_438 - .saturating_add(Weight::from_parts(11_267_632, 0).saturating_mul(r.into())) + // Minimum execution time: 93_402_000 picoseconds. + Weight::from_parts(102_285_877, 0) + // Standard Error: 466_463 + .saturating_add(Weight::from_parts(13_156_522, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_wait_for(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_664_000 picoseconds. - Weight::from_parts(89_193_048, 0) - // Standard Error: 336_699 - .saturating_add(Weight::from_parts(12_350_251, 0).saturating_mul(r.into())) + // Minimum execution time: 95_706_000 picoseconds. + Weight::from_parts(102_513_059, 0) + // Standard Error: 464_787 + .saturating_add(Weight::from_parts(13_986_540, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_wait_up_to(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_815_000 picoseconds. - Weight::from_parts(87_397_869, 0) - // Standard Error: 235_037 - .saturating_add(Weight::from_parts(16_313_030, 0).saturating_mul(r.into())) + // Minimum execution time: 93_057_000 picoseconds. + Weight::from_parts(99_083_869, 0) + // Standard Error: 378_747 + .saturating_add(Weight::from_parts(12_230_330, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_wake(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 139_190_000 picoseconds. - Weight::from_parts(186_267_428, 0) - // Standard Error: 346_204 - .saturating_add(Weight::from_parts(158_103_512, 0).saturating_mul(r.into())) + // Minimum execution time: 177_947_000 picoseconds. + Weight::from_parts(226_692_243, 0) + // Standard Error: 265_725 + .saturating_add(Weight::from_parts(156_938_838, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_create_program(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 96_748_000 picoseconds. - Weight::from_parts(148_556_306, 0) - // Standard Error: 400_680 - .saturating_add(Weight::from_parts(333_100_790, 0).saturating_mul(r.into())) + // Minimum execution time: 107_346_000 picoseconds. + Weight::from_parts(160_631_540, 0) + // Standard Error: 352_753 + .saturating_add(Weight::from_parts(338_685_448, 0).saturating_mul(r.into())) } /// The range of component `p` is `[0, 2048]`. /// The range of component `s` is `[1, 2048]`. @@ -2904,22 +2898,22 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 44_452_286_000 picoseconds. - Weight::from_parts(44_568_744_000, 0) - // Standard Error: 268_880 - .saturating_add(Weight::from_parts(7_444_126, 0).saturating_mul(p.into())) - // Standard Error: 268_867 - .saturating_add(Weight::from_parts(179_724_917, 0).saturating_mul(s.into())) + // Minimum execution time: 44_754_074_000 picoseconds. + Weight::from_parts(44_833_050_000, 0) + // Standard Error: 269_308 + .saturating_add(Weight::from_parts(7_629_892, 0).saturating_mul(p.into())) + // Standard Error: 269_294 + .saturating_add(Weight::from_parts(179_148_245, 0).saturating_mul(s.into())) } /// The range of component `r` is `[0, 20]`. fn gr_create_program_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 96_042_000 picoseconds. - Weight::from_parts(163_443_462, 0) - // Standard Error: 381_777 - .saturating_add(Weight::from_parts(338_839_702, 0).saturating_mul(r.into())) + // Minimum execution time: 108_278_000 picoseconds. + Weight::from_parts(161_208_126, 0) + // Standard Error: 368_644 + .saturating_add(Weight::from_parts(346_324_329, 0).saturating_mul(r.into())) } /// The range of component `p` is `[0, 2048]`. /// The range of component `s` is `[1, 2048]`. @@ -2927,32 +2921,32 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 42_724_116_000 picoseconds. - Weight::from_parts(42_849_968_000, 0) - // Standard Error: 263_445 - .saturating_add(Weight::from_parts(8_197_177, 0).saturating_mul(p.into())) - // Standard Error: 263_432 - .saturating_add(Weight::from_parts(180_050_572, 0).saturating_mul(s.into())) + // Minimum execution time: 44_266_209_000 picoseconds. + Weight::from_parts(44_559_345_000, 0) + // Standard Error: 270_420 + .saturating_add(Weight::from_parts(7_460_172, 0).saturating_mul(p.into())) + // Standard Error: 270_407 + .saturating_add(Weight::from_parts(179_211_260, 0).saturating_mul(s.into())) } /// The range of component `r` is `[0, 20]`. fn gr_pay_program_rent(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 86_607_000 picoseconds. - Weight::from_parts(100_957_693, 0) - // Standard Error: 29_067 - .saturating_add(Weight::from_parts(1_762_813, 0).saturating_mul(r.into())) + // Minimum execution time: 94_889_000 picoseconds. + Weight::from_parts(115_310_524, 0) + // Standard Error: 34_049 + .saturating_add(Weight::from_parts(1_916_607, 0).saturating_mul(r.into())) } /// The range of component `p` is `[0, 512]`. fn lazy_pages_signal_read(p: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `141` // Estimated: `1131 + p * (9900 ±0)` - // Minimum execution time: 87_305_000 picoseconds. - Weight::from_parts(108_825_748, 1131) - // Standard Error: 5_956 - .saturating_add(Weight::from_parts(11_809_647, 0).saturating_mul(p.into())) + // Minimum execution time: 97_825_000 picoseconds. + Weight::from_parts(251_440_245, 1131) + // Standard Error: 70_641 + .saturating_add(Weight::from_parts(15_652_952, 0).saturating_mul(p.into())) .saturating_add(RocksDbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 9900).saturating_mul(p.into())) } @@ -2961,10 +2955,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `141` // Estimated: `1131 + p * (9900 ±0)` - // Minimum execution time: 87_531_000 picoseconds. - Weight::from_parts(88_749_000, 1131) - // Standard Error: 27_438 - .saturating_add(Weight::from_parts(35_435_114, 0).saturating_mul(p.into())) + // Minimum execution time: 96_761_000 picoseconds. + Weight::from_parts(100_398_000, 1131) + // Standard Error: 45_532 + .saturating_add(Weight::from_parts(39_790_625, 0).saturating_mul(p.into())) .saturating_add(RocksDbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 9900).saturating_mul(p.into())) } @@ -2973,10 +2967,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `141` // Estimated: `5069931` - // Minimum execution time: 6_087_078_000 picoseconds. - Weight::from_parts(5_882_681_000, 5069931) - // Standard Error: 87_545 - .saturating_add(Weight::from_parts(37_047_042, 0).saturating_mul(p.into())) + // Minimum execution time: 7_471_807_000 picoseconds. + Weight::from_parts(7_440_591_962, 5069931) + // Standard Error: 168_373 + .saturating_add(Weight::from_parts(40_244_359, 0).saturating_mul(p.into())) .saturating_add(RocksDbWeight::get().reads(2048_u64)) } /// The range of component `p` is `[0, 512]`. @@ -2984,10 +2978,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `1813 + p * (65580 ±0)` // Estimated: `1939 + p * (75482 ±0)` - // Minimum execution time: 85_432_000 picoseconds. - Weight::from_parts(87_001_000, 1939) - // Standard Error: 47_768 - .saturating_add(Weight::from_parts(47_598_234, 0).saturating_mul(p.into())) + // Minimum execution time: 97_303_000 picoseconds. + Weight::from_parts(98_185_000, 1939) + // Standard Error: 38_471 + .saturating_add(Weight::from_parts(55_016_921, 0).saturating_mul(p.into())) .saturating_add(RocksDbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 75482).saturating_mul(p.into())) } @@ -2996,10 +2990,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `141` // Estimated: `1131 + p * (9900 ±0)` - // Minimum execution time: 92_594_000 picoseconds. - Weight::from_parts(93_795_036, 1131) - // Standard Error: 53_549 - .saturating_add(Weight::from_parts(35_797_869, 0).saturating_mul(p.into())) + // Minimum execution time: 102_497_000 picoseconds. + Weight::from_parts(104_932_685, 1131) + // Standard Error: 78_974 + .saturating_add(Weight::from_parts(39_257_150, 0).saturating_mul(p.into())) .saturating_add(RocksDbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 9900).saturating_mul(p.into())) } @@ -3008,10 +3002,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `141` // Estimated: `1496 + p * (9883 ±2)` - // Minimum execution time: 769_397_000 picoseconds. - Weight::from_parts(792_321_925, 1496) - // Standard Error: 237_986 - .saturating_add(Weight::from_parts(48_847_504, 0).saturating_mul(p.into())) + // Minimum execution time: 612_308_000 picoseconds. + Weight::from_parts(642_079_999, 1496) + // Standard Error: 357_245 + .saturating_add(Weight::from_parts(46_518_860, 0).saturating_mul(p.into())) .saturating_add(RocksDbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 9883).saturating_mul(p.into())) } @@ -3020,10 +3014,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `141` // Estimated: `317931` - // Minimum execution time: 1_113_735_000 picoseconds. - Weight::from_parts(1_148_020_828, 317931) - // Standard Error: 167_371 - .saturating_add(Weight::from_parts(47_795_831, 0).saturating_mul(p.into())) + // Minimum execution time: 1_068_248_000 picoseconds. + Weight::from_parts(1_080_741_205, 317931) + // Standard Error: 262_216 + .saturating_add(Weight::from_parts(50_047_907, 0).saturating_mul(p.into())) .saturating_add(RocksDbWeight::get().reads(128_u64)) } /// The range of component `r` is `[0, 20]`. @@ -3031,884 +3025,882 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 4_154_000 picoseconds. - Weight::from_parts(4_280_364, 0) - // Standard Error: 8_638 - .saturating_add(Weight::from_parts(24_150_721, 0).saturating_mul(r.into())) + // Minimum execution time: 3_099_000 picoseconds. + Weight::from_parts(6_340_084, 0) + // Standard Error: 180_257 + .saturating_add(Weight::from_parts(74_666_091, 0).saturating_mul(r.into())) } /// The range of component `r` is `[50, 500]`. fn instr_i64load(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 4_339_689_000 picoseconds. - Weight::from_parts(4_202_598_633, 0) - // Standard Error: 74_721 - .saturating_add(Weight::from_parts(4_468_109, 0).saturating_mul(r.into())) + // Minimum execution time: 4_391_547_000 picoseconds. + Weight::from_parts(4_140_785_425, 0) + // Standard Error: 89_369 + .saturating_add(Weight::from_parts(5_769_622, 0).saturating_mul(r.into())) } /// The range of component `r` is `[50, 500]`. fn instr_i32load(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 4_343_068_000 picoseconds. - Weight::from_parts(4_226_706_212, 0) - // Standard Error: 60_538 - .saturating_add(Weight::from_parts(4_325_162, 0).saturating_mul(r.into())) + // Minimum execution time: 4_386_802_000 picoseconds. + Weight::from_parts(4_243_536_456, 0) + // Standard Error: 95_210 + .saturating_add(Weight::from_parts(5_278_131, 0).saturating_mul(r.into())) } /// The range of component `r` is `[50, 500]`. fn instr_i64store(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 11_409_473_000 picoseconds. - Weight::from_parts(11_882_222_938, 0) - // Standard Error: 194_167 - .saturating_add(Weight::from_parts(8_210_890, 0).saturating_mul(r.into())) + // Minimum execution time: 11_072_272_000 picoseconds. + Weight::from_parts(11_558_306_225, 0) + // Standard Error: 165_659 + .saturating_add(Weight::from_parts(9_828_260, 0).saturating_mul(r.into())) } /// The range of component `r` is `[50, 500]`. fn instr_i32store(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 10_212_512_000 picoseconds. - Weight::from_parts(10_628_957_808, 0) - // Standard Error: 170_508 - .saturating_add(Weight::from_parts(11_560_237, 0).saturating_mul(r.into())) + // Minimum execution time: 10_285_071_000 picoseconds. + Weight::from_parts(11_137_621_942, 0) + // Standard Error: 147_513 + .saturating_add(Weight::from_parts(9_014_757, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_select(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_229_000 picoseconds. - Weight::from_parts(2_319_000, 0) - // Standard Error: 9_576 - .saturating_add(Weight::from_parts(3_794_717, 0).saturating_mul(r.into())) + // Minimum execution time: 2_285_000 picoseconds. + Weight::from_parts(2_410_000, 0) + // Standard Error: 7_624 + .saturating_add(Weight::from_parts(3_864_490, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_if(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_265_000 picoseconds. - Weight::from_parts(2_353_000, 0) - // Standard Error: 5_018 - .saturating_add(Weight::from_parts(3_059_511, 0).saturating_mul(r.into())) + // Minimum execution time: 2_342_000 picoseconds. + Weight::from_parts(2_433_000, 0) + // Standard Error: 6_413 + .saturating_add(Weight::from_parts(3_120_732, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_br(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_287_000 picoseconds. - Weight::from_parts(3_531_925, 0) - // Standard Error: 1_167 - .saturating_add(Weight::from_parts(1_569_201, 0).saturating_mul(r.into())) + // Minimum execution time: 2_301_000 picoseconds. + Weight::from_parts(3_591_730, 0) + // Standard Error: 1_106 + .saturating_add(Weight::from_parts(1_565_415, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_br_if(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_294_000 picoseconds. - Weight::from_parts(2_359_000, 0) - // Standard Error: 9_672 - .saturating_add(Weight::from_parts(2_884_305, 0).saturating_mul(r.into())) + // Minimum execution time: 2_306_000 picoseconds. + Weight::from_parts(2_461_000, 0) + // Standard Error: 7_711 + .saturating_add(Weight::from_parts(2_932_880, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_br_table(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_256_000 picoseconds. - Weight::from_parts(2_344_000, 0) - // Standard Error: 8_373 - .saturating_add(Weight::from_parts(5_256_648, 0).saturating_mul(r.into())) + // Minimum execution time: 2_358_000 picoseconds. + Weight::from_parts(2_144_801, 0) + // Standard Error: 22_082 + .saturating_add(Weight::from_parts(5_266_139, 0).saturating_mul(r.into())) } /// The range of component `e` is `[1, 256]`. fn instr_br_table_per_entry(e: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 7_012_000 picoseconds. - Weight::from_parts(4_938_253, 0) - // Standard Error: 2_214 - .saturating_add(Weight::from_parts(151_870, 0).saturating_mul(e.into())) + // Minimum execution time: 6_803_000 picoseconds. + Weight::from_parts(5_374_690, 0) + // Standard Error: 1_699 + .saturating_add(Weight::from_parts(171_193, 0).saturating_mul(e.into())) } /// The range of component `r` is `[0, 50]`. fn instr_call_const(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_309_000 picoseconds. - Weight::from_parts(4_232_448, 0) - // Standard Error: 6_359 - .saturating_add(Weight::from_parts(2_596_672, 0).saturating_mul(r.into())) + // Minimum execution time: 2_431_000 picoseconds. + Weight::from_parts(4_875_813, 0) + // Standard Error: 8_258 + .saturating_add(Weight::from_parts(2_629_733, 0).saturating_mul(r.into())) } fn instr_i64const(r: u32, ) -> Weight { Weight::from_parts(0, 0) - .saturating_add(Weight::from_parts(2_596_672 - - 2_404_212, 0).saturating_mul(r.into())) + .saturating_add(Weight::from_parts(2_629_733 - + 2_421_700, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_call(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_287_000 picoseconds. - Weight::from_parts(4_432_470, 0) - // Standard Error: 11_941 - .saturating_add(Weight::from_parts(2_404_212, 0).saturating_mul(r.into())) + // Minimum execution time: 2_403_000 picoseconds. + Weight::from_parts(5_140_243, 0) + // Standard Error: 13_164 + .saturating_add(Weight::from_parts(2_421_700, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_call_indirect(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_776_000 picoseconds. - Weight::from_parts(12_954_286, 0) - // Standard Error: 30_568 - .saturating_add(Weight::from_parts(10_260_958, 0).saturating_mul(r.into())) + // Minimum execution time: 2_669_000 picoseconds. + Weight::from_parts(22_369_265, 0) + // Standard Error: 28_577 + .saturating_add(Weight::from_parts(9_740_558, 0).saturating_mul(r.into())) } /// The range of component `p` is `[0, 128]`. fn instr_call_indirect_per_param(p: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 11_935_000 picoseconds. - Weight::from_parts(1_635_475, 0) - // Standard Error: 7_669 - .saturating_add(Weight::from_parts(1_285_084, 0).saturating_mul(p.into())) + // Minimum execution time: 12_277_000 picoseconds. + Weight::from_parts(3_596_853, 0) + // Standard Error: 5_869 + .saturating_add(Weight::from_parts(1_258_605, 0).saturating_mul(p.into())) } /// The range of component `l` is `[0, 1024]`. - fn instr_call_per_local(l: u32, ) -> Weight { + fn instr_call_per_local(_l: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 5_316_000 picoseconds. - Weight::from_parts(5_699_758, 0) - // Standard Error: 13 - .saturating_add(Weight::from_parts(34, 0).saturating_mul(l.into())) + // Minimum execution time: 5_391_000 picoseconds. + Weight::from_parts(5_778_137, 0) } /// The range of component `r` is `[0, 50]`. fn instr_local_get(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_315_000 picoseconds. - Weight::from_parts(2_460_643, 0) - // Standard Error: 2_850 - .saturating_add(Weight::from_parts(235_587, 0).saturating_mul(r.into())) + // Minimum execution time: 4_835_000 picoseconds. + Weight::from_parts(6_065_483, 0) + // Standard Error: 3_006 + .saturating_add(Weight::from_parts(378_512, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_local_set(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_202_000 picoseconds. - Weight::from_parts(2_270_000, 0) - // Standard Error: 6_150 - .saturating_add(Weight::from_parts(730_523, 0).saturating_mul(r.into())) + // Minimum execution time: 4_722_000 picoseconds. + Weight::from_parts(3_902_309, 0) + // Standard Error: 5_742 + .saturating_add(Weight::from_parts(1_056_408, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_local_tee(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_244_000 picoseconds. - Weight::from_parts(2_338_000, 0) - // Standard Error: 5_205 - .saturating_add(Weight::from_parts(679_669, 0).saturating_mul(r.into())) + // Minimum execution time: 4_888_000 picoseconds. + Weight::from_parts(4_512_058, 0) + // Standard Error: 6_410 + .saturating_add(Weight::from_parts(1_001_510, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_global_get(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_412_000 picoseconds. - Weight::from_parts(2_087_064, 0) - // Standard Error: 9_824 - .saturating_add(Weight::from_parts(743_737, 0).saturating_mul(r.into())) + // Minimum execution time: 6_413_000 picoseconds. + Weight::from_parts(2_704_134, 0) + // Standard Error: 7_244 + .saturating_add(Weight::from_parts(804_200, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_global_set(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_388_000 picoseconds. - Weight::from_parts(6_512_000, 0) - // Standard Error: 7_958 - .saturating_add(Weight::from_parts(1_283_588, 0).saturating_mul(r.into())) + // Minimum execution time: 6_516_000 picoseconds. + Weight::from_parts(1_028_752, 0) + // Standard Error: 8_792 + .saturating_add(Weight::from_parts(1_494_630, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_memory_current(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_885_000 picoseconds. - Weight::from_parts(4_075_795, 0) - // Standard Error: 12_241 - .saturating_add(Weight::from_parts(6_965_908, 0).saturating_mul(r.into())) + // Minimum execution time: 5_560_000 picoseconds. + Weight::from_parts(1_126_442, 0) + // Standard Error: 14_476 + .saturating_add(Weight::from_parts(7_240_597, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64clz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_259_000 picoseconds. - Weight::from_parts(2_312_000, 0) - // Standard Error: 5_936 - .saturating_add(Weight::from_parts(3_299_707, 0).saturating_mul(r.into())) + // Minimum execution time: 2_299_000 picoseconds. + Weight::from_parts(2_449_000, 0) + // Standard Error: 7_416 + .saturating_add(Weight::from_parts(3_344_387, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32clz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_255_000 picoseconds. - Weight::from_parts(2_294_000, 0) - // Standard Error: 6_255 - .saturating_add(Weight::from_parts(2_999_382, 0).saturating_mul(r.into())) + // Minimum execution time: 2_389_000 picoseconds. + Weight::from_parts(2_551_000, 0) + // Standard Error: 5_708 + .saturating_add(Weight::from_parts(3_133_430, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64ctz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_236_000 picoseconds. - Weight::from_parts(2_271_000, 0) - // Standard Error: 6_896 - .saturating_add(Weight::from_parts(2_967_047, 0).saturating_mul(r.into())) + // Minimum execution time: 2_428_000 picoseconds. + Weight::from_parts(2_511_000, 0) + // Standard Error: 7_262 + .saturating_add(Weight::from_parts(3_192_675, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32ctz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_221_000 picoseconds. - Weight::from_parts(2_268_000, 0) - // Standard Error: 4_893 - .saturating_add(Weight::from_parts(2_579_110, 0).saturating_mul(r.into())) + // Minimum execution time: 2_333_000 picoseconds. + Weight::from_parts(2_426_000, 0) + // Standard Error: 4_554 + .saturating_add(Weight::from_parts(2_683_293, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64popcnt(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_256_000 picoseconds. - Weight::from_parts(2_304_000, 0) - // Standard Error: 3_852 - .saturating_add(Weight::from_parts(520_005, 0).saturating_mul(r.into())) + // Minimum execution time: 2_334_000 picoseconds. + Weight::from_parts(2_385_000, 0) + // Standard Error: 4_686 + .saturating_add(Weight::from_parts(631_609, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32popcnt(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_274_000 picoseconds. - Weight::from_parts(1_794_591, 0) - // Standard Error: 3_416 - .saturating_add(Weight::from_parts(359_819, 0).saturating_mul(r.into())) + // Minimum execution time: 2_356_000 picoseconds. + Weight::from_parts(1_221_890, 0) + // Standard Error: 3_960 + .saturating_add(Weight::from_parts(452_047, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64eqz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_189_000 picoseconds. - Weight::from_parts(2_287_000, 0) - // Standard Error: 10_307 - .saturating_add(Weight::from_parts(1_833_775, 0).saturating_mul(r.into())) + // Minimum execution time: 2_318_000 picoseconds. + Weight::from_parts(2_390_000, 0) + // Standard Error: 11_114 + .saturating_add(Weight::from_parts(1_916_122, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32eqz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_287_000 picoseconds. - Weight::from_parts(2_349_000, 0) - // Standard Error: 9_393 - .saturating_add(Weight::from_parts(1_178_942, 0).saturating_mul(r.into())) + // Minimum execution time: 2_436_000 picoseconds. + Weight::from_parts(2_504_000, 0) + // Standard Error: 7_104 + .saturating_add(Weight::from_parts(1_156_958, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32extend8s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_259_000 picoseconds. - Weight::from_parts(2_256_508, 0) - // Standard Error: 3_133 - .saturating_add(Weight::from_parts(326_908, 0).saturating_mul(r.into())) + // Minimum execution time: 2_276_000 picoseconds. + Weight::from_parts(1_708_596, 0) + // Standard Error: 2_843 + .saturating_add(Weight::from_parts(377_083, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32extend16s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_298_000 picoseconds. - Weight::from_parts(1_792_383, 0) - // Standard Error: 2_981 - .saturating_add(Weight::from_parts(325_072, 0).saturating_mul(r.into())) + // Minimum execution time: 2_386_000 picoseconds. + Weight::from_parts(1_424_415, 0) + // Standard Error: 3_599 + .saturating_add(Weight::from_parts(395_934, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extend8s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_218_000 picoseconds. - Weight::from_parts(236_190, 0) - // Standard Error: 5_791 - .saturating_add(Weight::from_parts(526_784, 0).saturating_mul(r.into())) + // Minimum execution time: 2_396_000 picoseconds. + Weight::from_parts(2_491_000, 0) + // Standard Error: 3_774 + .saturating_add(Weight::from_parts(516_281, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extend16s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_278_000 picoseconds. - Weight::from_parts(18_346, 0) - // Standard Error: 5_882 - .saturating_add(Weight::from_parts(538_848, 0).saturating_mul(r.into())) + // Minimum execution time: 2_308_000 picoseconds. + Weight::from_parts(548_192, 0) + // Standard Error: 4_583 + .saturating_add(Weight::from_parts(556_734, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extend32s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_213_000 picoseconds. - Weight::from_parts(2_322_000, 0) - // Standard Error: 4_502 - .saturating_add(Weight::from_parts(463_034, 0).saturating_mul(r.into())) + // Minimum execution time: 2_333_000 picoseconds. + Weight::from_parts(447_271, 0) + // Standard Error: 5_300 + .saturating_add(Weight::from_parts(535_915, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extendsi32(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_272_000 picoseconds. - Weight::from_parts(2_193_450, 0) - // Standard Error: 3_655 - .saturating_add(Weight::from_parts(304_226, 0).saturating_mul(r.into())) + // Minimum execution time: 2_340_000 picoseconds. + Weight::from_parts(1_639_695, 0) + // Standard Error: 3_519 + .saturating_add(Weight::from_parts(368_523, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extendui32(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_174_000 picoseconds. - Weight::from_parts(2_803_358, 0) - // Standard Error: 2_256 - .saturating_add(Weight::from_parts(163_489, 0).saturating_mul(r.into())) + // Minimum execution time: 2_305_000 picoseconds. + Weight::from_parts(2_843_474, 0) + // Standard Error: 1_950 + .saturating_add(Weight::from_parts(176_592, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32wrapi64(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_242_000 picoseconds. - Weight::from_parts(3_087_274, 0) - // Standard Error: 1_907 - .saturating_add(Weight::from_parts(146_988, 0).saturating_mul(r.into())) + // Minimum execution time: 2_351_000 picoseconds. + Weight::from_parts(2_894_613, 0) + // Standard Error: 2_024 + .saturating_add(Weight::from_parts(188_853, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64eq(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_268_000 picoseconds. - Weight::from_parts(2_335_000, 0) - // Standard Error: 9_220 - .saturating_add(Weight::from_parts(1_682_986, 0).saturating_mul(r.into())) + // Minimum execution time: 2_353_000 picoseconds. + Weight::from_parts(2_418_000, 0) + // Standard Error: 9_504 + .saturating_add(Weight::from_parts(1_936_605, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32eq(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_244_000 picoseconds. - Weight::from_parts(2_290_000, 0) - // Standard Error: 7_751 - .saturating_add(Weight::from_parts(1_073_438, 0).saturating_mul(r.into())) + // Minimum execution time: 2_291_000 picoseconds. + Weight::from_parts(2_364_000, 0) + // Standard Error: 8_346 + .saturating_add(Weight::from_parts(1_222_521, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64ne(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_225_000 picoseconds. - Weight::from_parts(2_297_000, 0) - // Standard Error: 9_887 - .saturating_add(Weight::from_parts(1_746_888, 0).saturating_mul(r.into())) + // Minimum execution time: 2_345_000 picoseconds. + Weight::from_parts(2_452_000, 0) + // Standard Error: 10_232 + .saturating_add(Weight::from_parts(1_883_867, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32ne(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_225_000 picoseconds. - Weight::from_parts(2_305_000, 0) - // Standard Error: 8_241 - .saturating_add(Weight::from_parts(1_123_968, 0).saturating_mul(r.into())) + // Minimum execution time: 2_323_000 picoseconds. + Weight::from_parts(2_387_000, 0) + // Standard Error: 7_581 + .saturating_add(Weight::from_parts(1_200_178, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64lts(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_325_000 picoseconds. - Weight::from_parts(2_368_000, 0) - // Standard Error: 10_199 - .saturating_add(Weight::from_parts(1_754_281, 0).saturating_mul(r.into())) + // Minimum execution time: 2_410_000 picoseconds. + Weight::from_parts(2_459_000, 0) + // Standard Error: 11_139 + .saturating_add(Weight::from_parts(1_877_766, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32lts(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_254_000 picoseconds. - Weight::from_parts(2_296_000, 0) - // Standard Error: 7_885 - .saturating_add(Weight::from_parts(1_054_096, 0).saturating_mul(r.into())) + // Minimum execution time: 2_273_000 picoseconds. + Weight::from_parts(2_387_000, 0) + // Standard Error: 8_083 + .saturating_add(Weight::from_parts(1_217_904, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64ltu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_212_000 picoseconds. - Weight::from_parts(2_244_000, 0) - // Standard Error: 11_272 - .saturating_add(Weight::from_parts(1_769_874, 0).saturating_mul(r.into())) + // Minimum execution time: 2_403_000 picoseconds. + Weight::from_parts(2_482_000, 0) + // Standard Error: 11_044 + .saturating_add(Weight::from_parts(1_956_302, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32ltu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_248_000 picoseconds. - Weight::from_parts(2_341_000, 0) - // Standard Error: 8_360 - .saturating_add(Weight::from_parts(1_115_362, 0).saturating_mul(r.into())) + // Minimum execution time: 2_353_000 picoseconds. + Weight::from_parts(2_420_000, 0) + // Standard Error: 7_870 + .saturating_add(Weight::from_parts(1_213_570, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64gts(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_243_000 picoseconds. - Weight::from_parts(2_309_000, 0) - // Standard Error: 9_424 - .saturating_add(Weight::from_parts(1_807_643, 0).saturating_mul(r.into())) + // Minimum execution time: 2_364_000 picoseconds. + Weight::from_parts(2_430_000, 0) + // Standard Error: 10_577 + .saturating_add(Weight::from_parts(1_968_043, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32gts(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_213_000 picoseconds. - Weight::from_parts(2_310_000, 0) - // Standard Error: 7_499 - .saturating_add(Weight::from_parts(1_087_178, 0).saturating_mul(r.into())) + // Minimum execution time: 2_328_000 picoseconds. + Weight::from_parts(2_442_000, 0) + // Standard Error: 7_838 + .saturating_add(Weight::from_parts(1_267_211, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64gtu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_267_000 picoseconds. - Weight::from_parts(2_342_000, 0) - // Standard Error: 11_743 - .saturating_add(Weight::from_parts(1_703_075, 0).saturating_mul(r.into())) + // Minimum execution time: 2_395_000 picoseconds. + Weight::from_parts(2_460_000, 0) + // Standard Error: 10_856 + .saturating_add(Weight::from_parts(1_910_357, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32gtu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_137_000 picoseconds. - Weight::from_parts(2_254_000, 0) - // Standard Error: 8_099 - .saturating_add(Weight::from_parts(1_080_763, 0).saturating_mul(r.into())) + // Minimum execution time: 2_343_000 picoseconds. + Weight::from_parts(2_409_000, 0) + // Standard Error: 5_786 + .saturating_add(Weight::from_parts(1_128_653, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64les(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_183_000 picoseconds. - Weight::from_parts(2_301_000, 0) - // Standard Error: 10_230 - .saturating_add(Weight::from_parts(1_738_567, 0).saturating_mul(r.into())) + // Minimum execution time: 2_318_000 picoseconds. + Weight::from_parts(2_433_000, 0) + // Standard Error: 10_344 + .saturating_add(Weight::from_parts(1_897_480, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32les(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_209_000 picoseconds. - Weight::from_parts(2_309_000, 0) - // Standard Error: 8_536 - .saturating_add(Weight::from_parts(1_161_928, 0).saturating_mul(r.into())) + // Minimum execution time: 2_355_000 picoseconds. + Weight::from_parts(2_460_000, 0) + // Standard Error: 6_963 + .saturating_add(Weight::from_parts(1_125_698, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64leu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_208_000 picoseconds. - Weight::from_parts(2_255_000, 0) - // Standard Error: 10_368 - .saturating_add(Weight::from_parts(1_847_441, 0).saturating_mul(r.into())) + // Minimum execution time: 2_356_000 picoseconds. + Weight::from_parts(2_447_000, 0) + // Standard Error: 8_285 + .saturating_add(Weight::from_parts(1_848_149, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32leu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_223_000 picoseconds. - Weight::from_parts(2_299_000, 0) - // Standard Error: 8_213 - .saturating_add(Weight::from_parts(1_112_048, 0).saturating_mul(r.into())) + // Minimum execution time: 2_327_000 picoseconds. + Weight::from_parts(2_394_000, 0) + // Standard Error: 7_282 + .saturating_add(Weight::from_parts(1_176_423, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64ges(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_221_000 picoseconds. - Weight::from_parts(2_270_000, 0) - // Standard Error: 12_684 - .saturating_add(Weight::from_parts(1_728_765, 0).saturating_mul(r.into())) + // Minimum execution time: 2_372_000 picoseconds. + Weight::from_parts(2_439_000, 0) + // Standard Error: 9_207 + .saturating_add(Weight::from_parts(1_837_009, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32ges(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_573_000 picoseconds. - Weight::from_parts(2_655_000, 0) - // Standard Error: 7_404 - .saturating_add(Weight::from_parts(1_080_080, 0).saturating_mul(r.into())) + // Minimum execution time: 2_368_000 picoseconds. + Weight::from_parts(2_427_000, 0) + // Standard Error: 8_320 + .saturating_add(Weight::from_parts(1_231_088, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64geu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_259_000 picoseconds. - Weight::from_parts(2_316_000, 0) - // Standard Error: 9_739 - .saturating_add(Weight::from_parts(1_807_913, 0).saturating_mul(r.into())) + // Minimum execution time: 2_373_000 picoseconds. + Weight::from_parts(2_461_000, 0) + // Standard Error: 9_499 + .saturating_add(Weight::from_parts(1_922_588, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32geu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_198_000 picoseconds. - Weight::from_parts(2_296_000, 0) - // Standard Error: 7_265 - .saturating_add(Weight::from_parts(1_087_210, 0).saturating_mul(r.into())) + // Minimum execution time: 2_387_000 picoseconds. + Weight::from_parts(2_455_000, 0) + // Standard Error: 7_681 + .saturating_add(Weight::from_parts(1_198_894, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64add(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_252_000 picoseconds. - Weight::from_parts(2_311_000, 0) - // Standard Error: 7_444 - .saturating_add(Weight::from_parts(1_191_685, 0).saturating_mul(r.into())) + // Minimum execution time: 2_308_000 picoseconds. + Weight::from_parts(2_389_000, 0) + // Standard Error: 7_797 + .saturating_add(Weight::from_parts(1_286_566, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32add(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_263_000 picoseconds. - Weight::from_parts(2_320_000, 0) - // Standard Error: 5_023 - .saturating_add(Weight::from_parts(585_667, 0).saturating_mul(r.into())) + // Minimum execution time: 2_329_000 picoseconds. + Weight::from_parts(2_389_000, 0) + // Standard Error: 4_968 + .saturating_add(Weight::from_parts(645_254, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64sub(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_213_000 picoseconds. - Weight::from_parts(2_320_000, 0) - // Standard Error: 10_018 - .saturating_add(Weight::from_parts(1_297_791, 0).saturating_mul(r.into())) + // Minimum execution time: 2_409_000 picoseconds. + Weight::from_parts(2_489_000, 0) + // Standard Error: 7_055 + .saturating_add(Weight::from_parts(1_232_084, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32sub(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_291_000 picoseconds. - Weight::from_parts(2_312_000, 0) - // Standard Error: 4_776 - .saturating_add(Weight::from_parts(612_864, 0).saturating_mul(r.into())) + // Minimum execution time: 2_371_000 picoseconds. + Weight::from_parts(2_420_000, 0) + // Standard Error: 4_348 + .saturating_add(Weight::from_parts(633_810, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64mul(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_286_000 picoseconds. - Weight::from_parts(2_356_000, 0) - // Standard Error: 11_619 - .saturating_add(Weight::from_parts(1_743_809, 0).saturating_mul(r.into())) + // Minimum execution time: 2_336_000 picoseconds. + Weight::from_parts(2_413_000, 0) + // Standard Error: 8_202 + .saturating_add(Weight::from_parts(1_777_425, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32mul(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_302_000 picoseconds. - Weight::from_parts(2_343_000, 0) - // Standard Error: 8_638 - .saturating_add(Weight::from_parts(1_136_060, 0).saturating_mul(r.into())) + // Minimum execution time: 2_314_000 picoseconds. + Weight::from_parts(2_369_000, 0) + // Standard Error: 6_935 + .saturating_add(Weight::from_parts(1_201_570, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64divs(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_236_000 picoseconds. - Weight::from_parts(2_309_000, 0) - // Standard Error: 7_114 - .saturating_add(Weight::from_parts(2_599_346, 0).saturating_mul(r.into())) + // Minimum execution time: 2_276_000 picoseconds. + Weight::from_parts(6_846_840, 0) + // Standard Error: 17_822 + .saturating_add(Weight::from_parts(2_268_370, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32divs(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_200_000 picoseconds. - Weight::from_parts(3_823_403, 0) - // Standard Error: 18_912 - .saturating_add(Weight::from_parts(2_161_963, 0).saturating_mul(r.into())) + // Minimum execution time: 2_394_000 picoseconds. + Weight::from_parts(4_704_336, 0) + // Standard Error: 10_960 + .saturating_add(Weight::from_parts(2_182_711, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64divu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_199_000 picoseconds. - Weight::from_parts(2_817_173, 0) - // Standard Error: 17_341 - .saturating_add(Weight::from_parts(2_740_748, 0).saturating_mul(r.into())) + // Minimum execution time: 2_375_000 picoseconds. + Weight::from_parts(1_968_824, 0) + // Standard Error: 15_899 + .saturating_add(Weight::from_parts(2_762_269, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32divu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_294_000 picoseconds. - Weight::from_parts(88_235, 0) - // Standard Error: 10_326 - .saturating_add(Weight::from_parts(2_481_087, 0).saturating_mul(r.into())) + // Minimum execution time: 2_335_000 picoseconds. + Weight::from_parts(1_450_000, 0) + // Standard Error: 13_496 + .saturating_add(Weight::from_parts(2_401_407, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64rems(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_232_000 picoseconds. - Weight::from_parts(2_294_000, 0) - // Standard Error: 14_480 - .saturating_add(Weight::from_parts(9_604_981, 0).saturating_mul(r.into())) + // Minimum execution time: 2_448_000 picoseconds. + Weight::from_parts(2_513_000, 0) + // Standard Error: 19_401 + .saturating_add(Weight::from_parts(9_309_211, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32rems(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_213_000 picoseconds. - Weight::from_parts(2_260_000, 0) - // Standard Error: 21_926 - .saturating_add(Weight::from_parts(7_501_289, 0).saturating_mul(r.into())) + // Minimum execution time: 2_273_000 picoseconds. + Weight::from_parts(1_738_370, 0) + // Standard Error: 42_672 + .saturating_add(Weight::from_parts(7_512_557, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64remu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_309_000 picoseconds. - Weight::from_parts(10_308_173, 0) - // Standard Error: 30_680 - .saturating_add(Weight::from_parts(2_288_505, 0).saturating_mul(r.into())) + // Minimum execution time: 2_371_000 picoseconds. + Weight::from_parts(2_215_088, 0) + // Standard Error: 15_445 + .saturating_add(Weight::from_parts(2_956_278, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32remu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_211_000 picoseconds. - Weight::from_parts(2_290_000, 0) - // Standard Error: 5_007 - .saturating_add(Weight::from_parts(2_516_076, 0).saturating_mul(r.into())) + // Minimum execution time: 2_409_000 picoseconds. + Weight::from_parts(217_500, 0) + // Standard Error: 7_904 + .saturating_add(Weight::from_parts(2_576_151, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64and(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_228_000 picoseconds. - Weight::from_parts(2_300_000, 0) - // Standard Error: 8_948 - .saturating_add(Weight::from_parts(1_264_596, 0).saturating_mul(r.into())) + // Minimum execution time: 2_456_000 picoseconds. + Weight::from_parts(2_503_000, 0) + // Standard Error: 7_920 + .saturating_add(Weight::from_parts(1_321_543, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32and(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_213_000 picoseconds. - Weight::from_parts(2_323_000, 0) - // Standard Error: 5_099 - .saturating_add(Weight::from_parts(612_107, 0).saturating_mul(r.into())) + // Minimum execution time: 2_346_000 picoseconds. + Weight::from_parts(2_479_000, 0) + // Standard Error: 4_711 + .saturating_add(Weight::from_parts(689_892, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64or(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_282_000 picoseconds. - Weight::from_parts(2_326_000, 0) - // Standard Error: 10_004 - .saturating_add(Weight::from_parts(1_278_365, 0).saturating_mul(r.into())) + // Minimum execution time: 2_339_000 picoseconds. + Weight::from_parts(2_427_000, 0) + // Standard Error: 8_029 + .saturating_add(Weight::from_parts(1_256_838, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32or(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_258_000 picoseconds. - Weight::from_parts(2_341_000, 0) - // Standard Error: 5_578 - .saturating_add(Weight::from_parts(645_196, 0).saturating_mul(r.into())) + // Minimum execution time: 2_334_000 picoseconds. + Weight::from_parts(2_480_000, 0) + // Standard Error: 3_812 + .saturating_add(Weight::from_parts(607_420, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64xor(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_338_000 picoseconds. - Weight::from_parts(2_363_000, 0) - // Standard Error: 8_554 - .saturating_add(Weight::from_parts(1_288_676, 0).saturating_mul(r.into())) + // Minimum execution time: 2_328_000 picoseconds. + Weight::from_parts(2_392_000, 0) + // Standard Error: 7_362 + .saturating_add(Weight::from_parts(1_248_739, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32xor(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_214_000 picoseconds. - Weight::from_parts(2_332_000, 0) - // Standard Error: 3_999 - .saturating_add(Weight::from_parts(594_484, 0).saturating_mul(r.into())) + // Minimum execution time: 2_419_000 picoseconds. + Weight::from_parts(2_465_000, 0) + // Standard Error: 4_304 + .saturating_add(Weight::from_parts(604_813, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64shl(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_198_000 picoseconds. - Weight::from_parts(2_258_000, 0) - // Standard Error: 7_437 - .saturating_add(Weight::from_parts(1_044_306, 0).saturating_mul(r.into())) + // Minimum execution time: 2_298_000 picoseconds. + Weight::from_parts(2_433_000, 0) + // Standard Error: 8_043 + .saturating_add(Weight::from_parts(1_073_194, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32shl(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_226_000 picoseconds. - Weight::from_parts(2_308_000, 0) - // Standard Error: 4_658 - .saturating_add(Weight::from_parts(537_262, 0).saturating_mul(r.into())) + // Minimum execution time: 2_427_000 picoseconds. + Weight::from_parts(2_511_000, 0) + // Standard Error: 4_969 + .saturating_add(Weight::from_parts(594_802, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64shrs(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_231_000 picoseconds. - Weight::from_parts(2_296_000, 0) - // Standard Error: 10_254 - .saturating_add(Weight::from_parts(1_154_138, 0).saturating_mul(r.into())) + // Minimum execution time: 2_312_000 picoseconds. + Weight::from_parts(2_399_000, 0) + // Standard Error: 7_093 + .saturating_add(Weight::from_parts(1_110_114, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32shrs(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_234_000 picoseconds. - Weight::from_parts(2_313_000, 0) - // Standard Error: 4_960 - .saturating_add(Weight::from_parts(607_930, 0).saturating_mul(r.into())) + // Minimum execution time: 2_331_000 picoseconds. + Weight::from_parts(2_433_000, 0) + // Standard Error: 4_140 + .saturating_add(Weight::from_parts(600_354, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64shru(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_279_000 picoseconds. - Weight::from_parts(2_342_000, 0) - // Standard Error: 7_909 - .saturating_add(Weight::from_parts(1_094_660, 0).saturating_mul(r.into())) + // Minimum execution time: 2_300_000 picoseconds. + Weight::from_parts(2_419_000, 0) + // Standard Error: 7_150 + .saturating_add(Weight::from_parts(1_154_649, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32shru(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_232_000 picoseconds. - Weight::from_parts(39_069, 0) - // Standard Error: 6_710 - .saturating_add(Weight::from_parts(599_572, 0).saturating_mul(r.into())) + // Minimum execution time: 2_356_000 picoseconds. + Weight::from_parts(2_423_000, 0) + // Standard Error: 5_067 + .saturating_add(Weight::from_parts(594_487, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64rotl(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_254_000 picoseconds. - Weight::from_parts(2_309_000, 0) - // Standard Error: 8_785 - .saturating_add(Weight::from_parts(1_060_321, 0).saturating_mul(r.into())) + // Minimum execution time: 2_339_000 picoseconds. + Weight::from_parts(2_406_000, 0) + // Standard Error: 5_674 + .saturating_add(Weight::from_parts(1_051_819, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32rotl(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_257_000 picoseconds. - Weight::from_parts(2_310_000, 0) - // Standard Error: 4_191 - .saturating_add(Weight::from_parts(528_319, 0).saturating_mul(r.into())) + // Minimum execution time: 2_383_000 picoseconds. + Weight::from_parts(114_723, 0) + // Standard Error: 5_881 + .saturating_add(Weight::from_parts(646_798, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64rotr(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_256_000 picoseconds. - Weight::from_parts(2_310_000, 0) - // Standard Error: 9_328 - .saturating_add(Weight::from_parts(1_114_164, 0).saturating_mul(r.into())) + // Minimum execution time: 2_292_000 picoseconds. + Weight::from_parts(2_422_000, 0) + // Standard Error: 6_697 + .saturating_add(Weight::from_parts(1_053_580, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32rotr(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_210_000 picoseconds. - Weight::from_parts(390_951, 0) - // Standard Error: 5_316 - .saturating_add(Weight::from_parts(609_568, 0).saturating_mul(r.into())) + // Minimum execution time: 2_325_000 picoseconds. + Weight::from_parts(206_699, 0) + // Standard Error: 5_851 + .saturating_add(Weight::from_parts(639_333, 0).saturating_mul(r.into())) } } diff --git a/runtime/gear/src/tests.rs b/runtime/gear/src/tests.rs index bf85a733ec9..95afd48443d 100644 --- a/runtime/gear/src/tests.rs +++ b/runtime/gear/src/tests.rs @@ -32,8 +32,8 @@ fn instruction_weights_heuristics_test() { _phantom: core::marker::PhantomData, i64const: 150, - i64load: 7_000, - i32load: 7_000, + i64load: 11_575, + i32load: 8_000, i64store: 29_000, i32store: 20_000, select: 7_100, @@ -138,14 +138,14 @@ fn page_costs_heuristic_test() { let expected_pages_costs = PageCosts { lazy_pages_signal_read: 28_000_000.into(), lazy_pages_signal_write: 33_000_000.into(), - lazy_pages_signal_write_after_read: 8_624_904.into(), + lazy_pages_signal_write_after_read: 9_500_000.into(), lazy_pages_host_func_read: 29_000_000.into(), lazy_pages_host_func_write: 33_000_000.into(), lazy_pages_host_func_write_after_read: 9_245_597.into(), - load_page_data: 8_700_000.into(), + load_page_data: 9_700_000.into(), upload_page_data: 104_000_000.into(), static_page: 100.into(), - mem_grow: 276_000.into(), + mem_grow: 906_170.into(), parachain_load_heuristic: 0.into(), }; @@ -156,7 +156,7 @@ fn page_costs_heuristic_test() { host_func_read: 29_000_000.into(), host_func_write: 137_000_000.into(), host_func_write_after_read: 112_000_000.into(), - load_page_storage_data: 8_700_000.into(), + load_page_storage_data: 9_700_000.into(), }; check_pages_weights( diff --git a/runtime/gear/src/weights/frame_system.rs b/runtime/gear/src/weights/frame_system.rs index 37c8734e2c3..31dd34692d1 100644 --- a/runtime/gear/src/weights/frame_system.rs +++ b/runtime/gear/src/weights/frame_system.rs @@ -19,13 +19,13 @@ //! Autogenerated weights for frame_system //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-08-20, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-09-11, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` //! CPU: `Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("gear-dev"), DB CACHE: 1024 +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("vara-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/gear benchmark pallet --chain=gear-dev --steps=50 --repeat=20 --pallet=frame_system --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./scripts/benchmarking/weights-output/frame_system.rs --template=.maintain/frame-weight-template.hbs +// ./target/production/gear benchmark pallet --chain=vara-dev --steps=50 --repeat=20 --pallet=frame_system --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./scripts/benchmarking/weights-output/frame_system.rs --template=.maintain/frame-weight-template.hbs #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -53,18 +53,18 @@ impl frame_system::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_547_000 picoseconds. - Weight::from_parts(1_156_168, 0) + // Minimum execution time: 1_562_000 picoseconds. + Weight::from_parts(1_066_991, 0) // Standard Error: 0 - .saturating_add(Weight::from_parts(460, 0).saturating_mul(b.into())) + .saturating_add(Weight::from_parts(461, 0).saturating_mul(b.into())) } /// The range of component `b` is `[0, 1310720]`. fn remark_with_event(b: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 5_872_000 picoseconds. - Weight::from_parts(6_100_000, 0) + // Minimum execution time: 5_949_000 picoseconds. + Weight::from_parts(6_153_000, 0) // Standard Error: 0 .saturating_add(Weight::from_parts(1_441, 0).saturating_mul(b.into())) } @@ -72,8 +72,8 @@ impl frame_system::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `1485` - // Minimum execution time: 3_110_000 picoseconds. - Weight::from_parts(3_331_000, 1485) + // Minimum execution time: 3_113_000 picoseconds. + Weight::from_parts(3_394_000, 1485) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(2_u64)) } @@ -82,10 +82,10 @@ impl frame_system::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_474_000 picoseconds. - Weight::from_parts(1_571_000, 0) - // Standard Error: 974 - .saturating_add(Weight::from_parts(687_544, 0).saturating_mul(i.into())) + // Minimum execution time: 1_578_000 picoseconds. + Weight::from_parts(1_632_000, 0) + // Standard Error: 994 + .saturating_add(Weight::from_parts(687_989, 0).saturating_mul(i.into())) .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into()))) } /// The range of component `i` is `[0, 1000]`. @@ -93,21 +93,21 @@ impl frame_system::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_521_000 picoseconds. - Weight::from_parts(1_570_000, 0) - // Standard Error: 706 - .saturating_add(Weight::from_parts(527_682, 0).saturating_mul(i.into())) + // Minimum execution time: 1_593_000 picoseconds. + Weight::from_parts(1_667_000, 0) + // Standard Error: 783 + .saturating_add(Weight::from_parts(535_872, 0).saturating_mul(i.into())) .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into()))) } /// The range of component `p` is `[0, 1000]`. fn kill_prefix(p: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `64 + p * (69 ±0)` - // Estimated: `66 + p * (70 ±0)` - // Minimum execution time: 3_122_000 picoseconds. - Weight::from_parts(3_256_000, 66) - // Standard Error: 1_528 - .saturating_add(Weight::from_parts(1_112_001, 0).saturating_mul(p.into())) + // Measured: `82 + p * (69 ±0)` + // Estimated: `89 + p * (70 ±0)` + // Minimum execution time: 3_345_000 picoseconds. + Weight::from_parts(3_470_000, 89) + // Standard Error: 1_511 + .saturating_add(Weight::from_parts(1_126_865, 0).saturating_mul(p.into())) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(p.into()))) .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 70).saturating_mul(p.into())) @@ -121,18 +121,18 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_547_000 picoseconds. - Weight::from_parts(1_156_168, 0) + // Minimum execution time: 1_562_000 picoseconds. + Weight::from_parts(1_066_991, 0) // Standard Error: 0 - .saturating_add(Weight::from_parts(460, 0).saturating_mul(b.into())) + .saturating_add(Weight::from_parts(461, 0).saturating_mul(b.into())) } /// The range of component `b` is `[0, 1310720]`. fn remark_with_event(b: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 5_872_000 picoseconds. - Weight::from_parts(6_100_000, 0) + // Minimum execution time: 5_949_000 picoseconds. + Weight::from_parts(6_153_000, 0) // Standard Error: 0 .saturating_add(Weight::from_parts(1_441, 0).saturating_mul(b.into())) } @@ -140,8 +140,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `1485` - // Minimum execution time: 3_110_000 picoseconds. - Weight::from_parts(3_331_000, 1485) + // Minimum execution time: 3_113_000 picoseconds. + Weight::from_parts(3_394_000, 1485) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(2_u64)) } @@ -150,10 +150,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_474_000 picoseconds. - Weight::from_parts(1_571_000, 0) - // Standard Error: 974 - .saturating_add(Weight::from_parts(687_544, 0).saturating_mul(i.into())) + // Minimum execution time: 1_578_000 picoseconds. + Weight::from_parts(1_632_000, 0) + // Standard Error: 994 + .saturating_add(Weight::from_parts(687_989, 0).saturating_mul(i.into())) .saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(i.into()))) } /// The range of component `i` is `[0, 1000]`. @@ -161,21 +161,21 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_521_000 picoseconds. - Weight::from_parts(1_570_000, 0) - // Standard Error: 706 - .saturating_add(Weight::from_parts(527_682, 0).saturating_mul(i.into())) + // Minimum execution time: 1_593_000 picoseconds. + Weight::from_parts(1_667_000, 0) + // Standard Error: 783 + .saturating_add(Weight::from_parts(535_872, 0).saturating_mul(i.into())) .saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(i.into()))) } /// The range of component `p` is `[0, 1000]`. fn kill_prefix(p: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `64 + p * (69 ±0)` - // Estimated: `66 + p * (70 ±0)` - // Minimum execution time: 3_122_000 picoseconds. - Weight::from_parts(3_256_000, 66) - // Standard Error: 1_528 - .saturating_add(Weight::from_parts(1_112_001, 0).saturating_mul(p.into())) + // Measured: `82 + p * (69 ±0)` + // Estimated: `89 + p * (70 ±0)` + // Minimum execution time: 3_345_000 picoseconds. + Weight::from_parts(3_470_000, 89) + // Standard Error: 1_511 + .saturating_add(Weight::from_parts(1_126_865, 0).saturating_mul(p.into())) .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(p.into()))) .saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 70).saturating_mul(p.into())) diff --git a/runtime/gear/src/weights/pallet_balances.rs b/runtime/gear/src/weights/pallet_balances.rs index b1991b28d8a..f096d50de43 100644 --- a/runtime/gear/src/weights/pallet_balances.rs +++ b/runtime/gear/src/weights/pallet_balances.rs @@ -19,13 +19,13 @@ //! Autogenerated weights for pallet_balances //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-08-20, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-09-11, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` //! CPU: `Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("gear-dev"), DB CACHE: 1024 +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("vara-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/gear benchmark pallet --chain=gear-dev --steps=50 --repeat=20 --pallet=pallet_balances --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./scripts/benchmarking/weights-output/pallet_balances.rs --template=.maintain/frame-weight-template.hbs +// ./target/production/gear benchmark pallet --chain=vara-dev --steps=50 --repeat=20 --pallet=pallet_balances --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./scripts/benchmarking/weights-output/pallet_balances.rs --template=.maintain/frame-weight-template.hbs #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -53,8 +53,8 @@ impl pallet_balances::WeightInfo for SubstrateWeight // Proof Size summary in bytes: // Measured: `0` // Estimated: `3593` - // Minimum execution time: 29_830_000 picoseconds. - Weight::from_parts(30_268_000, 3593) + // Minimum execution time: 29_789_000 picoseconds. + Weight::from_parts(30_683_000, 3593) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } @@ -62,8 +62,8 @@ impl pallet_balances::WeightInfo for SubstrateWeight // Proof Size summary in bytes: // Measured: `0` // Estimated: `3593` - // Minimum execution time: 21_306_000 picoseconds. - Weight::from_parts(21_569_000, 3593) + // Minimum execution time: 21_425_000 picoseconds. + Weight::from_parts(21_900_000, 3593) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } @@ -71,8 +71,8 @@ impl pallet_balances::WeightInfo for SubstrateWeight // Proof Size summary in bytes: // Measured: `103` // Estimated: `3593` - // Minimum execution time: 12_033_000 picoseconds. - Weight::from_parts(12_390_000, 3593) + // Minimum execution time: 12_387_000 picoseconds. + Weight::from_parts(12_754_000, 3593) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } @@ -80,8 +80,8 @@ impl pallet_balances::WeightInfo for SubstrateWeight // Proof Size summary in bytes: // Measured: `103` // Estimated: `3593` - // Minimum execution time: 14_966_000 picoseconds. - Weight::from_parts(15_395_000, 3593) + // Minimum execution time: 15_196_000 picoseconds. + Weight::from_parts(15_778_000, 3593) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } @@ -89,8 +89,8 @@ impl pallet_balances::WeightInfo for SubstrateWeight // Proof Size summary in bytes: // Measured: `103` // Estimated: `6196` - // Minimum execution time: 31_303_000 picoseconds. - Weight::from_parts(31_887_000, 6196) + // Minimum execution time: 31_544_000 picoseconds. + Weight::from_parts(32_018_000, 6196) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(2_u64)) } @@ -98,8 +98,8 @@ impl pallet_balances::WeightInfo for SubstrateWeight // Proof Size summary in bytes: // Measured: `0` // Estimated: `3593` - // Minimum execution time: 28_222_000 picoseconds. - Weight::from_parts(28_785_000, 3593) + // Minimum execution time: 28_027_000 picoseconds. + Weight::from_parts(29_047_000, 3593) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } @@ -107,8 +107,8 @@ impl pallet_balances::WeightInfo for SubstrateWeight // Proof Size summary in bytes: // Measured: `103` // Estimated: `3593` - // Minimum execution time: 11_871_000 picoseconds. - Weight::from_parts(12_362_000, 3593) + // Minimum execution time: 11_796_000 picoseconds. + Weight::from_parts(12_239_000, 3593) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } @@ -120,8 +120,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3593` - // Minimum execution time: 29_830_000 picoseconds. - Weight::from_parts(30_268_000, 3593) + // Minimum execution time: 29_789_000 picoseconds. + Weight::from_parts(30_683_000, 3593) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } @@ -129,8 +129,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3593` - // Minimum execution time: 21_306_000 picoseconds. - Weight::from_parts(21_569_000, 3593) + // Minimum execution time: 21_425_000 picoseconds. + Weight::from_parts(21_900_000, 3593) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } @@ -138,8 +138,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `103` // Estimated: `3593` - // Minimum execution time: 12_033_000 picoseconds. - Weight::from_parts(12_390_000, 3593) + // Minimum execution time: 12_387_000 picoseconds. + Weight::from_parts(12_754_000, 3593) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } @@ -147,8 +147,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `103` // Estimated: `3593` - // Minimum execution time: 14_966_000 picoseconds. - Weight::from_parts(15_395_000, 3593) + // Minimum execution time: 15_196_000 picoseconds. + Weight::from_parts(15_778_000, 3593) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } @@ -156,8 +156,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `103` // Estimated: `6196` - // Minimum execution time: 31_303_000 picoseconds. - Weight::from_parts(31_887_000, 6196) + // Minimum execution time: 31_544_000 picoseconds. + Weight::from_parts(32_018_000, 6196) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(2_u64)) } @@ -165,8 +165,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3593` - // Minimum execution time: 28_222_000 picoseconds. - Weight::from_parts(28_785_000, 3593) + // Minimum execution time: 28_027_000 picoseconds. + Weight::from_parts(29_047_000, 3593) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } @@ -174,8 +174,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `103` // Estimated: `3593` - // Minimum execution time: 11_871_000 picoseconds. - Weight::from_parts(12_362_000, 3593) + // Minimum execution time: 11_796_000 picoseconds. + Weight::from_parts(12_239_000, 3593) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } diff --git a/runtime/gear/src/weights/pallet_gear.rs b/runtime/gear/src/weights/pallet_gear.rs index 57f8c62db66..707b287d5c5 100644 --- a/runtime/gear/src/weights/pallet_gear.rs +++ b/runtime/gear/src/weights/pallet_gear.rs @@ -19,13 +19,13 @@ //! Autogenerated weights for pallet_gear //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-08-20, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-09-11, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` //! CPU: `Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("gear-dev"), DB CACHE: 1024 +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("vara-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/gear benchmark pallet --chain=gear-dev --steps=50 --repeat=20 --pallet=pallet_gear --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./scripts/benchmarking/weights-output/pallet_gear.rs --template=.maintain/frame-weight-template.hbs +// ./target/production/gear benchmark pallet --chain=vara-dev --steps=50 --repeat=20 --pallet=pallet_gear --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./scripts/benchmarking/weights-output/pallet_gear.rs --template=.maintain/frame-weight-template.hbs #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -244,21 +244,21 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 951_000 picoseconds. - Weight::from_parts(1_020_000, 0) - // Standard Error: 722 - .saturating_add(Weight::from_parts(240_031, 0).saturating_mul(c.into())) + // Minimum execution time: 1_023_000 picoseconds. + Weight::from_parts(1_051_000, 0) + // Standard Error: 912 + .saturating_add(Weight::from_parts(213_761, 0).saturating_mul(c.into())) .saturating_add(T::DbWeight::get().writes(1_u64)) } /// The range of component `c` is `[0, 512]`. fn db_read_per_kb(c: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `42 + c * (1024 ±0)` - // Estimated: `3506 + c * (1024 ±0)` - // Minimum execution time: 2_762_000 picoseconds. - Weight::from_parts(2_859_000, 3506) - // Standard Error: 813 - .saturating_add(Weight::from_parts(665_139, 0).saturating_mul(c.into())) + // Measured: `146 + c * (1024 ±0)` + // Estimated: `3610 + c * (1024 ±0)` + // Minimum execution time: 3_252_000 picoseconds. + Weight::from_parts(3_416_000, 3610) + // Standard Error: 1_261 + .saturating_add(Weight::from_parts(689_572, 0).saturating_mul(c.into())) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(Weight::from_parts(0, 1024).saturating_mul(c.into())) } @@ -267,35 +267,35 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 50_591_000 picoseconds. - Weight::from_parts(61_353_023, 0) - // Standard Error: 9_186 - .saturating_add(Weight::from_parts(2_404_810, 0).saturating_mul(c.into())) + // Minimum execution time: 59_805_000 picoseconds. + Weight::from_parts(86_729_126, 0) + // Standard Error: 7_023 + .saturating_add(Weight::from_parts(2_475_519, 0).saturating_mul(c.into())) } fn claim_value() -> Weight { // Proof Size summary in bytes: - // Measured: `979` - // Estimated: `42236` - // Minimum execution time: 81_660_000 picoseconds. - Weight::from_parts(83_840_000, 42236) - .saturating_add(T::DbWeight::get().reads(13_u64)) - .saturating_add(T::DbWeight::get().writes(10_u64)) + // Measured: `1372` + // Estimated: `51905` + // Minimum execution time: 107_694_000 picoseconds. + Weight::from_parts(110_328_000, 51905) + .saturating_add(T::DbWeight::get().reads(15_u64)) + .saturating_add(T::DbWeight::get().writes(12_u64)) } fn pay_program_rent() -> Weight { // Proof Size summary in bytes: - // Measured: `886` - // Estimated: `21261` - // Minimum execution time: 54_005_000 picoseconds. - Weight::from_parts(55_095_000, 21261) + // Measured: `992` + // Estimated: `21579` + // Minimum execution time: 55_980_000 picoseconds. + Weight::from_parts(56_766_000, 21579) .saturating_add(T::DbWeight::get().reads(7_u64)) .saturating_add(T::DbWeight::get().writes(6_u64)) } fn resume_session_init() -> Weight { // Proof Size summary in bytes: - // Measured: `534` - // Estimated: `17070` - // Minimum execution time: 28_880_000 picoseconds. - Weight::from_parts(29_583_000, 17070) + // Measured: `638` + // Estimated: `17486` + // Minimum execution time: 29_973_000 picoseconds. + Weight::from_parts(31_008_000, 17486) .saturating_add(T::DbWeight::get().reads(6_u64)) .saturating_add(T::DbWeight::get().writes(4_u64)) } @@ -304,22 +304,22 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `355` // Estimated: `7640` - // Minimum execution time: 7_744_000 picoseconds. - Weight::from_parts(4_233_092, 7640) - // Standard Error: 39_690 - .saturating_add(Weight::from_parts(14_033_179, 0).saturating_mul(c.into())) + // Minimum execution time: 8_054_000 picoseconds. + Weight::from_parts(8_342_000, 7640) + // Standard Error: 17_771 + .saturating_add(Weight::from_parts(13_335_661, 0).saturating_mul(c.into())) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(2_u64)) } /// The range of component `c` is `[0, 2044]`. fn resume_session_commit(c: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1297 + c * (16389 ±0)` - // Estimated: `40898 + c * (131112 ±0)` - // Minimum execution time: 70_301_000 picoseconds. - Weight::from_parts(70_991_000, 40898) - // Standard Error: 177_223 - .saturating_add(Weight::from_parts(54_687_249, 0).saturating_mul(c.into())) + // Measured: `1593 + c * (16389 ±0)` + // Estimated: `43266 + c * (131112 ±0)` + // Minimum execution time: 72_178_000 picoseconds. + Weight::from_parts(73_341_000, 43266) + // Standard Error: 167_723 + .saturating_add(Weight::from_parts(54_442_045, 0).saturating_mul(c.into())) .saturating_add(T::DbWeight::get().reads(11_u64)) .saturating_add(T::DbWeight::get().writes(9_u64)) .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(c.into()))) @@ -328,97 +328,97 @@ impl pallet_gear::WeightInfo for SubstrateWeight { /// The range of component `c` is `[0, 250]`. fn upload_code(c: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `10` - // Estimated: `4990` - // Minimum execution time: 61_715_000 picoseconds. - Weight::from_parts(40_384_385, 4990) - // Standard Error: 57_496 - .saturating_add(Weight::from_parts(53_210_788, 0).saturating_mul(c.into())) + // Measured: `113` + // Estimated: `5402` + // Minimum execution time: 78_662_000 picoseconds. + Weight::from_parts(42_066_175, 5402) + // Standard Error: 52_075 + .saturating_add(Weight::from_parts(60_249_549, 0).saturating_mul(c.into())) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(4_u64)) } /// The range of component `s` is `[0, 4194304]`. fn create_program(s: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `671` - // Estimated: `38638` - // Minimum execution time: 63_077_000 picoseconds. - Weight::from_parts(96_840_506, 38638) - // Standard Error: 0 - .saturating_add(Weight::from_parts(2_609, 0).saturating_mul(s.into())) - .saturating_add(T::DbWeight::get().reads(13_u64)) - .saturating_add(T::DbWeight::get().writes(10_u64)) + // Measured: `1111` + // Estimated: `50600` + // Minimum execution time: 94_321_000 picoseconds. + Weight::from_parts(129_113_540, 50600) + // Standard Error: 1 + .saturating_add(Weight::from_parts(2_625, 0).saturating_mul(s.into())) + .saturating_add(T::DbWeight::get().reads(15_u64)) + .saturating_add(T::DbWeight::get().writes(12_u64)) } /// The range of component `c` is `[0, 250]`. /// The range of component `s` is `[0, 4194304]`. fn upload_program(c: u32, s: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `235` - // Estimated: `34312` - // Minimum execution time: 11_049_858_000 picoseconds. - Weight::from_parts(11_090_406_000, 34312) - // Standard Error: 517_330 - .saturating_add(Weight::from_parts(25_497_137, 0).saturating_mul(c.into())) - // Standard Error: 30 - .saturating_add(Weight::from_parts(910, 0).saturating_mul(s.into())) - .saturating_add(T::DbWeight::get().reads(13_u64)) - .saturating_add(T::DbWeight::get().writes(14_u64)) + // Measured: `521` + // Estimated: `45152` + // Minimum execution time: 11_148_491_000 picoseconds. + Weight::from_parts(21_065_971, 45152) + // Standard Error: 173_883 + .saturating_add(Weight::from_parts(60_839_567, 0).saturating_mul(c.into())) + // Standard Error: 10 + .saturating_add(Weight::from_parts(2_652, 0).saturating_mul(s.into())) + .saturating_add(T::DbWeight::get().reads(15_u64)) + .saturating_add(T::DbWeight::get().writes(16_u64)) } /// The range of component `p` is `[0, 2097152]`. fn send_message(p: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `348` - // Estimated: `23853` - // Minimum execution time: 56_305_000 picoseconds. - Weight::from_parts(38_705_997, 23853) + // Measured: `531` + // Estimated: `31266` + // Minimum execution time: 73_302_000 picoseconds. + Weight::from_parts(47_279_667, 31266) // Standard Error: 1 - .saturating_add(Weight::from_parts(1_034, 0).saturating_mul(p.into())) - .saturating_add(T::DbWeight::get().reads(9_u64)) - .saturating_add(T::DbWeight::get().writes(8_u64)) + .saturating_add(Weight::from_parts(1_055, 0).saturating_mul(p.into())) + .saturating_add(T::DbWeight::get().reads(11_u64)) + .saturating_add(T::DbWeight::get().writes(10_u64)) } /// The range of component `p` is `[0, 2097152]`. fn send_reply(p: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `978` - // Estimated: `42227` - // Minimum execution time: 83_033_000 picoseconds. - Weight::from_parts(69_135_468, 42227) - // Standard Error: 1 - .saturating_add(Weight::from_parts(1_035, 0).saturating_mul(p.into())) - .saturating_add(T::DbWeight::get().reads(13_u64)) - .saturating_add(T::DbWeight::get().writes(10_u64)) + // Measured: `1371` + // Estimated: `54435` + // Minimum execution time: 124_173_000 picoseconds. + Weight::from_parts(96_458_887, 54435) + // Standard Error: 2 + .saturating_add(Weight::from_parts(1_078, 0).saturating_mul(p.into())) + .saturating_add(T::DbWeight::get().reads(16_u64)) + .saturating_add(T::DbWeight::get().writes(13_u64)) } /// The range of component `q` is `[1, 512]`. - fn initial_allocation(q: u32, ) -> Weight { + fn initial_allocation(_q: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `760` - // Estimated: `74319` - // Minimum execution time: 295_535_000 picoseconds. - Weight::from_parts(306_791_413, 74319) - // Standard Error: 1_111 - .saturating_add(Weight::from_parts(1_568, 0).saturating_mul(q.into())) - .saturating_add(T::DbWeight::get().reads(27_u64)) - .saturating_add(T::DbWeight::get().writes(22_u64)) + // Measured: `1893` + // Estimated: `114612` + // Minimum execution time: 365_983_000 picoseconds. + Weight::from_parts(387_416_952, 114612) + .saturating_add(T::DbWeight::get().reads(33_u64)) + .saturating_add(T::DbWeight::get().writes(26_u64)) } /// The range of component `q` is `[0, 512]`. - fn alloc_in_handle(_q: u32, ) -> Weight { + fn alloc_in_handle(q: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `760` - // Estimated: `74319` - // Minimum execution time: 309_253_000 picoseconds. - Weight::from_parts(323_694_389, 74319) - .saturating_add(T::DbWeight::get().reads(27_u64)) - .saturating_add(T::DbWeight::get().writes(22_u64)) + // Measured: `1893` + // Estimated: `114612` + // Minimum execution time: 380_430_000 picoseconds. + Weight::from_parts(403_376_118, 114612) + // Standard Error: 2_451 + .saturating_add(Weight::from_parts(1_137, 0).saturating_mul(q.into())) + .saturating_add(T::DbWeight::get().reads(33_u64)) + .saturating_add(T::DbWeight::get().writes(26_u64)) } /// The range of component `c` is `[0, 512]`. fn reinstrument_per_kb(c: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `211 + c * (1075 ±0)` // Estimated: `3899 + c * (2150 ±0)` - // Minimum execution time: 44_806_000 picoseconds. - Weight::from_parts(45_498_000, 3899) - // Standard Error: 44_467 - .saturating_add(Weight::from_parts(54_603_581, 0).saturating_mul(c.into())) + // Minimum execution time: 58_080_000 picoseconds. + Weight::from_parts(58_601_000, 3899) + // Standard Error: 36_083 + .saturating_add(Weight::from_parts(58_395_643, 0).saturating_mul(c.into())) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(2_u64)) .saturating_add(Weight::from_parts(0, 2150).saturating_mul(c.into())) @@ -428,630 +428,628 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 82_307_000 picoseconds. - Weight::from_parts(84_226_000, 0) - // Standard Error: 4_203_577 - .saturating_add(Weight::from_parts(574_493_471, 0).saturating_mul(r.into())) + // Minimum execution time: 91_412_000 picoseconds. + Weight::from_parts(94_168_000, 0) + // Standard Error: 3_806_298 + .saturating_add(Weight::from_parts(673_774_453, 0).saturating_mul(r.into())) } /// The range of component `p` is `[1, 512]`. fn alloc_per_page(p: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 309_893_000 picoseconds. - Weight::from_parts(234_558_588, 0) - // Standard Error: 7_966 - .saturating_add(Weight::from_parts(32_022_587, 0).saturating_mul(p.into())) + // Minimum execution time: 452_549_000 picoseconds. + Weight::from_parts(398_963_700, 0) + // Standard Error: 7_042 + .saturating_add(Weight::from_parts(29_406_609, 0).saturating_mul(p.into())) } /// The range of component `r` is `[0, 20]`. fn free(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 142_319_000 picoseconds. - Weight::from_parts(121_865_521, 0) - // Standard Error: 314_080 - .saturating_add(Weight::from_parts(64_422_856, 0).saturating_mul(r.into())) + // Minimum execution time: 207_052_000 picoseconds. + Weight::from_parts(209_606_478, 0) + // Standard Error: 255_281 + .saturating_add(Weight::from_parts(62_959_531, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 256]`. fn gr_reserve_gas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 85_527_000 picoseconds. - Weight::from_parts(91_967_528, 0) - // Standard Error: 3_856 - .saturating_add(Weight::from_parts(2_363_669, 0).saturating_mul(r.into())) + // Minimum execution time: 97_729_000 picoseconds. + Weight::from_parts(105_964_750, 0) + // Standard Error: 4_847 + .saturating_add(Weight::from_parts(2_433_966, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 256]`. fn gr_unreserve_gas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 144_133_000 picoseconds. - Weight::from_parts(156_991_945, 0) - // Standard Error: 24_223 - .saturating_add(Weight::from_parts(2_431_525, 0).saturating_mul(r.into())) + // Minimum execution time: 175_010_000 picoseconds. + Weight::from_parts(229_153_209, 0) + // Standard Error: 17_116 + .saturating_add(Weight::from_parts(1_991_260, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_system_reserve_gas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 86_811_000 picoseconds. - Weight::from_parts(101_122_470, 0) - // Standard Error: 303_533 - .saturating_add(Weight::from_parts(92_415_204, 0).saturating_mul(r.into())) + // Minimum execution time: 94_696_000 picoseconds. + Weight::from_parts(119_674_535, 0) + // Standard Error: 387_178 + .saturating_add(Weight::from_parts(98_102_856, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_message_id(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_453_000 picoseconds. - Weight::from_parts(79_049_804, 0) - // Standard Error: 305_992 - .saturating_add(Weight::from_parts(79_382_630, 0).saturating_mul(r.into())) + // Minimum execution time: 95_794_000 picoseconds. + Weight::from_parts(89_931_979, 0) + // Standard Error: 371_349 + .saturating_add(Weight::from_parts(86_524_059, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_program_id(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 82_650_000 picoseconds. - Weight::from_parts(79_085_060, 0) - // Standard Error: 293_080 - .saturating_add(Weight::from_parts(77_346_019, 0).saturating_mul(r.into())) + // Minimum execution time: 97_924_000 picoseconds. + Weight::from_parts(84_041_201, 0) + // Standard Error: 327_841 + .saturating_add(Weight::from_parts(95_483_315, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_source(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_545_000 picoseconds. - Weight::from_parts(72_777_984, 0) - // Standard Error: 351_302 - .saturating_add(Weight::from_parts(80_634_984, 0).saturating_mul(r.into())) + // Minimum execution time: 97_122_000 picoseconds. + Weight::from_parts(86_789_268, 0) + // Standard Error: 353_259 + .saturating_add(Weight::from_parts(85_698_317, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_value(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_245_000 picoseconds. - Weight::from_parts(76_181_868, 0) - // Standard Error: 354_266 - .saturating_add(Weight::from_parts(79_459_120, 0).saturating_mul(r.into())) + // Minimum execution time: 94_821_000 picoseconds. + Weight::from_parts(92_694_130, 0) + // Standard Error: 340_146 + .saturating_add(Weight::from_parts(84_623_945, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_value_available(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 85_064_000 picoseconds. - Weight::from_parts(77_882_516, 0) - // Standard Error: 377_997 - .saturating_add(Weight::from_parts(78_533_852, 0).saturating_mul(r.into())) + // Minimum execution time: 93_840_000 picoseconds. + Weight::from_parts(87_888_572, 0) + // Standard Error: 369_465 + .saturating_add(Weight::from_parts(85_638_902, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_gas_available(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_522_000 picoseconds. - Weight::from_parts(66_328_137, 0) - // Standard Error: 360_143 - .saturating_add(Weight::from_parts(79_838_604, 0).saturating_mul(r.into())) + // Minimum execution time: 98_597_000 picoseconds. + Weight::from_parts(86_642_386, 0) + // Standard Error: 362_257 + .saturating_add(Weight::from_parts(85_598_887, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_size(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_961_000 picoseconds. - Weight::from_parts(72_789_065, 0) - // Standard Error: 366_577 - .saturating_add(Weight::from_parts(79_031_060, 0).saturating_mul(r.into())) + // Minimum execution time: 94_546_000 picoseconds. + Weight::from_parts(91_466_289, 0) + // Standard Error: 344_423 + .saturating_add(Weight::from_parts(84_318_848, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_read(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 700_686_000 picoseconds. - Weight::from_parts(749_297_529, 0) - // Standard Error: 383_897 - .saturating_add(Weight::from_parts(132_242_102, 0).saturating_mul(r.into())) + // Minimum execution time: 578_036_000 picoseconds. + Weight::from_parts(696_140_951, 0) + // Standard Error: 559_498 + .saturating_add(Weight::from_parts(149_397_501, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_read_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 830_957_000 picoseconds. - Weight::from_parts(850_017_000, 0) - // Standard Error: 67_693 - .saturating_add(Weight::from_parts(13_570_326, 0).saturating_mul(n.into())) + // Minimum execution time: 723_788_000 picoseconds. + Weight::from_parts(740_225_000, 0) + // Standard Error: 52_895 + .saturating_add(Weight::from_parts(13_188_120, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_block_height(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_261_000 picoseconds. - Weight::from_parts(70_573_139, 0) - // Standard Error: 351_239 - .saturating_add(Weight::from_parts(80_441_776, 0).saturating_mul(r.into())) + // Minimum execution time: 99_012_000 picoseconds. + Weight::from_parts(88_269_135, 0) + // Standard Error: 296_136 + .saturating_add(Weight::from_parts(92_296_104, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_block_timestamp(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_164_000 picoseconds. - Weight::from_parts(70_866_987, 0) - // Standard Error: 346_107 - .saturating_add(Weight::from_parts(82_471_591, 0).saturating_mul(r.into())) + // Minimum execution time: 93_803_000 picoseconds. + Weight::from_parts(87_097_769, 0) + // Standard Error: 367_325 + .saturating_add(Weight::from_parts(84_987_043, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 20]`. fn gr_random(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 81_192_000 picoseconds. - Weight::from_parts(101_814_078, 0) - // Standard Error: 391_508 - .saturating_add(Weight::from_parts(166_873_282, 0).saturating_mul(n.into())) + // Minimum execution time: 96_663_000 picoseconds. + Weight::from_parts(105_357_427, 0) + // Standard Error: 366_135 + .saturating_add(Weight::from_parts(172_109_201, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_deposit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_974_000 picoseconds. - Weight::from_parts(87_244_000, 0) - // Standard Error: 3_619_557 - .saturating_add(Weight::from_parts(749_950_767, 0).saturating_mul(r.into())) + // Minimum execution time: 99_210_000 picoseconds. + Weight::from_parts(102_217_000, 0) + // Standard Error: 4_527_119 + .saturating_add(Weight::from_parts(845_784_967, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 81_612_000 picoseconds. - Weight::from_parts(147_822_399, 0) - // Standard Error: 421_408 - .saturating_add(Weight::from_parts(250_730_230, 0).saturating_mul(r.into())) + // Minimum execution time: 96_579_000 picoseconds. + Weight::from_parts(162_452_429, 0) + // Standard Error: 416_836 + .saturating_add(Weight::from_parts(257_900_517, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_send_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 332_130_000 picoseconds. - Weight::from_parts(337_780_000, 0) - // Standard Error: 52_652 - .saturating_add(Weight::from_parts(20_743_155, 0).saturating_mul(n.into())) + // Minimum execution time: 353_526_000 picoseconds. + Weight::from_parts(358_025_000, 0) + // Standard Error: 61_984 + .saturating_add(Weight::from_parts(21_521_461, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 82_722_000 picoseconds. - Weight::from_parts(147_881_270, 0) - // Standard Error: 390_429 - .saturating_add(Weight::from_parts(259_701_373, 0).saturating_mul(r.into())) + // Minimum execution time: 94_822_000 picoseconds. + Weight::from_parts(168_431_611, 0) + // Standard Error: 378_696 + .saturating_add(Weight::from_parts(263_135_958, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_send_wgas_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 337_753_000 picoseconds. - Weight::from_parts(343_454_000, 0) - // Standard Error: 66_604 - .saturating_add(Weight::from_parts(21_189_034, 0).saturating_mul(n.into())) + // Minimum execution time: 351_828_000 picoseconds. + Weight::from_parts(355_382_000, 0) + // Standard Error: 60_589 + .saturating_add(Weight::from_parts(21_325_400, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_input(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 708_454_000 picoseconds. - Weight::from_parts(775_673_824, 0) - // Standard Error: 380_634 - .saturating_add(Weight::from_parts(268_253_890, 0).saturating_mul(r.into())) + // Minimum execution time: 569_384_000 picoseconds. + Weight::from_parts(638_474_730, 0) + // Standard Error: 425_903 + .saturating_add(Weight::from_parts(275_691_711, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_input_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 706_799_000 picoseconds. - Weight::from_parts(782_052_003, 0) - // Standard Error: 385_065 - .saturating_add(Weight::from_parts(265_280_556, 0).saturating_mul(r.into())) + // Minimum execution time: 573_053_000 picoseconds. + Weight::from_parts(640_078_802, 0) + // Standard Error: 475_389 + .saturating_add(Weight::from_parts(284_337_155, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_init(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_511_000 picoseconds. - Weight::from_parts(61_459_678, 0) - // Standard Error: 362_497 - .saturating_add(Weight::from_parts(87_903_947, 0).saturating_mul(r.into())) + // Minimum execution time: 98_223_000 picoseconds. + Weight::from_parts(85_732_985, 0) + // Standard Error: 336_308 + .saturating_add(Weight::from_parts(92_936_006, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_push(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_676_718_000 picoseconds. - Weight::from_parts(1_838_206_733, 0) - // Standard Error: 440_793 - .saturating_add(Weight::from_parts(156_352_100, 0).saturating_mul(r.into())) + // Minimum execution time: 1_822_621_000 picoseconds. + Weight::from_parts(1_951_955_018, 0) + // Standard Error: 339_415 + .saturating_add(Weight::from_parts(157_557_756, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_send_push_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 284_222_000 picoseconds. - Weight::from_parts(293_316_000, 0) - // Standard Error: 54_796 - .saturating_add(Weight::from_parts(30_939_288, 0).saturating_mul(n.into())) + // Minimum execution time: 314_296_000 picoseconds. + Weight::from_parts(317_522_000, 0) + // Standard Error: 61_360 + .saturating_add(Weight::from_parts(29_499_741, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_commit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_682_466_000 picoseconds. - Weight::from_parts(1_829_413_701, 0) - // Standard Error: 510_421 - .saturating_add(Weight::from_parts(216_009_232, 0).saturating_mul(r.into())) + // Minimum execution time: 1_835_106_000 picoseconds. + Weight::from_parts(1_948_516_646, 0) + // Standard Error: 382_008 + .saturating_add(Weight::from_parts(214_812_508, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_commit_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_681_160_000 picoseconds. - Weight::from_parts(1_819_797_788, 0) - // Standard Error: 453_707 - .saturating_add(Weight::from_parts(215_589_534, 0).saturating_mul(r.into())) + // Minimum execution time: 1_827_496_000 picoseconds. + Weight::from_parts(1_949_190_773, 0) + // Standard Error: 340_175 + .saturating_add(Weight::from_parts(218_001_536, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reservation_send(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 242_556_000 picoseconds. - Weight::from_parts(314_306_159, 0) - // Standard Error: 376_142 - .saturating_add(Weight::from_parts(260_614_468, 0).saturating_mul(r.into())) + // Minimum execution time: 264_306_000 picoseconds. + Weight::from_parts(363_536_651, 0) + // Standard Error: 467_914 + .saturating_add(Weight::from_parts(265_564_072, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reservation_send_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 495_430_000 picoseconds. - Weight::from_parts(502_714_000, 0) - // Standard Error: 52_049 - .saturating_add(Weight::from_parts(21_259_132, 0).saturating_mul(n.into())) + // Minimum execution time: 523_150_000 picoseconds. + Weight::from_parts(535_842_000, 0) + // Standard Error: 65_412 + .saturating_add(Weight::from_parts(21_698_063, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reservation_send_commit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_809_658_000 picoseconds. - Weight::from_parts(2_002_681_446, 0) - // Standard Error: 414_919 - .saturating_add(Weight::from_parts(227_942_929, 0).saturating_mul(r.into())) + // Minimum execution time: 1_974_743_000 picoseconds. + Weight::from_parts(2_096_494_995, 0) + // Standard Error: 474_778 + .saturating_add(Weight::from_parts(232_524_299, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 80_821_000 picoseconds. - Weight::from_parts(84_783_126, 0) - // Standard Error: 234_696 - .saturating_add(Weight::from_parts(22_124_873, 0).saturating_mul(r.into())) + // Minimum execution time: 94_139_000 picoseconds. + Weight::from_parts(101_775_569, 0) + // Standard Error: 452_439 + .saturating_add(Weight::from_parts(16_839_430, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reply_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 100_040_000 picoseconds. - Weight::from_parts(92_861_700, 0) - // Standard Error: 1_021 - .saturating_add(Weight::from_parts(419_414, 0).saturating_mul(n.into())) + // Minimum execution time: 112_050_000 picoseconds. + Weight::from_parts(102_205_366, 0) + // Standard Error: 1_008 + .saturating_add(Weight::from_parts(431_304, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 80_986_000 picoseconds. - Weight::from_parts(85_723_530, 0) - // Standard Error: 278_519 - .saturating_add(Weight::from_parts(19_484_469, 0).saturating_mul(r.into())) + // Minimum execution time: 93_528_000 picoseconds. + Weight::from_parts(99_748_422, 0) + // Standard Error: 396_992 + .saturating_add(Weight::from_parts(20_536_877, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reply_wgas_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 104_879_000 picoseconds. - Weight::from_parts(88_056_044, 0) - // Standard Error: 1_087 - .saturating_add(Weight::from_parts(427_201, 0).saturating_mul(n.into())) + // Minimum execution time: 117_832_000 picoseconds. + Weight::from_parts(104_552_847, 0) + // Standard Error: 1_402 + .saturating_add(Weight::from_parts(432_018, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply_commit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 80_548_000 picoseconds. - Weight::from_parts(84_139_208, 0) - // Standard Error: 235_150 - .saturating_add(Weight::from_parts(17_533_491, 0).saturating_mul(r.into())) + // Minimum execution time: 93_325_000 picoseconds. + Weight::from_parts(101_074_097, 0) + // Standard Error: 454_790 + .saturating_add(Weight::from_parts(20_838_102, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply_commit_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_118_000 picoseconds. - Weight::from_parts(88_086_604, 0) - // Standard Error: 244_958 - .saturating_add(Weight::from_parts(17_286_195, 0).saturating_mul(r.into())) + // Minimum execution time: 93_800_000 picoseconds. + Weight::from_parts(102_249_326, 0) + // Standard Error: 463_488 + .saturating_add(Weight::from_parts(15_991_473, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_push(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_393_000 picoseconds. - Weight::from_parts(132_631_342, 0) - // Standard Error: 436_134 - .saturating_add(Weight::from_parts(141_520_417, 0).saturating_mul(r.into())) + // Minimum execution time: 93_153_000 picoseconds. + Weight::from_parts(121_452_989, 0) + // Standard Error: 390_540 + .saturating_add(Weight::from_parts(145_641_178, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 8192]`. fn gr_reply_push_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 97_567_000 picoseconds. - Weight::from_parts(99_600_000, 0) - // Standard Error: 2_187 - .saturating_add(Weight::from_parts(639_729, 0).saturating_mul(n.into())) + // Minimum execution time: 115_529_000 picoseconds. + Weight::from_parts(120_413_000, 0) + // Standard Error: 3_105 + .saturating_add(Weight::from_parts(640_863, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply_input(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 696_739_000 picoseconds. - Weight::from_parts(711_247_336, 0) - // Standard Error: 1_403_605 - .saturating_add(Weight::from_parts(15_869_663, 0).saturating_mul(r.into())) + // Minimum execution time: 566_859_000 picoseconds. + Weight::from_parts(631_111_316, 0) + // Standard Error: 7_012_228 + .saturating_add(Weight::from_parts(21_896_983, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. - fn gr_reply_input_wgas(r: u32, ) -> Weight { + fn gr_reply_input_wgas(_r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 697_432_000 picoseconds. - Weight::from_parts(712_096_565, 0) - // Standard Error: 1_674_352 - .saturating_add(Weight::from_parts(32_103_934, 0).saturating_mul(r.into())) + // Minimum execution time: 565_382_000 picoseconds. + Weight::from_parts(613_048_008, 0) } /// The range of component `r` is `[0, 1]`. fn gr_reservation_reply(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 92_685_000 picoseconds. - Weight::from_parts(96_156_389, 0) - // Standard Error: 262_969 - .saturating_add(Weight::from_parts(8_983_510, 0).saturating_mul(r.into())) + // Minimum execution time: 104_401_000 picoseconds. + Weight::from_parts(112_651_320, 0) + // Standard Error: 438_590 + .saturating_add(Weight::from_parts(11_095_379, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reservation_reply_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 105_746_000 picoseconds. - Weight::from_parts(89_918_273, 0) - // Standard Error: 1_055 - .saturating_add(Weight::from_parts(427_838, 0).saturating_mul(n.into())) + // Minimum execution time: 115_615_000 picoseconds. + Weight::from_parts(112_987_750, 0) + // Standard Error: 960 + .saturating_add(Weight::from_parts(423_774, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reservation_reply_commit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 95_634_000 picoseconds. - Weight::from_parts(99_574_926, 0) - // Standard Error: 267_301 - .saturating_add(Weight::from_parts(3_125_673, 0).saturating_mul(r.into())) + // Minimum execution time: 105_056_000 picoseconds. + Weight::from_parts(113_735_922, 0) + // Standard Error: 466_586 + .saturating_add(Weight::from_parts(5_305_577, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reservation_reply_commit_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 99_268_000 picoseconds. - Weight::from_parts(93_140_981, 0) - // Standard Error: 1_101 - .saturating_add(Weight::from_parts(419_078, 0).saturating_mul(n.into())) + // Minimum execution time: 113_897_000 picoseconds. + Weight::from_parts(112_616_408, 0) + // Standard Error: 1_722 + .saturating_add(Weight::from_parts(428_420, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_to(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_167_000 picoseconds. - Weight::from_parts(80_305_860, 0) - // Standard Error: 357_986 - .saturating_add(Weight::from_parts(80_422_820, 0).saturating_mul(r.into())) + // Minimum execution time: 93_845_000 picoseconds. + Weight::from_parts(97_247_314, 0) + // Standard Error: 366_814 + .saturating_add(Weight::from_parts(85_900_587, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_signal_from(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 81_137_000 picoseconds. - Weight::from_parts(76_881_656, 0) - // Standard Error: 302_504 - .saturating_add(Weight::from_parts(80_036_963, 0).saturating_mul(r.into())) + // Minimum execution time: 93_761_000 picoseconds. + Weight::from_parts(92_637_129, 0) + // Standard Error: 309_799 + .saturating_add(Weight::from_parts(85_725_727, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_push_input(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 707_922_000 picoseconds. - Weight::from_parts(767_820_244, 0) - // Standard Error: 418_647 - .saturating_add(Weight::from_parts(97_993_049, 0).saturating_mul(r.into())) + // Minimum execution time: 565_388_000 picoseconds. + Weight::from_parts(606_358_854, 0) + // Standard Error: 430_766 + .saturating_add(Weight::from_parts(108_769_267, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reply_push_input_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 724_683_000 picoseconds. - Weight::from_parts(732_157_836, 0) - // Standard Error: 618 - .saturating_add(Weight::from_parts(151_809, 0).saturating_mul(n.into())) + // Minimum execution time: 591_660_000 picoseconds. + Weight::from_parts(597_035_528, 0) + // Standard Error: 2_641 + .saturating_add(Weight::from_parts(153_781, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_push_input(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_304_055_000 picoseconds. - Weight::from_parts(2_435_844_780, 0) - // Standard Error: 420_214 - .saturating_add(Weight::from_parts(120_405_108, 0).saturating_mul(r.into())) + // Minimum execution time: 2_317_147_000 picoseconds. + Weight::from_parts(2_514_940_964, 0) + // Standard Error: 546_319 + .saturating_add(Weight::from_parts(128_825_542, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_send_push_input_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_431_524_000 picoseconds. - Weight::from_parts(2_669_711_936, 0) - // Standard Error: 12_819 - .saturating_add(Weight::from_parts(13_546_418, 0).saturating_mul(n.into())) + // Minimum execution time: 2_560_344_000 picoseconds. + Weight::from_parts(2_512_409_449, 0) + // Standard Error: 15_466 + .saturating_add(Weight::from_parts(12_395_144, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_debug(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 85_238_000 picoseconds. - Weight::from_parts(104_905_012, 0) - // Standard Error: 392_000 - .saturating_add(Weight::from_parts(116_570_175, 0).saturating_mul(r.into())) + // Minimum execution time: 97_996_000 picoseconds. + Weight::from_parts(130_630_238, 0) + // Standard Error: 414_418 + .saturating_add(Weight::from_parts(114_735_577, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_debug_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 143_132_000 picoseconds. - Weight::from_parts(145_448_000, 0) - // Standard Error: 51_056 - .saturating_add(Weight::from_parts(25_497_066, 0).saturating_mul(n.into())) + // Minimum execution time: 157_513_000 picoseconds. + Weight::from_parts(160_584_000, 0) + // Standard Error: 57_227 + .saturating_add(Weight::from_parts(25_738_939, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_code(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_055_000 picoseconds. - Weight::from_parts(75_514_507, 0) - // Standard Error: 342_511 - .saturating_add(Weight::from_parts(78_022_368, 0).saturating_mul(r.into())) + // Minimum execution time: 92_652_000 picoseconds. + Weight::from_parts(88_138_429, 0) + // Standard Error: 330_537 + .saturating_add(Weight::from_parts(83_235_234, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_exit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_725_000 picoseconds. - Weight::from_parts(87_574_873, 0) - // Standard Error: 249_331 - .saturating_add(Weight::from_parts(24_890_126, 0).saturating_mul(r.into())) + // Minimum execution time: 93_824_000 picoseconds. + Weight::from_parts(102_740_497, 0) + // Standard Error: 428_593 + .saturating_add(Weight::from_parts(23_682_102, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_leave(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 82_761_000 picoseconds. - Weight::from_parts(86_511_404, 0) - // Standard Error: 240_746 - .saturating_add(Weight::from_parts(16_767_395, 0).saturating_mul(r.into())) + // Minimum execution time: 92_530_000 picoseconds. + Weight::from_parts(101_410_861, 0) + // Standard Error: 432_236 + .saturating_add(Weight::from_parts(12_196_938, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_wait(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_794_000 picoseconds. - Weight::from_parts(88_401_167, 0) - // Standard Error: 217_438 - .saturating_add(Weight::from_parts(11_267_632, 0).saturating_mul(r.into())) + // Minimum execution time: 93_402_000 picoseconds. + Weight::from_parts(102_285_877, 0) + // Standard Error: 466_463 + .saturating_add(Weight::from_parts(13_156_522, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_wait_for(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_664_000 picoseconds. - Weight::from_parts(89_193_048, 0) - // Standard Error: 336_699 - .saturating_add(Weight::from_parts(12_350_251, 0).saturating_mul(r.into())) + // Minimum execution time: 95_706_000 picoseconds. + Weight::from_parts(102_513_059, 0) + // Standard Error: 464_787 + .saturating_add(Weight::from_parts(13_986_540, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_wait_up_to(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_815_000 picoseconds. - Weight::from_parts(87_397_869, 0) - // Standard Error: 235_037 - .saturating_add(Weight::from_parts(16_313_030, 0).saturating_mul(r.into())) + // Minimum execution time: 93_057_000 picoseconds. + Weight::from_parts(99_083_869, 0) + // Standard Error: 378_747 + .saturating_add(Weight::from_parts(12_230_330, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_wake(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 139_190_000 picoseconds. - Weight::from_parts(186_267_428, 0) - // Standard Error: 346_204 - .saturating_add(Weight::from_parts(158_103_512, 0).saturating_mul(r.into())) + // Minimum execution time: 177_947_000 picoseconds. + Weight::from_parts(226_692_243, 0) + // Standard Error: 265_725 + .saturating_add(Weight::from_parts(156_938_838, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_create_program(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 96_748_000 picoseconds. - Weight::from_parts(148_556_306, 0) - // Standard Error: 400_680 - .saturating_add(Weight::from_parts(333_100_790, 0).saturating_mul(r.into())) + // Minimum execution time: 107_346_000 picoseconds. + Weight::from_parts(160_631_540, 0) + // Standard Error: 352_753 + .saturating_add(Weight::from_parts(338_685_448, 0).saturating_mul(r.into())) } /// The range of component `p` is `[0, 2048]`. /// The range of component `s` is `[1, 2048]`. @@ -1059,22 +1057,22 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 44_452_286_000 picoseconds. - Weight::from_parts(44_568_744_000, 0) - // Standard Error: 268_880 - .saturating_add(Weight::from_parts(7_444_126, 0).saturating_mul(p.into())) - // Standard Error: 268_867 - .saturating_add(Weight::from_parts(179_724_917, 0).saturating_mul(s.into())) + // Minimum execution time: 44_754_074_000 picoseconds. + Weight::from_parts(44_833_050_000, 0) + // Standard Error: 269_308 + .saturating_add(Weight::from_parts(7_629_892, 0).saturating_mul(p.into())) + // Standard Error: 269_294 + .saturating_add(Weight::from_parts(179_148_245, 0).saturating_mul(s.into())) } /// The range of component `r` is `[0, 20]`. fn gr_create_program_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 96_042_000 picoseconds. - Weight::from_parts(163_443_462, 0) - // Standard Error: 381_777 - .saturating_add(Weight::from_parts(338_839_702, 0).saturating_mul(r.into())) + // Minimum execution time: 108_278_000 picoseconds. + Weight::from_parts(161_208_126, 0) + // Standard Error: 368_644 + .saturating_add(Weight::from_parts(346_324_329, 0).saturating_mul(r.into())) } /// The range of component `p` is `[0, 2048]`. /// The range of component `s` is `[1, 2048]`. @@ -1082,32 +1080,32 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 42_724_116_000 picoseconds. - Weight::from_parts(42_849_968_000, 0) - // Standard Error: 263_445 - .saturating_add(Weight::from_parts(8_197_177, 0).saturating_mul(p.into())) - // Standard Error: 263_432 - .saturating_add(Weight::from_parts(180_050_572, 0).saturating_mul(s.into())) + // Minimum execution time: 44_266_209_000 picoseconds. + Weight::from_parts(44_559_345_000, 0) + // Standard Error: 270_420 + .saturating_add(Weight::from_parts(7_460_172, 0).saturating_mul(p.into())) + // Standard Error: 270_407 + .saturating_add(Weight::from_parts(179_211_260, 0).saturating_mul(s.into())) } /// The range of component `r` is `[0, 20]`. fn gr_pay_program_rent(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 86_607_000 picoseconds. - Weight::from_parts(100_957_693, 0) - // Standard Error: 29_067 - .saturating_add(Weight::from_parts(1_762_813, 0).saturating_mul(r.into())) + // Minimum execution time: 94_889_000 picoseconds. + Weight::from_parts(115_310_524, 0) + // Standard Error: 34_049 + .saturating_add(Weight::from_parts(1_916_607, 0).saturating_mul(r.into())) } /// The range of component `p` is `[0, 512]`. fn lazy_pages_signal_read(p: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `141` // Estimated: `1131 + p * (9900 ±0)` - // Minimum execution time: 87_305_000 picoseconds. - Weight::from_parts(108_825_748, 1131) - // Standard Error: 5_956 - .saturating_add(Weight::from_parts(11_809_647, 0).saturating_mul(p.into())) + // Minimum execution time: 97_825_000 picoseconds. + Weight::from_parts(251_440_245, 1131) + // Standard Error: 70_641 + .saturating_add(Weight::from_parts(15_652_952, 0).saturating_mul(p.into())) .saturating_add(T::DbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 9900).saturating_mul(p.into())) } @@ -1116,10 +1114,10 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `141` // Estimated: `1131 + p * (9900 ±0)` - // Minimum execution time: 87_531_000 picoseconds. - Weight::from_parts(88_749_000, 1131) - // Standard Error: 27_438 - .saturating_add(Weight::from_parts(35_435_114, 0).saturating_mul(p.into())) + // Minimum execution time: 96_761_000 picoseconds. + Weight::from_parts(100_398_000, 1131) + // Standard Error: 45_532 + .saturating_add(Weight::from_parts(39_790_625, 0).saturating_mul(p.into())) .saturating_add(T::DbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 9900).saturating_mul(p.into())) } @@ -1128,10 +1126,10 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `141` // Estimated: `5069931` - // Minimum execution time: 6_087_078_000 picoseconds. - Weight::from_parts(5_882_681_000, 5069931) - // Standard Error: 87_545 - .saturating_add(Weight::from_parts(37_047_042, 0).saturating_mul(p.into())) + // Minimum execution time: 7_471_807_000 picoseconds. + Weight::from_parts(7_440_591_962, 5069931) + // Standard Error: 168_373 + .saturating_add(Weight::from_parts(40_244_359, 0).saturating_mul(p.into())) .saturating_add(T::DbWeight::get().reads(2048_u64)) } /// The range of component `p` is `[0, 512]`. @@ -1139,10 +1137,10 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `1813 + p * (65580 ±0)` // Estimated: `1939 + p * (75482 ±0)` - // Minimum execution time: 85_432_000 picoseconds. - Weight::from_parts(87_001_000, 1939) - // Standard Error: 47_768 - .saturating_add(Weight::from_parts(47_598_234, 0).saturating_mul(p.into())) + // Minimum execution time: 97_303_000 picoseconds. + Weight::from_parts(98_185_000, 1939) + // Standard Error: 38_471 + .saturating_add(Weight::from_parts(55_016_921, 0).saturating_mul(p.into())) .saturating_add(T::DbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 75482).saturating_mul(p.into())) } @@ -1151,10 +1149,10 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `141` // Estimated: `1131 + p * (9900 ±0)` - // Minimum execution time: 92_594_000 picoseconds. - Weight::from_parts(93_795_036, 1131) - // Standard Error: 53_549 - .saturating_add(Weight::from_parts(35_797_869, 0).saturating_mul(p.into())) + // Minimum execution time: 102_497_000 picoseconds. + Weight::from_parts(104_932_685, 1131) + // Standard Error: 78_974 + .saturating_add(Weight::from_parts(39_257_150, 0).saturating_mul(p.into())) .saturating_add(T::DbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 9900).saturating_mul(p.into())) } @@ -1163,10 +1161,10 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `141` // Estimated: `1496 + p * (9883 ±2)` - // Minimum execution time: 769_397_000 picoseconds. - Weight::from_parts(792_321_925, 1496) - // Standard Error: 237_986 - .saturating_add(Weight::from_parts(48_847_504, 0).saturating_mul(p.into())) + // Minimum execution time: 612_308_000 picoseconds. + Weight::from_parts(642_079_999, 1496) + // Standard Error: 357_245 + .saturating_add(Weight::from_parts(46_518_860, 0).saturating_mul(p.into())) .saturating_add(T::DbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 9883).saturating_mul(p.into())) } @@ -1175,10 +1173,10 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `141` // Estimated: `317931` - // Minimum execution time: 1_113_735_000 picoseconds. - Weight::from_parts(1_148_020_828, 317931) - // Standard Error: 167_371 - .saturating_add(Weight::from_parts(47_795_831, 0).saturating_mul(p.into())) + // Minimum execution time: 1_068_248_000 picoseconds. + Weight::from_parts(1_080_741_205, 317931) + // Standard Error: 262_216 + .saturating_add(Weight::from_parts(50_047_907, 0).saturating_mul(p.into())) .saturating_add(T::DbWeight::get().reads(128_u64)) } /// The range of component `r` is `[0, 20]`. @@ -1186,885 +1184,883 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 4_154_000 picoseconds. - Weight::from_parts(4_280_364, 0) - // Standard Error: 8_638 - .saturating_add(Weight::from_parts(24_150_721, 0).saturating_mul(r.into())) + // Minimum execution time: 3_099_000 picoseconds. + Weight::from_parts(6_340_084, 0) + // Standard Error: 180_257 + .saturating_add(Weight::from_parts(74_666_091, 0).saturating_mul(r.into())) } /// The range of component `r` is `[50, 500]`. fn instr_i64load(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 4_339_689_000 picoseconds. - Weight::from_parts(4_202_598_633, 0) - // Standard Error: 74_721 - .saturating_add(Weight::from_parts(4_468_109, 0).saturating_mul(r.into())) + // Minimum execution time: 4_391_547_000 picoseconds. + Weight::from_parts(4_140_785_425, 0) + // Standard Error: 89_369 + .saturating_add(Weight::from_parts(5_769_622, 0).saturating_mul(r.into())) } /// The range of component `r` is `[50, 500]`. fn instr_i32load(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 4_343_068_000 picoseconds. - Weight::from_parts(4_226_706_212, 0) - // Standard Error: 60_538 - .saturating_add(Weight::from_parts(4_325_162, 0).saturating_mul(r.into())) + // Minimum execution time: 4_386_802_000 picoseconds. + Weight::from_parts(4_243_536_456, 0) + // Standard Error: 95_210 + .saturating_add(Weight::from_parts(5_278_131, 0).saturating_mul(r.into())) } /// The range of component `r` is `[50, 500]`. fn instr_i64store(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 11_409_473_000 picoseconds. - Weight::from_parts(11_882_222_938, 0) - // Standard Error: 194_167 - .saturating_add(Weight::from_parts(8_210_890, 0).saturating_mul(r.into())) + // Minimum execution time: 11_072_272_000 picoseconds. + Weight::from_parts(11_558_306_225, 0) + // Standard Error: 165_659 + .saturating_add(Weight::from_parts(9_828_260, 0).saturating_mul(r.into())) } /// The range of component `r` is `[50, 500]`. fn instr_i32store(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 10_212_512_000 picoseconds. - Weight::from_parts(10_628_957_808, 0) - // Standard Error: 170_508 - .saturating_add(Weight::from_parts(11_560_237, 0).saturating_mul(r.into())) + // Minimum execution time: 10_285_071_000 picoseconds. + Weight::from_parts(11_137_621_942, 0) + // Standard Error: 147_513 + .saturating_add(Weight::from_parts(9_014_757, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_select(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_229_000 picoseconds. - Weight::from_parts(2_319_000, 0) - // Standard Error: 9_576 - .saturating_add(Weight::from_parts(3_794_717, 0).saturating_mul(r.into())) + // Minimum execution time: 2_285_000 picoseconds. + Weight::from_parts(2_410_000, 0) + // Standard Error: 7_624 + .saturating_add(Weight::from_parts(3_864_490, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_if(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_265_000 picoseconds. - Weight::from_parts(2_353_000, 0) - // Standard Error: 5_018 - .saturating_add(Weight::from_parts(3_059_511, 0).saturating_mul(r.into())) + // Minimum execution time: 2_342_000 picoseconds. + Weight::from_parts(2_433_000, 0) + // Standard Error: 6_413 + .saturating_add(Weight::from_parts(3_120_732, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_br(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_287_000 picoseconds. - Weight::from_parts(3_531_925, 0) - // Standard Error: 1_167 - .saturating_add(Weight::from_parts(1_569_201, 0).saturating_mul(r.into())) + // Minimum execution time: 2_301_000 picoseconds. + Weight::from_parts(3_591_730, 0) + // Standard Error: 1_106 + .saturating_add(Weight::from_parts(1_565_415, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_br_if(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_294_000 picoseconds. - Weight::from_parts(2_359_000, 0) - // Standard Error: 9_672 - .saturating_add(Weight::from_parts(2_884_305, 0).saturating_mul(r.into())) + // Minimum execution time: 2_306_000 picoseconds. + Weight::from_parts(2_461_000, 0) + // Standard Error: 7_711 + .saturating_add(Weight::from_parts(2_932_880, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_br_table(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_256_000 picoseconds. - Weight::from_parts(2_344_000, 0) - // Standard Error: 8_373 - .saturating_add(Weight::from_parts(5_256_648, 0).saturating_mul(r.into())) + // Minimum execution time: 2_358_000 picoseconds. + Weight::from_parts(2_144_801, 0) + // Standard Error: 22_082 + .saturating_add(Weight::from_parts(5_266_139, 0).saturating_mul(r.into())) } /// The range of component `e` is `[1, 256]`. fn instr_br_table_per_entry(e: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 7_012_000 picoseconds. - Weight::from_parts(4_938_253, 0) - // Standard Error: 2_214 - .saturating_add(Weight::from_parts(151_870, 0).saturating_mul(e.into())) + // Minimum execution time: 6_803_000 picoseconds. + Weight::from_parts(5_374_690, 0) + // Standard Error: 1_699 + .saturating_add(Weight::from_parts(171_193, 0).saturating_mul(e.into())) } /// The range of component `r` is `[0, 50]`. fn instr_call_const(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_309_000 picoseconds. - Weight::from_parts(4_232_448, 0) - // Standard Error: 6_359 - .saturating_add(Weight::from_parts(2_596_672, 0).saturating_mul(r.into())) + // Minimum execution time: 2_431_000 picoseconds. + Weight::from_parts(4_875_813, 0) + // Standard Error: 8_258 + .saturating_add(Weight::from_parts(2_629_733, 0).saturating_mul(r.into())) } fn instr_i64const(r: u32, ) -> Weight { Weight::from_parts(0, 0) - .saturating_add(Weight::from_parts(2_596_672 - - 2_404_212, 0).saturating_mul(r.into())) + .saturating_add(Weight::from_parts(2_629_733 - + 2_421_700, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_call(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_287_000 picoseconds. - Weight::from_parts(4_432_470, 0) - // Standard Error: 11_941 - .saturating_add(Weight::from_parts(2_404_212, 0).saturating_mul(r.into())) + // Minimum execution time: 2_403_000 picoseconds. + Weight::from_parts(5_140_243, 0) + // Standard Error: 13_164 + .saturating_add(Weight::from_parts(2_421_700, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_call_indirect(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_776_000 picoseconds. - Weight::from_parts(12_954_286, 0) - // Standard Error: 30_568 - .saturating_add(Weight::from_parts(10_260_958, 0).saturating_mul(r.into())) + // Minimum execution time: 2_669_000 picoseconds. + Weight::from_parts(22_369_265, 0) + // Standard Error: 28_577 + .saturating_add(Weight::from_parts(9_740_558, 0).saturating_mul(r.into())) } /// The range of component `p` is `[0, 128]`. fn instr_call_indirect_per_param(p: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 11_935_000 picoseconds. - Weight::from_parts(1_635_475, 0) - // Standard Error: 7_669 - .saturating_add(Weight::from_parts(1_285_084, 0).saturating_mul(p.into())) + // Minimum execution time: 12_277_000 picoseconds. + Weight::from_parts(3_596_853, 0) + // Standard Error: 5_869 + .saturating_add(Weight::from_parts(1_258_605, 0).saturating_mul(p.into())) } /// The range of component `l` is `[0, 1024]`. - fn instr_call_per_local(l: u32, ) -> Weight { + fn instr_call_per_local(_l: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 5_316_000 picoseconds. - Weight::from_parts(5_699_758, 0) - // Standard Error: 13 - .saturating_add(Weight::from_parts(34, 0).saturating_mul(l.into())) + // Minimum execution time: 5_391_000 picoseconds. + Weight::from_parts(5_778_137, 0) } /// The range of component `r` is `[0, 50]`. fn instr_local_get(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_315_000 picoseconds. - Weight::from_parts(2_460_643, 0) - // Standard Error: 2_850 - .saturating_add(Weight::from_parts(235_587, 0).saturating_mul(r.into())) + // Minimum execution time: 4_835_000 picoseconds. + Weight::from_parts(6_065_483, 0) + // Standard Error: 3_006 + .saturating_add(Weight::from_parts(378_512, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_local_set(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_202_000 picoseconds. - Weight::from_parts(2_270_000, 0) - // Standard Error: 6_150 - .saturating_add(Weight::from_parts(730_523, 0).saturating_mul(r.into())) + // Minimum execution time: 4_722_000 picoseconds. + Weight::from_parts(3_902_309, 0) + // Standard Error: 5_742 + .saturating_add(Weight::from_parts(1_056_408, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_local_tee(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_244_000 picoseconds. - Weight::from_parts(2_338_000, 0) - // Standard Error: 5_205 - .saturating_add(Weight::from_parts(679_669, 0).saturating_mul(r.into())) + // Minimum execution time: 4_888_000 picoseconds. + Weight::from_parts(4_512_058, 0) + // Standard Error: 6_410 + .saturating_add(Weight::from_parts(1_001_510, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_global_get(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_412_000 picoseconds. - Weight::from_parts(2_087_064, 0) - // Standard Error: 9_824 - .saturating_add(Weight::from_parts(743_737, 0).saturating_mul(r.into())) + // Minimum execution time: 6_413_000 picoseconds. + Weight::from_parts(2_704_134, 0) + // Standard Error: 7_244 + .saturating_add(Weight::from_parts(804_200, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_global_set(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_388_000 picoseconds. - Weight::from_parts(6_512_000, 0) - // Standard Error: 7_958 - .saturating_add(Weight::from_parts(1_283_588, 0).saturating_mul(r.into())) + // Minimum execution time: 6_516_000 picoseconds. + Weight::from_parts(1_028_752, 0) + // Standard Error: 8_792 + .saturating_add(Weight::from_parts(1_494_630, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_memory_current(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_885_000 picoseconds. - Weight::from_parts(4_075_795, 0) - // Standard Error: 12_241 - .saturating_add(Weight::from_parts(6_965_908, 0).saturating_mul(r.into())) + // Minimum execution time: 5_560_000 picoseconds. + Weight::from_parts(1_126_442, 0) + // Standard Error: 14_476 + .saturating_add(Weight::from_parts(7_240_597, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64clz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_259_000 picoseconds. - Weight::from_parts(2_312_000, 0) - // Standard Error: 5_936 - .saturating_add(Weight::from_parts(3_299_707, 0).saturating_mul(r.into())) + // Minimum execution time: 2_299_000 picoseconds. + Weight::from_parts(2_449_000, 0) + // Standard Error: 7_416 + .saturating_add(Weight::from_parts(3_344_387, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32clz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_255_000 picoseconds. - Weight::from_parts(2_294_000, 0) - // Standard Error: 6_255 - .saturating_add(Weight::from_parts(2_999_382, 0).saturating_mul(r.into())) + // Minimum execution time: 2_389_000 picoseconds. + Weight::from_parts(2_551_000, 0) + // Standard Error: 5_708 + .saturating_add(Weight::from_parts(3_133_430, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64ctz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_236_000 picoseconds. - Weight::from_parts(2_271_000, 0) - // Standard Error: 6_896 - .saturating_add(Weight::from_parts(2_967_047, 0).saturating_mul(r.into())) + // Minimum execution time: 2_428_000 picoseconds. + Weight::from_parts(2_511_000, 0) + // Standard Error: 7_262 + .saturating_add(Weight::from_parts(3_192_675, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32ctz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_221_000 picoseconds. - Weight::from_parts(2_268_000, 0) - // Standard Error: 4_893 - .saturating_add(Weight::from_parts(2_579_110, 0).saturating_mul(r.into())) + // Minimum execution time: 2_333_000 picoseconds. + Weight::from_parts(2_426_000, 0) + // Standard Error: 4_554 + .saturating_add(Weight::from_parts(2_683_293, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64popcnt(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_256_000 picoseconds. - Weight::from_parts(2_304_000, 0) - // Standard Error: 3_852 - .saturating_add(Weight::from_parts(520_005, 0).saturating_mul(r.into())) + // Minimum execution time: 2_334_000 picoseconds. + Weight::from_parts(2_385_000, 0) + // Standard Error: 4_686 + .saturating_add(Weight::from_parts(631_609, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32popcnt(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_274_000 picoseconds. - Weight::from_parts(1_794_591, 0) - // Standard Error: 3_416 - .saturating_add(Weight::from_parts(359_819, 0).saturating_mul(r.into())) + // Minimum execution time: 2_356_000 picoseconds. + Weight::from_parts(1_221_890, 0) + // Standard Error: 3_960 + .saturating_add(Weight::from_parts(452_047, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64eqz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_189_000 picoseconds. - Weight::from_parts(2_287_000, 0) - // Standard Error: 10_307 - .saturating_add(Weight::from_parts(1_833_775, 0).saturating_mul(r.into())) + // Minimum execution time: 2_318_000 picoseconds. + Weight::from_parts(2_390_000, 0) + // Standard Error: 11_114 + .saturating_add(Weight::from_parts(1_916_122, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32eqz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_287_000 picoseconds. - Weight::from_parts(2_349_000, 0) - // Standard Error: 9_393 - .saturating_add(Weight::from_parts(1_178_942, 0).saturating_mul(r.into())) + // Minimum execution time: 2_436_000 picoseconds. + Weight::from_parts(2_504_000, 0) + // Standard Error: 7_104 + .saturating_add(Weight::from_parts(1_156_958, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32extend8s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_259_000 picoseconds. - Weight::from_parts(2_256_508, 0) - // Standard Error: 3_133 - .saturating_add(Weight::from_parts(326_908, 0).saturating_mul(r.into())) + // Minimum execution time: 2_276_000 picoseconds. + Weight::from_parts(1_708_596, 0) + // Standard Error: 2_843 + .saturating_add(Weight::from_parts(377_083, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32extend16s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_298_000 picoseconds. - Weight::from_parts(1_792_383, 0) - // Standard Error: 2_981 - .saturating_add(Weight::from_parts(325_072, 0).saturating_mul(r.into())) + // Minimum execution time: 2_386_000 picoseconds. + Weight::from_parts(1_424_415, 0) + // Standard Error: 3_599 + .saturating_add(Weight::from_parts(395_934, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extend8s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_218_000 picoseconds. - Weight::from_parts(236_190, 0) - // Standard Error: 5_791 - .saturating_add(Weight::from_parts(526_784, 0).saturating_mul(r.into())) + // Minimum execution time: 2_396_000 picoseconds. + Weight::from_parts(2_491_000, 0) + // Standard Error: 3_774 + .saturating_add(Weight::from_parts(516_281, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extend16s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_278_000 picoseconds. - Weight::from_parts(18_346, 0) - // Standard Error: 5_882 - .saturating_add(Weight::from_parts(538_848, 0).saturating_mul(r.into())) + // Minimum execution time: 2_308_000 picoseconds. + Weight::from_parts(548_192, 0) + // Standard Error: 4_583 + .saturating_add(Weight::from_parts(556_734, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extend32s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_213_000 picoseconds. - Weight::from_parts(2_322_000, 0) - // Standard Error: 4_502 - .saturating_add(Weight::from_parts(463_034, 0).saturating_mul(r.into())) + // Minimum execution time: 2_333_000 picoseconds. + Weight::from_parts(447_271, 0) + // Standard Error: 5_300 + .saturating_add(Weight::from_parts(535_915, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extendsi32(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_272_000 picoseconds. - Weight::from_parts(2_193_450, 0) - // Standard Error: 3_655 - .saturating_add(Weight::from_parts(304_226, 0).saturating_mul(r.into())) + // Minimum execution time: 2_340_000 picoseconds. + Weight::from_parts(1_639_695, 0) + // Standard Error: 3_519 + .saturating_add(Weight::from_parts(368_523, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extendui32(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_174_000 picoseconds. - Weight::from_parts(2_803_358, 0) - // Standard Error: 2_256 - .saturating_add(Weight::from_parts(163_489, 0).saturating_mul(r.into())) + // Minimum execution time: 2_305_000 picoseconds. + Weight::from_parts(2_843_474, 0) + // Standard Error: 1_950 + .saturating_add(Weight::from_parts(176_592, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32wrapi64(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_242_000 picoseconds. - Weight::from_parts(3_087_274, 0) - // Standard Error: 1_907 - .saturating_add(Weight::from_parts(146_988, 0).saturating_mul(r.into())) + // Minimum execution time: 2_351_000 picoseconds. + Weight::from_parts(2_894_613, 0) + // Standard Error: 2_024 + .saturating_add(Weight::from_parts(188_853, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64eq(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_268_000 picoseconds. - Weight::from_parts(2_335_000, 0) - // Standard Error: 9_220 - .saturating_add(Weight::from_parts(1_682_986, 0).saturating_mul(r.into())) + // Minimum execution time: 2_353_000 picoseconds. + Weight::from_parts(2_418_000, 0) + // Standard Error: 9_504 + .saturating_add(Weight::from_parts(1_936_605, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32eq(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_244_000 picoseconds. - Weight::from_parts(2_290_000, 0) - // Standard Error: 7_751 - .saturating_add(Weight::from_parts(1_073_438, 0).saturating_mul(r.into())) + // Minimum execution time: 2_291_000 picoseconds. + Weight::from_parts(2_364_000, 0) + // Standard Error: 8_346 + .saturating_add(Weight::from_parts(1_222_521, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64ne(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_225_000 picoseconds. - Weight::from_parts(2_297_000, 0) - // Standard Error: 9_887 - .saturating_add(Weight::from_parts(1_746_888, 0).saturating_mul(r.into())) + // Minimum execution time: 2_345_000 picoseconds. + Weight::from_parts(2_452_000, 0) + // Standard Error: 10_232 + .saturating_add(Weight::from_parts(1_883_867, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32ne(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_225_000 picoseconds. - Weight::from_parts(2_305_000, 0) - // Standard Error: 8_241 - .saturating_add(Weight::from_parts(1_123_968, 0).saturating_mul(r.into())) + // Minimum execution time: 2_323_000 picoseconds. + Weight::from_parts(2_387_000, 0) + // Standard Error: 7_581 + .saturating_add(Weight::from_parts(1_200_178, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64lts(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_325_000 picoseconds. - Weight::from_parts(2_368_000, 0) - // Standard Error: 10_199 - .saturating_add(Weight::from_parts(1_754_281, 0).saturating_mul(r.into())) + // Minimum execution time: 2_410_000 picoseconds. + Weight::from_parts(2_459_000, 0) + // Standard Error: 11_139 + .saturating_add(Weight::from_parts(1_877_766, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32lts(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_254_000 picoseconds. - Weight::from_parts(2_296_000, 0) - // Standard Error: 7_885 - .saturating_add(Weight::from_parts(1_054_096, 0).saturating_mul(r.into())) + // Minimum execution time: 2_273_000 picoseconds. + Weight::from_parts(2_387_000, 0) + // Standard Error: 8_083 + .saturating_add(Weight::from_parts(1_217_904, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64ltu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_212_000 picoseconds. - Weight::from_parts(2_244_000, 0) - // Standard Error: 11_272 - .saturating_add(Weight::from_parts(1_769_874, 0).saturating_mul(r.into())) + // Minimum execution time: 2_403_000 picoseconds. + Weight::from_parts(2_482_000, 0) + // Standard Error: 11_044 + .saturating_add(Weight::from_parts(1_956_302, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32ltu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_248_000 picoseconds. - Weight::from_parts(2_341_000, 0) - // Standard Error: 8_360 - .saturating_add(Weight::from_parts(1_115_362, 0).saturating_mul(r.into())) + // Minimum execution time: 2_353_000 picoseconds. + Weight::from_parts(2_420_000, 0) + // Standard Error: 7_870 + .saturating_add(Weight::from_parts(1_213_570, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64gts(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_243_000 picoseconds. - Weight::from_parts(2_309_000, 0) - // Standard Error: 9_424 - .saturating_add(Weight::from_parts(1_807_643, 0).saturating_mul(r.into())) + // Minimum execution time: 2_364_000 picoseconds. + Weight::from_parts(2_430_000, 0) + // Standard Error: 10_577 + .saturating_add(Weight::from_parts(1_968_043, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32gts(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_213_000 picoseconds. - Weight::from_parts(2_310_000, 0) - // Standard Error: 7_499 - .saturating_add(Weight::from_parts(1_087_178, 0).saturating_mul(r.into())) + // Minimum execution time: 2_328_000 picoseconds. + Weight::from_parts(2_442_000, 0) + // Standard Error: 7_838 + .saturating_add(Weight::from_parts(1_267_211, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64gtu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_267_000 picoseconds. - Weight::from_parts(2_342_000, 0) - // Standard Error: 11_743 - .saturating_add(Weight::from_parts(1_703_075, 0).saturating_mul(r.into())) + // Minimum execution time: 2_395_000 picoseconds. + Weight::from_parts(2_460_000, 0) + // Standard Error: 10_856 + .saturating_add(Weight::from_parts(1_910_357, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32gtu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_137_000 picoseconds. - Weight::from_parts(2_254_000, 0) - // Standard Error: 8_099 - .saturating_add(Weight::from_parts(1_080_763, 0).saturating_mul(r.into())) + // Minimum execution time: 2_343_000 picoseconds. + Weight::from_parts(2_409_000, 0) + // Standard Error: 5_786 + .saturating_add(Weight::from_parts(1_128_653, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64les(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_183_000 picoseconds. - Weight::from_parts(2_301_000, 0) - // Standard Error: 10_230 - .saturating_add(Weight::from_parts(1_738_567, 0).saturating_mul(r.into())) + // Minimum execution time: 2_318_000 picoseconds. + Weight::from_parts(2_433_000, 0) + // Standard Error: 10_344 + .saturating_add(Weight::from_parts(1_897_480, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32les(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_209_000 picoseconds. - Weight::from_parts(2_309_000, 0) - // Standard Error: 8_536 - .saturating_add(Weight::from_parts(1_161_928, 0).saturating_mul(r.into())) + // Minimum execution time: 2_355_000 picoseconds. + Weight::from_parts(2_460_000, 0) + // Standard Error: 6_963 + .saturating_add(Weight::from_parts(1_125_698, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64leu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_208_000 picoseconds. - Weight::from_parts(2_255_000, 0) - // Standard Error: 10_368 - .saturating_add(Weight::from_parts(1_847_441, 0).saturating_mul(r.into())) + // Minimum execution time: 2_356_000 picoseconds. + Weight::from_parts(2_447_000, 0) + // Standard Error: 8_285 + .saturating_add(Weight::from_parts(1_848_149, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32leu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_223_000 picoseconds. - Weight::from_parts(2_299_000, 0) - // Standard Error: 8_213 - .saturating_add(Weight::from_parts(1_112_048, 0).saturating_mul(r.into())) + // Minimum execution time: 2_327_000 picoseconds. + Weight::from_parts(2_394_000, 0) + // Standard Error: 7_282 + .saturating_add(Weight::from_parts(1_176_423, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64ges(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_221_000 picoseconds. - Weight::from_parts(2_270_000, 0) - // Standard Error: 12_684 - .saturating_add(Weight::from_parts(1_728_765, 0).saturating_mul(r.into())) + // Minimum execution time: 2_372_000 picoseconds. + Weight::from_parts(2_439_000, 0) + // Standard Error: 9_207 + .saturating_add(Weight::from_parts(1_837_009, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32ges(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_573_000 picoseconds. - Weight::from_parts(2_655_000, 0) - // Standard Error: 7_404 - .saturating_add(Weight::from_parts(1_080_080, 0).saturating_mul(r.into())) + // Minimum execution time: 2_368_000 picoseconds. + Weight::from_parts(2_427_000, 0) + // Standard Error: 8_320 + .saturating_add(Weight::from_parts(1_231_088, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64geu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_259_000 picoseconds. - Weight::from_parts(2_316_000, 0) - // Standard Error: 9_739 - .saturating_add(Weight::from_parts(1_807_913, 0).saturating_mul(r.into())) + // Minimum execution time: 2_373_000 picoseconds. + Weight::from_parts(2_461_000, 0) + // Standard Error: 9_499 + .saturating_add(Weight::from_parts(1_922_588, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32geu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_198_000 picoseconds. - Weight::from_parts(2_296_000, 0) - // Standard Error: 7_265 - .saturating_add(Weight::from_parts(1_087_210, 0).saturating_mul(r.into())) + // Minimum execution time: 2_387_000 picoseconds. + Weight::from_parts(2_455_000, 0) + // Standard Error: 7_681 + .saturating_add(Weight::from_parts(1_198_894, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64add(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_252_000 picoseconds. - Weight::from_parts(2_311_000, 0) - // Standard Error: 7_444 - .saturating_add(Weight::from_parts(1_191_685, 0).saturating_mul(r.into())) + // Minimum execution time: 2_308_000 picoseconds. + Weight::from_parts(2_389_000, 0) + // Standard Error: 7_797 + .saturating_add(Weight::from_parts(1_286_566, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32add(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_263_000 picoseconds. - Weight::from_parts(2_320_000, 0) - // Standard Error: 5_023 - .saturating_add(Weight::from_parts(585_667, 0).saturating_mul(r.into())) + // Minimum execution time: 2_329_000 picoseconds. + Weight::from_parts(2_389_000, 0) + // Standard Error: 4_968 + .saturating_add(Weight::from_parts(645_254, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64sub(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_213_000 picoseconds. - Weight::from_parts(2_320_000, 0) - // Standard Error: 10_018 - .saturating_add(Weight::from_parts(1_297_791, 0).saturating_mul(r.into())) + // Minimum execution time: 2_409_000 picoseconds. + Weight::from_parts(2_489_000, 0) + // Standard Error: 7_055 + .saturating_add(Weight::from_parts(1_232_084, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32sub(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_291_000 picoseconds. - Weight::from_parts(2_312_000, 0) - // Standard Error: 4_776 - .saturating_add(Weight::from_parts(612_864, 0).saturating_mul(r.into())) + // Minimum execution time: 2_371_000 picoseconds. + Weight::from_parts(2_420_000, 0) + // Standard Error: 4_348 + .saturating_add(Weight::from_parts(633_810, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64mul(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_286_000 picoseconds. - Weight::from_parts(2_356_000, 0) - // Standard Error: 11_619 - .saturating_add(Weight::from_parts(1_743_809, 0).saturating_mul(r.into())) + // Minimum execution time: 2_336_000 picoseconds. + Weight::from_parts(2_413_000, 0) + // Standard Error: 8_202 + .saturating_add(Weight::from_parts(1_777_425, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32mul(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_302_000 picoseconds. - Weight::from_parts(2_343_000, 0) - // Standard Error: 8_638 - .saturating_add(Weight::from_parts(1_136_060, 0).saturating_mul(r.into())) + // Minimum execution time: 2_314_000 picoseconds. + Weight::from_parts(2_369_000, 0) + // Standard Error: 6_935 + .saturating_add(Weight::from_parts(1_201_570, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64divs(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_236_000 picoseconds. - Weight::from_parts(2_309_000, 0) - // Standard Error: 7_114 - .saturating_add(Weight::from_parts(2_599_346, 0).saturating_mul(r.into())) + // Minimum execution time: 2_276_000 picoseconds. + Weight::from_parts(6_846_840, 0) + // Standard Error: 17_822 + .saturating_add(Weight::from_parts(2_268_370, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32divs(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_200_000 picoseconds. - Weight::from_parts(3_823_403, 0) - // Standard Error: 18_912 - .saturating_add(Weight::from_parts(2_161_963, 0).saturating_mul(r.into())) + // Minimum execution time: 2_394_000 picoseconds. + Weight::from_parts(4_704_336, 0) + // Standard Error: 10_960 + .saturating_add(Weight::from_parts(2_182_711, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64divu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_199_000 picoseconds. - Weight::from_parts(2_817_173, 0) - // Standard Error: 17_341 - .saturating_add(Weight::from_parts(2_740_748, 0).saturating_mul(r.into())) + // Minimum execution time: 2_375_000 picoseconds. + Weight::from_parts(1_968_824, 0) + // Standard Error: 15_899 + .saturating_add(Weight::from_parts(2_762_269, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32divu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_294_000 picoseconds. - Weight::from_parts(88_235, 0) - // Standard Error: 10_326 - .saturating_add(Weight::from_parts(2_481_087, 0).saturating_mul(r.into())) + // Minimum execution time: 2_335_000 picoseconds. + Weight::from_parts(1_450_000, 0) + // Standard Error: 13_496 + .saturating_add(Weight::from_parts(2_401_407, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64rems(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_232_000 picoseconds. - Weight::from_parts(2_294_000, 0) - // Standard Error: 14_480 - .saturating_add(Weight::from_parts(9_604_981, 0).saturating_mul(r.into())) + // Minimum execution time: 2_448_000 picoseconds. + Weight::from_parts(2_513_000, 0) + // Standard Error: 19_401 + .saturating_add(Weight::from_parts(9_309_211, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32rems(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_213_000 picoseconds. - Weight::from_parts(2_260_000, 0) - // Standard Error: 21_926 - .saturating_add(Weight::from_parts(7_501_289, 0).saturating_mul(r.into())) + // Minimum execution time: 2_273_000 picoseconds. + Weight::from_parts(1_738_370, 0) + // Standard Error: 42_672 + .saturating_add(Weight::from_parts(7_512_557, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64remu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_309_000 picoseconds. - Weight::from_parts(10_308_173, 0) - // Standard Error: 30_680 - .saturating_add(Weight::from_parts(2_288_505, 0).saturating_mul(r.into())) + // Minimum execution time: 2_371_000 picoseconds. + Weight::from_parts(2_215_088, 0) + // Standard Error: 15_445 + .saturating_add(Weight::from_parts(2_956_278, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32remu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_211_000 picoseconds. - Weight::from_parts(2_290_000, 0) - // Standard Error: 5_007 - .saturating_add(Weight::from_parts(2_516_076, 0).saturating_mul(r.into())) + // Minimum execution time: 2_409_000 picoseconds. + Weight::from_parts(217_500, 0) + // Standard Error: 7_904 + .saturating_add(Weight::from_parts(2_576_151, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64and(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_228_000 picoseconds. - Weight::from_parts(2_300_000, 0) - // Standard Error: 8_948 - .saturating_add(Weight::from_parts(1_264_596, 0).saturating_mul(r.into())) + // Minimum execution time: 2_456_000 picoseconds. + Weight::from_parts(2_503_000, 0) + // Standard Error: 7_920 + .saturating_add(Weight::from_parts(1_321_543, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32and(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_213_000 picoseconds. - Weight::from_parts(2_323_000, 0) - // Standard Error: 5_099 - .saturating_add(Weight::from_parts(612_107, 0).saturating_mul(r.into())) + // Minimum execution time: 2_346_000 picoseconds. + Weight::from_parts(2_479_000, 0) + // Standard Error: 4_711 + .saturating_add(Weight::from_parts(689_892, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64or(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_282_000 picoseconds. - Weight::from_parts(2_326_000, 0) - // Standard Error: 10_004 - .saturating_add(Weight::from_parts(1_278_365, 0).saturating_mul(r.into())) + // Minimum execution time: 2_339_000 picoseconds. + Weight::from_parts(2_427_000, 0) + // Standard Error: 8_029 + .saturating_add(Weight::from_parts(1_256_838, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32or(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_258_000 picoseconds. - Weight::from_parts(2_341_000, 0) - // Standard Error: 5_578 - .saturating_add(Weight::from_parts(645_196, 0).saturating_mul(r.into())) + // Minimum execution time: 2_334_000 picoseconds. + Weight::from_parts(2_480_000, 0) + // Standard Error: 3_812 + .saturating_add(Weight::from_parts(607_420, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64xor(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_338_000 picoseconds. - Weight::from_parts(2_363_000, 0) - // Standard Error: 8_554 - .saturating_add(Weight::from_parts(1_288_676, 0).saturating_mul(r.into())) + // Minimum execution time: 2_328_000 picoseconds. + Weight::from_parts(2_392_000, 0) + // Standard Error: 7_362 + .saturating_add(Weight::from_parts(1_248_739, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32xor(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_214_000 picoseconds. - Weight::from_parts(2_332_000, 0) - // Standard Error: 3_999 - .saturating_add(Weight::from_parts(594_484, 0).saturating_mul(r.into())) + // Minimum execution time: 2_419_000 picoseconds. + Weight::from_parts(2_465_000, 0) + // Standard Error: 4_304 + .saturating_add(Weight::from_parts(604_813, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64shl(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_198_000 picoseconds. - Weight::from_parts(2_258_000, 0) - // Standard Error: 7_437 - .saturating_add(Weight::from_parts(1_044_306, 0).saturating_mul(r.into())) + // Minimum execution time: 2_298_000 picoseconds. + Weight::from_parts(2_433_000, 0) + // Standard Error: 8_043 + .saturating_add(Weight::from_parts(1_073_194, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32shl(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_226_000 picoseconds. - Weight::from_parts(2_308_000, 0) - // Standard Error: 4_658 - .saturating_add(Weight::from_parts(537_262, 0).saturating_mul(r.into())) + // Minimum execution time: 2_427_000 picoseconds. + Weight::from_parts(2_511_000, 0) + // Standard Error: 4_969 + .saturating_add(Weight::from_parts(594_802, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64shrs(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_231_000 picoseconds. - Weight::from_parts(2_296_000, 0) - // Standard Error: 10_254 - .saturating_add(Weight::from_parts(1_154_138, 0).saturating_mul(r.into())) + // Minimum execution time: 2_312_000 picoseconds. + Weight::from_parts(2_399_000, 0) + // Standard Error: 7_093 + .saturating_add(Weight::from_parts(1_110_114, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32shrs(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_234_000 picoseconds. - Weight::from_parts(2_313_000, 0) - // Standard Error: 4_960 - .saturating_add(Weight::from_parts(607_930, 0).saturating_mul(r.into())) + // Minimum execution time: 2_331_000 picoseconds. + Weight::from_parts(2_433_000, 0) + // Standard Error: 4_140 + .saturating_add(Weight::from_parts(600_354, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64shru(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_279_000 picoseconds. - Weight::from_parts(2_342_000, 0) - // Standard Error: 7_909 - .saturating_add(Weight::from_parts(1_094_660, 0).saturating_mul(r.into())) + // Minimum execution time: 2_300_000 picoseconds. + Weight::from_parts(2_419_000, 0) + // Standard Error: 7_150 + .saturating_add(Weight::from_parts(1_154_649, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32shru(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_232_000 picoseconds. - Weight::from_parts(39_069, 0) - // Standard Error: 6_710 - .saturating_add(Weight::from_parts(599_572, 0).saturating_mul(r.into())) + // Minimum execution time: 2_356_000 picoseconds. + Weight::from_parts(2_423_000, 0) + // Standard Error: 5_067 + .saturating_add(Weight::from_parts(594_487, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64rotl(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_254_000 picoseconds. - Weight::from_parts(2_309_000, 0) - // Standard Error: 8_785 - .saturating_add(Weight::from_parts(1_060_321, 0).saturating_mul(r.into())) + // Minimum execution time: 2_339_000 picoseconds. + Weight::from_parts(2_406_000, 0) + // Standard Error: 5_674 + .saturating_add(Weight::from_parts(1_051_819, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32rotl(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_257_000 picoseconds. - Weight::from_parts(2_310_000, 0) - // Standard Error: 4_191 - .saturating_add(Weight::from_parts(528_319, 0).saturating_mul(r.into())) + // Minimum execution time: 2_383_000 picoseconds. + Weight::from_parts(114_723, 0) + // Standard Error: 5_881 + .saturating_add(Weight::from_parts(646_798, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64rotr(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_256_000 picoseconds. - Weight::from_parts(2_310_000, 0) - // Standard Error: 9_328 - .saturating_add(Weight::from_parts(1_114_164, 0).saturating_mul(r.into())) + // Minimum execution time: 2_292_000 picoseconds. + Weight::from_parts(2_422_000, 0) + // Standard Error: 6_697 + .saturating_add(Weight::from_parts(1_053_580, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32rotr(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_210_000 picoseconds. - Weight::from_parts(390_951, 0) - // Standard Error: 5_316 - .saturating_add(Weight::from_parts(609_568, 0).saturating_mul(r.into())) + // Minimum execution time: 2_325_000 picoseconds. + Weight::from_parts(206_699, 0) + // Standard Error: 5_851 + .saturating_add(Weight::from_parts(639_333, 0).saturating_mul(r.into())) } } @@ -2089,21 +2085,21 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 951_000 picoseconds. - Weight::from_parts(1_020_000, 0) - // Standard Error: 722 - .saturating_add(Weight::from_parts(240_031, 0).saturating_mul(c.into())) + // Minimum execution time: 1_023_000 picoseconds. + Weight::from_parts(1_051_000, 0) + // Standard Error: 912 + .saturating_add(Weight::from_parts(213_761, 0).saturating_mul(c.into())) .saturating_add(RocksDbWeight::get().writes(1_u64)) } /// The range of component `c` is `[0, 512]`. fn db_read_per_kb(c: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `42 + c * (1024 ±0)` - // Estimated: `3506 + c * (1024 ±0)` - // Minimum execution time: 2_762_000 picoseconds. - Weight::from_parts(2_859_000, 3506) - // Standard Error: 813 - .saturating_add(Weight::from_parts(665_139, 0).saturating_mul(c.into())) + // Measured: `146 + c * (1024 ±0)` + // Estimated: `3610 + c * (1024 ±0)` + // Minimum execution time: 3_252_000 picoseconds. + Weight::from_parts(3_416_000, 3610) + // Standard Error: 1_261 + .saturating_add(Weight::from_parts(689_572, 0).saturating_mul(c.into())) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(Weight::from_parts(0, 1024).saturating_mul(c.into())) } @@ -2112,35 +2108,35 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 50_591_000 picoseconds. - Weight::from_parts(61_353_023, 0) - // Standard Error: 9_186 - .saturating_add(Weight::from_parts(2_404_810, 0).saturating_mul(c.into())) + // Minimum execution time: 59_805_000 picoseconds. + Weight::from_parts(86_729_126, 0) + // Standard Error: 7_023 + .saturating_add(Weight::from_parts(2_475_519, 0).saturating_mul(c.into())) } fn claim_value() -> Weight { // Proof Size summary in bytes: - // Measured: `979` - // Estimated: `42236` - // Minimum execution time: 81_660_000 picoseconds. - Weight::from_parts(83_840_000, 42236) - .saturating_add(RocksDbWeight::get().reads(13_u64)) - .saturating_add(RocksDbWeight::get().writes(10_u64)) + // Measured: `1372` + // Estimated: `51905` + // Minimum execution time: 107_694_000 picoseconds. + Weight::from_parts(110_328_000, 51905) + .saturating_add(RocksDbWeight::get().reads(15_u64)) + .saturating_add(RocksDbWeight::get().writes(12_u64)) } fn pay_program_rent() -> Weight { // Proof Size summary in bytes: - // Measured: `886` - // Estimated: `21261` - // Minimum execution time: 54_005_000 picoseconds. - Weight::from_parts(55_095_000, 21261) + // Measured: `992` + // Estimated: `21579` + // Minimum execution time: 55_980_000 picoseconds. + Weight::from_parts(56_766_000, 21579) .saturating_add(RocksDbWeight::get().reads(7_u64)) .saturating_add(RocksDbWeight::get().writes(6_u64)) } fn resume_session_init() -> Weight { // Proof Size summary in bytes: - // Measured: `534` - // Estimated: `17070` - // Minimum execution time: 28_880_000 picoseconds. - Weight::from_parts(29_583_000, 17070) + // Measured: `638` + // Estimated: `17486` + // Minimum execution time: 29_973_000 picoseconds. + Weight::from_parts(31_008_000, 17486) .saturating_add(RocksDbWeight::get().reads(6_u64)) .saturating_add(RocksDbWeight::get().writes(4_u64)) } @@ -2149,22 +2145,22 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `355` // Estimated: `7640` - // Minimum execution time: 7_744_000 picoseconds. - Weight::from_parts(4_233_092, 7640) - // Standard Error: 39_690 - .saturating_add(Weight::from_parts(14_033_179, 0).saturating_mul(c.into())) + // Minimum execution time: 8_054_000 picoseconds. + Weight::from_parts(8_342_000, 7640) + // Standard Error: 17_771 + .saturating_add(Weight::from_parts(13_335_661, 0).saturating_mul(c.into())) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(2_u64)) } /// The range of component `c` is `[0, 2044]`. fn resume_session_commit(c: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1297 + c * (16389 ±0)` - // Estimated: `40898 + c * (131112 ±0)` - // Minimum execution time: 70_301_000 picoseconds. - Weight::from_parts(70_991_000, 40898) - // Standard Error: 177_223 - .saturating_add(Weight::from_parts(54_687_249, 0).saturating_mul(c.into())) + // Measured: `1593 + c * (16389 ±0)` + // Estimated: `43266 + c * (131112 ±0)` + // Minimum execution time: 72_178_000 picoseconds. + Weight::from_parts(73_341_000, 43266) + // Standard Error: 167_723 + .saturating_add(Weight::from_parts(54_442_045, 0).saturating_mul(c.into())) .saturating_add(RocksDbWeight::get().reads(11_u64)) .saturating_add(RocksDbWeight::get().writes(9_u64)) .saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(c.into()))) @@ -2173,97 +2169,97 @@ impl WeightInfo for () { /// The range of component `c` is `[0, 250]`. fn upload_code(c: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `10` - // Estimated: `4990` - // Minimum execution time: 61_715_000 picoseconds. - Weight::from_parts(40_384_385, 4990) - // Standard Error: 57_496 - .saturating_add(Weight::from_parts(53_210_788, 0).saturating_mul(c.into())) + // Measured: `113` + // Estimated: `5402` + // Minimum execution time: 78_662_000 picoseconds. + Weight::from_parts(42_066_175, 5402) + // Standard Error: 52_075 + .saturating_add(Weight::from_parts(60_249_549, 0).saturating_mul(c.into())) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(4_u64)) } /// The range of component `s` is `[0, 4194304]`. fn create_program(s: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `671` - // Estimated: `38638` - // Minimum execution time: 63_077_000 picoseconds. - Weight::from_parts(96_840_506, 38638) - // Standard Error: 0 - .saturating_add(Weight::from_parts(2_609, 0).saturating_mul(s.into())) - .saturating_add(RocksDbWeight::get().reads(13_u64)) - .saturating_add(RocksDbWeight::get().writes(10_u64)) + // Measured: `1111` + // Estimated: `50600` + // Minimum execution time: 94_321_000 picoseconds. + Weight::from_parts(129_113_540, 50600) + // Standard Error: 1 + .saturating_add(Weight::from_parts(2_625, 0).saturating_mul(s.into())) + .saturating_add(RocksDbWeight::get().reads(15_u64)) + .saturating_add(RocksDbWeight::get().writes(12_u64)) } /// The range of component `c` is `[0, 250]`. /// The range of component `s` is `[0, 4194304]`. fn upload_program(c: u32, s: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `235` - // Estimated: `34312` - // Minimum execution time: 11_049_858_000 picoseconds. - Weight::from_parts(11_090_406_000, 34312) - // Standard Error: 517_330 - .saturating_add(Weight::from_parts(25_497_137, 0).saturating_mul(c.into())) - // Standard Error: 30 - .saturating_add(Weight::from_parts(910, 0).saturating_mul(s.into())) - .saturating_add(RocksDbWeight::get().reads(13_u64)) - .saturating_add(RocksDbWeight::get().writes(14_u64)) + // Measured: `521` + // Estimated: `45152` + // Minimum execution time: 11_148_491_000 picoseconds. + Weight::from_parts(21_065_971, 45152) + // Standard Error: 173_883 + .saturating_add(Weight::from_parts(60_839_567, 0).saturating_mul(c.into())) + // Standard Error: 10 + .saturating_add(Weight::from_parts(2_652, 0).saturating_mul(s.into())) + .saturating_add(RocksDbWeight::get().reads(15_u64)) + .saturating_add(RocksDbWeight::get().writes(16_u64)) } /// The range of component `p` is `[0, 2097152]`. fn send_message(p: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `348` - // Estimated: `23853` - // Minimum execution time: 56_305_000 picoseconds. - Weight::from_parts(38_705_997, 23853) + // Measured: `531` + // Estimated: `31266` + // Minimum execution time: 73_302_000 picoseconds. + Weight::from_parts(47_279_667, 31266) // Standard Error: 1 - .saturating_add(Weight::from_parts(1_034, 0).saturating_mul(p.into())) - .saturating_add(RocksDbWeight::get().reads(9_u64)) - .saturating_add(RocksDbWeight::get().writes(8_u64)) + .saturating_add(Weight::from_parts(1_055, 0).saturating_mul(p.into())) + .saturating_add(RocksDbWeight::get().reads(11_u64)) + .saturating_add(RocksDbWeight::get().writes(10_u64)) } /// The range of component `p` is `[0, 2097152]`. fn send_reply(p: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `978` - // Estimated: `42227` - // Minimum execution time: 83_033_000 picoseconds. - Weight::from_parts(69_135_468, 42227) - // Standard Error: 1 - .saturating_add(Weight::from_parts(1_035, 0).saturating_mul(p.into())) - .saturating_add(RocksDbWeight::get().reads(13_u64)) - .saturating_add(RocksDbWeight::get().writes(10_u64)) + // Measured: `1371` + // Estimated: `54435` + // Minimum execution time: 124_173_000 picoseconds. + Weight::from_parts(96_458_887, 54435) + // Standard Error: 2 + .saturating_add(Weight::from_parts(1_078, 0).saturating_mul(p.into())) + .saturating_add(RocksDbWeight::get().reads(16_u64)) + .saturating_add(RocksDbWeight::get().writes(13_u64)) } /// The range of component `q` is `[1, 512]`. - fn initial_allocation(q: u32, ) -> Weight { + fn initial_allocation(_q: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `760` - // Estimated: `74319` - // Minimum execution time: 295_535_000 picoseconds. - Weight::from_parts(306_791_413, 74319) - // Standard Error: 1_111 - .saturating_add(Weight::from_parts(1_568, 0).saturating_mul(q.into())) - .saturating_add(RocksDbWeight::get().reads(27_u64)) - .saturating_add(RocksDbWeight::get().writes(22_u64)) + // Measured: `1893` + // Estimated: `114612` + // Minimum execution time: 365_983_000 picoseconds. + Weight::from_parts(387_416_952, 114612) + .saturating_add(RocksDbWeight::get().reads(33_u64)) + .saturating_add(RocksDbWeight::get().writes(26_u64)) } /// The range of component `q` is `[0, 512]`. - fn alloc_in_handle(_q: u32, ) -> Weight { + fn alloc_in_handle(q: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `760` - // Estimated: `74319` - // Minimum execution time: 309_253_000 picoseconds. - Weight::from_parts(323_694_389, 74319) - .saturating_add(RocksDbWeight::get().reads(27_u64)) - .saturating_add(RocksDbWeight::get().writes(22_u64)) + // Measured: `1893` + // Estimated: `114612` + // Minimum execution time: 380_430_000 picoseconds. + Weight::from_parts(403_376_118, 114612) + // Standard Error: 2_451 + .saturating_add(Weight::from_parts(1_137, 0).saturating_mul(q.into())) + .saturating_add(RocksDbWeight::get().reads(33_u64)) + .saturating_add(RocksDbWeight::get().writes(26_u64)) } /// The range of component `c` is `[0, 512]`. fn reinstrument_per_kb(c: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `211 + c * (1075 ±0)` // Estimated: `3899 + c * (2150 ±0)` - // Minimum execution time: 44_806_000 picoseconds. - Weight::from_parts(45_498_000, 3899) - // Standard Error: 44_467 - .saturating_add(Weight::from_parts(54_603_581, 0).saturating_mul(c.into())) + // Minimum execution time: 58_080_000 picoseconds. + Weight::from_parts(58_601_000, 3899) + // Standard Error: 36_083 + .saturating_add(Weight::from_parts(58_395_643, 0).saturating_mul(c.into())) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(2_u64)) .saturating_add(Weight::from_parts(0, 2150).saturating_mul(c.into())) @@ -2273,630 +2269,628 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 82_307_000 picoseconds. - Weight::from_parts(84_226_000, 0) - // Standard Error: 4_203_577 - .saturating_add(Weight::from_parts(574_493_471, 0).saturating_mul(r.into())) + // Minimum execution time: 91_412_000 picoseconds. + Weight::from_parts(94_168_000, 0) + // Standard Error: 3_806_298 + .saturating_add(Weight::from_parts(673_774_453, 0).saturating_mul(r.into())) } /// The range of component `p` is `[1, 512]`. fn alloc_per_page(p: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 309_893_000 picoseconds. - Weight::from_parts(234_558_588, 0) - // Standard Error: 7_966 - .saturating_add(Weight::from_parts(32_022_587, 0).saturating_mul(p.into())) + // Minimum execution time: 452_549_000 picoseconds. + Weight::from_parts(398_963_700, 0) + // Standard Error: 7_042 + .saturating_add(Weight::from_parts(29_406_609, 0).saturating_mul(p.into())) } /// The range of component `r` is `[0, 20]`. fn free(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 142_319_000 picoseconds. - Weight::from_parts(121_865_521, 0) - // Standard Error: 314_080 - .saturating_add(Weight::from_parts(64_422_856, 0).saturating_mul(r.into())) + // Minimum execution time: 207_052_000 picoseconds. + Weight::from_parts(209_606_478, 0) + // Standard Error: 255_281 + .saturating_add(Weight::from_parts(62_959_531, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 256]`. fn gr_reserve_gas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 85_527_000 picoseconds. - Weight::from_parts(91_967_528, 0) - // Standard Error: 3_856 - .saturating_add(Weight::from_parts(2_363_669, 0).saturating_mul(r.into())) + // Minimum execution time: 97_729_000 picoseconds. + Weight::from_parts(105_964_750, 0) + // Standard Error: 4_847 + .saturating_add(Weight::from_parts(2_433_966, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 256]`. fn gr_unreserve_gas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 144_133_000 picoseconds. - Weight::from_parts(156_991_945, 0) - // Standard Error: 24_223 - .saturating_add(Weight::from_parts(2_431_525, 0).saturating_mul(r.into())) + // Minimum execution time: 175_010_000 picoseconds. + Weight::from_parts(229_153_209, 0) + // Standard Error: 17_116 + .saturating_add(Weight::from_parts(1_991_260, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_system_reserve_gas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 86_811_000 picoseconds. - Weight::from_parts(101_122_470, 0) - // Standard Error: 303_533 - .saturating_add(Weight::from_parts(92_415_204, 0).saturating_mul(r.into())) + // Minimum execution time: 94_696_000 picoseconds. + Weight::from_parts(119_674_535, 0) + // Standard Error: 387_178 + .saturating_add(Weight::from_parts(98_102_856, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_message_id(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_453_000 picoseconds. - Weight::from_parts(79_049_804, 0) - // Standard Error: 305_992 - .saturating_add(Weight::from_parts(79_382_630, 0).saturating_mul(r.into())) + // Minimum execution time: 95_794_000 picoseconds. + Weight::from_parts(89_931_979, 0) + // Standard Error: 371_349 + .saturating_add(Weight::from_parts(86_524_059, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_program_id(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 82_650_000 picoseconds. - Weight::from_parts(79_085_060, 0) - // Standard Error: 293_080 - .saturating_add(Weight::from_parts(77_346_019, 0).saturating_mul(r.into())) + // Minimum execution time: 97_924_000 picoseconds. + Weight::from_parts(84_041_201, 0) + // Standard Error: 327_841 + .saturating_add(Weight::from_parts(95_483_315, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_source(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_545_000 picoseconds. - Weight::from_parts(72_777_984, 0) - // Standard Error: 351_302 - .saturating_add(Weight::from_parts(80_634_984, 0).saturating_mul(r.into())) + // Minimum execution time: 97_122_000 picoseconds. + Weight::from_parts(86_789_268, 0) + // Standard Error: 353_259 + .saturating_add(Weight::from_parts(85_698_317, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_value(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_245_000 picoseconds. - Weight::from_parts(76_181_868, 0) - // Standard Error: 354_266 - .saturating_add(Weight::from_parts(79_459_120, 0).saturating_mul(r.into())) + // Minimum execution time: 94_821_000 picoseconds. + Weight::from_parts(92_694_130, 0) + // Standard Error: 340_146 + .saturating_add(Weight::from_parts(84_623_945, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_value_available(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 85_064_000 picoseconds. - Weight::from_parts(77_882_516, 0) - // Standard Error: 377_997 - .saturating_add(Weight::from_parts(78_533_852, 0).saturating_mul(r.into())) + // Minimum execution time: 93_840_000 picoseconds. + Weight::from_parts(87_888_572, 0) + // Standard Error: 369_465 + .saturating_add(Weight::from_parts(85_638_902, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_gas_available(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_522_000 picoseconds. - Weight::from_parts(66_328_137, 0) - // Standard Error: 360_143 - .saturating_add(Weight::from_parts(79_838_604, 0).saturating_mul(r.into())) + // Minimum execution time: 98_597_000 picoseconds. + Weight::from_parts(86_642_386, 0) + // Standard Error: 362_257 + .saturating_add(Weight::from_parts(85_598_887, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_size(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_961_000 picoseconds. - Weight::from_parts(72_789_065, 0) - // Standard Error: 366_577 - .saturating_add(Weight::from_parts(79_031_060, 0).saturating_mul(r.into())) + // Minimum execution time: 94_546_000 picoseconds. + Weight::from_parts(91_466_289, 0) + // Standard Error: 344_423 + .saturating_add(Weight::from_parts(84_318_848, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_read(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 700_686_000 picoseconds. - Weight::from_parts(749_297_529, 0) - // Standard Error: 383_897 - .saturating_add(Weight::from_parts(132_242_102, 0).saturating_mul(r.into())) + // Minimum execution time: 578_036_000 picoseconds. + Weight::from_parts(696_140_951, 0) + // Standard Error: 559_498 + .saturating_add(Weight::from_parts(149_397_501, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_read_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 830_957_000 picoseconds. - Weight::from_parts(850_017_000, 0) - // Standard Error: 67_693 - .saturating_add(Weight::from_parts(13_570_326, 0).saturating_mul(n.into())) + // Minimum execution time: 723_788_000 picoseconds. + Weight::from_parts(740_225_000, 0) + // Standard Error: 52_895 + .saturating_add(Weight::from_parts(13_188_120, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_block_height(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_261_000 picoseconds. - Weight::from_parts(70_573_139, 0) - // Standard Error: 351_239 - .saturating_add(Weight::from_parts(80_441_776, 0).saturating_mul(r.into())) + // Minimum execution time: 99_012_000 picoseconds. + Weight::from_parts(88_269_135, 0) + // Standard Error: 296_136 + .saturating_add(Weight::from_parts(92_296_104, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_block_timestamp(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_164_000 picoseconds. - Weight::from_parts(70_866_987, 0) - // Standard Error: 346_107 - .saturating_add(Weight::from_parts(82_471_591, 0).saturating_mul(r.into())) + // Minimum execution time: 93_803_000 picoseconds. + Weight::from_parts(87_097_769, 0) + // Standard Error: 367_325 + .saturating_add(Weight::from_parts(84_987_043, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 20]`. fn gr_random(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 81_192_000 picoseconds. - Weight::from_parts(101_814_078, 0) - // Standard Error: 391_508 - .saturating_add(Weight::from_parts(166_873_282, 0).saturating_mul(n.into())) + // Minimum execution time: 96_663_000 picoseconds. + Weight::from_parts(105_357_427, 0) + // Standard Error: 366_135 + .saturating_add(Weight::from_parts(172_109_201, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_deposit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_974_000 picoseconds. - Weight::from_parts(87_244_000, 0) - // Standard Error: 3_619_557 - .saturating_add(Weight::from_parts(749_950_767, 0).saturating_mul(r.into())) + // Minimum execution time: 99_210_000 picoseconds. + Weight::from_parts(102_217_000, 0) + // Standard Error: 4_527_119 + .saturating_add(Weight::from_parts(845_784_967, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 81_612_000 picoseconds. - Weight::from_parts(147_822_399, 0) - // Standard Error: 421_408 - .saturating_add(Weight::from_parts(250_730_230, 0).saturating_mul(r.into())) + // Minimum execution time: 96_579_000 picoseconds. + Weight::from_parts(162_452_429, 0) + // Standard Error: 416_836 + .saturating_add(Weight::from_parts(257_900_517, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_send_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 332_130_000 picoseconds. - Weight::from_parts(337_780_000, 0) - // Standard Error: 52_652 - .saturating_add(Weight::from_parts(20_743_155, 0).saturating_mul(n.into())) + // Minimum execution time: 353_526_000 picoseconds. + Weight::from_parts(358_025_000, 0) + // Standard Error: 61_984 + .saturating_add(Weight::from_parts(21_521_461, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 82_722_000 picoseconds. - Weight::from_parts(147_881_270, 0) - // Standard Error: 390_429 - .saturating_add(Weight::from_parts(259_701_373, 0).saturating_mul(r.into())) + // Minimum execution time: 94_822_000 picoseconds. + Weight::from_parts(168_431_611, 0) + // Standard Error: 378_696 + .saturating_add(Weight::from_parts(263_135_958, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_send_wgas_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 337_753_000 picoseconds. - Weight::from_parts(343_454_000, 0) - // Standard Error: 66_604 - .saturating_add(Weight::from_parts(21_189_034, 0).saturating_mul(n.into())) + // Minimum execution time: 351_828_000 picoseconds. + Weight::from_parts(355_382_000, 0) + // Standard Error: 60_589 + .saturating_add(Weight::from_parts(21_325_400, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_input(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 708_454_000 picoseconds. - Weight::from_parts(775_673_824, 0) - // Standard Error: 380_634 - .saturating_add(Weight::from_parts(268_253_890, 0).saturating_mul(r.into())) + // Minimum execution time: 569_384_000 picoseconds. + Weight::from_parts(638_474_730, 0) + // Standard Error: 425_903 + .saturating_add(Weight::from_parts(275_691_711, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_input_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 706_799_000 picoseconds. - Weight::from_parts(782_052_003, 0) - // Standard Error: 385_065 - .saturating_add(Weight::from_parts(265_280_556, 0).saturating_mul(r.into())) + // Minimum execution time: 573_053_000 picoseconds. + Weight::from_parts(640_078_802, 0) + // Standard Error: 475_389 + .saturating_add(Weight::from_parts(284_337_155, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_init(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_511_000 picoseconds. - Weight::from_parts(61_459_678, 0) - // Standard Error: 362_497 - .saturating_add(Weight::from_parts(87_903_947, 0).saturating_mul(r.into())) + // Minimum execution time: 98_223_000 picoseconds. + Weight::from_parts(85_732_985, 0) + // Standard Error: 336_308 + .saturating_add(Weight::from_parts(92_936_006, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_push(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_676_718_000 picoseconds. - Weight::from_parts(1_838_206_733, 0) - // Standard Error: 440_793 - .saturating_add(Weight::from_parts(156_352_100, 0).saturating_mul(r.into())) + // Minimum execution time: 1_822_621_000 picoseconds. + Weight::from_parts(1_951_955_018, 0) + // Standard Error: 339_415 + .saturating_add(Weight::from_parts(157_557_756, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_send_push_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 284_222_000 picoseconds. - Weight::from_parts(293_316_000, 0) - // Standard Error: 54_796 - .saturating_add(Weight::from_parts(30_939_288, 0).saturating_mul(n.into())) + // Minimum execution time: 314_296_000 picoseconds. + Weight::from_parts(317_522_000, 0) + // Standard Error: 61_360 + .saturating_add(Weight::from_parts(29_499_741, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_commit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_682_466_000 picoseconds. - Weight::from_parts(1_829_413_701, 0) - // Standard Error: 510_421 - .saturating_add(Weight::from_parts(216_009_232, 0).saturating_mul(r.into())) + // Minimum execution time: 1_835_106_000 picoseconds. + Weight::from_parts(1_948_516_646, 0) + // Standard Error: 382_008 + .saturating_add(Weight::from_parts(214_812_508, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_commit_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_681_160_000 picoseconds. - Weight::from_parts(1_819_797_788, 0) - // Standard Error: 453_707 - .saturating_add(Weight::from_parts(215_589_534, 0).saturating_mul(r.into())) + // Minimum execution time: 1_827_496_000 picoseconds. + Weight::from_parts(1_949_190_773, 0) + // Standard Error: 340_175 + .saturating_add(Weight::from_parts(218_001_536, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reservation_send(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 242_556_000 picoseconds. - Weight::from_parts(314_306_159, 0) - // Standard Error: 376_142 - .saturating_add(Weight::from_parts(260_614_468, 0).saturating_mul(r.into())) + // Minimum execution time: 264_306_000 picoseconds. + Weight::from_parts(363_536_651, 0) + // Standard Error: 467_914 + .saturating_add(Weight::from_parts(265_564_072, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reservation_send_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 495_430_000 picoseconds. - Weight::from_parts(502_714_000, 0) - // Standard Error: 52_049 - .saturating_add(Weight::from_parts(21_259_132, 0).saturating_mul(n.into())) + // Minimum execution time: 523_150_000 picoseconds. + Weight::from_parts(535_842_000, 0) + // Standard Error: 65_412 + .saturating_add(Weight::from_parts(21_698_063, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reservation_send_commit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_809_658_000 picoseconds. - Weight::from_parts(2_002_681_446, 0) - // Standard Error: 414_919 - .saturating_add(Weight::from_parts(227_942_929, 0).saturating_mul(r.into())) + // Minimum execution time: 1_974_743_000 picoseconds. + Weight::from_parts(2_096_494_995, 0) + // Standard Error: 474_778 + .saturating_add(Weight::from_parts(232_524_299, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 80_821_000 picoseconds. - Weight::from_parts(84_783_126, 0) - // Standard Error: 234_696 - .saturating_add(Weight::from_parts(22_124_873, 0).saturating_mul(r.into())) + // Minimum execution time: 94_139_000 picoseconds. + Weight::from_parts(101_775_569, 0) + // Standard Error: 452_439 + .saturating_add(Weight::from_parts(16_839_430, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reply_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 100_040_000 picoseconds. - Weight::from_parts(92_861_700, 0) - // Standard Error: 1_021 - .saturating_add(Weight::from_parts(419_414, 0).saturating_mul(n.into())) + // Minimum execution time: 112_050_000 picoseconds. + Weight::from_parts(102_205_366, 0) + // Standard Error: 1_008 + .saturating_add(Weight::from_parts(431_304, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 80_986_000 picoseconds. - Weight::from_parts(85_723_530, 0) - // Standard Error: 278_519 - .saturating_add(Weight::from_parts(19_484_469, 0).saturating_mul(r.into())) + // Minimum execution time: 93_528_000 picoseconds. + Weight::from_parts(99_748_422, 0) + // Standard Error: 396_992 + .saturating_add(Weight::from_parts(20_536_877, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reply_wgas_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 104_879_000 picoseconds. - Weight::from_parts(88_056_044, 0) - // Standard Error: 1_087 - .saturating_add(Weight::from_parts(427_201, 0).saturating_mul(n.into())) + // Minimum execution time: 117_832_000 picoseconds. + Weight::from_parts(104_552_847, 0) + // Standard Error: 1_402 + .saturating_add(Weight::from_parts(432_018, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply_commit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 80_548_000 picoseconds. - Weight::from_parts(84_139_208, 0) - // Standard Error: 235_150 - .saturating_add(Weight::from_parts(17_533_491, 0).saturating_mul(r.into())) + // Minimum execution time: 93_325_000 picoseconds. + Weight::from_parts(101_074_097, 0) + // Standard Error: 454_790 + .saturating_add(Weight::from_parts(20_838_102, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply_commit_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_118_000 picoseconds. - Weight::from_parts(88_086_604, 0) - // Standard Error: 244_958 - .saturating_add(Weight::from_parts(17_286_195, 0).saturating_mul(r.into())) + // Minimum execution time: 93_800_000 picoseconds. + Weight::from_parts(102_249_326, 0) + // Standard Error: 463_488 + .saturating_add(Weight::from_parts(15_991_473, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_push(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_393_000 picoseconds. - Weight::from_parts(132_631_342, 0) - // Standard Error: 436_134 - .saturating_add(Weight::from_parts(141_520_417, 0).saturating_mul(r.into())) + // Minimum execution time: 93_153_000 picoseconds. + Weight::from_parts(121_452_989, 0) + // Standard Error: 390_540 + .saturating_add(Weight::from_parts(145_641_178, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 8192]`. fn gr_reply_push_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 97_567_000 picoseconds. - Weight::from_parts(99_600_000, 0) - // Standard Error: 2_187 - .saturating_add(Weight::from_parts(639_729, 0).saturating_mul(n.into())) + // Minimum execution time: 115_529_000 picoseconds. + Weight::from_parts(120_413_000, 0) + // Standard Error: 3_105 + .saturating_add(Weight::from_parts(640_863, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply_input(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 696_739_000 picoseconds. - Weight::from_parts(711_247_336, 0) - // Standard Error: 1_403_605 - .saturating_add(Weight::from_parts(15_869_663, 0).saturating_mul(r.into())) + // Minimum execution time: 566_859_000 picoseconds. + Weight::from_parts(631_111_316, 0) + // Standard Error: 7_012_228 + .saturating_add(Weight::from_parts(21_896_983, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. - fn gr_reply_input_wgas(r: u32, ) -> Weight { + fn gr_reply_input_wgas(_r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 697_432_000 picoseconds. - Weight::from_parts(712_096_565, 0) - // Standard Error: 1_674_352 - .saturating_add(Weight::from_parts(32_103_934, 0).saturating_mul(r.into())) + // Minimum execution time: 565_382_000 picoseconds. + Weight::from_parts(613_048_008, 0) } /// The range of component `r` is `[0, 1]`. fn gr_reservation_reply(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 92_685_000 picoseconds. - Weight::from_parts(96_156_389, 0) - // Standard Error: 262_969 - .saturating_add(Weight::from_parts(8_983_510, 0).saturating_mul(r.into())) + // Minimum execution time: 104_401_000 picoseconds. + Weight::from_parts(112_651_320, 0) + // Standard Error: 438_590 + .saturating_add(Weight::from_parts(11_095_379, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reservation_reply_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 105_746_000 picoseconds. - Weight::from_parts(89_918_273, 0) - // Standard Error: 1_055 - .saturating_add(Weight::from_parts(427_838, 0).saturating_mul(n.into())) + // Minimum execution time: 115_615_000 picoseconds. + Weight::from_parts(112_987_750, 0) + // Standard Error: 960 + .saturating_add(Weight::from_parts(423_774, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reservation_reply_commit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 95_634_000 picoseconds. - Weight::from_parts(99_574_926, 0) - // Standard Error: 267_301 - .saturating_add(Weight::from_parts(3_125_673, 0).saturating_mul(r.into())) + // Minimum execution time: 105_056_000 picoseconds. + Weight::from_parts(113_735_922, 0) + // Standard Error: 466_586 + .saturating_add(Weight::from_parts(5_305_577, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reservation_reply_commit_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 99_268_000 picoseconds. - Weight::from_parts(93_140_981, 0) - // Standard Error: 1_101 - .saturating_add(Weight::from_parts(419_078, 0).saturating_mul(n.into())) + // Minimum execution time: 113_897_000 picoseconds. + Weight::from_parts(112_616_408, 0) + // Standard Error: 1_722 + .saturating_add(Weight::from_parts(428_420, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_to(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_167_000 picoseconds. - Weight::from_parts(80_305_860, 0) - // Standard Error: 357_986 - .saturating_add(Weight::from_parts(80_422_820, 0).saturating_mul(r.into())) + // Minimum execution time: 93_845_000 picoseconds. + Weight::from_parts(97_247_314, 0) + // Standard Error: 366_814 + .saturating_add(Weight::from_parts(85_900_587, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_signal_from(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 81_137_000 picoseconds. - Weight::from_parts(76_881_656, 0) - // Standard Error: 302_504 - .saturating_add(Weight::from_parts(80_036_963, 0).saturating_mul(r.into())) + // Minimum execution time: 93_761_000 picoseconds. + Weight::from_parts(92_637_129, 0) + // Standard Error: 309_799 + .saturating_add(Weight::from_parts(85_725_727, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_push_input(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 707_922_000 picoseconds. - Weight::from_parts(767_820_244, 0) - // Standard Error: 418_647 - .saturating_add(Weight::from_parts(97_993_049, 0).saturating_mul(r.into())) + // Minimum execution time: 565_388_000 picoseconds. + Weight::from_parts(606_358_854, 0) + // Standard Error: 430_766 + .saturating_add(Weight::from_parts(108_769_267, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reply_push_input_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 724_683_000 picoseconds. - Weight::from_parts(732_157_836, 0) - // Standard Error: 618 - .saturating_add(Weight::from_parts(151_809, 0).saturating_mul(n.into())) + // Minimum execution time: 591_660_000 picoseconds. + Weight::from_parts(597_035_528, 0) + // Standard Error: 2_641 + .saturating_add(Weight::from_parts(153_781, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_push_input(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_304_055_000 picoseconds. - Weight::from_parts(2_435_844_780, 0) - // Standard Error: 420_214 - .saturating_add(Weight::from_parts(120_405_108, 0).saturating_mul(r.into())) + // Minimum execution time: 2_317_147_000 picoseconds. + Weight::from_parts(2_514_940_964, 0) + // Standard Error: 546_319 + .saturating_add(Weight::from_parts(128_825_542, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_send_push_input_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_431_524_000 picoseconds. - Weight::from_parts(2_669_711_936, 0) - // Standard Error: 12_819 - .saturating_add(Weight::from_parts(13_546_418, 0).saturating_mul(n.into())) + // Minimum execution time: 2_560_344_000 picoseconds. + Weight::from_parts(2_512_409_449, 0) + // Standard Error: 15_466 + .saturating_add(Weight::from_parts(12_395_144, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_debug(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 85_238_000 picoseconds. - Weight::from_parts(104_905_012, 0) - // Standard Error: 392_000 - .saturating_add(Weight::from_parts(116_570_175, 0).saturating_mul(r.into())) + // Minimum execution time: 97_996_000 picoseconds. + Weight::from_parts(130_630_238, 0) + // Standard Error: 414_418 + .saturating_add(Weight::from_parts(114_735_577, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_debug_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 143_132_000 picoseconds. - Weight::from_parts(145_448_000, 0) - // Standard Error: 51_056 - .saturating_add(Weight::from_parts(25_497_066, 0).saturating_mul(n.into())) + // Minimum execution time: 157_513_000 picoseconds. + Weight::from_parts(160_584_000, 0) + // Standard Error: 57_227 + .saturating_add(Weight::from_parts(25_738_939, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_code(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_055_000 picoseconds. - Weight::from_parts(75_514_507, 0) - // Standard Error: 342_511 - .saturating_add(Weight::from_parts(78_022_368, 0).saturating_mul(r.into())) + // Minimum execution time: 92_652_000 picoseconds. + Weight::from_parts(88_138_429, 0) + // Standard Error: 330_537 + .saturating_add(Weight::from_parts(83_235_234, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_exit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_725_000 picoseconds. - Weight::from_parts(87_574_873, 0) - // Standard Error: 249_331 - .saturating_add(Weight::from_parts(24_890_126, 0).saturating_mul(r.into())) + // Minimum execution time: 93_824_000 picoseconds. + Weight::from_parts(102_740_497, 0) + // Standard Error: 428_593 + .saturating_add(Weight::from_parts(23_682_102, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_leave(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 82_761_000 picoseconds. - Weight::from_parts(86_511_404, 0) - // Standard Error: 240_746 - .saturating_add(Weight::from_parts(16_767_395, 0).saturating_mul(r.into())) + // Minimum execution time: 92_530_000 picoseconds. + Weight::from_parts(101_410_861, 0) + // Standard Error: 432_236 + .saturating_add(Weight::from_parts(12_196_938, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_wait(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_794_000 picoseconds. - Weight::from_parts(88_401_167, 0) - // Standard Error: 217_438 - .saturating_add(Weight::from_parts(11_267_632, 0).saturating_mul(r.into())) + // Minimum execution time: 93_402_000 picoseconds. + Weight::from_parts(102_285_877, 0) + // Standard Error: 466_463 + .saturating_add(Weight::from_parts(13_156_522, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_wait_for(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_664_000 picoseconds. - Weight::from_parts(89_193_048, 0) - // Standard Error: 336_699 - .saturating_add(Weight::from_parts(12_350_251, 0).saturating_mul(r.into())) + // Minimum execution time: 95_706_000 picoseconds. + Weight::from_parts(102_513_059, 0) + // Standard Error: 464_787 + .saturating_add(Weight::from_parts(13_986_540, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_wait_up_to(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_815_000 picoseconds. - Weight::from_parts(87_397_869, 0) - // Standard Error: 235_037 - .saturating_add(Weight::from_parts(16_313_030, 0).saturating_mul(r.into())) + // Minimum execution time: 93_057_000 picoseconds. + Weight::from_parts(99_083_869, 0) + // Standard Error: 378_747 + .saturating_add(Weight::from_parts(12_230_330, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_wake(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 139_190_000 picoseconds. - Weight::from_parts(186_267_428, 0) - // Standard Error: 346_204 - .saturating_add(Weight::from_parts(158_103_512, 0).saturating_mul(r.into())) + // Minimum execution time: 177_947_000 picoseconds. + Weight::from_parts(226_692_243, 0) + // Standard Error: 265_725 + .saturating_add(Weight::from_parts(156_938_838, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_create_program(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 96_748_000 picoseconds. - Weight::from_parts(148_556_306, 0) - // Standard Error: 400_680 - .saturating_add(Weight::from_parts(333_100_790, 0).saturating_mul(r.into())) + // Minimum execution time: 107_346_000 picoseconds. + Weight::from_parts(160_631_540, 0) + // Standard Error: 352_753 + .saturating_add(Weight::from_parts(338_685_448, 0).saturating_mul(r.into())) } /// The range of component `p` is `[0, 2048]`. /// The range of component `s` is `[1, 2048]`. @@ -2904,22 +2898,22 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 44_452_286_000 picoseconds. - Weight::from_parts(44_568_744_000, 0) - // Standard Error: 268_880 - .saturating_add(Weight::from_parts(7_444_126, 0).saturating_mul(p.into())) - // Standard Error: 268_867 - .saturating_add(Weight::from_parts(179_724_917, 0).saturating_mul(s.into())) + // Minimum execution time: 44_754_074_000 picoseconds. + Weight::from_parts(44_833_050_000, 0) + // Standard Error: 269_308 + .saturating_add(Weight::from_parts(7_629_892, 0).saturating_mul(p.into())) + // Standard Error: 269_294 + .saturating_add(Weight::from_parts(179_148_245, 0).saturating_mul(s.into())) } /// The range of component `r` is `[0, 20]`. fn gr_create_program_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 96_042_000 picoseconds. - Weight::from_parts(163_443_462, 0) - // Standard Error: 381_777 - .saturating_add(Weight::from_parts(338_839_702, 0).saturating_mul(r.into())) + // Minimum execution time: 108_278_000 picoseconds. + Weight::from_parts(161_208_126, 0) + // Standard Error: 368_644 + .saturating_add(Weight::from_parts(346_324_329, 0).saturating_mul(r.into())) } /// The range of component `p` is `[0, 2048]`. /// The range of component `s` is `[1, 2048]`. @@ -2927,32 +2921,32 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 42_724_116_000 picoseconds. - Weight::from_parts(42_849_968_000, 0) - // Standard Error: 263_445 - .saturating_add(Weight::from_parts(8_197_177, 0).saturating_mul(p.into())) - // Standard Error: 263_432 - .saturating_add(Weight::from_parts(180_050_572, 0).saturating_mul(s.into())) + // Minimum execution time: 44_266_209_000 picoseconds. + Weight::from_parts(44_559_345_000, 0) + // Standard Error: 270_420 + .saturating_add(Weight::from_parts(7_460_172, 0).saturating_mul(p.into())) + // Standard Error: 270_407 + .saturating_add(Weight::from_parts(179_211_260, 0).saturating_mul(s.into())) } /// The range of component `r` is `[0, 20]`. fn gr_pay_program_rent(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 86_607_000 picoseconds. - Weight::from_parts(100_957_693, 0) - // Standard Error: 29_067 - .saturating_add(Weight::from_parts(1_762_813, 0).saturating_mul(r.into())) + // Minimum execution time: 94_889_000 picoseconds. + Weight::from_parts(115_310_524, 0) + // Standard Error: 34_049 + .saturating_add(Weight::from_parts(1_916_607, 0).saturating_mul(r.into())) } /// The range of component `p` is `[0, 512]`. fn lazy_pages_signal_read(p: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `141` // Estimated: `1131 + p * (9900 ±0)` - // Minimum execution time: 87_305_000 picoseconds. - Weight::from_parts(108_825_748, 1131) - // Standard Error: 5_956 - .saturating_add(Weight::from_parts(11_809_647, 0).saturating_mul(p.into())) + // Minimum execution time: 97_825_000 picoseconds. + Weight::from_parts(251_440_245, 1131) + // Standard Error: 70_641 + .saturating_add(Weight::from_parts(15_652_952, 0).saturating_mul(p.into())) .saturating_add(RocksDbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 9900).saturating_mul(p.into())) } @@ -2961,10 +2955,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `141` // Estimated: `1131 + p * (9900 ±0)` - // Minimum execution time: 87_531_000 picoseconds. - Weight::from_parts(88_749_000, 1131) - // Standard Error: 27_438 - .saturating_add(Weight::from_parts(35_435_114, 0).saturating_mul(p.into())) + // Minimum execution time: 96_761_000 picoseconds. + Weight::from_parts(100_398_000, 1131) + // Standard Error: 45_532 + .saturating_add(Weight::from_parts(39_790_625, 0).saturating_mul(p.into())) .saturating_add(RocksDbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 9900).saturating_mul(p.into())) } @@ -2973,10 +2967,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `141` // Estimated: `5069931` - // Minimum execution time: 6_087_078_000 picoseconds. - Weight::from_parts(5_882_681_000, 5069931) - // Standard Error: 87_545 - .saturating_add(Weight::from_parts(37_047_042, 0).saturating_mul(p.into())) + // Minimum execution time: 7_471_807_000 picoseconds. + Weight::from_parts(7_440_591_962, 5069931) + // Standard Error: 168_373 + .saturating_add(Weight::from_parts(40_244_359, 0).saturating_mul(p.into())) .saturating_add(RocksDbWeight::get().reads(2048_u64)) } /// The range of component `p` is `[0, 512]`. @@ -2984,10 +2978,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `1813 + p * (65580 ±0)` // Estimated: `1939 + p * (75482 ±0)` - // Minimum execution time: 85_432_000 picoseconds. - Weight::from_parts(87_001_000, 1939) - // Standard Error: 47_768 - .saturating_add(Weight::from_parts(47_598_234, 0).saturating_mul(p.into())) + // Minimum execution time: 97_303_000 picoseconds. + Weight::from_parts(98_185_000, 1939) + // Standard Error: 38_471 + .saturating_add(Weight::from_parts(55_016_921, 0).saturating_mul(p.into())) .saturating_add(RocksDbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 75482).saturating_mul(p.into())) } @@ -2996,10 +2990,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `141` // Estimated: `1131 + p * (9900 ±0)` - // Minimum execution time: 92_594_000 picoseconds. - Weight::from_parts(93_795_036, 1131) - // Standard Error: 53_549 - .saturating_add(Weight::from_parts(35_797_869, 0).saturating_mul(p.into())) + // Minimum execution time: 102_497_000 picoseconds. + Weight::from_parts(104_932_685, 1131) + // Standard Error: 78_974 + .saturating_add(Weight::from_parts(39_257_150, 0).saturating_mul(p.into())) .saturating_add(RocksDbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 9900).saturating_mul(p.into())) } @@ -3008,10 +3002,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `141` // Estimated: `1496 + p * (9883 ±2)` - // Minimum execution time: 769_397_000 picoseconds. - Weight::from_parts(792_321_925, 1496) - // Standard Error: 237_986 - .saturating_add(Weight::from_parts(48_847_504, 0).saturating_mul(p.into())) + // Minimum execution time: 612_308_000 picoseconds. + Weight::from_parts(642_079_999, 1496) + // Standard Error: 357_245 + .saturating_add(Weight::from_parts(46_518_860, 0).saturating_mul(p.into())) .saturating_add(RocksDbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 9883).saturating_mul(p.into())) } @@ -3020,10 +3014,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `141` // Estimated: `317931` - // Minimum execution time: 1_113_735_000 picoseconds. - Weight::from_parts(1_148_020_828, 317931) - // Standard Error: 167_371 - .saturating_add(Weight::from_parts(47_795_831, 0).saturating_mul(p.into())) + // Minimum execution time: 1_068_248_000 picoseconds. + Weight::from_parts(1_080_741_205, 317931) + // Standard Error: 262_216 + .saturating_add(Weight::from_parts(50_047_907, 0).saturating_mul(p.into())) .saturating_add(RocksDbWeight::get().reads(128_u64)) } /// The range of component `r` is `[0, 20]`. @@ -3031,884 +3025,882 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 4_154_000 picoseconds. - Weight::from_parts(4_280_364, 0) - // Standard Error: 8_638 - .saturating_add(Weight::from_parts(24_150_721, 0).saturating_mul(r.into())) + // Minimum execution time: 3_099_000 picoseconds. + Weight::from_parts(6_340_084, 0) + // Standard Error: 180_257 + .saturating_add(Weight::from_parts(74_666_091, 0).saturating_mul(r.into())) } /// The range of component `r` is `[50, 500]`. fn instr_i64load(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 4_339_689_000 picoseconds. - Weight::from_parts(4_202_598_633, 0) - // Standard Error: 74_721 - .saturating_add(Weight::from_parts(4_468_109, 0).saturating_mul(r.into())) + // Minimum execution time: 4_391_547_000 picoseconds. + Weight::from_parts(4_140_785_425, 0) + // Standard Error: 89_369 + .saturating_add(Weight::from_parts(5_769_622, 0).saturating_mul(r.into())) } /// The range of component `r` is `[50, 500]`. fn instr_i32load(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 4_343_068_000 picoseconds. - Weight::from_parts(4_226_706_212, 0) - // Standard Error: 60_538 - .saturating_add(Weight::from_parts(4_325_162, 0).saturating_mul(r.into())) + // Minimum execution time: 4_386_802_000 picoseconds. + Weight::from_parts(4_243_536_456, 0) + // Standard Error: 95_210 + .saturating_add(Weight::from_parts(5_278_131, 0).saturating_mul(r.into())) } /// The range of component `r` is `[50, 500]`. fn instr_i64store(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 11_409_473_000 picoseconds. - Weight::from_parts(11_882_222_938, 0) - // Standard Error: 194_167 - .saturating_add(Weight::from_parts(8_210_890, 0).saturating_mul(r.into())) + // Minimum execution time: 11_072_272_000 picoseconds. + Weight::from_parts(11_558_306_225, 0) + // Standard Error: 165_659 + .saturating_add(Weight::from_parts(9_828_260, 0).saturating_mul(r.into())) } /// The range of component `r` is `[50, 500]`. fn instr_i32store(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 10_212_512_000 picoseconds. - Weight::from_parts(10_628_957_808, 0) - // Standard Error: 170_508 - .saturating_add(Weight::from_parts(11_560_237, 0).saturating_mul(r.into())) + // Minimum execution time: 10_285_071_000 picoseconds. + Weight::from_parts(11_137_621_942, 0) + // Standard Error: 147_513 + .saturating_add(Weight::from_parts(9_014_757, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_select(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_229_000 picoseconds. - Weight::from_parts(2_319_000, 0) - // Standard Error: 9_576 - .saturating_add(Weight::from_parts(3_794_717, 0).saturating_mul(r.into())) + // Minimum execution time: 2_285_000 picoseconds. + Weight::from_parts(2_410_000, 0) + // Standard Error: 7_624 + .saturating_add(Weight::from_parts(3_864_490, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_if(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_265_000 picoseconds. - Weight::from_parts(2_353_000, 0) - // Standard Error: 5_018 - .saturating_add(Weight::from_parts(3_059_511, 0).saturating_mul(r.into())) + // Minimum execution time: 2_342_000 picoseconds. + Weight::from_parts(2_433_000, 0) + // Standard Error: 6_413 + .saturating_add(Weight::from_parts(3_120_732, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_br(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_287_000 picoseconds. - Weight::from_parts(3_531_925, 0) - // Standard Error: 1_167 - .saturating_add(Weight::from_parts(1_569_201, 0).saturating_mul(r.into())) + // Minimum execution time: 2_301_000 picoseconds. + Weight::from_parts(3_591_730, 0) + // Standard Error: 1_106 + .saturating_add(Weight::from_parts(1_565_415, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_br_if(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_294_000 picoseconds. - Weight::from_parts(2_359_000, 0) - // Standard Error: 9_672 - .saturating_add(Weight::from_parts(2_884_305, 0).saturating_mul(r.into())) + // Minimum execution time: 2_306_000 picoseconds. + Weight::from_parts(2_461_000, 0) + // Standard Error: 7_711 + .saturating_add(Weight::from_parts(2_932_880, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_br_table(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_256_000 picoseconds. - Weight::from_parts(2_344_000, 0) - // Standard Error: 8_373 - .saturating_add(Weight::from_parts(5_256_648, 0).saturating_mul(r.into())) + // Minimum execution time: 2_358_000 picoseconds. + Weight::from_parts(2_144_801, 0) + // Standard Error: 22_082 + .saturating_add(Weight::from_parts(5_266_139, 0).saturating_mul(r.into())) } /// The range of component `e` is `[1, 256]`. fn instr_br_table_per_entry(e: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 7_012_000 picoseconds. - Weight::from_parts(4_938_253, 0) - // Standard Error: 2_214 - .saturating_add(Weight::from_parts(151_870, 0).saturating_mul(e.into())) + // Minimum execution time: 6_803_000 picoseconds. + Weight::from_parts(5_374_690, 0) + // Standard Error: 1_699 + .saturating_add(Weight::from_parts(171_193, 0).saturating_mul(e.into())) } /// The range of component `r` is `[0, 50]`. fn instr_call_const(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_309_000 picoseconds. - Weight::from_parts(4_232_448, 0) - // Standard Error: 6_359 - .saturating_add(Weight::from_parts(2_596_672, 0).saturating_mul(r.into())) + // Minimum execution time: 2_431_000 picoseconds. + Weight::from_parts(4_875_813, 0) + // Standard Error: 8_258 + .saturating_add(Weight::from_parts(2_629_733, 0).saturating_mul(r.into())) } fn instr_i64const(r: u32, ) -> Weight { Weight::from_parts(0, 0) - .saturating_add(Weight::from_parts(2_596_672 - - 2_404_212, 0).saturating_mul(r.into())) + .saturating_add(Weight::from_parts(2_629_733 - + 2_421_700, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_call(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_287_000 picoseconds. - Weight::from_parts(4_432_470, 0) - // Standard Error: 11_941 - .saturating_add(Weight::from_parts(2_404_212, 0).saturating_mul(r.into())) + // Minimum execution time: 2_403_000 picoseconds. + Weight::from_parts(5_140_243, 0) + // Standard Error: 13_164 + .saturating_add(Weight::from_parts(2_421_700, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_call_indirect(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_776_000 picoseconds. - Weight::from_parts(12_954_286, 0) - // Standard Error: 30_568 - .saturating_add(Weight::from_parts(10_260_958, 0).saturating_mul(r.into())) + // Minimum execution time: 2_669_000 picoseconds. + Weight::from_parts(22_369_265, 0) + // Standard Error: 28_577 + .saturating_add(Weight::from_parts(9_740_558, 0).saturating_mul(r.into())) } /// The range of component `p` is `[0, 128]`. fn instr_call_indirect_per_param(p: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 11_935_000 picoseconds. - Weight::from_parts(1_635_475, 0) - // Standard Error: 7_669 - .saturating_add(Weight::from_parts(1_285_084, 0).saturating_mul(p.into())) + // Minimum execution time: 12_277_000 picoseconds. + Weight::from_parts(3_596_853, 0) + // Standard Error: 5_869 + .saturating_add(Weight::from_parts(1_258_605, 0).saturating_mul(p.into())) } /// The range of component `l` is `[0, 1024]`. - fn instr_call_per_local(l: u32, ) -> Weight { + fn instr_call_per_local(_l: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 5_316_000 picoseconds. - Weight::from_parts(5_699_758, 0) - // Standard Error: 13 - .saturating_add(Weight::from_parts(34, 0).saturating_mul(l.into())) + // Minimum execution time: 5_391_000 picoseconds. + Weight::from_parts(5_778_137, 0) } /// The range of component `r` is `[0, 50]`. fn instr_local_get(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_315_000 picoseconds. - Weight::from_parts(2_460_643, 0) - // Standard Error: 2_850 - .saturating_add(Weight::from_parts(235_587, 0).saturating_mul(r.into())) + // Minimum execution time: 4_835_000 picoseconds. + Weight::from_parts(6_065_483, 0) + // Standard Error: 3_006 + .saturating_add(Weight::from_parts(378_512, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_local_set(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_202_000 picoseconds. - Weight::from_parts(2_270_000, 0) - // Standard Error: 6_150 - .saturating_add(Weight::from_parts(730_523, 0).saturating_mul(r.into())) + // Minimum execution time: 4_722_000 picoseconds. + Weight::from_parts(3_902_309, 0) + // Standard Error: 5_742 + .saturating_add(Weight::from_parts(1_056_408, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_local_tee(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_244_000 picoseconds. - Weight::from_parts(2_338_000, 0) - // Standard Error: 5_205 - .saturating_add(Weight::from_parts(679_669, 0).saturating_mul(r.into())) + // Minimum execution time: 4_888_000 picoseconds. + Weight::from_parts(4_512_058, 0) + // Standard Error: 6_410 + .saturating_add(Weight::from_parts(1_001_510, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_global_get(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_412_000 picoseconds. - Weight::from_parts(2_087_064, 0) - // Standard Error: 9_824 - .saturating_add(Weight::from_parts(743_737, 0).saturating_mul(r.into())) + // Minimum execution time: 6_413_000 picoseconds. + Weight::from_parts(2_704_134, 0) + // Standard Error: 7_244 + .saturating_add(Weight::from_parts(804_200, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_global_set(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_388_000 picoseconds. - Weight::from_parts(6_512_000, 0) - // Standard Error: 7_958 - .saturating_add(Weight::from_parts(1_283_588, 0).saturating_mul(r.into())) + // Minimum execution time: 6_516_000 picoseconds. + Weight::from_parts(1_028_752, 0) + // Standard Error: 8_792 + .saturating_add(Weight::from_parts(1_494_630, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_memory_current(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_885_000 picoseconds. - Weight::from_parts(4_075_795, 0) - // Standard Error: 12_241 - .saturating_add(Weight::from_parts(6_965_908, 0).saturating_mul(r.into())) + // Minimum execution time: 5_560_000 picoseconds. + Weight::from_parts(1_126_442, 0) + // Standard Error: 14_476 + .saturating_add(Weight::from_parts(7_240_597, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64clz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_259_000 picoseconds. - Weight::from_parts(2_312_000, 0) - // Standard Error: 5_936 - .saturating_add(Weight::from_parts(3_299_707, 0).saturating_mul(r.into())) + // Minimum execution time: 2_299_000 picoseconds. + Weight::from_parts(2_449_000, 0) + // Standard Error: 7_416 + .saturating_add(Weight::from_parts(3_344_387, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32clz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_255_000 picoseconds. - Weight::from_parts(2_294_000, 0) - // Standard Error: 6_255 - .saturating_add(Weight::from_parts(2_999_382, 0).saturating_mul(r.into())) + // Minimum execution time: 2_389_000 picoseconds. + Weight::from_parts(2_551_000, 0) + // Standard Error: 5_708 + .saturating_add(Weight::from_parts(3_133_430, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64ctz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_236_000 picoseconds. - Weight::from_parts(2_271_000, 0) - // Standard Error: 6_896 - .saturating_add(Weight::from_parts(2_967_047, 0).saturating_mul(r.into())) + // Minimum execution time: 2_428_000 picoseconds. + Weight::from_parts(2_511_000, 0) + // Standard Error: 7_262 + .saturating_add(Weight::from_parts(3_192_675, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32ctz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_221_000 picoseconds. - Weight::from_parts(2_268_000, 0) - // Standard Error: 4_893 - .saturating_add(Weight::from_parts(2_579_110, 0).saturating_mul(r.into())) + // Minimum execution time: 2_333_000 picoseconds. + Weight::from_parts(2_426_000, 0) + // Standard Error: 4_554 + .saturating_add(Weight::from_parts(2_683_293, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64popcnt(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_256_000 picoseconds. - Weight::from_parts(2_304_000, 0) - // Standard Error: 3_852 - .saturating_add(Weight::from_parts(520_005, 0).saturating_mul(r.into())) + // Minimum execution time: 2_334_000 picoseconds. + Weight::from_parts(2_385_000, 0) + // Standard Error: 4_686 + .saturating_add(Weight::from_parts(631_609, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32popcnt(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_274_000 picoseconds. - Weight::from_parts(1_794_591, 0) - // Standard Error: 3_416 - .saturating_add(Weight::from_parts(359_819, 0).saturating_mul(r.into())) + // Minimum execution time: 2_356_000 picoseconds. + Weight::from_parts(1_221_890, 0) + // Standard Error: 3_960 + .saturating_add(Weight::from_parts(452_047, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64eqz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_189_000 picoseconds. - Weight::from_parts(2_287_000, 0) - // Standard Error: 10_307 - .saturating_add(Weight::from_parts(1_833_775, 0).saturating_mul(r.into())) + // Minimum execution time: 2_318_000 picoseconds. + Weight::from_parts(2_390_000, 0) + // Standard Error: 11_114 + .saturating_add(Weight::from_parts(1_916_122, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32eqz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_287_000 picoseconds. - Weight::from_parts(2_349_000, 0) - // Standard Error: 9_393 - .saturating_add(Weight::from_parts(1_178_942, 0).saturating_mul(r.into())) + // Minimum execution time: 2_436_000 picoseconds. + Weight::from_parts(2_504_000, 0) + // Standard Error: 7_104 + .saturating_add(Weight::from_parts(1_156_958, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32extend8s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_259_000 picoseconds. - Weight::from_parts(2_256_508, 0) - // Standard Error: 3_133 - .saturating_add(Weight::from_parts(326_908, 0).saturating_mul(r.into())) + // Minimum execution time: 2_276_000 picoseconds. + Weight::from_parts(1_708_596, 0) + // Standard Error: 2_843 + .saturating_add(Weight::from_parts(377_083, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32extend16s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_298_000 picoseconds. - Weight::from_parts(1_792_383, 0) - // Standard Error: 2_981 - .saturating_add(Weight::from_parts(325_072, 0).saturating_mul(r.into())) + // Minimum execution time: 2_386_000 picoseconds. + Weight::from_parts(1_424_415, 0) + // Standard Error: 3_599 + .saturating_add(Weight::from_parts(395_934, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extend8s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_218_000 picoseconds. - Weight::from_parts(236_190, 0) - // Standard Error: 5_791 - .saturating_add(Weight::from_parts(526_784, 0).saturating_mul(r.into())) + // Minimum execution time: 2_396_000 picoseconds. + Weight::from_parts(2_491_000, 0) + // Standard Error: 3_774 + .saturating_add(Weight::from_parts(516_281, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extend16s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_278_000 picoseconds. - Weight::from_parts(18_346, 0) - // Standard Error: 5_882 - .saturating_add(Weight::from_parts(538_848, 0).saturating_mul(r.into())) + // Minimum execution time: 2_308_000 picoseconds. + Weight::from_parts(548_192, 0) + // Standard Error: 4_583 + .saturating_add(Weight::from_parts(556_734, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extend32s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_213_000 picoseconds. - Weight::from_parts(2_322_000, 0) - // Standard Error: 4_502 - .saturating_add(Weight::from_parts(463_034, 0).saturating_mul(r.into())) + // Minimum execution time: 2_333_000 picoseconds. + Weight::from_parts(447_271, 0) + // Standard Error: 5_300 + .saturating_add(Weight::from_parts(535_915, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extendsi32(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_272_000 picoseconds. - Weight::from_parts(2_193_450, 0) - // Standard Error: 3_655 - .saturating_add(Weight::from_parts(304_226, 0).saturating_mul(r.into())) + // Minimum execution time: 2_340_000 picoseconds. + Weight::from_parts(1_639_695, 0) + // Standard Error: 3_519 + .saturating_add(Weight::from_parts(368_523, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extendui32(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_174_000 picoseconds. - Weight::from_parts(2_803_358, 0) - // Standard Error: 2_256 - .saturating_add(Weight::from_parts(163_489, 0).saturating_mul(r.into())) + // Minimum execution time: 2_305_000 picoseconds. + Weight::from_parts(2_843_474, 0) + // Standard Error: 1_950 + .saturating_add(Weight::from_parts(176_592, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32wrapi64(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_242_000 picoseconds. - Weight::from_parts(3_087_274, 0) - // Standard Error: 1_907 - .saturating_add(Weight::from_parts(146_988, 0).saturating_mul(r.into())) + // Minimum execution time: 2_351_000 picoseconds. + Weight::from_parts(2_894_613, 0) + // Standard Error: 2_024 + .saturating_add(Weight::from_parts(188_853, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64eq(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_268_000 picoseconds. - Weight::from_parts(2_335_000, 0) - // Standard Error: 9_220 - .saturating_add(Weight::from_parts(1_682_986, 0).saturating_mul(r.into())) + // Minimum execution time: 2_353_000 picoseconds. + Weight::from_parts(2_418_000, 0) + // Standard Error: 9_504 + .saturating_add(Weight::from_parts(1_936_605, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32eq(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_244_000 picoseconds. - Weight::from_parts(2_290_000, 0) - // Standard Error: 7_751 - .saturating_add(Weight::from_parts(1_073_438, 0).saturating_mul(r.into())) + // Minimum execution time: 2_291_000 picoseconds. + Weight::from_parts(2_364_000, 0) + // Standard Error: 8_346 + .saturating_add(Weight::from_parts(1_222_521, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64ne(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_225_000 picoseconds. - Weight::from_parts(2_297_000, 0) - // Standard Error: 9_887 - .saturating_add(Weight::from_parts(1_746_888, 0).saturating_mul(r.into())) + // Minimum execution time: 2_345_000 picoseconds. + Weight::from_parts(2_452_000, 0) + // Standard Error: 10_232 + .saturating_add(Weight::from_parts(1_883_867, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32ne(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_225_000 picoseconds. - Weight::from_parts(2_305_000, 0) - // Standard Error: 8_241 - .saturating_add(Weight::from_parts(1_123_968, 0).saturating_mul(r.into())) + // Minimum execution time: 2_323_000 picoseconds. + Weight::from_parts(2_387_000, 0) + // Standard Error: 7_581 + .saturating_add(Weight::from_parts(1_200_178, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64lts(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_325_000 picoseconds. - Weight::from_parts(2_368_000, 0) - // Standard Error: 10_199 - .saturating_add(Weight::from_parts(1_754_281, 0).saturating_mul(r.into())) + // Minimum execution time: 2_410_000 picoseconds. + Weight::from_parts(2_459_000, 0) + // Standard Error: 11_139 + .saturating_add(Weight::from_parts(1_877_766, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32lts(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_254_000 picoseconds. - Weight::from_parts(2_296_000, 0) - // Standard Error: 7_885 - .saturating_add(Weight::from_parts(1_054_096, 0).saturating_mul(r.into())) + // Minimum execution time: 2_273_000 picoseconds. + Weight::from_parts(2_387_000, 0) + // Standard Error: 8_083 + .saturating_add(Weight::from_parts(1_217_904, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64ltu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_212_000 picoseconds. - Weight::from_parts(2_244_000, 0) - // Standard Error: 11_272 - .saturating_add(Weight::from_parts(1_769_874, 0).saturating_mul(r.into())) + // Minimum execution time: 2_403_000 picoseconds. + Weight::from_parts(2_482_000, 0) + // Standard Error: 11_044 + .saturating_add(Weight::from_parts(1_956_302, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32ltu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_248_000 picoseconds. - Weight::from_parts(2_341_000, 0) - // Standard Error: 8_360 - .saturating_add(Weight::from_parts(1_115_362, 0).saturating_mul(r.into())) + // Minimum execution time: 2_353_000 picoseconds. + Weight::from_parts(2_420_000, 0) + // Standard Error: 7_870 + .saturating_add(Weight::from_parts(1_213_570, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64gts(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_243_000 picoseconds. - Weight::from_parts(2_309_000, 0) - // Standard Error: 9_424 - .saturating_add(Weight::from_parts(1_807_643, 0).saturating_mul(r.into())) + // Minimum execution time: 2_364_000 picoseconds. + Weight::from_parts(2_430_000, 0) + // Standard Error: 10_577 + .saturating_add(Weight::from_parts(1_968_043, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32gts(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_213_000 picoseconds. - Weight::from_parts(2_310_000, 0) - // Standard Error: 7_499 - .saturating_add(Weight::from_parts(1_087_178, 0).saturating_mul(r.into())) + // Minimum execution time: 2_328_000 picoseconds. + Weight::from_parts(2_442_000, 0) + // Standard Error: 7_838 + .saturating_add(Weight::from_parts(1_267_211, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64gtu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_267_000 picoseconds. - Weight::from_parts(2_342_000, 0) - // Standard Error: 11_743 - .saturating_add(Weight::from_parts(1_703_075, 0).saturating_mul(r.into())) + // Minimum execution time: 2_395_000 picoseconds. + Weight::from_parts(2_460_000, 0) + // Standard Error: 10_856 + .saturating_add(Weight::from_parts(1_910_357, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32gtu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_137_000 picoseconds. - Weight::from_parts(2_254_000, 0) - // Standard Error: 8_099 - .saturating_add(Weight::from_parts(1_080_763, 0).saturating_mul(r.into())) + // Minimum execution time: 2_343_000 picoseconds. + Weight::from_parts(2_409_000, 0) + // Standard Error: 5_786 + .saturating_add(Weight::from_parts(1_128_653, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64les(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_183_000 picoseconds. - Weight::from_parts(2_301_000, 0) - // Standard Error: 10_230 - .saturating_add(Weight::from_parts(1_738_567, 0).saturating_mul(r.into())) + // Minimum execution time: 2_318_000 picoseconds. + Weight::from_parts(2_433_000, 0) + // Standard Error: 10_344 + .saturating_add(Weight::from_parts(1_897_480, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32les(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_209_000 picoseconds. - Weight::from_parts(2_309_000, 0) - // Standard Error: 8_536 - .saturating_add(Weight::from_parts(1_161_928, 0).saturating_mul(r.into())) + // Minimum execution time: 2_355_000 picoseconds. + Weight::from_parts(2_460_000, 0) + // Standard Error: 6_963 + .saturating_add(Weight::from_parts(1_125_698, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64leu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_208_000 picoseconds. - Weight::from_parts(2_255_000, 0) - // Standard Error: 10_368 - .saturating_add(Weight::from_parts(1_847_441, 0).saturating_mul(r.into())) + // Minimum execution time: 2_356_000 picoseconds. + Weight::from_parts(2_447_000, 0) + // Standard Error: 8_285 + .saturating_add(Weight::from_parts(1_848_149, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32leu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_223_000 picoseconds. - Weight::from_parts(2_299_000, 0) - // Standard Error: 8_213 - .saturating_add(Weight::from_parts(1_112_048, 0).saturating_mul(r.into())) + // Minimum execution time: 2_327_000 picoseconds. + Weight::from_parts(2_394_000, 0) + // Standard Error: 7_282 + .saturating_add(Weight::from_parts(1_176_423, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64ges(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_221_000 picoseconds. - Weight::from_parts(2_270_000, 0) - // Standard Error: 12_684 - .saturating_add(Weight::from_parts(1_728_765, 0).saturating_mul(r.into())) + // Minimum execution time: 2_372_000 picoseconds. + Weight::from_parts(2_439_000, 0) + // Standard Error: 9_207 + .saturating_add(Weight::from_parts(1_837_009, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32ges(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_573_000 picoseconds. - Weight::from_parts(2_655_000, 0) - // Standard Error: 7_404 - .saturating_add(Weight::from_parts(1_080_080, 0).saturating_mul(r.into())) + // Minimum execution time: 2_368_000 picoseconds. + Weight::from_parts(2_427_000, 0) + // Standard Error: 8_320 + .saturating_add(Weight::from_parts(1_231_088, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64geu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_259_000 picoseconds. - Weight::from_parts(2_316_000, 0) - // Standard Error: 9_739 - .saturating_add(Weight::from_parts(1_807_913, 0).saturating_mul(r.into())) + // Minimum execution time: 2_373_000 picoseconds. + Weight::from_parts(2_461_000, 0) + // Standard Error: 9_499 + .saturating_add(Weight::from_parts(1_922_588, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32geu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_198_000 picoseconds. - Weight::from_parts(2_296_000, 0) - // Standard Error: 7_265 - .saturating_add(Weight::from_parts(1_087_210, 0).saturating_mul(r.into())) + // Minimum execution time: 2_387_000 picoseconds. + Weight::from_parts(2_455_000, 0) + // Standard Error: 7_681 + .saturating_add(Weight::from_parts(1_198_894, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64add(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_252_000 picoseconds. - Weight::from_parts(2_311_000, 0) - // Standard Error: 7_444 - .saturating_add(Weight::from_parts(1_191_685, 0).saturating_mul(r.into())) + // Minimum execution time: 2_308_000 picoseconds. + Weight::from_parts(2_389_000, 0) + // Standard Error: 7_797 + .saturating_add(Weight::from_parts(1_286_566, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32add(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_263_000 picoseconds. - Weight::from_parts(2_320_000, 0) - // Standard Error: 5_023 - .saturating_add(Weight::from_parts(585_667, 0).saturating_mul(r.into())) + // Minimum execution time: 2_329_000 picoseconds. + Weight::from_parts(2_389_000, 0) + // Standard Error: 4_968 + .saturating_add(Weight::from_parts(645_254, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64sub(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_213_000 picoseconds. - Weight::from_parts(2_320_000, 0) - // Standard Error: 10_018 - .saturating_add(Weight::from_parts(1_297_791, 0).saturating_mul(r.into())) + // Minimum execution time: 2_409_000 picoseconds. + Weight::from_parts(2_489_000, 0) + // Standard Error: 7_055 + .saturating_add(Weight::from_parts(1_232_084, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32sub(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_291_000 picoseconds. - Weight::from_parts(2_312_000, 0) - // Standard Error: 4_776 - .saturating_add(Weight::from_parts(612_864, 0).saturating_mul(r.into())) + // Minimum execution time: 2_371_000 picoseconds. + Weight::from_parts(2_420_000, 0) + // Standard Error: 4_348 + .saturating_add(Weight::from_parts(633_810, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64mul(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_286_000 picoseconds. - Weight::from_parts(2_356_000, 0) - // Standard Error: 11_619 - .saturating_add(Weight::from_parts(1_743_809, 0).saturating_mul(r.into())) + // Minimum execution time: 2_336_000 picoseconds. + Weight::from_parts(2_413_000, 0) + // Standard Error: 8_202 + .saturating_add(Weight::from_parts(1_777_425, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32mul(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_302_000 picoseconds. - Weight::from_parts(2_343_000, 0) - // Standard Error: 8_638 - .saturating_add(Weight::from_parts(1_136_060, 0).saturating_mul(r.into())) + // Minimum execution time: 2_314_000 picoseconds. + Weight::from_parts(2_369_000, 0) + // Standard Error: 6_935 + .saturating_add(Weight::from_parts(1_201_570, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64divs(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_236_000 picoseconds. - Weight::from_parts(2_309_000, 0) - // Standard Error: 7_114 - .saturating_add(Weight::from_parts(2_599_346, 0).saturating_mul(r.into())) + // Minimum execution time: 2_276_000 picoseconds. + Weight::from_parts(6_846_840, 0) + // Standard Error: 17_822 + .saturating_add(Weight::from_parts(2_268_370, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32divs(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_200_000 picoseconds. - Weight::from_parts(3_823_403, 0) - // Standard Error: 18_912 - .saturating_add(Weight::from_parts(2_161_963, 0).saturating_mul(r.into())) + // Minimum execution time: 2_394_000 picoseconds. + Weight::from_parts(4_704_336, 0) + // Standard Error: 10_960 + .saturating_add(Weight::from_parts(2_182_711, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64divu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_199_000 picoseconds. - Weight::from_parts(2_817_173, 0) - // Standard Error: 17_341 - .saturating_add(Weight::from_parts(2_740_748, 0).saturating_mul(r.into())) + // Minimum execution time: 2_375_000 picoseconds. + Weight::from_parts(1_968_824, 0) + // Standard Error: 15_899 + .saturating_add(Weight::from_parts(2_762_269, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32divu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_294_000 picoseconds. - Weight::from_parts(88_235, 0) - // Standard Error: 10_326 - .saturating_add(Weight::from_parts(2_481_087, 0).saturating_mul(r.into())) + // Minimum execution time: 2_335_000 picoseconds. + Weight::from_parts(1_450_000, 0) + // Standard Error: 13_496 + .saturating_add(Weight::from_parts(2_401_407, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64rems(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_232_000 picoseconds. - Weight::from_parts(2_294_000, 0) - // Standard Error: 14_480 - .saturating_add(Weight::from_parts(9_604_981, 0).saturating_mul(r.into())) + // Minimum execution time: 2_448_000 picoseconds. + Weight::from_parts(2_513_000, 0) + // Standard Error: 19_401 + .saturating_add(Weight::from_parts(9_309_211, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32rems(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_213_000 picoseconds. - Weight::from_parts(2_260_000, 0) - // Standard Error: 21_926 - .saturating_add(Weight::from_parts(7_501_289, 0).saturating_mul(r.into())) + // Minimum execution time: 2_273_000 picoseconds. + Weight::from_parts(1_738_370, 0) + // Standard Error: 42_672 + .saturating_add(Weight::from_parts(7_512_557, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64remu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_309_000 picoseconds. - Weight::from_parts(10_308_173, 0) - // Standard Error: 30_680 - .saturating_add(Weight::from_parts(2_288_505, 0).saturating_mul(r.into())) + // Minimum execution time: 2_371_000 picoseconds. + Weight::from_parts(2_215_088, 0) + // Standard Error: 15_445 + .saturating_add(Weight::from_parts(2_956_278, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32remu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_211_000 picoseconds. - Weight::from_parts(2_290_000, 0) - // Standard Error: 5_007 - .saturating_add(Weight::from_parts(2_516_076, 0).saturating_mul(r.into())) + // Minimum execution time: 2_409_000 picoseconds. + Weight::from_parts(217_500, 0) + // Standard Error: 7_904 + .saturating_add(Weight::from_parts(2_576_151, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64and(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_228_000 picoseconds. - Weight::from_parts(2_300_000, 0) - // Standard Error: 8_948 - .saturating_add(Weight::from_parts(1_264_596, 0).saturating_mul(r.into())) + // Minimum execution time: 2_456_000 picoseconds. + Weight::from_parts(2_503_000, 0) + // Standard Error: 7_920 + .saturating_add(Weight::from_parts(1_321_543, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32and(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_213_000 picoseconds. - Weight::from_parts(2_323_000, 0) - // Standard Error: 5_099 - .saturating_add(Weight::from_parts(612_107, 0).saturating_mul(r.into())) + // Minimum execution time: 2_346_000 picoseconds. + Weight::from_parts(2_479_000, 0) + // Standard Error: 4_711 + .saturating_add(Weight::from_parts(689_892, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64or(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_282_000 picoseconds. - Weight::from_parts(2_326_000, 0) - // Standard Error: 10_004 - .saturating_add(Weight::from_parts(1_278_365, 0).saturating_mul(r.into())) + // Minimum execution time: 2_339_000 picoseconds. + Weight::from_parts(2_427_000, 0) + // Standard Error: 8_029 + .saturating_add(Weight::from_parts(1_256_838, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32or(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_258_000 picoseconds. - Weight::from_parts(2_341_000, 0) - // Standard Error: 5_578 - .saturating_add(Weight::from_parts(645_196, 0).saturating_mul(r.into())) + // Minimum execution time: 2_334_000 picoseconds. + Weight::from_parts(2_480_000, 0) + // Standard Error: 3_812 + .saturating_add(Weight::from_parts(607_420, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64xor(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_338_000 picoseconds. - Weight::from_parts(2_363_000, 0) - // Standard Error: 8_554 - .saturating_add(Weight::from_parts(1_288_676, 0).saturating_mul(r.into())) + // Minimum execution time: 2_328_000 picoseconds. + Weight::from_parts(2_392_000, 0) + // Standard Error: 7_362 + .saturating_add(Weight::from_parts(1_248_739, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32xor(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_214_000 picoseconds. - Weight::from_parts(2_332_000, 0) - // Standard Error: 3_999 - .saturating_add(Weight::from_parts(594_484, 0).saturating_mul(r.into())) + // Minimum execution time: 2_419_000 picoseconds. + Weight::from_parts(2_465_000, 0) + // Standard Error: 4_304 + .saturating_add(Weight::from_parts(604_813, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64shl(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_198_000 picoseconds. - Weight::from_parts(2_258_000, 0) - // Standard Error: 7_437 - .saturating_add(Weight::from_parts(1_044_306, 0).saturating_mul(r.into())) + // Minimum execution time: 2_298_000 picoseconds. + Weight::from_parts(2_433_000, 0) + // Standard Error: 8_043 + .saturating_add(Weight::from_parts(1_073_194, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32shl(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_226_000 picoseconds. - Weight::from_parts(2_308_000, 0) - // Standard Error: 4_658 - .saturating_add(Weight::from_parts(537_262, 0).saturating_mul(r.into())) + // Minimum execution time: 2_427_000 picoseconds. + Weight::from_parts(2_511_000, 0) + // Standard Error: 4_969 + .saturating_add(Weight::from_parts(594_802, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64shrs(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_231_000 picoseconds. - Weight::from_parts(2_296_000, 0) - // Standard Error: 10_254 - .saturating_add(Weight::from_parts(1_154_138, 0).saturating_mul(r.into())) + // Minimum execution time: 2_312_000 picoseconds. + Weight::from_parts(2_399_000, 0) + // Standard Error: 7_093 + .saturating_add(Weight::from_parts(1_110_114, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32shrs(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_234_000 picoseconds. - Weight::from_parts(2_313_000, 0) - // Standard Error: 4_960 - .saturating_add(Weight::from_parts(607_930, 0).saturating_mul(r.into())) + // Minimum execution time: 2_331_000 picoseconds. + Weight::from_parts(2_433_000, 0) + // Standard Error: 4_140 + .saturating_add(Weight::from_parts(600_354, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64shru(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_279_000 picoseconds. - Weight::from_parts(2_342_000, 0) - // Standard Error: 7_909 - .saturating_add(Weight::from_parts(1_094_660, 0).saturating_mul(r.into())) + // Minimum execution time: 2_300_000 picoseconds. + Weight::from_parts(2_419_000, 0) + // Standard Error: 7_150 + .saturating_add(Weight::from_parts(1_154_649, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32shru(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_232_000 picoseconds. - Weight::from_parts(39_069, 0) - // Standard Error: 6_710 - .saturating_add(Weight::from_parts(599_572, 0).saturating_mul(r.into())) + // Minimum execution time: 2_356_000 picoseconds. + Weight::from_parts(2_423_000, 0) + // Standard Error: 5_067 + .saturating_add(Weight::from_parts(594_487, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64rotl(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_254_000 picoseconds. - Weight::from_parts(2_309_000, 0) - // Standard Error: 8_785 - .saturating_add(Weight::from_parts(1_060_321, 0).saturating_mul(r.into())) + // Minimum execution time: 2_339_000 picoseconds. + Weight::from_parts(2_406_000, 0) + // Standard Error: 5_674 + .saturating_add(Weight::from_parts(1_051_819, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32rotl(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_257_000 picoseconds. - Weight::from_parts(2_310_000, 0) - // Standard Error: 4_191 - .saturating_add(Weight::from_parts(528_319, 0).saturating_mul(r.into())) + // Minimum execution time: 2_383_000 picoseconds. + Weight::from_parts(114_723, 0) + // Standard Error: 5_881 + .saturating_add(Weight::from_parts(646_798, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64rotr(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_256_000 picoseconds. - Weight::from_parts(2_310_000, 0) - // Standard Error: 9_328 - .saturating_add(Weight::from_parts(1_114_164, 0).saturating_mul(r.into())) + // Minimum execution time: 2_292_000 picoseconds. + Weight::from_parts(2_422_000, 0) + // Standard Error: 6_697 + .saturating_add(Weight::from_parts(1_053_580, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32rotr(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_210_000 picoseconds. - Weight::from_parts(390_951, 0) - // Standard Error: 5_316 - .saturating_add(Weight::from_parts(609_568, 0).saturating_mul(r.into())) + // Minimum execution time: 2_325_000 picoseconds. + Weight::from_parts(206_699, 0) + // Standard Error: 5_851 + .saturating_add(Weight::from_parts(639_333, 0).saturating_mul(r.into())) } } diff --git a/runtime/gear/src/weights/pallet_gear_voucher.rs b/runtime/gear/src/weights/pallet_gear_voucher.rs index 6430deada98..6d6889d1752 100644 --- a/runtime/gear/src/weights/pallet_gear_voucher.rs +++ b/runtime/gear/src/weights/pallet_gear_voucher.rs @@ -19,13 +19,13 @@ //! Autogenerated weights for pallet_gear_voucher //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-08-20, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-09-11, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` //! CPU: `Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("gear-dev"), DB CACHE: 1024 +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("vara-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/gear benchmark pallet --chain=gear-dev --steps=50 --repeat=20 --pallet=pallet_gear_voucher --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./scripts/benchmarking/weights-output/pallet_gear_voucher.rs --template=.maintain/frame-weight-template.hbs +// ./target/production/gear benchmark pallet --chain=vara-dev --steps=50 --repeat=20 --pallet=pallet_gear_voucher --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./scripts/benchmarking/weights-output/pallet_gear_voucher.rs --template=.maintain/frame-weight-template.hbs #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -47,8 +47,8 @@ impl pallet_gear_voucher::WeightInfo for SubstrateWeigh // Proof Size summary in bytes: // Measured: `101` // Estimated: `6196` - // Minimum execution time: 26_728_000 picoseconds. - Weight::from_parts(27_248_000, 6196) + // Minimum execution time: 25_876_000 picoseconds. + Weight::from_parts(26_659_000, 6196) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(2_u64)) } @@ -60,8 +60,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `101` // Estimated: `6196` - // Minimum execution time: 26_728_000 picoseconds. - Weight::from_parts(27_248_000, 6196) + // Minimum execution time: 25_876_000 picoseconds. + Weight::from_parts(26_659_000, 6196) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(2_u64)) } diff --git a/runtime/gear/src/weights/pallet_timestamp.rs b/runtime/gear/src/weights/pallet_timestamp.rs index c826119e49e..5c50f24c824 100644 --- a/runtime/gear/src/weights/pallet_timestamp.rs +++ b/runtime/gear/src/weights/pallet_timestamp.rs @@ -19,13 +19,13 @@ //! Autogenerated weights for pallet_timestamp //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-08-20, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-09-11, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` //! CPU: `Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("gear-dev"), DB CACHE: 1024 +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("vara-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/gear benchmark pallet --chain=gear-dev --steps=50 --repeat=20 --pallet=pallet_timestamp --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./scripts/benchmarking/weights-output/pallet_timestamp.rs --template=.maintain/frame-weight-template.hbs +// ./target/production/gear benchmark pallet --chain=vara-dev --steps=50 --repeat=20 --pallet=pallet_timestamp --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./scripts/benchmarking/weights-output/pallet_timestamp.rs --template=.maintain/frame-weight-template.hbs #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -46,19 +46,19 @@ pub struct SubstrateWeight(PhantomData); impl pallet_timestamp::WeightInfo for SubstrateWeight { fn set() -> Weight { // Proof Size summary in bytes: - // Measured: `175` + // Measured: `211` // Estimated: `2986` - // Minimum execution time: 7_698_000 picoseconds. - Weight::from_parts(8_141_000, 2986) + // Minimum execution time: 9_513_000 picoseconds. + Weight::from_parts(10_337_000, 2986) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } fn on_finalize() -> Weight { // Proof Size summary in bytes: - // Measured: `57` + // Measured: `94` // Estimated: `0` - // Minimum execution time: 3_104_000 picoseconds. - Weight::from_parts(3_276_000, 0) + // Minimum execution time: 3_681_000 picoseconds. + Weight::from_parts(3_916_000, 0) } } @@ -66,18 +66,18 @@ impl pallet_timestamp::WeightInfo for SubstrateWeight Weight { // Proof Size summary in bytes: - // Measured: `175` + // Measured: `211` // Estimated: `2986` - // Minimum execution time: 7_698_000 picoseconds. - Weight::from_parts(8_141_000, 2986) + // Minimum execution time: 9_513_000 picoseconds. + Weight::from_parts(10_337_000, 2986) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } fn on_finalize() -> Weight { // Proof Size summary in bytes: - // Measured: `57` + // Measured: `94` // Estimated: `0` - // Minimum execution time: 3_104_000 picoseconds. - Weight::from_parts(3_276_000, 0) + // Minimum execution time: 3_681_000 picoseconds. + Weight::from_parts(3_916_000, 0) } } diff --git a/runtime/gear/src/weights/pallet_utility.rs b/runtime/gear/src/weights/pallet_utility.rs index e53f42e744f..514181ef7a3 100644 --- a/runtime/gear/src/weights/pallet_utility.rs +++ b/runtime/gear/src/weights/pallet_utility.rs @@ -19,13 +19,13 @@ //! Autogenerated weights for pallet_utility //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-08-20, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-09-11, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` //! CPU: `Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("gear-dev"), DB CACHE: 1024 +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("vara-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/gear benchmark pallet --chain=gear-dev --steps=50 --repeat=20 --pallet=pallet_utility --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./scripts/benchmarking/weights-output/pallet_utility.rs --template=.maintain/frame-weight-template.hbs +// ./target/production/gear benchmark pallet --chain=vara-dev --steps=50 --repeat=20 --pallet=pallet_utility --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./scripts/benchmarking/weights-output/pallet_utility.rs --template=.maintain/frame-weight-template.hbs #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -52,44 +52,44 @@ impl pallet_utility::WeightInfo for SubstrateWeight // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 5_257_000 picoseconds. - Weight::from_parts(4_780_489, 0) - // Standard Error: 5_942 - .saturating_add(Weight::from_parts(4_050_876, 0).saturating_mul(c.into())) + // Minimum execution time: 5_349_000 picoseconds. + Weight::from_parts(8_798_188, 0) + // Standard Error: 2_360 + .saturating_add(Weight::from_parts(3_859_914, 0).saturating_mul(c.into())) } fn as_derivative() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 3_444_000 picoseconds. - Weight::from_parts(3_651_000, 0) + // Minimum execution time: 3_760_000 picoseconds. + Weight::from_parts(3_882_000, 0) } /// The range of component `c` is `[0, 1000]`. fn batch_all(c: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 5_391_000 picoseconds. - Weight::from_parts(13_396_792, 0) - // Standard Error: 5_623 - .saturating_add(Weight::from_parts(4_206_823, 0).saturating_mul(c.into())) + // Minimum execution time: 5_343_000 picoseconds. + Weight::from_parts(6_613_150, 0) + // Standard Error: 2_902 + .saturating_add(Weight::from_parts(4_045_901, 0).saturating_mul(c.into())) } fn dispatch_as() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_836_000 picoseconds. - Weight::from_parts(7_186_000, 0) + // Minimum execution time: 6_983_000 picoseconds. + Weight::from_parts(7_317_000, 0) } /// The range of component `c` is `[0, 1000]`. fn force_batch(c: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 5_427_000 picoseconds. - Weight::from_parts(14_488_578, 0) - // Standard Error: 6_374 - .saturating_add(Weight::from_parts(4_015_154, 0).saturating_mul(c.into())) + // Minimum execution time: 5_419_000 picoseconds. + Weight::from_parts(9_009_348, 0) + // Standard Error: 2_400 + .saturating_add(Weight::from_parts(3_868_692, 0).saturating_mul(c.into())) } } @@ -100,43 +100,43 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 5_257_000 picoseconds. - Weight::from_parts(4_780_489, 0) - // Standard Error: 5_942 - .saturating_add(Weight::from_parts(4_050_876, 0).saturating_mul(c.into())) + // Minimum execution time: 5_349_000 picoseconds. + Weight::from_parts(8_798_188, 0) + // Standard Error: 2_360 + .saturating_add(Weight::from_parts(3_859_914, 0).saturating_mul(c.into())) } fn as_derivative() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 3_444_000 picoseconds. - Weight::from_parts(3_651_000, 0) + // Minimum execution time: 3_760_000 picoseconds. + Weight::from_parts(3_882_000, 0) } /// The range of component `c` is `[0, 1000]`. fn batch_all(c: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 5_391_000 picoseconds. - Weight::from_parts(13_396_792, 0) - // Standard Error: 5_623 - .saturating_add(Weight::from_parts(4_206_823, 0).saturating_mul(c.into())) + // Minimum execution time: 5_343_000 picoseconds. + Weight::from_parts(6_613_150, 0) + // Standard Error: 2_902 + .saturating_add(Weight::from_parts(4_045_901, 0).saturating_mul(c.into())) } fn dispatch_as() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_836_000 picoseconds. - Weight::from_parts(7_186_000, 0) + // Minimum execution time: 6_983_000 picoseconds. + Weight::from_parts(7_317_000, 0) } /// The range of component `c` is `[0, 1000]`. fn force_batch(c: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 5_427_000 picoseconds. - Weight::from_parts(14_488_578, 0) - // Standard Error: 6_374 - .saturating_add(Weight::from_parts(4_015_154, 0).saturating_mul(c.into())) + // Minimum execution time: 5_419_000 picoseconds. + Weight::from_parts(9_009_348, 0) + // Standard Error: 2_400 + .saturating_add(Weight::from_parts(3_868_692, 0).saturating_mul(c.into())) } } diff --git a/runtime/vara/src/tests.rs b/runtime/vara/src/tests.rs index 2dbfc3d0412..ab677a238d5 100644 --- a/runtime/vara/src/tests.rs +++ b/runtime/vara/src/tests.rs @@ -142,10 +142,10 @@ fn page_costs_heuristic_test() { lazy_pages_host_func_read: 29_000_000.into(), lazy_pages_host_func_write: 33_000_000.into(), lazy_pages_host_func_write_after_read: 10_687_730.into(), - load_page_data: 8_700_000.into(), + load_page_data: 9_700_000.into(), upload_page_data: 104_000_000.into(), static_page: 100.into(), - mem_grow: 306_170.into(), + mem_grow: 906_170.into(), parachain_load_heuristic: 0.into(), }; @@ -156,7 +156,7 @@ fn page_costs_heuristic_test() { host_func_read: 29_000_000.into(), host_func_write: 137_000_000.into(), host_func_write_after_read: 112_000_000.into(), - load_page_storage_data: 8_700_000.into(), + load_page_storage_data: 9_700_000.into(), }; check_pages_weights( diff --git a/runtime/vara/src/weights/frame_system.rs b/runtime/vara/src/weights/frame_system.rs index 4a96c3b0457..31dd34692d1 100644 --- a/runtime/vara/src/weights/frame_system.rs +++ b/runtime/vara/src/weights/frame_system.rs @@ -19,7 +19,7 @@ //! Autogenerated weights for frame_system //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-08-20, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-09-11, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` //! CPU: `Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("vara-dev"), DB CACHE: 1024 @@ -53,27 +53,27 @@ impl frame_system::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_619_000 picoseconds. - Weight::from_parts(1_222_978, 0) + // Minimum execution time: 1_562_000 picoseconds. + Weight::from_parts(1_066_991, 0) // Standard Error: 0 - .saturating_add(Weight::from_parts(460, 0).saturating_mul(b.into())) + .saturating_add(Weight::from_parts(461, 0).saturating_mul(b.into())) } /// The range of component `b` is `[0, 1310720]`. fn remark_with_event(b: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_210_000 picoseconds. - Weight::from_parts(6_305_000, 0) + // Minimum execution time: 5_949_000 picoseconds. + Weight::from_parts(6_153_000, 0) // Standard Error: 0 - .saturating_add(Weight::from_parts(1_438, 0).saturating_mul(b.into())) + .saturating_add(Weight::from_parts(1_441, 0).saturating_mul(b.into())) } fn set_heap_pages() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `1485` - // Minimum execution time: 3_022_000 picoseconds. - Weight::from_parts(3_351_000, 1485) + // Minimum execution time: 3_113_000 picoseconds. + Weight::from_parts(3_394_000, 1485) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(2_u64)) } @@ -82,10 +82,10 @@ impl frame_system::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_529_000 picoseconds. - Weight::from_parts(1_573_000, 0) - // Standard Error: 997 - .saturating_add(Weight::from_parts(684_007, 0).saturating_mul(i.into())) + // Minimum execution time: 1_578_000 picoseconds. + Weight::from_parts(1_632_000, 0) + // Standard Error: 994 + .saturating_add(Weight::from_parts(687_989, 0).saturating_mul(i.into())) .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into()))) } /// The range of component `i` is `[0, 1000]`. @@ -93,21 +93,21 @@ impl frame_system::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_611_000 picoseconds. - Weight::from_parts(1_646_000, 0) - // Standard Error: 813 - .saturating_add(Weight::from_parts(531_452, 0).saturating_mul(i.into())) + // Minimum execution time: 1_593_000 picoseconds. + Weight::from_parts(1_667_000, 0) + // Standard Error: 783 + .saturating_add(Weight::from_parts(535_872, 0).saturating_mul(i.into())) .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into()))) } /// The range of component `p` is `[0, 1000]`. fn kill_prefix(p: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `82 + p * (69 ±0)` - // Estimated: `83 + p * (70 ±0)` - // Minimum execution time: 3_424_000 picoseconds. - Weight::from_parts(3_487_000, 83) - // Standard Error: 1_821 - .saturating_add(Weight::from_parts(1_126_082, 0).saturating_mul(p.into())) + // Estimated: `89 + p * (70 ±0)` + // Minimum execution time: 3_345_000 picoseconds. + Weight::from_parts(3_470_000, 89) + // Standard Error: 1_511 + .saturating_add(Weight::from_parts(1_126_865, 0).saturating_mul(p.into())) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(p.into()))) .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 70).saturating_mul(p.into())) @@ -121,27 +121,27 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_619_000 picoseconds. - Weight::from_parts(1_222_978, 0) + // Minimum execution time: 1_562_000 picoseconds. + Weight::from_parts(1_066_991, 0) // Standard Error: 0 - .saturating_add(Weight::from_parts(460, 0).saturating_mul(b.into())) + .saturating_add(Weight::from_parts(461, 0).saturating_mul(b.into())) } /// The range of component `b` is `[0, 1310720]`. fn remark_with_event(b: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_210_000 picoseconds. - Weight::from_parts(6_305_000, 0) + // Minimum execution time: 5_949_000 picoseconds. + Weight::from_parts(6_153_000, 0) // Standard Error: 0 - .saturating_add(Weight::from_parts(1_438, 0).saturating_mul(b.into())) + .saturating_add(Weight::from_parts(1_441, 0).saturating_mul(b.into())) } fn set_heap_pages() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `1485` - // Minimum execution time: 3_022_000 picoseconds. - Weight::from_parts(3_351_000, 1485) + // Minimum execution time: 3_113_000 picoseconds. + Weight::from_parts(3_394_000, 1485) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(2_u64)) } @@ -150,10 +150,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_529_000 picoseconds. - Weight::from_parts(1_573_000, 0) - // Standard Error: 997 - .saturating_add(Weight::from_parts(684_007, 0).saturating_mul(i.into())) + // Minimum execution time: 1_578_000 picoseconds. + Weight::from_parts(1_632_000, 0) + // Standard Error: 994 + .saturating_add(Weight::from_parts(687_989, 0).saturating_mul(i.into())) .saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(i.into()))) } /// The range of component `i` is `[0, 1000]`. @@ -161,21 +161,21 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_611_000 picoseconds. - Weight::from_parts(1_646_000, 0) - // Standard Error: 813 - .saturating_add(Weight::from_parts(531_452, 0).saturating_mul(i.into())) + // Minimum execution time: 1_593_000 picoseconds. + Weight::from_parts(1_667_000, 0) + // Standard Error: 783 + .saturating_add(Weight::from_parts(535_872, 0).saturating_mul(i.into())) .saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(i.into()))) } /// The range of component `p` is `[0, 1000]`. fn kill_prefix(p: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `82 + p * (69 ±0)` - // Estimated: `83 + p * (70 ±0)` - // Minimum execution time: 3_424_000 picoseconds. - Weight::from_parts(3_487_000, 83) - // Standard Error: 1_821 - .saturating_add(Weight::from_parts(1_126_082, 0).saturating_mul(p.into())) + // Estimated: `89 + p * (70 ±0)` + // Minimum execution time: 3_345_000 picoseconds. + Weight::from_parts(3_470_000, 89) + // Standard Error: 1_511 + .saturating_add(Weight::from_parts(1_126_865, 0).saturating_mul(p.into())) .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(p.into()))) .saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 70).saturating_mul(p.into())) diff --git a/runtime/vara/src/weights/pallet_airdrop.rs b/runtime/vara/src/weights/pallet_airdrop.rs index a61092155c8..ffe616fea00 100644 --- a/runtime/vara/src/weights/pallet_airdrop.rs +++ b/runtime/vara/src/weights/pallet_airdrop.rs @@ -19,7 +19,7 @@ //! Autogenerated weights for pallet_airdrop //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-08-20, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-09-11, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` //! CPU: `Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("vara-dev"), DB CACHE: 1024 @@ -49,8 +49,8 @@ impl pallet_airdrop::WeightInfo for SubstrateWeight // Proof Size summary in bytes: // Measured: `103` // Estimated: `6196` - // Minimum execution time: 25_544_000 picoseconds. - Weight::from_parts(26_559_640, 6196) + // Minimum execution time: 25_162_000 picoseconds. + Weight::from_parts(26_300_954, 6196) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(2_u64)) } @@ -59,10 +59,10 @@ impl pallet_airdrop::WeightInfo for SubstrateWeight // Proof Size summary in bytes: // Measured: `550` // Estimated: `15482` - // Minimum execution time: 65_922_000 picoseconds. - Weight::from_parts(67_728_019, 15482) - // Standard Error: 331 - .saturating_add(Weight::from_parts(501, 0).saturating_mul(q.into())) + // Minimum execution time: 65_671_000 picoseconds. + Weight::from_parts(67_524_170, 15482) + // Standard Error: 398 + .saturating_add(Weight::from_parts(280, 0).saturating_mul(q.into())) .saturating_add(T::DbWeight::get().reads(4_u64)) .saturating_add(T::DbWeight::get().writes(4_u64)) } @@ -75,8 +75,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `103` // Estimated: `6196` - // Minimum execution time: 25_544_000 picoseconds. - Weight::from_parts(26_559_640, 6196) + // Minimum execution time: 25_162_000 picoseconds. + Weight::from_parts(26_300_954, 6196) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(2_u64)) } @@ -85,10 +85,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `550` // Estimated: `15482` - // Minimum execution time: 65_922_000 picoseconds. - Weight::from_parts(67_728_019, 15482) - // Standard Error: 331 - .saturating_add(Weight::from_parts(501, 0).saturating_mul(q.into())) + // Minimum execution time: 65_671_000 picoseconds. + Weight::from_parts(67_524_170, 15482) + // Standard Error: 398 + .saturating_add(Weight::from_parts(280, 0).saturating_mul(q.into())) .saturating_add(RocksDbWeight::get().reads(4_u64)) .saturating_add(RocksDbWeight::get().writes(4_u64)) } diff --git a/runtime/vara/src/weights/pallet_balances.rs b/runtime/vara/src/weights/pallet_balances.rs index 22130616509..f096d50de43 100644 --- a/runtime/vara/src/weights/pallet_balances.rs +++ b/runtime/vara/src/weights/pallet_balances.rs @@ -19,7 +19,7 @@ //! Autogenerated weights for pallet_balances //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-08-20, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-09-11, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` //! CPU: `Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("vara-dev"), DB CACHE: 1024 @@ -53,8 +53,8 @@ impl pallet_balances::WeightInfo for SubstrateWeight // Proof Size summary in bytes: // Measured: `0` // Estimated: `3593` - // Minimum execution time: 30_481_000 picoseconds. - Weight::from_parts(31_107_000, 3593) + // Minimum execution time: 29_789_000 picoseconds. + Weight::from_parts(30_683_000, 3593) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } @@ -62,8 +62,8 @@ impl pallet_balances::WeightInfo for SubstrateWeight // Proof Size summary in bytes: // Measured: `0` // Estimated: `3593` - // Minimum execution time: 21_607_000 picoseconds. - Weight::from_parts(22_313_000, 3593) + // Minimum execution time: 21_425_000 picoseconds. + Weight::from_parts(21_900_000, 3593) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } @@ -71,8 +71,8 @@ impl pallet_balances::WeightInfo for SubstrateWeight // Proof Size summary in bytes: // Measured: `103` // Estimated: `3593` - // Minimum execution time: 12_411_000 picoseconds. - Weight::from_parts(12_689_000, 3593) + // Minimum execution time: 12_387_000 picoseconds. + Weight::from_parts(12_754_000, 3593) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } @@ -80,8 +80,8 @@ impl pallet_balances::WeightInfo for SubstrateWeight // Proof Size summary in bytes: // Measured: `103` // Estimated: `3593` - // Minimum execution time: 14_986_000 picoseconds. - Weight::from_parts(15_531_000, 3593) + // Minimum execution time: 15_196_000 picoseconds. + Weight::from_parts(15_778_000, 3593) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } @@ -89,8 +89,8 @@ impl pallet_balances::WeightInfo for SubstrateWeight // Proof Size summary in bytes: // Measured: `103` // Estimated: `6196` - // Minimum execution time: 31_713_000 picoseconds. - Weight::from_parts(32_359_000, 6196) + // Minimum execution time: 31_544_000 picoseconds. + Weight::from_parts(32_018_000, 6196) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(2_u64)) } @@ -98,8 +98,8 @@ impl pallet_balances::WeightInfo for SubstrateWeight // Proof Size summary in bytes: // Measured: `0` // Estimated: `3593` - // Minimum execution time: 28_362_000 picoseconds. - Weight::from_parts(29_064_000, 3593) + // Minimum execution time: 28_027_000 picoseconds. + Weight::from_parts(29_047_000, 3593) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } @@ -107,8 +107,8 @@ impl pallet_balances::WeightInfo for SubstrateWeight // Proof Size summary in bytes: // Measured: `103` // Estimated: `3593` - // Minimum execution time: 11_971_000 picoseconds. - Weight::from_parts(12_309_000, 3593) + // Minimum execution time: 11_796_000 picoseconds. + Weight::from_parts(12_239_000, 3593) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } @@ -120,8 +120,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3593` - // Minimum execution time: 30_481_000 picoseconds. - Weight::from_parts(31_107_000, 3593) + // Minimum execution time: 29_789_000 picoseconds. + Weight::from_parts(30_683_000, 3593) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } @@ -129,8 +129,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3593` - // Minimum execution time: 21_607_000 picoseconds. - Weight::from_parts(22_313_000, 3593) + // Minimum execution time: 21_425_000 picoseconds. + Weight::from_parts(21_900_000, 3593) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } @@ -138,8 +138,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `103` // Estimated: `3593` - // Minimum execution time: 12_411_000 picoseconds. - Weight::from_parts(12_689_000, 3593) + // Minimum execution time: 12_387_000 picoseconds. + Weight::from_parts(12_754_000, 3593) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } @@ -147,8 +147,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `103` // Estimated: `3593` - // Minimum execution time: 14_986_000 picoseconds. - Weight::from_parts(15_531_000, 3593) + // Minimum execution time: 15_196_000 picoseconds. + Weight::from_parts(15_778_000, 3593) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } @@ -156,8 +156,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `103` // Estimated: `6196` - // Minimum execution time: 31_713_000 picoseconds. - Weight::from_parts(32_359_000, 6196) + // Minimum execution time: 31_544_000 picoseconds. + Weight::from_parts(32_018_000, 6196) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(2_u64)) } @@ -165,8 +165,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3593` - // Minimum execution time: 28_362_000 picoseconds. - Weight::from_parts(29_064_000, 3593) + // Minimum execution time: 28_027_000 picoseconds. + Weight::from_parts(29_047_000, 3593) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } @@ -174,8 +174,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `103` // Estimated: `3593` - // Minimum execution time: 11_971_000 picoseconds. - Weight::from_parts(12_309_000, 3593) + // Minimum execution time: 11_796_000 picoseconds. + Weight::from_parts(12_239_000, 3593) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } diff --git a/runtime/vara/src/weights/pallet_gear.rs b/runtime/vara/src/weights/pallet_gear.rs index 35229a049ee..707b287d5c5 100644 --- a/runtime/vara/src/weights/pallet_gear.rs +++ b/runtime/vara/src/weights/pallet_gear.rs @@ -19,7 +19,7 @@ //! Autogenerated weights for pallet_gear //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-08-20, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-09-11, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` //! CPU: `Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("vara-dev"), DB CACHE: 1024 @@ -244,21 +244,21 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_012_000 picoseconds. - Weight::from_parts(1_102_000, 0) - // Standard Error: 721 - .saturating_add(Weight::from_parts(207_628, 0).saturating_mul(c.into())) + // Minimum execution time: 1_023_000 picoseconds. + Weight::from_parts(1_051_000, 0) + // Standard Error: 912 + .saturating_add(Weight::from_parts(213_761, 0).saturating_mul(c.into())) .saturating_add(T::DbWeight::get().writes(1_u64)) } /// The range of component `c` is `[0, 512]`. fn db_read_per_kb(c: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `113 + c * (1024 ±0)` - // Estimated: `3577 + c * (1024 ±0)` - // Minimum execution time: 3_309_000 picoseconds. - Weight::from_parts(3_406_000, 3577) - // Standard Error: 759 - .saturating_add(Weight::from_parts(674_106, 0).saturating_mul(c.into())) + // Measured: `146 + c * (1024 ±0)` + // Estimated: `3610 + c * (1024 ±0)` + // Minimum execution time: 3_252_000 picoseconds. + Weight::from_parts(3_416_000, 3610) + // Standard Error: 1_261 + .saturating_add(Weight::from_parts(689_572, 0).saturating_mul(c.into())) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(Weight::from_parts(0, 1024).saturating_mul(c.into())) } @@ -267,35 +267,35 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 52_127_000 picoseconds. - Weight::from_parts(74_742_938, 0) - // Standard Error: 5_397 - .saturating_add(Weight::from_parts(2_342_205, 0).saturating_mul(c.into())) + // Minimum execution time: 59_805_000 picoseconds. + Weight::from_parts(86_729_126, 0) + // Standard Error: 7_023 + .saturating_add(Weight::from_parts(2_475_519, 0).saturating_mul(c.into())) } fn claim_value() -> Weight { // Proof Size summary in bytes: - // Measured: `1050` - // Estimated: `42875` - // Minimum execution time: 84_245_000 picoseconds. - Weight::from_parts(85_847_000, 42875) - .saturating_add(T::DbWeight::get().reads(13_u64)) - .saturating_add(T::DbWeight::get().writes(10_u64)) + // Measured: `1372` + // Estimated: `51905` + // Minimum execution time: 107_694_000 picoseconds. + Weight::from_parts(110_328_000, 51905) + .saturating_add(T::DbWeight::get().reads(15_u64)) + .saturating_add(T::DbWeight::get().writes(12_u64)) } fn pay_program_rent() -> Weight { // Proof Size summary in bytes: - // Measured: `958` - // Estimated: `21477` - // Minimum execution time: 55_566_000 picoseconds. - Weight::from_parts(57_030_000, 21477) + // Measured: `992` + // Estimated: `21579` + // Minimum execution time: 55_980_000 picoseconds. + Weight::from_parts(56_766_000, 21579) .saturating_add(T::DbWeight::get().reads(7_u64)) .saturating_add(T::DbWeight::get().writes(6_u64)) } fn resume_session_init() -> Weight { // Proof Size summary in bytes: - // Measured: `605` - // Estimated: `17354` - // Minimum execution time: 29_403_000 picoseconds. - Weight::from_parts(30_422_000, 17354) + // Measured: `638` + // Estimated: `17486` + // Minimum execution time: 29_973_000 picoseconds. + Weight::from_parts(31_008_000, 17486) .saturating_add(T::DbWeight::get().reads(6_u64)) .saturating_add(T::DbWeight::get().writes(4_u64)) } @@ -304,22 +304,22 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `355` // Estimated: `7640` - // Minimum execution time: 7_886_000 picoseconds. - Weight::from_parts(5_577_548, 7640) - // Standard Error: 36_666 - .saturating_add(Weight::from_parts(13_383_280, 0).saturating_mul(c.into())) + // Minimum execution time: 8_054_000 picoseconds. + Weight::from_parts(8_342_000, 7640) + // Standard Error: 17_771 + .saturating_add(Weight::from_parts(13_335_661, 0).saturating_mul(c.into())) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(2_u64)) } /// The range of component `c` is `[0, 2044]`. fn resume_session_commit(c: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1439 + c * (16389 ±0)` - // Estimated: `42034 + c * (131112 ±0)` - // Minimum execution time: 71_129_000 picoseconds. - Weight::from_parts(71_867_000, 42034) - // Standard Error: 194_431 - .saturating_add(Weight::from_parts(53_622_369, 0).saturating_mul(c.into())) + // Measured: `1593 + c * (16389 ±0)` + // Estimated: `43266 + c * (131112 ±0)` + // Minimum execution time: 72_178_000 picoseconds. + Weight::from_parts(73_341_000, 43266) + // Standard Error: 167_723 + .saturating_add(Weight::from_parts(54_442_045, 0).saturating_mul(c.into())) .saturating_add(T::DbWeight::get().reads(11_u64)) .saturating_add(T::DbWeight::get().writes(9_u64)) .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(c.into()))) @@ -328,97 +328,97 @@ impl pallet_gear::WeightInfo for SubstrateWeight { /// The range of component `c` is `[0, 250]`. fn upload_code(c: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `80` - // Estimated: `5270` - // Minimum execution time: 63_441_000 picoseconds. - Weight::from_parts(69_716_978, 5270) - // Standard Error: 32_301 - .saturating_add(Weight::from_parts(51_458_430, 0).saturating_mul(c.into())) + // Measured: `113` + // Estimated: `5402` + // Minimum execution time: 78_662_000 picoseconds. + Weight::from_parts(42_066_175, 5402) + // Standard Error: 52_075 + .saturating_add(Weight::from_parts(60_249_549, 0).saturating_mul(c.into())) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(4_u64)) } /// The range of component `s` is `[0, 4194304]`. fn create_program(s: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `742` - // Estimated: `39419` - // Minimum execution time: 64_601_000 picoseconds. - Weight::from_parts(94_970_592, 39419) - // Standard Error: 0 - .saturating_add(Weight::from_parts(2_577, 0).saturating_mul(s.into())) - .saturating_add(T::DbWeight::get().reads(13_u64)) - .saturating_add(T::DbWeight::get().writes(10_u64)) + // Measured: `1111` + // Estimated: `50600` + // Minimum execution time: 94_321_000 picoseconds. + Weight::from_parts(129_113_540, 50600) + // Standard Error: 1 + .saturating_add(Weight::from_parts(2_625, 0).saturating_mul(s.into())) + .saturating_add(T::DbWeight::get().reads(15_u64)) + .saturating_add(T::DbWeight::get().writes(12_u64)) } /// The range of component `c` is `[0, 250]`. /// The range of component `s` is `[0, 4194304]`. fn upload_program(c: u32, s: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `306` - // Estimated: `35235` - // Minimum execution time: 10_884_487_000 picoseconds. - Weight::from_parts(321_953_387, 35235) - // Standard Error: 164_114 - .saturating_add(Weight::from_parts(51_946_894, 0).saturating_mul(c.into())) - // Standard Error: 9 - .saturating_add(Weight::from_parts(2_506, 0).saturating_mul(s.into())) - .saturating_add(T::DbWeight::get().reads(13_u64)) - .saturating_add(T::DbWeight::get().writes(14_u64)) + // Measured: `521` + // Estimated: `45152` + // Minimum execution time: 11_148_491_000 picoseconds. + Weight::from_parts(21_065_971, 45152) + // Standard Error: 173_883 + .saturating_add(Weight::from_parts(60_839_567, 0).saturating_mul(c.into())) + // Standard Error: 10 + .saturating_add(Weight::from_parts(2_652, 0).saturating_mul(s.into())) + .saturating_add(T::DbWeight::get().reads(15_u64)) + .saturating_add(T::DbWeight::get().writes(16_u64)) } /// The range of component `p` is `[0, 2097152]`. fn send_message(p: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `349` - // Estimated: `23860` - // Minimum execution time: 55_131_000 picoseconds. - Weight::from_parts(30_192_078, 23860) + // Measured: `531` + // Estimated: `31266` + // Minimum execution time: 73_302_000 picoseconds. + Weight::from_parts(47_279_667, 31266) // Standard Error: 1 - .saturating_add(Weight::from_parts(1_039, 0).saturating_mul(p.into())) - .saturating_add(T::DbWeight::get().reads(9_u64)) - .saturating_add(T::DbWeight::get().writes(8_u64)) + .saturating_add(Weight::from_parts(1_055, 0).saturating_mul(p.into())) + .saturating_add(T::DbWeight::get().reads(11_u64)) + .saturating_add(T::DbWeight::get().writes(10_u64)) } /// The range of component `p` is `[0, 2097152]`. fn send_reply(p: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1049` - // Estimated: `42866` - // Minimum execution time: 85_069_000 picoseconds. - Weight::from_parts(72_149_865, 42866) - // Standard Error: 1 - .saturating_add(Weight::from_parts(1_036, 0).saturating_mul(p.into())) - .saturating_add(T::DbWeight::get().reads(13_u64)) - .saturating_add(T::DbWeight::get().writes(10_u64)) + // Measured: `1371` + // Estimated: `54435` + // Minimum execution time: 124_173_000 picoseconds. + Weight::from_parts(96_458_887, 54435) + // Standard Error: 2 + .saturating_add(Weight::from_parts(1_078, 0).saturating_mul(p.into())) + .saturating_add(T::DbWeight::get().reads(16_u64)) + .saturating_add(T::DbWeight::get().writes(13_u64)) } /// The range of component `q` is `[1, 512]`. - fn initial_allocation(q: u32, ) -> Weight { + fn initial_allocation(_q: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1066` - // Estimated: `85981` - // Minimum execution time: 323_286_000 picoseconds. - Weight::from_parts(335_875_612, 85981) - // Standard Error: 1_331 - .saturating_add(Weight::from_parts(1_294, 0).saturating_mul(q.into())) - .saturating_add(T::DbWeight::get().reads(29_u64)) - .saturating_add(T::DbWeight::get().writes(23_u64)) + // Measured: `1893` + // Estimated: `114612` + // Minimum execution time: 365_983_000 picoseconds. + Weight::from_parts(387_416_952, 114612) + .saturating_add(T::DbWeight::get().reads(33_u64)) + .saturating_add(T::DbWeight::get().writes(26_u64)) } /// The range of component `q` is `[0, 512]`. - fn alloc_in_handle(_q: u32, ) -> Weight { + fn alloc_in_handle(q: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1066` - // Estimated: `85905` - // Minimum execution time: 333_261_000 picoseconds. - Weight::from_parts(348_059_151, 85905) - .saturating_add(T::DbWeight::get().reads(29_u64)) - .saturating_add(T::DbWeight::get().writes(23_u64)) + // Measured: `1893` + // Estimated: `114612` + // Minimum execution time: 380_430_000 picoseconds. + Weight::from_parts(403_376_118, 114612) + // Standard Error: 2_451 + .saturating_add(Weight::from_parts(1_137, 0).saturating_mul(q.into())) + .saturating_add(T::DbWeight::get().reads(33_u64)) + .saturating_add(T::DbWeight::get().writes(26_u64)) } /// The range of component `c` is `[0, 512]`. fn reinstrument_per_kb(c: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `211 + c * (1075 ±0)` // Estimated: `3899 + c * (2150 ±0)` - // Minimum execution time: 45_732_000 picoseconds. - Weight::from_parts(46_437_000, 3899) - // Standard Error: 40_834 - .saturating_add(Weight::from_parts(51_504_684, 0).saturating_mul(c.into())) + // Minimum execution time: 58_080_000 picoseconds. + Weight::from_parts(58_601_000, 3899) + // Standard Error: 36_083 + .saturating_add(Weight::from_parts(58_395_643, 0).saturating_mul(c.into())) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(2_u64)) .saturating_add(Weight::from_parts(0, 2150).saturating_mul(c.into())) @@ -428,630 +428,628 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_890_000 picoseconds. - Weight::from_parts(87_488_000, 0) - // Standard Error: 4_218_353 - .saturating_add(Weight::from_parts(584_751_765, 0).saturating_mul(r.into())) + // Minimum execution time: 91_412_000 picoseconds. + Weight::from_parts(94_168_000, 0) + // Standard Error: 3_806_298 + .saturating_add(Weight::from_parts(673_774_453, 0).saturating_mul(r.into())) } /// The range of component `p` is `[1, 512]`. fn alloc_per_page(p: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 319_127_000 picoseconds. - Weight::from_parts(258_635_809, 0) - // Standard Error: 13_905 - .saturating_add(Weight::from_parts(32_129_635, 0).saturating_mul(p.into())) + // Minimum execution time: 452_549_000 picoseconds. + Weight::from_parts(398_963_700, 0) + // Standard Error: 7_042 + .saturating_add(Weight::from_parts(29_406_609, 0).saturating_mul(p.into())) } /// The range of component `r` is `[0, 20]`. fn free(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 145_346_000 picoseconds. - Weight::from_parts(132_224_327, 0) - // Standard Error: 318_914 - .saturating_add(Weight::from_parts(64_020_177, 0).saturating_mul(r.into())) + // Minimum execution time: 207_052_000 picoseconds. + Weight::from_parts(209_606_478, 0) + // Standard Error: 255_281 + .saturating_add(Weight::from_parts(62_959_531, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 256]`. fn gr_reserve_gas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 86_899_000 picoseconds. - Weight::from_parts(93_463_487, 0) - // Standard Error: 3_525 - .saturating_add(Weight::from_parts(2_288_372, 0).saturating_mul(r.into())) + // Minimum execution time: 97_729_000 picoseconds. + Weight::from_parts(105_964_750, 0) + // Standard Error: 4_847 + .saturating_add(Weight::from_parts(2_433_966, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 256]`. fn gr_unreserve_gas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 138_092_000 picoseconds. - Weight::from_parts(169_806_344, 0) - // Standard Error: 26_882 - .saturating_add(Weight::from_parts(2_254_783, 0).saturating_mul(r.into())) + // Minimum execution time: 175_010_000 picoseconds. + Weight::from_parts(229_153_209, 0) + // Standard Error: 17_116 + .saturating_add(Weight::from_parts(1_991_260, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_system_reserve_gas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 85_599_000 picoseconds. - Weight::from_parts(98_793_759, 0) - // Standard Error: 347_287 - .saturating_add(Weight::from_parts(87_526_184, 0).saturating_mul(r.into())) + // Minimum execution time: 94_696_000 picoseconds. + Weight::from_parts(119_674_535, 0) + // Standard Error: 387_178 + .saturating_add(Weight::from_parts(98_102_856, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_message_id(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 85_991_000 picoseconds. - Weight::from_parts(83_685_254, 0) - // Standard Error: 318_877 - .saturating_add(Weight::from_parts(76_389_253, 0).saturating_mul(r.into())) + // Minimum execution time: 95_794_000 picoseconds. + Weight::from_parts(89_931_979, 0) + // Standard Error: 371_349 + .saturating_add(Weight::from_parts(86_524_059, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_program_id(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 85_968_000 picoseconds. - Weight::from_parts(82_459_314, 0) - // Standard Error: 319_709 - .saturating_add(Weight::from_parts(76_181_704, 0).saturating_mul(r.into())) + // Minimum execution time: 97_924_000 picoseconds. + Weight::from_parts(84_041_201, 0) + // Standard Error: 327_841 + .saturating_add(Weight::from_parts(95_483_315, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_source(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 81_819_000 picoseconds. - Weight::from_parts(72_371_983, 0) - // Standard Error: 300_686 - .saturating_add(Weight::from_parts(76_316_802, 0).saturating_mul(r.into())) + // Minimum execution time: 97_122_000 picoseconds. + Weight::from_parts(86_789_268, 0) + // Standard Error: 353_259 + .saturating_add(Weight::from_parts(85_698_317, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_value(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_717_000 picoseconds. - Weight::from_parts(76_355_783, 0) - // Standard Error: 285_260 - .saturating_add(Weight::from_parts(75_781_825, 0).saturating_mul(r.into())) + // Minimum execution time: 94_821_000 picoseconds. + Weight::from_parts(92_694_130, 0) + // Standard Error: 340_146 + .saturating_add(Weight::from_parts(84_623_945, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_value_available(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 86_121_000 picoseconds. - Weight::from_parts(80_173_266, 0) - // Standard Error: 370_111 - .saturating_add(Weight::from_parts(77_146_163, 0).saturating_mul(r.into())) + // Minimum execution time: 93_840_000 picoseconds. + Weight::from_parts(87_888_572, 0) + // Standard Error: 369_465 + .saturating_add(Weight::from_parts(85_638_902, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_gas_available(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 86_040_000 picoseconds. - Weight::from_parts(77_052_017, 0) - // Standard Error: 323_675 - .saturating_add(Weight::from_parts(75_764_467, 0).saturating_mul(r.into())) + // Minimum execution time: 98_597_000 picoseconds. + Weight::from_parts(86_642_386, 0) + // Standard Error: 362_257 + .saturating_add(Weight::from_parts(85_598_887, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_size(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 86_130_000 picoseconds. - Weight::from_parts(76_139_106, 0) - // Standard Error: 362_545 - .saturating_add(Weight::from_parts(80_573_769, 0).saturating_mul(r.into())) + // Minimum execution time: 94_546_000 picoseconds. + Weight::from_parts(91_466_289, 0) + // Standard Error: 344_423 + .saturating_add(Weight::from_parts(84_318_848, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_read(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 558_591_000 picoseconds. - Weight::from_parts(605_772_233, 0) - // Standard Error: 457_089 - .saturating_add(Weight::from_parts(135_861_811, 0).saturating_mul(r.into())) + // Minimum execution time: 578_036_000 picoseconds. + Weight::from_parts(696_140_951, 0) + // Standard Error: 559_498 + .saturating_add(Weight::from_parts(149_397_501, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_read_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 699_603_000 picoseconds. - Weight::from_parts(703_289_000, 0) - // Standard Error: 59_520 - .saturating_add(Weight::from_parts(12_949_265, 0).saturating_mul(n.into())) + // Minimum execution time: 723_788_000 picoseconds. + Weight::from_parts(740_225_000, 0) + // Standard Error: 52_895 + .saturating_add(Weight::from_parts(13_188_120, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_block_height(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 85_014_000 picoseconds. - Weight::from_parts(77_731_097, 0) - // Standard Error: 304_273 - .saturating_add(Weight::from_parts(75_976_070, 0).saturating_mul(r.into())) + // Minimum execution time: 99_012_000 picoseconds. + Weight::from_parts(88_269_135, 0) + // Standard Error: 296_136 + .saturating_add(Weight::from_parts(92_296_104, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_block_timestamp(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 86_408_000 picoseconds. - Weight::from_parts(73_174_939, 0) - // Standard Error: 383_139 - .saturating_add(Weight::from_parts(76_484_364, 0).saturating_mul(r.into())) + // Minimum execution time: 93_803_000 picoseconds. + Weight::from_parts(87_097_769, 0) + // Standard Error: 367_325 + .saturating_add(Weight::from_parts(84_987_043, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 20]`. fn gr_random(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 85_197_000 picoseconds. - Weight::from_parts(88_845_708, 0) - // Standard Error: 389_513 - .saturating_add(Weight::from_parts(171_448_634, 0).saturating_mul(n.into())) + // Minimum execution time: 96_663_000 picoseconds. + Weight::from_parts(105_357_427, 0) + // Standard Error: 366_135 + .saturating_add(Weight::from_parts(172_109_201, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_deposit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 86_264_000 picoseconds. - Weight::from_parts(88_018_000, 0) - // Standard Error: 4_124_330 - .saturating_add(Weight::from_parts(805_432_550, 0).saturating_mul(r.into())) + // Minimum execution time: 99_210_000 picoseconds. + Weight::from_parts(102_217_000, 0) + // Standard Error: 4_527_119 + .saturating_add(Weight::from_parts(845_784_967, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 82_295_000 picoseconds. - Weight::from_parts(140_527_286, 0) - // Standard Error: 405_229 - .saturating_add(Weight::from_parts(251_699_250, 0).saturating_mul(r.into())) + // Minimum execution time: 96_579_000 picoseconds. + Weight::from_parts(162_452_429, 0) + // Standard Error: 416_836 + .saturating_add(Weight::from_parts(257_900_517, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_send_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 327_394_000 picoseconds. - Weight::from_parts(330_315_000, 0) - // Standard Error: 62_193 - .saturating_add(Weight::from_parts(21_097_102, 0).saturating_mul(n.into())) + // Minimum execution time: 353_526_000 picoseconds. + Weight::from_parts(358_025_000, 0) + // Standard Error: 61_984 + .saturating_add(Weight::from_parts(21_521_461, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_900_000 picoseconds. - Weight::from_parts(158_459_938, 0) - // Standard Error: 440_264 - .saturating_add(Weight::from_parts(252_444_195, 0).saturating_mul(r.into())) + // Minimum execution time: 94_822_000 picoseconds. + Weight::from_parts(168_431_611, 0) + // Standard Error: 378_696 + .saturating_add(Weight::from_parts(263_135_958, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_send_wgas_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 337_208_000 picoseconds. - Weight::from_parts(341_169_000, 0) - // Standard Error: 59_076 - .saturating_add(Weight::from_parts(20_945_135, 0).saturating_mul(n.into())) + // Minimum execution time: 351_828_000 picoseconds. + Weight::from_parts(355_382_000, 0) + // Standard Error: 60_589 + .saturating_add(Weight::from_parts(21_325_400, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_input(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 556_175_000 picoseconds. - Weight::from_parts(627_050_994, 0) - // Standard Error: 426_100 - .saturating_add(Weight::from_parts(261_080_337, 0).saturating_mul(r.into())) + // Minimum execution time: 569_384_000 picoseconds. + Weight::from_parts(638_474_730, 0) + // Standard Error: 425_903 + .saturating_add(Weight::from_parts(275_691_711, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_input_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 557_564_000 picoseconds. - Weight::from_parts(641_256_689, 0) - // Standard Error: 460_579 - .saturating_add(Weight::from_parts(266_649_825, 0).saturating_mul(r.into())) + // Minimum execution time: 573_053_000 picoseconds. + Weight::from_parts(640_078_802, 0) + // Standard Error: 475_389 + .saturating_add(Weight::from_parts(284_337_155, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_init(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 82_507_000 picoseconds. - Weight::from_parts(67_761_917, 0) - // Standard Error: 379_455 - .saturating_add(Weight::from_parts(86_652_007, 0).saturating_mul(r.into())) + // Minimum execution time: 98_223_000 picoseconds. + Weight::from_parts(85_732_985, 0) + // Standard Error: 336_308 + .saturating_add(Weight::from_parts(92_936_006, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_push(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_683_177_000 picoseconds. - Weight::from_parts(1_794_013_374, 0) - // Standard Error: 387_018 - .saturating_add(Weight::from_parts(156_399_549, 0).saturating_mul(r.into())) + // Minimum execution time: 1_822_621_000 picoseconds. + Weight::from_parts(1_951_955_018, 0) + // Standard Error: 339_415 + .saturating_add(Weight::from_parts(157_557_756, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_send_push_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 288_797_000 picoseconds. - Weight::from_parts(293_289_000, 0) - // Standard Error: 63_168 - .saturating_add(Weight::from_parts(29_577_277, 0).saturating_mul(n.into())) + // Minimum execution time: 314_296_000 picoseconds. + Weight::from_parts(317_522_000, 0) + // Standard Error: 61_360 + .saturating_add(Weight::from_parts(29_499_741, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_commit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_691_333_000 picoseconds. - Weight::from_parts(1_801_253_735, 0) - // Standard Error: 474_792 - .saturating_add(Weight::from_parts(209_949_939, 0).saturating_mul(r.into())) + // Minimum execution time: 1_835_106_000 picoseconds. + Weight::from_parts(1_948_516_646, 0) + // Standard Error: 382_008 + .saturating_add(Weight::from_parts(214_812_508, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_commit_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_683_041_000 picoseconds. - Weight::from_parts(1_822_549_872, 0) - // Standard Error: 425_077 - .saturating_add(Weight::from_parts(211_798_367, 0).saturating_mul(r.into())) + // Minimum execution time: 1_827_496_000 picoseconds. + Weight::from_parts(1_949_190_773, 0) + // Standard Error: 340_175 + .saturating_add(Weight::from_parts(218_001_536, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reservation_send(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 247_656_000 picoseconds. - Weight::from_parts(317_794_229, 0) - // Standard Error: 388_223 - .saturating_add(Weight::from_parts(266_464_404, 0).saturating_mul(r.into())) + // Minimum execution time: 264_306_000 picoseconds. + Weight::from_parts(363_536_651, 0) + // Standard Error: 467_914 + .saturating_add(Weight::from_parts(265_564_072, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reservation_send_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 512_971_000 picoseconds. - Weight::from_parts(524_580_000, 0) - // Standard Error: 57_807 - .saturating_add(Weight::from_parts(21_296_153, 0).saturating_mul(n.into())) + // Minimum execution time: 523_150_000 picoseconds. + Weight::from_parts(535_842_000, 0) + // Standard Error: 65_412 + .saturating_add(Weight::from_parts(21_698_063, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reservation_send_commit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_827_786_000 picoseconds. - Weight::from_parts(1_938_199_639, 0) - // Standard Error: 481_292 - .saturating_add(Weight::from_parts(230_397_609, 0).saturating_mul(r.into())) + // Minimum execution time: 1_974_743_000 picoseconds. + Weight::from_parts(2_096_494_995, 0) + // Standard Error: 474_778 + .saturating_add(Weight::from_parts(232_524_299, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_205_000 picoseconds. - Weight::from_parts(87_841_924, 0) - // Standard Error: 284_081 - .saturating_add(Weight::from_parts(20_304_775, 0).saturating_mul(r.into())) + // Minimum execution time: 94_139_000 picoseconds. + Weight::from_parts(101_775_569, 0) + // Standard Error: 452_439 + .saturating_add(Weight::from_parts(16_839_430, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reply_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 103_357_000 picoseconds. - Weight::from_parts(89_286_787, 0) - // Standard Error: 1_068 - .saturating_add(Weight::from_parts(423_323, 0).saturating_mul(n.into())) + // Minimum execution time: 112_050_000 picoseconds. + Weight::from_parts(102_205_366, 0) + // Standard Error: 1_008 + .saturating_add(Weight::from_parts(431_304, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 82_492_000 picoseconds. - Weight::from_parts(86_217_226, 0) - // Standard Error: 241_578 - .saturating_add(Weight::from_parts(18_632_173, 0).saturating_mul(r.into())) + // Minimum execution time: 93_528_000 picoseconds. + Weight::from_parts(99_748_422, 0) + // Standard Error: 396_992 + .saturating_add(Weight::from_parts(20_536_877, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reply_wgas_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 101_997_000 picoseconds. - Weight::from_parts(93_566_446, 0) - // Standard Error: 1_152 - .saturating_add(Weight::from_parts(421_774, 0).saturating_mul(n.into())) + // Minimum execution time: 117_832_000 picoseconds. + Weight::from_parts(104_552_847, 0) + // Standard Error: 1_402 + .saturating_add(Weight::from_parts(432_018, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply_commit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 81_647_000 picoseconds. - Weight::from_parts(85_634_187, 0) - // Standard Error: 241_527 - .saturating_add(Weight::from_parts(16_147_912, 0).saturating_mul(r.into())) + // Minimum execution time: 93_325_000 picoseconds. + Weight::from_parts(101_074_097, 0) + // Standard Error: 454_790 + .saturating_add(Weight::from_parts(20_838_102, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply_commit_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 82_801_000 picoseconds. - Weight::from_parts(89_403_918, 0) - // Standard Error: 269_595 - .saturating_add(Weight::from_parts(13_226_181, 0).saturating_mul(r.into())) + // Minimum execution time: 93_800_000 picoseconds. + Weight::from_parts(102_249_326, 0) + // Standard Error: 463_488 + .saturating_add(Weight::from_parts(15_991_473, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_push(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_685_000 picoseconds. - Weight::from_parts(132_414_219, 0) - // Standard Error: 497_457 - .saturating_add(Weight::from_parts(145_777_097, 0).saturating_mul(r.into())) + // Minimum execution time: 93_153_000 picoseconds. + Weight::from_parts(121_452_989, 0) + // Standard Error: 390_540 + .saturating_add(Weight::from_parts(145_641_178, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 8192]`. fn gr_reply_push_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 97_574_000 picoseconds. - Weight::from_parts(100_165_000, 0) - // Standard Error: 2_652 - .saturating_add(Weight::from_parts(625_145, 0).saturating_mul(n.into())) + // Minimum execution time: 115_529_000 picoseconds. + Weight::from_parts(120_413_000, 0) + // Standard Error: 3_105 + .saturating_add(Weight::from_parts(640_863, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply_input(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 553_039_000 picoseconds. - Weight::from_parts(596_067_157, 0) - // Standard Error: 7_999_654 - .saturating_add(Weight::from_parts(49_166_442, 0).saturating_mul(r.into())) + // Minimum execution time: 566_859_000 picoseconds. + Weight::from_parts(631_111_316, 0) + // Standard Error: 7_012_228 + .saturating_add(Weight::from_parts(21_896_983, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. - fn gr_reply_input_wgas(r: u32, ) -> Weight { + fn gr_reply_input_wgas(_r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 560_077_000 picoseconds. - Weight::from_parts(599_598_873, 0) - // Standard Error: 4_500_003 - .saturating_add(Weight::from_parts(54_967_826, 0).saturating_mul(r.into())) + // Minimum execution time: 565_382_000 picoseconds. + Weight::from_parts(613_048_008, 0) } /// The range of component `r` is `[0, 1]`. fn gr_reservation_reply(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 92_238_000 picoseconds. - Weight::from_parts(96_280_512, 0) - // Standard Error: 270_962 - .saturating_add(Weight::from_parts(10_382_887, 0).saturating_mul(r.into())) + // Minimum execution time: 104_401_000 picoseconds. + Weight::from_parts(112_651_320, 0) + // Standard Error: 438_590 + .saturating_add(Weight::from_parts(11_095_379, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reservation_reply_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 102_112_000 picoseconds. - Weight::from_parts(88_433_773, 0) - // Standard Error: 839 - .saturating_add(Weight::from_parts(426_982, 0).saturating_mul(n.into())) + // Minimum execution time: 115_615_000 picoseconds. + Weight::from_parts(112_987_750, 0) + // Standard Error: 960 + .saturating_add(Weight::from_parts(423_774, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reservation_reply_commit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 91_989_000 picoseconds. - Weight::from_parts(96_225_993, 0) - // Standard Error: 279_323 - .saturating_add(Weight::from_parts(12_960_106, 0).saturating_mul(r.into())) + // Minimum execution time: 105_056_000 picoseconds. + Weight::from_parts(113_735_922, 0) + // Standard Error: 466_586 + .saturating_add(Weight::from_parts(5_305_577, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reservation_reply_commit_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 101_178_000 picoseconds. - Weight::from_parts(90_738_187, 0) - // Standard Error: 1_202 - .saturating_add(Weight::from_parts(427_278, 0).saturating_mul(n.into())) + // Minimum execution time: 113_897_000 picoseconds. + Weight::from_parts(112_616_408, 0) + // Standard Error: 1_722 + .saturating_add(Weight::from_parts(428_420, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_to(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_732_000 picoseconds. - Weight::from_parts(75_405_776, 0) - // Standard Error: 330_490 - .saturating_add(Weight::from_parts(78_457_591, 0).saturating_mul(r.into())) + // Minimum execution time: 93_845_000 picoseconds. + Weight::from_parts(97_247_314, 0) + // Standard Error: 366_814 + .saturating_add(Weight::from_parts(85_900_587, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_signal_from(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_077_000 picoseconds. - Weight::from_parts(86_563_786, 0) - // Standard Error: 230_585 - .saturating_add(Weight::from_parts(75_198_113, 0).saturating_mul(r.into())) + // Minimum execution time: 93_761_000 picoseconds. + Weight::from_parts(92_637_129, 0) + // Standard Error: 309_799 + .saturating_add(Weight::from_parts(85_725_727, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_push_input(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 561_889_000 picoseconds. - Weight::from_parts(581_183_882, 0) - // Standard Error: 419_713 - .saturating_add(Weight::from_parts(98_014_698, 0).saturating_mul(r.into())) + // Minimum execution time: 565_388_000 picoseconds. + Weight::from_parts(606_358_854, 0) + // Standard Error: 430_766 + .saturating_add(Weight::from_parts(108_769_267, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reply_push_input_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 573_200_000 picoseconds. - Weight::from_parts(600_501_979, 0) - // Standard Error: 2_551 - .saturating_add(Weight::from_parts(132_221, 0).saturating_mul(n.into())) + // Minimum execution time: 591_660_000 picoseconds. + Weight::from_parts(597_035_528, 0) + // Standard Error: 2_641 + .saturating_add(Weight::from_parts(153_781, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_push_input(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_189_491_000 picoseconds. - Weight::from_parts(2_303_909_860, 0) - // Standard Error: 546_745 - .saturating_add(Weight::from_parts(116_603_682, 0).saturating_mul(r.into())) + // Minimum execution time: 2_317_147_000 picoseconds. + Weight::from_parts(2_514_940_964, 0) + // Standard Error: 546_319 + .saturating_add(Weight::from_parts(128_825_542, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_send_push_input_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_276_723_000 picoseconds. - Weight::from_parts(2_217_739_410, 0) - // Standard Error: 14_370 - .saturating_add(Weight::from_parts(12_459_132, 0).saturating_mul(n.into())) + // Minimum execution time: 2_560_344_000 picoseconds. + Weight::from_parts(2_512_409_449, 0) + // Standard Error: 15_466 + .saturating_add(Weight::from_parts(12_395_144, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_debug(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_311_000 picoseconds. - Weight::from_parts(110_540_924, 0) - // Standard Error: 396_634 - .saturating_add(Weight::from_parts(112_631_557, 0).saturating_mul(r.into())) + // Minimum execution time: 97_996_000 picoseconds. + Weight::from_parts(130_630_238, 0) + // Standard Error: 414_418 + .saturating_add(Weight::from_parts(114_735_577, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_debug_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 147_382_000 picoseconds. - Weight::from_parts(148_605_000, 0) - // Standard Error: 51_888 - .saturating_add(Weight::from_parts(25_568_730, 0).saturating_mul(n.into())) + // Minimum execution time: 157_513_000 picoseconds. + Weight::from_parts(160_584_000, 0) + // Standard Error: 57_227 + .saturating_add(Weight::from_parts(25_738_939, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_code(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_124_000 picoseconds. - Weight::from_parts(74_488_011, 0) - // Standard Error: 336_019 - .saturating_add(Weight::from_parts(76_615_014, 0).saturating_mul(r.into())) + // Minimum execution time: 92_652_000 picoseconds. + Weight::from_parts(88_138_429, 0) + // Standard Error: 330_537 + .saturating_add(Weight::from_parts(83_235_234, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_exit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_719_000 picoseconds. - Weight::from_parts(89_610_961, 0) - // Standard Error: 278_492 - .saturating_add(Weight::from_parts(19_580_838, 0).saturating_mul(r.into())) + // Minimum execution time: 93_824_000 picoseconds. + Weight::from_parts(102_740_497, 0) + // Standard Error: 428_593 + .saturating_add(Weight::from_parts(23_682_102, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_leave(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 81_624_000 picoseconds. - Weight::from_parts(87_152_636, 0) - // Standard Error: 283_157 - .saturating_add(Weight::from_parts(13_618_763, 0).saturating_mul(r.into())) + // Minimum execution time: 92_530_000 picoseconds. + Weight::from_parts(101_410_861, 0) + // Standard Error: 432_236 + .saturating_add(Weight::from_parts(12_196_938, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_wait(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 81_833_000 picoseconds. - Weight::from_parts(85_635_155, 0) - // Standard Error: 260_060 - .saturating_add(Weight::from_parts(16_305_744, 0).saturating_mul(r.into())) + // Minimum execution time: 93_402_000 picoseconds. + Weight::from_parts(102_285_877, 0) + // Standard Error: 466_463 + .saturating_add(Weight::from_parts(13_156_522, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_wait_for(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 81_742_000 picoseconds. - Weight::from_parts(87_140_859, 0) - // Standard Error: 385_164 - .saturating_add(Weight::from_parts(11_568_440, 0).saturating_mul(r.into())) + // Minimum execution time: 95_706_000 picoseconds. + Weight::from_parts(102_513_059, 0) + // Standard Error: 464_787 + .saturating_add(Weight::from_parts(13_986_540, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_wait_up_to(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 81_910_000 picoseconds. - Weight::from_parts(85_444_924, 0) - // Standard Error: 294_573 - .saturating_add(Weight::from_parts(16_073_775, 0).saturating_mul(r.into())) + // Minimum execution time: 93_057_000 picoseconds. + Weight::from_parts(99_083_869, 0) + // Standard Error: 378_747 + .saturating_add(Weight::from_parts(12_230_330, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_wake(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 137_851_000 picoseconds. - Weight::from_parts(184_343_853, 0) - // Standard Error: 304_576 - .saturating_add(Weight::from_parts(157_917_607, 0).saturating_mul(r.into())) + // Minimum execution time: 177_947_000 picoseconds. + Weight::from_parts(226_692_243, 0) + // Standard Error: 265_725 + .saturating_add(Weight::from_parts(156_938_838, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_create_program(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 97_606_000 picoseconds. - Weight::from_parts(153_936_115, 0) - // Standard Error: 400_073 - .saturating_add(Weight::from_parts(335_598_380, 0).saturating_mul(r.into())) + // Minimum execution time: 107_346_000 picoseconds. + Weight::from_parts(160_631_540, 0) + // Standard Error: 352_753 + .saturating_add(Weight::from_parts(338_685_448, 0).saturating_mul(r.into())) } /// The range of component `p` is `[0, 2048]`. /// The range of component `s` is `[1, 2048]`. @@ -1059,22 +1057,22 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 42_747_420_000 picoseconds. - Weight::from_parts(42_968_891_000, 0) - // Standard Error: 252_454 - .saturating_add(Weight::from_parts(7_443_047, 0).saturating_mul(p.into())) - // Standard Error: 252_442 - .saturating_add(Weight::from_parts(177_458_321, 0).saturating_mul(s.into())) + // Minimum execution time: 44_754_074_000 picoseconds. + Weight::from_parts(44_833_050_000, 0) + // Standard Error: 269_308 + .saturating_add(Weight::from_parts(7_629_892, 0).saturating_mul(p.into())) + // Standard Error: 269_294 + .saturating_add(Weight::from_parts(179_148_245, 0).saturating_mul(s.into())) } /// The range of component `r` is `[0, 20]`. fn gr_create_program_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 94_879_000 picoseconds. - Weight::from_parts(157_991_694, 0) - // Standard Error: 362_276 - .saturating_add(Weight::from_parts(340_199_652, 0).saturating_mul(r.into())) + // Minimum execution time: 108_278_000 picoseconds. + Weight::from_parts(161_208_126, 0) + // Standard Error: 368_644 + .saturating_add(Weight::from_parts(346_324_329, 0).saturating_mul(r.into())) } /// The range of component `p` is `[0, 2048]`. /// The range of component `s` is `[1, 2048]`. @@ -1082,32 +1080,32 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 45_940_234_000 picoseconds. - Weight::from_parts(45_999_634_000, 0) - // Standard Error: 269_136 - .saturating_add(Weight::from_parts(7_028_589, 0).saturating_mul(p.into())) - // Standard Error: 269_123 - .saturating_add(Weight::from_parts(176_610_610, 0).saturating_mul(s.into())) + // Minimum execution time: 44_266_209_000 picoseconds. + Weight::from_parts(44_559_345_000, 0) + // Standard Error: 270_420 + .saturating_add(Weight::from_parts(7_460_172, 0).saturating_mul(p.into())) + // Standard Error: 270_407 + .saturating_add(Weight::from_parts(179_211_260, 0).saturating_mul(s.into())) } /// The range of component `r` is `[0, 20]`. fn gr_pay_program_rent(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 86_303_000 picoseconds. - Weight::from_parts(100_845_158, 0) - // Standard Error: 28_180 - .saturating_add(Weight::from_parts(1_828_410, 0).saturating_mul(r.into())) + // Minimum execution time: 94_889_000 picoseconds. + Weight::from_parts(115_310_524, 0) + // Standard Error: 34_049 + .saturating_add(Weight::from_parts(1_916_607, 0).saturating_mul(r.into())) } /// The range of component `p` is `[0, 512]`. fn lazy_pages_signal_read(p: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `141` // Estimated: `1131 + p * (9900 ±0)` - // Minimum execution time: 86_742_000 picoseconds. - Weight::from_parts(110_790_993, 1131) - // Standard Error: 6_233 - .saturating_add(Weight::from_parts(11_802_147, 0).saturating_mul(p.into())) + // Minimum execution time: 97_825_000 picoseconds. + Weight::from_parts(251_440_245, 1131) + // Standard Error: 70_641 + .saturating_add(Weight::from_parts(15_652_952, 0).saturating_mul(p.into())) .saturating_add(T::DbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 9900).saturating_mul(p.into())) } @@ -1116,10 +1114,10 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `141` // Estimated: `1131 + p * (9900 ±0)` - // Minimum execution time: 83_916_000 picoseconds. - Weight::from_parts(85_870_000, 1131) - // Standard Error: 27_705 - .saturating_add(Weight::from_parts(35_450_394, 0).saturating_mul(p.into())) + // Minimum execution time: 96_761_000 picoseconds. + Weight::from_parts(100_398_000, 1131) + // Standard Error: 45_532 + .saturating_add(Weight::from_parts(39_790_625, 0).saturating_mul(p.into())) .saturating_add(T::DbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 9900).saturating_mul(p.into())) } @@ -1128,10 +1126,10 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `141` // Estimated: `5069931` - // Minimum execution time: 6_097_917_000 picoseconds. - Weight::from_parts(5_604_890_798, 5069931) - // Standard Error: 98_374 - .saturating_add(Weight::from_parts(36_989_630, 0).saturating_mul(p.into())) + // Minimum execution time: 7_471_807_000 picoseconds. + Weight::from_parts(7_440_591_962, 5069931) + // Standard Error: 168_373 + .saturating_add(Weight::from_parts(40_244_359, 0).saturating_mul(p.into())) .saturating_add(T::DbWeight::get().reads(2048_u64)) } /// The range of component `p` is `[0, 512]`. @@ -1139,10 +1137,10 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `1813 + p * (65580 ±0)` // Estimated: `1939 + p * (75482 ±0)` - // Minimum execution time: 82_707_000 picoseconds. - Weight::from_parts(84_791_000, 1939) - // Standard Error: 37_959 - .saturating_add(Weight::from_parts(47_195_271, 0).saturating_mul(p.into())) + // Minimum execution time: 97_303_000 picoseconds. + Weight::from_parts(98_185_000, 1939) + // Standard Error: 38_471 + .saturating_add(Weight::from_parts(55_016_921, 0).saturating_mul(p.into())) .saturating_add(T::DbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 75482).saturating_mul(p.into())) } @@ -1151,10 +1149,10 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `141` // Estimated: `1131 + p * (9900 ±0)` - // Minimum execution time: 89_993_000 picoseconds. - Weight::from_parts(89_503_538, 1131) - // Standard Error: 59_714 - .saturating_add(Weight::from_parts(36_297_330, 0).saturating_mul(p.into())) + // Minimum execution time: 102_497_000 picoseconds. + Weight::from_parts(104_932_685, 1131) + // Standard Error: 78_974 + .saturating_add(Weight::from_parts(39_257_150, 0).saturating_mul(p.into())) .saturating_add(T::DbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 9900).saturating_mul(p.into())) } @@ -1163,10 +1161,10 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `141` // Estimated: `1496 + p * (9883 ±2)` - // Minimum execution time: 592_496_000 picoseconds. - Weight::from_parts(565_533_871, 1496) - // Standard Error: 314_500 - .saturating_add(Weight::from_parts(55_506_484, 0).saturating_mul(p.into())) + // Minimum execution time: 612_308_000 picoseconds. + Weight::from_parts(642_079_999, 1496) + // Standard Error: 357_245 + .saturating_add(Weight::from_parts(46_518_860, 0).saturating_mul(p.into())) .saturating_add(T::DbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 9883).saturating_mul(p.into())) } @@ -1175,10 +1173,10 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `141` // Estimated: `317931` - // Minimum execution time: 993_621_000 picoseconds. - Weight::from_parts(1_012_993_434, 317931) - // Standard Error: 387_880 - .saturating_add(Weight::from_parts(53_105_611, 0).saturating_mul(p.into())) + // Minimum execution time: 1_068_248_000 picoseconds. + Weight::from_parts(1_080_741_205, 317931) + // Standard Error: 262_216 + .saturating_add(Weight::from_parts(50_047_907, 0).saturating_mul(p.into())) .saturating_add(T::DbWeight::get().reads(128_u64)) } /// The range of component `r` is `[0, 20]`. @@ -1186,885 +1184,883 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_180_000 picoseconds. - Weight::from_parts(2_367_513, 0) - // Standard Error: 8_775 - .saturating_add(Weight::from_parts(24_100_608, 0).saturating_mul(r.into())) + // Minimum execution time: 3_099_000 picoseconds. + Weight::from_parts(6_340_084, 0) + // Standard Error: 180_257 + .saturating_add(Weight::from_parts(74_666_091, 0).saturating_mul(r.into())) } /// The range of component `r` is `[50, 500]`. fn instr_i64load(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 4_344_543_000 picoseconds. - Weight::from_parts(4_032_382_572, 0) - // Standard Error: 99_537 - .saturating_add(Weight::from_parts(5_787_910, 0).saturating_mul(r.into())) + // Minimum execution time: 4_391_547_000 picoseconds. + Weight::from_parts(4_140_785_425, 0) + // Standard Error: 89_369 + .saturating_add(Weight::from_parts(5_769_622, 0).saturating_mul(r.into())) } /// The range of component `r` is `[50, 500]`. fn instr_i32load(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 4_337_766_000 picoseconds. - Weight::from_parts(3_999_679_120, 0) - // Standard Error: 103_253 - .saturating_add(Weight::from_parts(5_927_871, 0).saturating_mul(r.into())) + // Minimum execution time: 4_386_802_000 picoseconds. + Weight::from_parts(4_243_536_456, 0) + // Standard Error: 95_210 + .saturating_add(Weight::from_parts(5_278_131, 0).saturating_mul(r.into())) } /// The range of component `r` is `[50, 500]`. fn instr_i64store(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 10_550_469_000 picoseconds. - Weight::from_parts(11_379_288_782, 0) - // Standard Error: 199_762 - .saturating_add(Weight::from_parts(12_085_908, 0).saturating_mul(r.into())) + // Minimum execution time: 11_072_272_000 picoseconds. + Weight::from_parts(11_558_306_225, 0) + // Standard Error: 165_659 + .saturating_add(Weight::from_parts(9_828_260, 0).saturating_mul(r.into())) } /// The range of component `r` is `[50, 500]`. fn instr_i32store(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 10_371_806_000 picoseconds. - Weight::from_parts(11_315_025_252, 0) - // Standard Error: 196_400 - .saturating_add(Weight::from_parts(9_868_462, 0).saturating_mul(r.into())) + // Minimum execution time: 10_285_071_000 picoseconds. + Weight::from_parts(11_137_621_942, 0) + // Standard Error: 147_513 + .saturating_add(Weight::from_parts(9_014_757, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_select(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_296_000 picoseconds. - Weight::from_parts(2_387_000, 0) - // Standard Error: 8_522 - .saturating_add(Weight::from_parts(3_812_287, 0).saturating_mul(r.into())) + // Minimum execution time: 2_285_000 picoseconds. + Weight::from_parts(2_410_000, 0) + // Standard Error: 7_624 + .saturating_add(Weight::from_parts(3_864_490, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_if(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_250_000 picoseconds. - Weight::from_parts(2_293_000, 0) - // Standard Error: 5_596 - .saturating_add(Weight::from_parts(3_015_385, 0).saturating_mul(r.into())) + // Minimum execution time: 2_342_000 picoseconds. + Weight::from_parts(2_433_000, 0) + // Standard Error: 6_413 + .saturating_add(Weight::from_parts(3_120_732, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_br(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_236_000 picoseconds. - Weight::from_parts(3_286_665, 0) - // Standard Error: 1_124 - .saturating_add(Weight::from_parts(1_572_972, 0).saturating_mul(r.into())) + // Minimum execution time: 2_301_000 picoseconds. + Weight::from_parts(3_591_730, 0) + // Standard Error: 1_106 + .saturating_add(Weight::from_parts(1_565_415, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_br_if(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_223_000 picoseconds. - Weight::from_parts(2_286_000, 0) - // Standard Error: 8_691 - .saturating_add(Weight::from_parts(2_934_320, 0).saturating_mul(r.into())) + // Minimum execution time: 2_306_000 picoseconds. + Weight::from_parts(2_461_000, 0) + // Standard Error: 7_711 + .saturating_add(Weight::from_parts(2_932_880, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_br_table(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_230_000 picoseconds. - Weight::from_parts(1_393_237, 0) - // Standard Error: 11_704 - .saturating_add(Weight::from_parts(5_179_849, 0).saturating_mul(r.into())) + // Minimum execution time: 2_358_000 picoseconds. + Weight::from_parts(2_144_801, 0) + // Standard Error: 22_082 + .saturating_add(Weight::from_parts(5_266_139, 0).saturating_mul(r.into())) } /// The range of component `e` is `[1, 256]`. fn instr_br_table_per_entry(e: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 7_013_000 picoseconds. - Weight::from_parts(5_664_804, 0) - // Standard Error: 2_473 - .saturating_add(Weight::from_parts(127_877, 0).saturating_mul(e.into())) + // Minimum execution time: 6_803_000 picoseconds. + Weight::from_parts(5_374_690, 0) + // Standard Error: 1_699 + .saturating_add(Weight::from_parts(171_193, 0).saturating_mul(e.into())) } /// The range of component `r` is `[0, 50]`. fn instr_call_const(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_351_000 picoseconds. - Weight::from_parts(4_248_352, 0) - // Standard Error: 5_303 - .saturating_add(Weight::from_parts(2_564_771, 0).saturating_mul(r.into())) + // Minimum execution time: 2_431_000 picoseconds. + Weight::from_parts(4_875_813, 0) + // Standard Error: 8_258 + .saturating_add(Weight::from_parts(2_629_733, 0).saturating_mul(r.into())) } fn instr_i64const(r: u32, ) -> Weight { Weight::from_parts(0, 0) - .saturating_add(Weight::from_parts(2_564_771 - - 2_417_980, 0).saturating_mul(r.into())) + .saturating_add(Weight::from_parts(2_629_733 - + 2_421_700, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_call(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_275_000 picoseconds. - Weight::from_parts(4_116_849, 0) - // Standard Error: 12_318 - .saturating_add(Weight::from_parts(2_417_980, 0).saturating_mul(r.into())) + // Minimum execution time: 2_403_000 picoseconds. + Weight::from_parts(5_140_243, 0) + // Standard Error: 13_164 + .saturating_add(Weight::from_parts(2_421_700, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_call_indirect(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_739_000 picoseconds. - Weight::from_parts(8_247_555, 0) - // Standard Error: 21_570 - .saturating_add(Weight::from_parts(10_290_172, 0).saturating_mul(r.into())) + // Minimum execution time: 2_669_000 picoseconds. + Weight::from_parts(22_369_265, 0) + // Standard Error: 28_577 + .saturating_add(Weight::from_parts(9_740_558, 0).saturating_mul(r.into())) } /// The range of component `p` is `[0, 128]`. fn instr_call_indirect_per_param(p: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 11_969_000 picoseconds. - Weight::from_parts(462_240, 0) - // Standard Error: 7_690 - .saturating_add(Weight::from_parts(1_320_559, 0).saturating_mul(p.into())) + // Minimum execution time: 12_277_000 picoseconds. + Weight::from_parts(3_596_853, 0) + // Standard Error: 5_869 + .saturating_add(Weight::from_parts(1_258_605, 0).saturating_mul(p.into())) } /// The range of component `l` is `[0, 1024]`. - fn instr_call_per_local(l: u32, ) -> Weight { + fn instr_call_per_local(_l: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 5_385_000 picoseconds. - Weight::from_parts(5_731_863, 0) - // Standard Error: 14 - .saturating_add(Weight::from_parts(7, 0).saturating_mul(l.into())) + // Minimum execution time: 5_391_000 picoseconds. + Weight::from_parts(5_778_137, 0) } /// The range of component `r` is `[0, 50]`. fn instr_local_get(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_267_000 picoseconds. - Weight::from_parts(1_509_226, 0) - // Standard Error: 3_855 - .saturating_add(Weight::from_parts(289_461, 0).saturating_mul(r.into())) + // Minimum execution time: 4_835_000 picoseconds. + Weight::from_parts(6_065_483, 0) + // Standard Error: 3_006 + .saturating_add(Weight::from_parts(378_512, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_local_set(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_290_000 picoseconds. - Weight::from_parts(2_403_000, 0) - // Standard Error: 6_135 - .saturating_add(Weight::from_parts(808_043, 0).saturating_mul(r.into())) + // Minimum execution time: 4_722_000 picoseconds. + Weight::from_parts(3_902_309, 0) + // Standard Error: 5_742 + .saturating_add(Weight::from_parts(1_056_408, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_local_tee(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_206_000 picoseconds. - Weight::from_parts(2_259_000, 0) - // Standard Error: 6_737 - .saturating_add(Weight::from_parts(815_196, 0).saturating_mul(r.into())) + // Minimum execution time: 4_888_000 picoseconds. + Weight::from_parts(4_512_058, 0) + // Standard Error: 6_410 + .saturating_add(Weight::from_parts(1_001_510, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_global_get(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_514_000 picoseconds. - Weight::from_parts(2_989_795, 0) - // Standard Error: 8_020 - .saturating_add(Weight::from_parts(785_708, 0).saturating_mul(r.into())) + // Minimum execution time: 6_413_000 picoseconds. + Weight::from_parts(2_704_134, 0) + // Standard Error: 7_244 + .saturating_add(Weight::from_parts(804_200, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_global_set(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_390_000 picoseconds. - Weight::from_parts(6_462_000, 0) - // Standard Error: 8_592 - .saturating_add(Weight::from_parts(1_340_863, 0).saturating_mul(r.into())) + // Minimum execution time: 6_516_000 picoseconds. + Weight::from_parts(1_028_752, 0) + // Standard Error: 8_792 + .saturating_add(Weight::from_parts(1_494_630, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_memory_current(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 4_894_000 picoseconds. - Weight::from_parts(1_962_792, 0) - // Standard Error: 10_808 - .saturating_add(Weight::from_parts(6_909_000, 0).saturating_mul(r.into())) + // Minimum execution time: 5_560_000 picoseconds. + Weight::from_parts(1_126_442, 0) + // Standard Error: 14_476 + .saturating_add(Weight::from_parts(7_240_597, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64clz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_282_000 picoseconds. - Weight::from_parts(2_309_000, 0) - // Standard Error: 9_270 - .saturating_add(Weight::from_parts(3_370_154, 0).saturating_mul(r.into())) + // Minimum execution time: 2_299_000 picoseconds. + Weight::from_parts(2_449_000, 0) + // Standard Error: 7_416 + .saturating_add(Weight::from_parts(3_344_387, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32clz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_214_000 picoseconds. - Weight::from_parts(2_328_000, 0) - // Standard Error: 6_565 - .saturating_add(Weight::from_parts(3_096_942, 0).saturating_mul(r.into())) + // Minimum execution time: 2_389_000 picoseconds. + Weight::from_parts(2_551_000, 0) + // Standard Error: 5_708 + .saturating_add(Weight::from_parts(3_133_430, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64ctz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_301_000 picoseconds. - Weight::from_parts(2_341_000, 0) - // Standard Error: 5_842 - .saturating_add(Weight::from_parts(3_131_625, 0).saturating_mul(r.into())) + // Minimum execution time: 2_428_000 picoseconds. + Weight::from_parts(2_511_000, 0) + // Standard Error: 7_262 + .saturating_add(Weight::from_parts(3_192_675, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32ctz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_290_000 picoseconds. - Weight::from_parts(2_341_000, 0) - // Standard Error: 5_456 - .saturating_add(Weight::from_parts(2_643_149, 0).saturating_mul(r.into())) + // Minimum execution time: 2_333_000 picoseconds. + Weight::from_parts(2_426_000, 0) + // Standard Error: 4_554 + .saturating_add(Weight::from_parts(2_683_293, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64popcnt(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_207_000 picoseconds. - Weight::from_parts(2_259_000, 0) - // Standard Error: 4_151 - .saturating_add(Weight::from_parts(559_292, 0).saturating_mul(r.into())) + // Minimum execution time: 2_334_000 picoseconds. + Weight::from_parts(2_385_000, 0) + // Standard Error: 4_686 + .saturating_add(Weight::from_parts(631_609, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32popcnt(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_282_000 picoseconds. - Weight::from_parts(1_656_873, 0) - // Standard Error: 3_537 - .saturating_add(Weight::from_parts(394_264, 0).saturating_mul(r.into())) + // Minimum execution time: 2_356_000 picoseconds. + Weight::from_parts(1_221_890, 0) + // Standard Error: 3_960 + .saturating_add(Weight::from_parts(452_047, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64eqz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_193_000 picoseconds. - Weight::from_parts(2_300_000, 0) - // Standard Error: 13_227 - .saturating_add(Weight::from_parts(1_891_285, 0).saturating_mul(r.into())) + // Minimum execution time: 2_318_000 picoseconds. + Weight::from_parts(2_390_000, 0) + // Standard Error: 11_114 + .saturating_add(Weight::from_parts(1_916_122, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32eqz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_197_000 picoseconds. - Weight::from_parts(2_297_000, 0) - // Standard Error: 9_416 - .saturating_add(Weight::from_parts(1_195_412, 0).saturating_mul(r.into())) + // Minimum execution time: 2_436_000 picoseconds. + Weight::from_parts(2_504_000, 0) + // Standard Error: 7_104 + .saturating_add(Weight::from_parts(1_156_958, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32extend8s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_254_000 picoseconds. - Weight::from_parts(1_244_456, 0) - // Standard Error: 3_993 - .saturating_add(Weight::from_parts(393_631, 0).saturating_mul(r.into())) + // Minimum execution time: 2_276_000 picoseconds. + Weight::from_parts(1_708_596, 0) + // Standard Error: 2_843 + .saturating_add(Weight::from_parts(377_083, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32extend16s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_245_000 picoseconds. - Weight::from_parts(1_710_108, 0) - // Standard Error: 3_705 - .saturating_add(Weight::from_parts(357_471, 0).saturating_mul(r.into())) + // Minimum execution time: 2_386_000 picoseconds. + Weight::from_parts(1_424_415, 0) + // Standard Error: 3_599 + .saturating_add(Weight::from_parts(395_934, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extend8s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_300_000 picoseconds. - Weight::from_parts(2_350_000, 0) - // Standard Error: 4_034 - .saturating_add(Weight::from_parts(496_786, 0).saturating_mul(r.into())) + // Minimum execution time: 2_396_000 picoseconds. + Weight::from_parts(2_491_000, 0) + // Standard Error: 3_774 + .saturating_add(Weight::from_parts(516_281, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extend16s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_251_000 picoseconds. - Weight::from_parts(143_742, 0) - // Standard Error: 5_409 - .saturating_add(Weight::from_parts(551_665, 0).saturating_mul(r.into())) + // Minimum execution time: 2_308_000 picoseconds. + Weight::from_parts(548_192, 0) + // Standard Error: 4_583 + .saturating_add(Weight::from_parts(556_734, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extend32s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_250_000 picoseconds. - Weight::from_parts(210_302, 0) - // Standard Error: 5_693 - .saturating_add(Weight::from_parts(526_432, 0).saturating_mul(r.into())) + // Minimum execution time: 2_333_000 picoseconds. + Weight::from_parts(447_271, 0) + // Standard Error: 5_300 + .saturating_add(Weight::from_parts(535_915, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extendsi32(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_246_000 picoseconds. - Weight::from_parts(1_582_329, 0) - // Standard Error: 3_448 - .saturating_add(Weight::from_parts(348_194, 0).saturating_mul(r.into())) + // Minimum execution time: 2_340_000 picoseconds. + Weight::from_parts(1_639_695, 0) + // Standard Error: 3_519 + .saturating_add(Weight::from_parts(368_523, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extendui32(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_350_000 picoseconds. - Weight::from_parts(2_836_265, 0) - // Standard Error: 1_916 - .saturating_add(Weight::from_parts(158_153, 0).saturating_mul(r.into())) + // Minimum execution time: 2_305_000 picoseconds. + Weight::from_parts(2_843_474, 0) + // Standard Error: 1_950 + .saturating_add(Weight::from_parts(176_592, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32wrapi64(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_230_000 picoseconds. - Weight::from_parts(2_997_599, 0) - // Standard Error: 1_870 - .saturating_add(Weight::from_parts(155_117, 0).saturating_mul(r.into())) + // Minimum execution time: 2_351_000 picoseconds. + Weight::from_parts(2_894_613, 0) + // Standard Error: 2_024 + .saturating_add(Weight::from_parts(188_853, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64eq(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_267_000 picoseconds. - Weight::from_parts(2_344_000, 0) - // Standard Error: 11_719 - .saturating_add(Weight::from_parts(1_911_693, 0).saturating_mul(r.into())) + // Minimum execution time: 2_353_000 picoseconds. + Weight::from_parts(2_418_000, 0) + // Standard Error: 9_504 + .saturating_add(Weight::from_parts(1_936_605, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32eq(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_259_000 picoseconds. - Weight::from_parts(2_323_000, 0) - // Standard Error: 7_734 - .saturating_add(Weight::from_parts(1_135_022, 0).saturating_mul(r.into())) + // Minimum execution time: 2_291_000 picoseconds. + Weight::from_parts(2_364_000, 0) + // Standard Error: 8_346 + .saturating_add(Weight::from_parts(1_222_521, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64ne(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_189_000 picoseconds. - Weight::from_parts(2_254_000, 0) - // Standard Error: 13_208 - .saturating_add(Weight::from_parts(1_839_828, 0).saturating_mul(r.into())) + // Minimum execution time: 2_345_000 picoseconds. + Weight::from_parts(2_452_000, 0) + // Standard Error: 10_232 + .saturating_add(Weight::from_parts(1_883_867, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32ne(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_218_000 picoseconds. - Weight::from_parts(2_306_000, 0) - // Standard Error: 7_621 - .saturating_add(Weight::from_parts(1_164_880, 0).saturating_mul(r.into())) + // Minimum execution time: 2_323_000 picoseconds. + Weight::from_parts(2_387_000, 0) + // Standard Error: 7_581 + .saturating_add(Weight::from_parts(1_200_178, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64lts(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_238_000 picoseconds. - Weight::from_parts(2_291_000, 0) - // Standard Error: 10_468 - .saturating_add(Weight::from_parts(1_846_638, 0).saturating_mul(r.into())) + // Minimum execution time: 2_410_000 picoseconds. + Weight::from_parts(2_459_000, 0) + // Standard Error: 11_139 + .saturating_add(Weight::from_parts(1_877_766, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32lts(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_240_000 picoseconds. - Weight::from_parts(2_308_000, 0) - // Standard Error: 7_502 - .saturating_add(Weight::from_parts(1_112_456, 0).saturating_mul(r.into())) + // Minimum execution time: 2_273_000 picoseconds. + Weight::from_parts(2_387_000, 0) + // Standard Error: 8_083 + .saturating_add(Weight::from_parts(1_217_904, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64ltu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_192_000 picoseconds. - Weight::from_parts(2_283_000, 0) - // Standard Error: 12_282 - .saturating_add(Weight::from_parts(1_806_513, 0).saturating_mul(r.into())) + // Minimum execution time: 2_403_000 picoseconds. + Weight::from_parts(2_482_000, 0) + // Standard Error: 11_044 + .saturating_add(Weight::from_parts(1_956_302, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32ltu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_250_000 picoseconds. - Weight::from_parts(2_310_000, 0) - // Standard Error: 8_080 - .saturating_add(Weight::from_parts(1_114_020, 0).saturating_mul(r.into())) + // Minimum execution time: 2_353_000 picoseconds. + Weight::from_parts(2_420_000, 0) + // Standard Error: 7_870 + .saturating_add(Weight::from_parts(1_213_570, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64gts(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_270_000 picoseconds. - Weight::from_parts(2_319_000, 0) - // Standard Error: 11_947 - .saturating_add(Weight::from_parts(1_858_303, 0).saturating_mul(r.into())) + // Minimum execution time: 2_364_000 picoseconds. + Weight::from_parts(2_430_000, 0) + // Standard Error: 10_577 + .saturating_add(Weight::from_parts(1_968_043, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32gts(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_204_000 picoseconds. - Weight::from_parts(2_322_000, 0) - // Standard Error: 9_452 - .saturating_add(Weight::from_parts(1_236_546, 0).saturating_mul(r.into())) + // Minimum execution time: 2_328_000 picoseconds. + Weight::from_parts(2_442_000, 0) + // Standard Error: 7_838 + .saturating_add(Weight::from_parts(1_267_211, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64gtu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_222_000 picoseconds. - Weight::from_parts(2_289_000, 0) - // Standard Error: 9_388 - .saturating_add(Weight::from_parts(1_920_612, 0).saturating_mul(r.into())) + // Minimum execution time: 2_395_000 picoseconds. + Weight::from_parts(2_460_000, 0) + // Standard Error: 10_856 + .saturating_add(Weight::from_parts(1_910_357, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32gtu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_267_000 picoseconds. - Weight::from_parts(2_316_000, 0) - // Standard Error: 7_906 - .saturating_add(Weight::from_parts(1_147_958, 0).saturating_mul(r.into())) + // Minimum execution time: 2_343_000 picoseconds. + Weight::from_parts(2_409_000, 0) + // Standard Error: 5_786 + .saturating_add(Weight::from_parts(1_128_653, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64les(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_233_000 picoseconds. - Weight::from_parts(2_278_000, 0) - // Standard Error: 14_090 - .saturating_add(Weight::from_parts(1_923_509, 0).saturating_mul(r.into())) + // Minimum execution time: 2_318_000 picoseconds. + Weight::from_parts(2_433_000, 0) + // Standard Error: 10_344 + .saturating_add(Weight::from_parts(1_897_480, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32les(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_216_000 picoseconds. - Weight::from_parts(2_271_000, 0) - // Standard Error: 9_629 - .saturating_add(Weight::from_parts(1_197_507, 0).saturating_mul(r.into())) + // Minimum execution time: 2_355_000 picoseconds. + Weight::from_parts(2_460_000, 0) + // Standard Error: 6_963 + .saturating_add(Weight::from_parts(1_125_698, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64leu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_268_000 picoseconds. - Weight::from_parts(2_341_000, 0) - // Standard Error: 10_951 - .saturating_add(Weight::from_parts(1_915_569, 0).saturating_mul(r.into())) + // Minimum execution time: 2_356_000 picoseconds. + Weight::from_parts(2_447_000, 0) + // Standard Error: 8_285 + .saturating_add(Weight::from_parts(1_848_149, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32leu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_218_000 picoseconds. - Weight::from_parts(2_276_000, 0) - // Standard Error: 8_283 - .saturating_add(Weight::from_parts(1_212_268, 0).saturating_mul(r.into())) + // Minimum execution time: 2_327_000 picoseconds. + Weight::from_parts(2_394_000, 0) + // Standard Error: 7_282 + .saturating_add(Weight::from_parts(1_176_423, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64ges(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_221_000 picoseconds. - Weight::from_parts(2_283_000, 0) - // Standard Error: 11_398 - .saturating_add(Weight::from_parts(1_932_092, 0).saturating_mul(r.into())) + // Minimum execution time: 2_372_000 picoseconds. + Weight::from_parts(2_439_000, 0) + // Standard Error: 9_207 + .saturating_add(Weight::from_parts(1_837_009, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32ges(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_278_000 picoseconds. - Weight::from_parts(2_324_000, 0) - // Standard Error: 8_582 - .saturating_add(Weight::from_parts(1_170_243, 0).saturating_mul(r.into())) + // Minimum execution time: 2_368_000 picoseconds. + Weight::from_parts(2_427_000, 0) + // Standard Error: 8_320 + .saturating_add(Weight::from_parts(1_231_088, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64geu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_216_000 picoseconds. - Weight::from_parts(2_294_000, 0) - // Standard Error: 13_115 - .saturating_add(Weight::from_parts(1_902_257, 0).saturating_mul(r.into())) + // Minimum execution time: 2_373_000 picoseconds. + Weight::from_parts(2_461_000, 0) + // Standard Error: 9_499 + .saturating_add(Weight::from_parts(1_922_588, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32geu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_277_000 picoseconds. - Weight::from_parts(2_358_000, 0) - // Standard Error: 9_006 - .saturating_add(Weight::from_parts(1_220_902, 0).saturating_mul(r.into())) + // Minimum execution time: 2_387_000 picoseconds. + Weight::from_parts(2_455_000, 0) + // Standard Error: 7_681 + .saturating_add(Weight::from_parts(1_198_894, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64add(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_255_000 picoseconds. - Weight::from_parts(2_316_000, 0) - // Standard Error: 8_357 - .saturating_add(Weight::from_parts(1_302_969, 0).saturating_mul(r.into())) + // Minimum execution time: 2_308_000 picoseconds. + Weight::from_parts(2_389_000, 0) + // Standard Error: 7_797 + .saturating_add(Weight::from_parts(1_286_566, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32add(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_227_000 picoseconds. - Weight::from_parts(2_275_000, 0) - // Standard Error: 5_837 - .saturating_add(Weight::from_parts(637_533, 0).saturating_mul(r.into())) + // Minimum execution time: 2_329_000 picoseconds. + Weight::from_parts(2_389_000, 0) + // Standard Error: 4_968 + .saturating_add(Weight::from_parts(645_254, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64sub(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_182_000 picoseconds. - Weight::from_parts(2_253_000, 0) - // Standard Error: 7_474 - .saturating_add(Weight::from_parts(1_274_444, 0).saturating_mul(r.into())) + // Minimum execution time: 2_409_000 picoseconds. + Weight::from_parts(2_489_000, 0) + // Standard Error: 7_055 + .saturating_add(Weight::from_parts(1_232_084, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32sub(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_268_000 picoseconds. - Weight::from_parts(2_314_000, 0) - // Standard Error: 4_787 - .saturating_add(Weight::from_parts(598_295, 0).saturating_mul(r.into())) + // Minimum execution time: 2_371_000 picoseconds. + Weight::from_parts(2_420_000, 0) + // Standard Error: 4_348 + .saturating_add(Weight::from_parts(633_810, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64mul(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_184_000 picoseconds. - Weight::from_parts(2_286_000, 0) - // Standard Error: 13_111 - .saturating_add(Weight::from_parts(1_764_139, 0).saturating_mul(r.into())) + // Minimum execution time: 2_336_000 picoseconds. + Weight::from_parts(2_413_000, 0) + // Standard Error: 8_202 + .saturating_add(Weight::from_parts(1_777_425, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32mul(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_247_000 picoseconds. - Weight::from_parts(2_344_000, 0) - // Standard Error: 8_531 - .saturating_add(Weight::from_parts(1_233_195, 0).saturating_mul(r.into())) + // Minimum execution time: 2_314_000 picoseconds. + Weight::from_parts(2_369_000, 0) + // Standard Error: 6_935 + .saturating_add(Weight::from_parts(1_201_570, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64divs(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_215_000 picoseconds. - Weight::from_parts(2_308_000, 0) - // Standard Error: 8_554 - .saturating_add(Weight::from_parts(2_787_034, 0).saturating_mul(r.into())) + // Minimum execution time: 2_276_000 picoseconds. + Weight::from_parts(6_846_840, 0) + // Standard Error: 17_822 + .saturating_add(Weight::from_parts(2_268_370, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32divs(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_285_000 picoseconds. - Weight::from_parts(2_336_000, 0) - // Standard Error: 8_016 - .saturating_add(Weight::from_parts(2_444_420, 0).saturating_mul(r.into())) + // Minimum execution time: 2_394_000 picoseconds. + Weight::from_parts(4_704_336, 0) + // Standard Error: 10_960 + .saturating_add(Weight::from_parts(2_182_711, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64divu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_174_000 picoseconds. - Weight::from_parts(2_266_000, 0) - // Standard Error: 9_336 - .saturating_add(Weight::from_parts(3_001_762, 0).saturating_mul(r.into())) + // Minimum execution time: 2_375_000 picoseconds. + Weight::from_parts(1_968_824, 0) + // Standard Error: 15_899 + .saturating_add(Weight::from_parts(2_762_269, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32divu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_230_000 picoseconds. - Weight::from_parts(2_279_000, 0) - // Standard Error: 8_838 - .saturating_add(Weight::from_parts(2_479_926, 0).saturating_mul(r.into())) + // Minimum execution time: 2_335_000 picoseconds. + Weight::from_parts(1_450_000, 0) + // Standard Error: 13_496 + .saturating_add(Weight::from_parts(2_401_407, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64rems(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_222_000 picoseconds. - Weight::from_parts(2_251_000, 0) - // Standard Error: 15_694 - .saturating_add(Weight::from_parts(9_400_757, 0).saturating_mul(r.into())) + // Minimum execution time: 2_448_000 picoseconds. + Weight::from_parts(2_513_000, 0) + // Standard Error: 19_401 + .saturating_add(Weight::from_parts(9_309_211, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32rems(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_177_000 picoseconds. - Weight::from_parts(2_262_000, 0) - // Standard Error: 24_148 - .saturating_add(Weight::from_parts(7_553_495, 0).saturating_mul(r.into())) + // Minimum execution time: 2_273_000 picoseconds. + Weight::from_parts(1_738_370, 0) + // Standard Error: 42_672 + .saturating_add(Weight::from_parts(7_512_557, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64remu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_305_000 picoseconds. - Weight::from_parts(2_344_000, 0) - // Standard Error: 8_791 - .saturating_add(Weight::from_parts(2_956_458, 0).saturating_mul(r.into())) + // Minimum execution time: 2_371_000 picoseconds. + Weight::from_parts(2_215_088, 0) + // Standard Error: 15_445 + .saturating_add(Weight::from_parts(2_956_278, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32remu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_280_000 picoseconds. - Weight::from_parts(2_297_000, 0) - // Standard Error: 7_657 - .saturating_add(Weight::from_parts(2_477_698, 0).saturating_mul(r.into())) + // Minimum execution time: 2_409_000 picoseconds. + Weight::from_parts(217_500, 0) + // Standard Error: 7_904 + .saturating_add(Weight::from_parts(2_576_151, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64and(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_206_000 picoseconds. - Weight::from_parts(2_261_000, 0) - // Standard Error: 8_702 - .saturating_add(Weight::from_parts(1_265_825, 0).saturating_mul(r.into())) + // Minimum execution time: 2_456_000 picoseconds. + Weight::from_parts(2_503_000, 0) + // Standard Error: 7_920 + .saturating_add(Weight::from_parts(1_321_543, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32and(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_198_000 picoseconds. - Weight::from_parts(2_243_000, 0) - // Standard Error: 5_815 - .saturating_add(Weight::from_parts(639_043, 0).saturating_mul(r.into())) + // Minimum execution time: 2_346_000 picoseconds. + Weight::from_parts(2_479_000, 0) + // Standard Error: 4_711 + .saturating_add(Weight::from_parts(689_892, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64or(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_243_000 picoseconds. - Weight::from_parts(2_299_000, 0) - // Standard Error: 8_918 - .saturating_add(Weight::from_parts(1_302_162, 0).saturating_mul(r.into())) + // Minimum execution time: 2_339_000 picoseconds. + Weight::from_parts(2_427_000, 0) + // Standard Error: 8_029 + .saturating_add(Weight::from_parts(1_256_838, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32or(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_278_000 picoseconds. - Weight::from_parts(2_329_000, 0) - // Standard Error: 4_483 - .saturating_add(Weight::from_parts(628_991, 0).saturating_mul(r.into())) + // Minimum execution time: 2_334_000 picoseconds. + Weight::from_parts(2_480_000, 0) + // Standard Error: 3_812 + .saturating_add(Weight::from_parts(607_420, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64xor(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_211_000 picoseconds. - Weight::from_parts(2_264_000, 0) - // Standard Error: 9_628 - .saturating_add(Weight::from_parts(1_310_707, 0).saturating_mul(r.into())) + // Minimum execution time: 2_328_000 picoseconds. + Weight::from_parts(2_392_000, 0) + // Standard Error: 7_362 + .saturating_add(Weight::from_parts(1_248_739, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32xor(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_197_000 picoseconds. - Weight::from_parts(2_261_000, 0) - // Standard Error: 4_478 - .saturating_add(Weight::from_parts(645_751, 0).saturating_mul(r.into())) + // Minimum execution time: 2_419_000 picoseconds. + Weight::from_parts(2_465_000, 0) + // Standard Error: 4_304 + .saturating_add(Weight::from_parts(604_813, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64shl(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_231_000 picoseconds. - Weight::from_parts(2_327_000, 0) - // Standard Error: 8_607 - .saturating_add(Weight::from_parts(1_149_332, 0).saturating_mul(r.into())) + // Minimum execution time: 2_298_000 picoseconds. + Weight::from_parts(2_433_000, 0) + // Standard Error: 8_043 + .saturating_add(Weight::from_parts(1_073_194, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32shl(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_245_000 picoseconds. - Weight::from_parts(2_263_000, 0) - // Standard Error: 4_008 - .saturating_add(Weight::from_parts(590_180, 0).saturating_mul(r.into())) + // Minimum execution time: 2_427_000 picoseconds. + Weight::from_parts(2_511_000, 0) + // Standard Error: 4_969 + .saturating_add(Weight::from_parts(594_802, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64shrs(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_158_000 picoseconds. - Weight::from_parts(2_285_000, 0) - // Standard Error: 8_280 - .saturating_add(Weight::from_parts(1_079_846, 0).saturating_mul(r.into())) + // Minimum execution time: 2_312_000 picoseconds. + Weight::from_parts(2_399_000, 0) + // Standard Error: 7_093 + .saturating_add(Weight::from_parts(1_110_114, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32shrs(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_310_000 picoseconds. - Weight::from_parts(2_385_000, 0) - // Standard Error: 3_875 - .saturating_add(Weight::from_parts(547_245, 0).saturating_mul(r.into())) + // Minimum execution time: 2_331_000 picoseconds. + Weight::from_parts(2_433_000, 0) + // Standard Error: 4_140 + .saturating_add(Weight::from_parts(600_354, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64shru(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_231_000 picoseconds. - Weight::from_parts(2_315_000, 0) - // Standard Error: 9_477 - .saturating_add(Weight::from_parts(1_110_046, 0).saturating_mul(r.into())) + // Minimum execution time: 2_300_000 picoseconds. + Weight::from_parts(2_419_000, 0) + // Standard Error: 7_150 + .saturating_add(Weight::from_parts(1_154_649, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32shru(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_174_000 picoseconds. - Weight::from_parts(2_305_000, 0) - // Standard Error: 4_474 - .saturating_add(Weight::from_parts(564_322, 0).saturating_mul(r.into())) + // Minimum execution time: 2_356_000 picoseconds. + Weight::from_parts(2_423_000, 0) + // Standard Error: 5_067 + .saturating_add(Weight::from_parts(594_487, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64rotl(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_271_000 picoseconds. - Weight::from_parts(2_318_000, 0) - // Standard Error: 8_819 - .saturating_add(Weight::from_parts(1_132_561, 0).saturating_mul(r.into())) + // Minimum execution time: 2_339_000 picoseconds. + Weight::from_parts(2_406_000, 0) + // Standard Error: 5_674 + .saturating_add(Weight::from_parts(1_051_819, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32rotl(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_240_000 picoseconds. - Weight::from_parts(2_292_000, 0) - // Standard Error: 4_113 - .saturating_add(Weight::from_parts(601_692, 0).saturating_mul(r.into())) + // Minimum execution time: 2_383_000 picoseconds. + Weight::from_parts(114_723, 0) + // Standard Error: 5_881 + .saturating_add(Weight::from_parts(646_798, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64rotr(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_236_000 picoseconds. - Weight::from_parts(2_253_000, 0) - // Standard Error: 7_294 - .saturating_add(Weight::from_parts(1_106_781, 0).saturating_mul(r.into())) + // Minimum execution time: 2_292_000 picoseconds. + Weight::from_parts(2_422_000, 0) + // Standard Error: 6_697 + .saturating_add(Weight::from_parts(1_053_580, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32rotr(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_193_000 picoseconds. - Weight::from_parts(2_268_000, 0) - // Standard Error: 4_653 - .saturating_add(Weight::from_parts(587_731, 0).saturating_mul(r.into())) + // Minimum execution time: 2_325_000 picoseconds. + Weight::from_parts(206_699, 0) + // Standard Error: 5_851 + .saturating_add(Weight::from_parts(639_333, 0).saturating_mul(r.into())) } } @@ -2089,21 +2085,21 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_012_000 picoseconds. - Weight::from_parts(1_102_000, 0) - // Standard Error: 721 - .saturating_add(Weight::from_parts(207_628, 0).saturating_mul(c.into())) + // Minimum execution time: 1_023_000 picoseconds. + Weight::from_parts(1_051_000, 0) + // Standard Error: 912 + .saturating_add(Weight::from_parts(213_761, 0).saturating_mul(c.into())) .saturating_add(RocksDbWeight::get().writes(1_u64)) } /// The range of component `c` is `[0, 512]`. fn db_read_per_kb(c: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `113 + c * (1024 ±0)` - // Estimated: `3577 + c * (1024 ±0)` - // Minimum execution time: 3_309_000 picoseconds. - Weight::from_parts(3_406_000, 3577) - // Standard Error: 759 - .saturating_add(Weight::from_parts(674_106, 0).saturating_mul(c.into())) + // Measured: `146 + c * (1024 ±0)` + // Estimated: `3610 + c * (1024 ±0)` + // Minimum execution time: 3_252_000 picoseconds. + Weight::from_parts(3_416_000, 3610) + // Standard Error: 1_261 + .saturating_add(Weight::from_parts(689_572, 0).saturating_mul(c.into())) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(Weight::from_parts(0, 1024).saturating_mul(c.into())) } @@ -2112,35 +2108,35 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 52_127_000 picoseconds. - Weight::from_parts(74_742_938, 0) - // Standard Error: 5_397 - .saturating_add(Weight::from_parts(2_342_205, 0).saturating_mul(c.into())) + // Minimum execution time: 59_805_000 picoseconds. + Weight::from_parts(86_729_126, 0) + // Standard Error: 7_023 + .saturating_add(Weight::from_parts(2_475_519, 0).saturating_mul(c.into())) } fn claim_value() -> Weight { // Proof Size summary in bytes: - // Measured: `1050` - // Estimated: `42875` - // Minimum execution time: 84_245_000 picoseconds. - Weight::from_parts(85_847_000, 42875) - .saturating_add(RocksDbWeight::get().reads(13_u64)) - .saturating_add(RocksDbWeight::get().writes(10_u64)) + // Measured: `1372` + // Estimated: `51905` + // Minimum execution time: 107_694_000 picoseconds. + Weight::from_parts(110_328_000, 51905) + .saturating_add(RocksDbWeight::get().reads(15_u64)) + .saturating_add(RocksDbWeight::get().writes(12_u64)) } fn pay_program_rent() -> Weight { // Proof Size summary in bytes: - // Measured: `958` - // Estimated: `21477` - // Minimum execution time: 55_566_000 picoseconds. - Weight::from_parts(57_030_000, 21477) + // Measured: `992` + // Estimated: `21579` + // Minimum execution time: 55_980_000 picoseconds. + Weight::from_parts(56_766_000, 21579) .saturating_add(RocksDbWeight::get().reads(7_u64)) .saturating_add(RocksDbWeight::get().writes(6_u64)) } fn resume_session_init() -> Weight { // Proof Size summary in bytes: - // Measured: `605` - // Estimated: `17354` - // Minimum execution time: 29_403_000 picoseconds. - Weight::from_parts(30_422_000, 17354) + // Measured: `638` + // Estimated: `17486` + // Minimum execution time: 29_973_000 picoseconds. + Weight::from_parts(31_008_000, 17486) .saturating_add(RocksDbWeight::get().reads(6_u64)) .saturating_add(RocksDbWeight::get().writes(4_u64)) } @@ -2149,22 +2145,22 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `355` // Estimated: `7640` - // Minimum execution time: 7_886_000 picoseconds. - Weight::from_parts(5_577_548, 7640) - // Standard Error: 36_666 - .saturating_add(Weight::from_parts(13_383_280, 0).saturating_mul(c.into())) + // Minimum execution time: 8_054_000 picoseconds. + Weight::from_parts(8_342_000, 7640) + // Standard Error: 17_771 + .saturating_add(Weight::from_parts(13_335_661, 0).saturating_mul(c.into())) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(2_u64)) } /// The range of component `c` is `[0, 2044]`. fn resume_session_commit(c: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1439 + c * (16389 ±0)` - // Estimated: `42034 + c * (131112 ±0)` - // Minimum execution time: 71_129_000 picoseconds. - Weight::from_parts(71_867_000, 42034) - // Standard Error: 194_431 - .saturating_add(Weight::from_parts(53_622_369, 0).saturating_mul(c.into())) + // Measured: `1593 + c * (16389 ±0)` + // Estimated: `43266 + c * (131112 ±0)` + // Minimum execution time: 72_178_000 picoseconds. + Weight::from_parts(73_341_000, 43266) + // Standard Error: 167_723 + .saturating_add(Weight::from_parts(54_442_045, 0).saturating_mul(c.into())) .saturating_add(RocksDbWeight::get().reads(11_u64)) .saturating_add(RocksDbWeight::get().writes(9_u64)) .saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(c.into()))) @@ -2173,97 +2169,97 @@ impl WeightInfo for () { /// The range of component `c` is `[0, 250]`. fn upload_code(c: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `80` - // Estimated: `5270` - // Minimum execution time: 63_441_000 picoseconds. - Weight::from_parts(69_716_978, 5270) - // Standard Error: 32_301 - .saturating_add(Weight::from_parts(51_458_430, 0).saturating_mul(c.into())) + // Measured: `113` + // Estimated: `5402` + // Minimum execution time: 78_662_000 picoseconds. + Weight::from_parts(42_066_175, 5402) + // Standard Error: 52_075 + .saturating_add(Weight::from_parts(60_249_549, 0).saturating_mul(c.into())) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(4_u64)) } /// The range of component `s` is `[0, 4194304]`. fn create_program(s: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `742` - // Estimated: `39419` - // Minimum execution time: 64_601_000 picoseconds. - Weight::from_parts(94_970_592, 39419) - // Standard Error: 0 - .saturating_add(Weight::from_parts(2_577, 0).saturating_mul(s.into())) - .saturating_add(RocksDbWeight::get().reads(13_u64)) - .saturating_add(RocksDbWeight::get().writes(10_u64)) + // Measured: `1111` + // Estimated: `50600` + // Minimum execution time: 94_321_000 picoseconds. + Weight::from_parts(129_113_540, 50600) + // Standard Error: 1 + .saturating_add(Weight::from_parts(2_625, 0).saturating_mul(s.into())) + .saturating_add(RocksDbWeight::get().reads(15_u64)) + .saturating_add(RocksDbWeight::get().writes(12_u64)) } /// The range of component `c` is `[0, 250]`. /// The range of component `s` is `[0, 4194304]`. fn upload_program(c: u32, s: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `306` - // Estimated: `35235` - // Minimum execution time: 10_884_487_000 picoseconds. - Weight::from_parts(321_953_387, 35235) - // Standard Error: 164_114 - .saturating_add(Weight::from_parts(51_946_894, 0).saturating_mul(c.into())) - // Standard Error: 9 - .saturating_add(Weight::from_parts(2_506, 0).saturating_mul(s.into())) - .saturating_add(RocksDbWeight::get().reads(13_u64)) - .saturating_add(RocksDbWeight::get().writes(14_u64)) + // Measured: `521` + // Estimated: `45152` + // Minimum execution time: 11_148_491_000 picoseconds. + Weight::from_parts(21_065_971, 45152) + // Standard Error: 173_883 + .saturating_add(Weight::from_parts(60_839_567, 0).saturating_mul(c.into())) + // Standard Error: 10 + .saturating_add(Weight::from_parts(2_652, 0).saturating_mul(s.into())) + .saturating_add(RocksDbWeight::get().reads(15_u64)) + .saturating_add(RocksDbWeight::get().writes(16_u64)) } /// The range of component `p` is `[0, 2097152]`. fn send_message(p: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `349` - // Estimated: `23860` - // Minimum execution time: 55_131_000 picoseconds. - Weight::from_parts(30_192_078, 23860) + // Measured: `531` + // Estimated: `31266` + // Minimum execution time: 73_302_000 picoseconds. + Weight::from_parts(47_279_667, 31266) // Standard Error: 1 - .saturating_add(Weight::from_parts(1_039, 0).saturating_mul(p.into())) - .saturating_add(RocksDbWeight::get().reads(9_u64)) - .saturating_add(RocksDbWeight::get().writes(8_u64)) + .saturating_add(Weight::from_parts(1_055, 0).saturating_mul(p.into())) + .saturating_add(RocksDbWeight::get().reads(11_u64)) + .saturating_add(RocksDbWeight::get().writes(10_u64)) } /// The range of component `p` is `[0, 2097152]`. fn send_reply(p: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1049` - // Estimated: `42866` - // Minimum execution time: 85_069_000 picoseconds. - Weight::from_parts(72_149_865, 42866) - // Standard Error: 1 - .saturating_add(Weight::from_parts(1_036, 0).saturating_mul(p.into())) - .saturating_add(RocksDbWeight::get().reads(13_u64)) - .saturating_add(RocksDbWeight::get().writes(10_u64)) + // Measured: `1371` + // Estimated: `54435` + // Minimum execution time: 124_173_000 picoseconds. + Weight::from_parts(96_458_887, 54435) + // Standard Error: 2 + .saturating_add(Weight::from_parts(1_078, 0).saturating_mul(p.into())) + .saturating_add(RocksDbWeight::get().reads(16_u64)) + .saturating_add(RocksDbWeight::get().writes(13_u64)) } /// The range of component `q` is `[1, 512]`. - fn initial_allocation(q: u32, ) -> Weight { + fn initial_allocation(_q: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1066` - // Estimated: `85981` - // Minimum execution time: 323_286_000 picoseconds. - Weight::from_parts(335_875_612, 85981) - // Standard Error: 1_331 - .saturating_add(Weight::from_parts(1_294, 0).saturating_mul(q.into())) - .saturating_add(RocksDbWeight::get().reads(29_u64)) - .saturating_add(RocksDbWeight::get().writes(23_u64)) + // Measured: `1893` + // Estimated: `114612` + // Minimum execution time: 365_983_000 picoseconds. + Weight::from_parts(387_416_952, 114612) + .saturating_add(RocksDbWeight::get().reads(33_u64)) + .saturating_add(RocksDbWeight::get().writes(26_u64)) } /// The range of component `q` is `[0, 512]`. - fn alloc_in_handle(_q: u32, ) -> Weight { + fn alloc_in_handle(q: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1066` - // Estimated: `85905` - // Minimum execution time: 333_261_000 picoseconds. - Weight::from_parts(348_059_151, 85905) - .saturating_add(RocksDbWeight::get().reads(29_u64)) - .saturating_add(RocksDbWeight::get().writes(23_u64)) + // Measured: `1893` + // Estimated: `114612` + // Minimum execution time: 380_430_000 picoseconds. + Weight::from_parts(403_376_118, 114612) + // Standard Error: 2_451 + .saturating_add(Weight::from_parts(1_137, 0).saturating_mul(q.into())) + .saturating_add(RocksDbWeight::get().reads(33_u64)) + .saturating_add(RocksDbWeight::get().writes(26_u64)) } /// The range of component `c` is `[0, 512]`. fn reinstrument_per_kb(c: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `211 + c * (1075 ±0)` // Estimated: `3899 + c * (2150 ±0)` - // Minimum execution time: 45_732_000 picoseconds. - Weight::from_parts(46_437_000, 3899) - // Standard Error: 40_834 - .saturating_add(Weight::from_parts(51_504_684, 0).saturating_mul(c.into())) + // Minimum execution time: 58_080_000 picoseconds. + Weight::from_parts(58_601_000, 3899) + // Standard Error: 36_083 + .saturating_add(Weight::from_parts(58_395_643, 0).saturating_mul(c.into())) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(2_u64)) .saturating_add(Weight::from_parts(0, 2150).saturating_mul(c.into())) @@ -2273,630 +2269,628 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_890_000 picoseconds. - Weight::from_parts(87_488_000, 0) - // Standard Error: 4_218_353 - .saturating_add(Weight::from_parts(584_751_765, 0).saturating_mul(r.into())) + // Minimum execution time: 91_412_000 picoseconds. + Weight::from_parts(94_168_000, 0) + // Standard Error: 3_806_298 + .saturating_add(Weight::from_parts(673_774_453, 0).saturating_mul(r.into())) } /// The range of component `p` is `[1, 512]`. fn alloc_per_page(p: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 319_127_000 picoseconds. - Weight::from_parts(258_635_809, 0) - // Standard Error: 13_905 - .saturating_add(Weight::from_parts(32_129_635, 0).saturating_mul(p.into())) + // Minimum execution time: 452_549_000 picoseconds. + Weight::from_parts(398_963_700, 0) + // Standard Error: 7_042 + .saturating_add(Weight::from_parts(29_406_609, 0).saturating_mul(p.into())) } /// The range of component `r` is `[0, 20]`. fn free(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 145_346_000 picoseconds. - Weight::from_parts(132_224_327, 0) - // Standard Error: 318_914 - .saturating_add(Weight::from_parts(64_020_177, 0).saturating_mul(r.into())) + // Minimum execution time: 207_052_000 picoseconds. + Weight::from_parts(209_606_478, 0) + // Standard Error: 255_281 + .saturating_add(Weight::from_parts(62_959_531, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 256]`. fn gr_reserve_gas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 86_899_000 picoseconds. - Weight::from_parts(93_463_487, 0) - // Standard Error: 3_525 - .saturating_add(Weight::from_parts(2_288_372, 0).saturating_mul(r.into())) + // Minimum execution time: 97_729_000 picoseconds. + Weight::from_parts(105_964_750, 0) + // Standard Error: 4_847 + .saturating_add(Weight::from_parts(2_433_966, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 256]`. fn gr_unreserve_gas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 138_092_000 picoseconds. - Weight::from_parts(169_806_344, 0) - // Standard Error: 26_882 - .saturating_add(Weight::from_parts(2_254_783, 0).saturating_mul(r.into())) + // Minimum execution time: 175_010_000 picoseconds. + Weight::from_parts(229_153_209, 0) + // Standard Error: 17_116 + .saturating_add(Weight::from_parts(1_991_260, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_system_reserve_gas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 85_599_000 picoseconds. - Weight::from_parts(98_793_759, 0) - // Standard Error: 347_287 - .saturating_add(Weight::from_parts(87_526_184, 0).saturating_mul(r.into())) + // Minimum execution time: 94_696_000 picoseconds. + Weight::from_parts(119_674_535, 0) + // Standard Error: 387_178 + .saturating_add(Weight::from_parts(98_102_856, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_message_id(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 85_991_000 picoseconds. - Weight::from_parts(83_685_254, 0) - // Standard Error: 318_877 - .saturating_add(Weight::from_parts(76_389_253, 0).saturating_mul(r.into())) + // Minimum execution time: 95_794_000 picoseconds. + Weight::from_parts(89_931_979, 0) + // Standard Error: 371_349 + .saturating_add(Weight::from_parts(86_524_059, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_program_id(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 85_968_000 picoseconds. - Weight::from_parts(82_459_314, 0) - // Standard Error: 319_709 - .saturating_add(Weight::from_parts(76_181_704, 0).saturating_mul(r.into())) + // Minimum execution time: 97_924_000 picoseconds. + Weight::from_parts(84_041_201, 0) + // Standard Error: 327_841 + .saturating_add(Weight::from_parts(95_483_315, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_source(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 81_819_000 picoseconds. - Weight::from_parts(72_371_983, 0) - // Standard Error: 300_686 - .saturating_add(Weight::from_parts(76_316_802, 0).saturating_mul(r.into())) + // Minimum execution time: 97_122_000 picoseconds. + Weight::from_parts(86_789_268, 0) + // Standard Error: 353_259 + .saturating_add(Weight::from_parts(85_698_317, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_value(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_717_000 picoseconds. - Weight::from_parts(76_355_783, 0) - // Standard Error: 285_260 - .saturating_add(Weight::from_parts(75_781_825, 0).saturating_mul(r.into())) + // Minimum execution time: 94_821_000 picoseconds. + Weight::from_parts(92_694_130, 0) + // Standard Error: 340_146 + .saturating_add(Weight::from_parts(84_623_945, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_value_available(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 86_121_000 picoseconds. - Weight::from_parts(80_173_266, 0) - // Standard Error: 370_111 - .saturating_add(Weight::from_parts(77_146_163, 0).saturating_mul(r.into())) + // Minimum execution time: 93_840_000 picoseconds. + Weight::from_parts(87_888_572, 0) + // Standard Error: 369_465 + .saturating_add(Weight::from_parts(85_638_902, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_gas_available(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 86_040_000 picoseconds. - Weight::from_parts(77_052_017, 0) - // Standard Error: 323_675 - .saturating_add(Weight::from_parts(75_764_467, 0).saturating_mul(r.into())) + // Minimum execution time: 98_597_000 picoseconds. + Weight::from_parts(86_642_386, 0) + // Standard Error: 362_257 + .saturating_add(Weight::from_parts(85_598_887, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_size(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 86_130_000 picoseconds. - Weight::from_parts(76_139_106, 0) - // Standard Error: 362_545 - .saturating_add(Weight::from_parts(80_573_769, 0).saturating_mul(r.into())) + // Minimum execution time: 94_546_000 picoseconds. + Weight::from_parts(91_466_289, 0) + // Standard Error: 344_423 + .saturating_add(Weight::from_parts(84_318_848, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_read(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 558_591_000 picoseconds. - Weight::from_parts(605_772_233, 0) - // Standard Error: 457_089 - .saturating_add(Weight::from_parts(135_861_811, 0).saturating_mul(r.into())) + // Minimum execution time: 578_036_000 picoseconds. + Weight::from_parts(696_140_951, 0) + // Standard Error: 559_498 + .saturating_add(Weight::from_parts(149_397_501, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_read_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 699_603_000 picoseconds. - Weight::from_parts(703_289_000, 0) - // Standard Error: 59_520 - .saturating_add(Weight::from_parts(12_949_265, 0).saturating_mul(n.into())) + // Minimum execution time: 723_788_000 picoseconds. + Weight::from_parts(740_225_000, 0) + // Standard Error: 52_895 + .saturating_add(Weight::from_parts(13_188_120, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_block_height(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 85_014_000 picoseconds. - Weight::from_parts(77_731_097, 0) - // Standard Error: 304_273 - .saturating_add(Weight::from_parts(75_976_070, 0).saturating_mul(r.into())) + // Minimum execution time: 99_012_000 picoseconds. + Weight::from_parts(88_269_135, 0) + // Standard Error: 296_136 + .saturating_add(Weight::from_parts(92_296_104, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_block_timestamp(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 86_408_000 picoseconds. - Weight::from_parts(73_174_939, 0) - // Standard Error: 383_139 - .saturating_add(Weight::from_parts(76_484_364, 0).saturating_mul(r.into())) + // Minimum execution time: 93_803_000 picoseconds. + Weight::from_parts(87_097_769, 0) + // Standard Error: 367_325 + .saturating_add(Weight::from_parts(84_987_043, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 20]`. fn gr_random(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 85_197_000 picoseconds. - Weight::from_parts(88_845_708, 0) - // Standard Error: 389_513 - .saturating_add(Weight::from_parts(171_448_634, 0).saturating_mul(n.into())) + // Minimum execution time: 96_663_000 picoseconds. + Weight::from_parts(105_357_427, 0) + // Standard Error: 366_135 + .saturating_add(Weight::from_parts(172_109_201, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_deposit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 86_264_000 picoseconds. - Weight::from_parts(88_018_000, 0) - // Standard Error: 4_124_330 - .saturating_add(Weight::from_parts(805_432_550, 0).saturating_mul(r.into())) + // Minimum execution time: 99_210_000 picoseconds. + Weight::from_parts(102_217_000, 0) + // Standard Error: 4_527_119 + .saturating_add(Weight::from_parts(845_784_967, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 82_295_000 picoseconds. - Weight::from_parts(140_527_286, 0) - // Standard Error: 405_229 - .saturating_add(Weight::from_parts(251_699_250, 0).saturating_mul(r.into())) + // Minimum execution time: 96_579_000 picoseconds. + Weight::from_parts(162_452_429, 0) + // Standard Error: 416_836 + .saturating_add(Weight::from_parts(257_900_517, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_send_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 327_394_000 picoseconds. - Weight::from_parts(330_315_000, 0) - // Standard Error: 62_193 - .saturating_add(Weight::from_parts(21_097_102, 0).saturating_mul(n.into())) + // Minimum execution time: 353_526_000 picoseconds. + Weight::from_parts(358_025_000, 0) + // Standard Error: 61_984 + .saturating_add(Weight::from_parts(21_521_461, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_900_000 picoseconds. - Weight::from_parts(158_459_938, 0) - // Standard Error: 440_264 - .saturating_add(Weight::from_parts(252_444_195, 0).saturating_mul(r.into())) + // Minimum execution time: 94_822_000 picoseconds. + Weight::from_parts(168_431_611, 0) + // Standard Error: 378_696 + .saturating_add(Weight::from_parts(263_135_958, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_send_wgas_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 337_208_000 picoseconds. - Weight::from_parts(341_169_000, 0) - // Standard Error: 59_076 - .saturating_add(Weight::from_parts(20_945_135, 0).saturating_mul(n.into())) + // Minimum execution time: 351_828_000 picoseconds. + Weight::from_parts(355_382_000, 0) + // Standard Error: 60_589 + .saturating_add(Weight::from_parts(21_325_400, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_input(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 556_175_000 picoseconds. - Weight::from_parts(627_050_994, 0) - // Standard Error: 426_100 - .saturating_add(Weight::from_parts(261_080_337, 0).saturating_mul(r.into())) + // Minimum execution time: 569_384_000 picoseconds. + Weight::from_parts(638_474_730, 0) + // Standard Error: 425_903 + .saturating_add(Weight::from_parts(275_691_711, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_input_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 557_564_000 picoseconds. - Weight::from_parts(641_256_689, 0) - // Standard Error: 460_579 - .saturating_add(Weight::from_parts(266_649_825, 0).saturating_mul(r.into())) + // Minimum execution time: 573_053_000 picoseconds. + Weight::from_parts(640_078_802, 0) + // Standard Error: 475_389 + .saturating_add(Weight::from_parts(284_337_155, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_init(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 82_507_000 picoseconds. - Weight::from_parts(67_761_917, 0) - // Standard Error: 379_455 - .saturating_add(Weight::from_parts(86_652_007, 0).saturating_mul(r.into())) + // Minimum execution time: 98_223_000 picoseconds. + Weight::from_parts(85_732_985, 0) + // Standard Error: 336_308 + .saturating_add(Weight::from_parts(92_936_006, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_push(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_683_177_000 picoseconds. - Weight::from_parts(1_794_013_374, 0) - // Standard Error: 387_018 - .saturating_add(Weight::from_parts(156_399_549, 0).saturating_mul(r.into())) + // Minimum execution time: 1_822_621_000 picoseconds. + Weight::from_parts(1_951_955_018, 0) + // Standard Error: 339_415 + .saturating_add(Weight::from_parts(157_557_756, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_send_push_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 288_797_000 picoseconds. - Weight::from_parts(293_289_000, 0) - // Standard Error: 63_168 - .saturating_add(Weight::from_parts(29_577_277, 0).saturating_mul(n.into())) + // Minimum execution time: 314_296_000 picoseconds. + Weight::from_parts(317_522_000, 0) + // Standard Error: 61_360 + .saturating_add(Weight::from_parts(29_499_741, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_commit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_691_333_000 picoseconds. - Weight::from_parts(1_801_253_735, 0) - // Standard Error: 474_792 - .saturating_add(Weight::from_parts(209_949_939, 0).saturating_mul(r.into())) + // Minimum execution time: 1_835_106_000 picoseconds. + Weight::from_parts(1_948_516_646, 0) + // Standard Error: 382_008 + .saturating_add(Weight::from_parts(214_812_508, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_commit_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_683_041_000 picoseconds. - Weight::from_parts(1_822_549_872, 0) - // Standard Error: 425_077 - .saturating_add(Weight::from_parts(211_798_367, 0).saturating_mul(r.into())) + // Minimum execution time: 1_827_496_000 picoseconds. + Weight::from_parts(1_949_190_773, 0) + // Standard Error: 340_175 + .saturating_add(Weight::from_parts(218_001_536, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reservation_send(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 247_656_000 picoseconds. - Weight::from_parts(317_794_229, 0) - // Standard Error: 388_223 - .saturating_add(Weight::from_parts(266_464_404, 0).saturating_mul(r.into())) + // Minimum execution time: 264_306_000 picoseconds. + Weight::from_parts(363_536_651, 0) + // Standard Error: 467_914 + .saturating_add(Weight::from_parts(265_564_072, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reservation_send_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 512_971_000 picoseconds. - Weight::from_parts(524_580_000, 0) - // Standard Error: 57_807 - .saturating_add(Weight::from_parts(21_296_153, 0).saturating_mul(n.into())) + // Minimum execution time: 523_150_000 picoseconds. + Weight::from_parts(535_842_000, 0) + // Standard Error: 65_412 + .saturating_add(Weight::from_parts(21_698_063, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reservation_send_commit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_827_786_000 picoseconds. - Weight::from_parts(1_938_199_639, 0) - // Standard Error: 481_292 - .saturating_add(Weight::from_parts(230_397_609, 0).saturating_mul(r.into())) + // Minimum execution time: 1_974_743_000 picoseconds. + Weight::from_parts(2_096_494_995, 0) + // Standard Error: 474_778 + .saturating_add(Weight::from_parts(232_524_299, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_205_000 picoseconds. - Weight::from_parts(87_841_924, 0) - // Standard Error: 284_081 - .saturating_add(Weight::from_parts(20_304_775, 0).saturating_mul(r.into())) + // Minimum execution time: 94_139_000 picoseconds. + Weight::from_parts(101_775_569, 0) + // Standard Error: 452_439 + .saturating_add(Weight::from_parts(16_839_430, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reply_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 103_357_000 picoseconds. - Weight::from_parts(89_286_787, 0) - // Standard Error: 1_068 - .saturating_add(Weight::from_parts(423_323, 0).saturating_mul(n.into())) + // Minimum execution time: 112_050_000 picoseconds. + Weight::from_parts(102_205_366, 0) + // Standard Error: 1_008 + .saturating_add(Weight::from_parts(431_304, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 82_492_000 picoseconds. - Weight::from_parts(86_217_226, 0) - // Standard Error: 241_578 - .saturating_add(Weight::from_parts(18_632_173, 0).saturating_mul(r.into())) + // Minimum execution time: 93_528_000 picoseconds. + Weight::from_parts(99_748_422, 0) + // Standard Error: 396_992 + .saturating_add(Weight::from_parts(20_536_877, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reply_wgas_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 101_997_000 picoseconds. - Weight::from_parts(93_566_446, 0) - // Standard Error: 1_152 - .saturating_add(Weight::from_parts(421_774, 0).saturating_mul(n.into())) + // Minimum execution time: 117_832_000 picoseconds. + Weight::from_parts(104_552_847, 0) + // Standard Error: 1_402 + .saturating_add(Weight::from_parts(432_018, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply_commit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 81_647_000 picoseconds. - Weight::from_parts(85_634_187, 0) - // Standard Error: 241_527 - .saturating_add(Weight::from_parts(16_147_912, 0).saturating_mul(r.into())) + // Minimum execution time: 93_325_000 picoseconds. + Weight::from_parts(101_074_097, 0) + // Standard Error: 454_790 + .saturating_add(Weight::from_parts(20_838_102, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply_commit_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 82_801_000 picoseconds. - Weight::from_parts(89_403_918, 0) - // Standard Error: 269_595 - .saturating_add(Weight::from_parts(13_226_181, 0).saturating_mul(r.into())) + // Minimum execution time: 93_800_000 picoseconds. + Weight::from_parts(102_249_326, 0) + // Standard Error: 463_488 + .saturating_add(Weight::from_parts(15_991_473, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_push(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_685_000 picoseconds. - Weight::from_parts(132_414_219, 0) - // Standard Error: 497_457 - .saturating_add(Weight::from_parts(145_777_097, 0).saturating_mul(r.into())) + // Minimum execution time: 93_153_000 picoseconds. + Weight::from_parts(121_452_989, 0) + // Standard Error: 390_540 + .saturating_add(Weight::from_parts(145_641_178, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 8192]`. fn gr_reply_push_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 97_574_000 picoseconds. - Weight::from_parts(100_165_000, 0) - // Standard Error: 2_652 - .saturating_add(Weight::from_parts(625_145, 0).saturating_mul(n.into())) + // Minimum execution time: 115_529_000 picoseconds. + Weight::from_parts(120_413_000, 0) + // Standard Error: 3_105 + .saturating_add(Weight::from_parts(640_863, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reply_input(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 553_039_000 picoseconds. - Weight::from_parts(596_067_157, 0) - // Standard Error: 7_999_654 - .saturating_add(Weight::from_parts(49_166_442, 0).saturating_mul(r.into())) + // Minimum execution time: 566_859_000 picoseconds. + Weight::from_parts(631_111_316, 0) + // Standard Error: 7_012_228 + .saturating_add(Weight::from_parts(21_896_983, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. - fn gr_reply_input_wgas(r: u32, ) -> Weight { + fn gr_reply_input_wgas(_r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 560_077_000 picoseconds. - Weight::from_parts(599_598_873, 0) - // Standard Error: 4_500_003 - .saturating_add(Weight::from_parts(54_967_826, 0).saturating_mul(r.into())) + // Minimum execution time: 565_382_000 picoseconds. + Weight::from_parts(613_048_008, 0) } /// The range of component `r` is `[0, 1]`. fn gr_reservation_reply(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 92_238_000 picoseconds. - Weight::from_parts(96_280_512, 0) - // Standard Error: 270_962 - .saturating_add(Weight::from_parts(10_382_887, 0).saturating_mul(r.into())) + // Minimum execution time: 104_401_000 picoseconds. + Weight::from_parts(112_651_320, 0) + // Standard Error: 438_590 + .saturating_add(Weight::from_parts(11_095_379, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reservation_reply_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 102_112_000 picoseconds. - Weight::from_parts(88_433_773, 0) - // Standard Error: 839 - .saturating_add(Weight::from_parts(426_982, 0).saturating_mul(n.into())) + // Minimum execution time: 115_615_000 picoseconds. + Weight::from_parts(112_987_750, 0) + // Standard Error: 960 + .saturating_add(Weight::from_parts(423_774, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 1]`. fn gr_reservation_reply_commit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 91_989_000 picoseconds. - Weight::from_parts(96_225_993, 0) - // Standard Error: 279_323 - .saturating_add(Weight::from_parts(12_960_106, 0).saturating_mul(r.into())) + // Minimum execution time: 105_056_000 picoseconds. + Weight::from_parts(113_735_922, 0) + // Standard Error: 466_586 + .saturating_add(Weight::from_parts(5_305_577, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reservation_reply_commit_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 101_178_000 picoseconds. - Weight::from_parts(90_738_187, 0) - // Standard Error: 1_202 - .saturating_add(Weight::from_parts(427_278, 0).saturating_mul(n.into())) + // Minimum execution time: 113_897_000 picoseconds. + Weight::from_parts(112_616_408, 0) + // Standard Error: 1_722 + .saturating_add(Weight::from_parts(428_420, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_to(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_732_000 picoseconds. - Weight::from_parts(75_405_776, 0) - // Standard Error: 330_490 - .saturating_add(Weight::from_parts(78_457_591, 0).saturating_mul(r.into())) + // Minimum execution time: 93_845_000 picoseconds. + Weight::from_parts(97_247_314, 0) + // Standard Error: 366_814 + .saturating_add(Weight::from_parts(85_900_587, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_signal_from(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_077_000 picoseconds. - Weight::from_parts(86_563_786, 0) - // Standard Error: 230_585 - .saturating_add(Weight::from_parts(75_198_113, 0).saturating_mul(r.into())) + // Minimum execution time: 93_761_000 picoseconds. + Weight::from_parts(92_637_129, 0) + // Standard Error: 309_799 + .saturating_add(Weight::from_parts(85_725_727, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_push_input(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 561_889_000 picoseconds. - Weight::from_parts(581_183_882, 0) - // Standard Error: 419_713 - .saturating_add(Weight::from_parts(98_014_698, 0).saturating_mul(r.into())) + // Minimum execution time: 565_388_000 picoseconds. + Weight::from_parts(606_358_854, 0) + // Standard Error: 430_766 + .saturating_add(Weight::from_parts(108_769_267, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_reply_push_input_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 573_200_000 picoseconds. - Weight::from_parts(600_501_979, 0) - // Standard Error: 2_551 - .saturating_add(Weight::from_parts(132_221, 0).saturating_mul(n.into())) + // Minimum execution time: 591_660_000 picoseconds. + Weight::from_parts(597_035_528, 0) + // Standard Error: 2_641 + .saturating_add(Weight::from_parts(153_781, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_send_push_input(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_189_491_000 picoseconds. - Weight::from_parts(2_303_909_860, 0) - // Standard Error: 546_745 - .saturating_add(Weight::from_parts(116_603_682, 0).saturating_mul(r.into())) + // Minimum execution time: 2_317_147_000 picoseconds. + Weight::from_parts(2_514_940_964, 0) + // Standard Error: 546_319 + .saturating_add(Weight::from_parts(128_825_542, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_send_push_input_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_276_723_000 picoseconds. - Weight::from_parts(2_217_739_410, 0) - // Standard Error: 14_370 - .saturating_add(Weight::from_parts(12_459_132, 0).saturating_mul(n.into())) + // Minimum execution time: 2_560_344_000 picoseconds. + Weight::from_parts(2_512_409_449, 0) + // Standard Error: 15_466 + .saturating_add(Weight::from_parts(12_395_144, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_debug(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_311_000 picoseconds. - Weight::from_parts(110_540_924, 0) - // Standard Error: 396_634 - .saturating_add(Weight::from_parts(112_631_557, 0).saturating_mul(r.into())) + // Minimum execution time: 97_996_000 picoseconds. + Weight::from_parts(130_630_238, 0) + // Standard Error: 414_418 + .saturating_add(Weight::from_parts(114_735_577, 0).saturating_mul(r.into())) } /// The range of component `n` is `[0, 2048]`. fn gr_debug_per_kb(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 147_382_000 picoseconds. - Weight::from_parts(148_605_000, 0) - // Standard Error: 51_888 - .saturating_add(Weight::from_parts(25_568_730, 0).saturating_mul(n.into())) + // Minimum execution time: 157_513_000 picoseconds. + Weight::from_parts(160_584_000, 0) + // Standard Error: 57_227 + .saturating_add(Weight::from_parts(25_738_939, 0).saturating_mul(n.into())) } /// The range of component `r` is `[0, 20]`. fn gr_reply_code(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 84_124_000 picoseconds. - Weight::from_parts(74_488_011, 0) - // Standard Error: 336_019 - .saturating_add(Weight::from_parts(76_615_014, 0).saturating_mul(r.into())) + // Minimum execution time: 92_652_000 picoseconds. + Weight::from_parts(88_138_429, 0) + // Standard Error: 330_537 + .saturating_add(Weight::from_parts(83_235_234, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_exit(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 83_719_000 picoseconds. - Weight::from_parts(89_610_961, 0) - // Standard Error: 278_492 - .saturating_add(Weight::from_parts(19_580_838, 0).saturating_mul(r.into())) + // Minimum execution time: 93_824_000 picoseconds. + Weight::from_parts(102_740_497, 0) + // Standard Error: 428_593 + .saturating_add(Weight::from_parts(23_682_102, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_leave(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 81_624_000 picoseconds. - Weight::from_parts(87_152_636, 0) - // Standard Error: 283_157 - .saturating_add(Weight::from_parts(13_618_763, 0).saturating_mul(r.into())) + // Minimum execution time: 92_530_000 picoseconds. + Weight::from_parts(101_410_861, 0) + // Standard Error: 432_236 + .saturating_add(Weight::from_parts(12_196_938, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_wait(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 81_833_000 picoseconds. - Weight::from_parts(85_635_155, 0) - // Standard Error: 260_060 - .saturating_add(Weight::from_parts(16_305_744, 0).saturating_mul(r.into())) + // Minimum execution time: 93_402_000 picoseconds. + Weight::from_parts(102_285_877, 0) + // Standard Error: 466_463 + .saturating_add(Weight::from_parts(13_156_522, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_wait_for(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 81_742_000 picoseconds. - Weight::from_parts(87_140_859, 0) - // Standard Error: 385_164 - .saturating_add(Weight::from_parts(11_568_440, 0).saturating_mul(r.into())) + // Minimum execution time: 95_706_000 picoseconds. + Weight::from_parts(102_513_059, 0) + // Standard Error: 464_787 + .saturating_add(Weight::from_parts(13_986_540, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 1]`. fn gr_wait_up_to(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 81_910_000 picoseconds. - Weight::from_parts(85_444_924, 0) - // Standard Error: 294_573 - .saturating_add(Weight::from_parts(16_073_775, 0).saturating_mul(r.into())) + // Minimum execution time: 93_057_000 picoseconds. + Weight::from_parts(99_083_869, 0) + // Standard Error: 378_747 + .saturating_add(Weight::from_parts(12_230_330, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_wake(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 137_851_000 picoseconds. - Weight::from_parts(184_343_853, 0) - // Standard Error: 304_576 - .saturating_add(Weight::from_parts(157_917_607, 0).saturating_mul(r.into())) + // Minimum execution time: 177_947_000 picoseconds. + Weight::from_parts(226_692_243, 0) + // Standard Error: 265_725 + .saturating_add(Weight::from_parts(156_938_838, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 20]`. fn gr_create_program(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 97_606_000 picoseconds. - Weight::from_parts(153_936_115, 0) - // Standard Error: 400_073 - .saturating_add(Weight::from_parts(335_598_380, 0).saturating_mul(r.into())) + // Minimum execution time: 107_346_000 picoseconds. + Weight::from_parts(160_631_540, 0) + // Standard Error: 352_753 + .saturating_add(Weight::from_parts(338_685_448, 0).saturating_mul(r.into())) } /// The range of component `p` is `[0, 2048]`. /// The range of component `s` is `[1, 2048]`. @@ -2904,22 +2898,22 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 42_747_420_000 picoseconds. - Weight::from_parts(42_968_891_000, 0) - // Standard Error: 252_454 - .saturating_add(Weight::from_parts(7_443_047, 0).saturating_mul(p.into())) - // Standard Error: 252_442 - .saturating_add(Weight::from_parts(177_458_321, 0).saturating_mul(s.into())) + // Minimum execution time: 44_754_074_000 picoseconds. + Weight::from_parts(44_833_050_000, 0) + // Standard Error: 269_308 + .saturating_add(Weight::from_parts(7_629_892, 0).saturating_mul(p.into())) + // Standard Error: 269_294 + .saturating_add(Weight::from_parts(179_148_245, 0).saturating_mul(s.into())) } /// The range of component `r` is `[0, 20]`. fn gr_create_program_wgas(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 94_879_000 picoseconds. - Weight::from_parts(157_991_694, 0) - // Standard Error: 362_276 - .saturating_add(Weight::from_parts(340_199_652, 0).saturating_mul(r.into())) + // Minimum execution time: 108_278_000 picoseconds. + Weight::from_parts(161_208_126, 0) + // Standard Error: 368_644 + .saturating_add(Weight::from_parts(346_324_329, 0).saturating_mul(r.into())) } /// The range of component `p` is `[0, 2048]`. /// The range of component `s` is `[1, 2048]`. @@ -2927,32 +2921,32 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 45_940_234_000 picoseconds. - Weight::from_parts(45_999_634_000, 0) - // Standard Error: 269_136 - .saturating_add(Weight::from_parts(7_028_589, 0).saturating_mul(p.into())) - // Standard Error: 269_123 - .saturating_add(Weight::from_parts(176_610_610, 0).saturating_mul(s.into())) + // Minimum execution time: 44_266_209_000 picoseconds. + Weight::from_parts(44_559_345_000, 0) + // Standard Error: 270_420 + .saturating_add(Weight::from_parts(7_460_172, 0).saturating_mul(p.into())) + // Standard Error: 270_407 + .saturating_add(Weight::from_parts(179_211_260, 0).saturating_mul(s.into())) } /// The range of component `r` is `[0, 20]`. fn gr_pay_program_rent(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 86_303_000 picoseconds. - Weight::from_parts(100_845_158, 0) - // Standard Error: 28_180 - .saturating_add(Weight::from_parts(1_828_410, 0).saturating_mul(r.into())) + // Minimum execution time: 94_889_000 picoseconds. + Weight::from_parts(115_310_524, 0) + // Standard Error: 34_049 + .saturating_add(Weight::from_parts(1_916_607, 0).saturating_mul(r.into())) } /// The range of component `p` is `[0, 512]`. fn lazy_pages_signal_read(p: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `141` // Estimated: `1131 + p * (9900 ±0)` - // Minimum execution time: 86_742_000 picoseconds. - Weight::from_parts(110_790_993, 1131) - // Standard Error: 6_233 - .saturating_add(Weight::from_parts(11_802_147, 0).saturating_mul(p.into())) + // Minimum execution time: 97_825_000 picoseconds. + Weight::from_parts(251_440_245, 1131) + // Standard Error: 70_641 + .saturating_add(Weight::from_parts(15_652_952, 0).saturating_mul(p.into())) .saturating_add(RocksDbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 9900).saturating_mul(p.into())) } @@ -2961,10 +2955,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `141` // Estimated: `1131 + p * (9900 ±0)` - // Minimum execution time: 83_916_000 picoseconds. - Weight::from_parts(85_870_000, 1131) - // Standard Error: 27_705 - .saturating_add(Weight::from_parts(35_450_394, 0).saturating_mul(p.into())) + // Minimum execution time: 96_761_000 picoseconds. + Weight::from_parts(100_398_000, 1131) + // Standard Error: 45_532 + .saturating_add(Weight::from_parts(39_790_625, 0).saturating_mul(p.into())) .saturating_add(RocksDbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 9900).saturating_mul(p.into())) } @@ -2973,10 +2967,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `141` // Estimated: `5069931` - // Minimum execution time: 6_097_917_000 picoseconds. - Weight::from_parts(5_604_890_798, 5069931) - // Standard Error: 98_374 - .saturating_add(Weight::from_parts(36_989_630, 0).saturating_mul(p.into())) + // Minimum execution time: 7_471_807_000 picoseconds. + Weight::from_parts(7_440_591_962, 5069931) + // Standard Error: 168_373 + .saturating_add(Weight::from_parts(40_244_359, 0).saturating_mul(p.into())) .saturating_add(RocksDbWeight::get().reads(2048_u64)) } /// The range of component `p` is `[0, 512]`. @@ -2984,10 +2978,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `1813 + p * (65580 ±0)` // Estimated: `1939 + p * (75482 ±0)` - // Minimum execution time: 82_707_000 picoseconds. - Weight::from_parts(84_791_000, 1939) - // Standard Error: 37_959 - .saturating_add(Weight::from_parts(47_195_271, 0).saturating_mul(p.into())) + // Minimum execution time: 97_303_000 picoseconds. + Weight::from_parts(98_185_000, 1939) + // Standard Error: 38_471 + .saturating_add(Weight::from_parts(55_016_921, 0).saturating_mul(p.into())) .saturating_add(RocksDbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 75482).saturating_mul(p.into())) } @@ -2996,10 +2990,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `141` // Estimated: `1131 + p * (9900 ±0)` - // Minimum execution time: 89_993_000 picoseconds. - Weight::from_parts(89_503_538, 1131) - // Standard Error: 59_714 - .saturating_add(Weight::from_parts(36_297_330, 0).saturating_mul(p.into())) + // Minimum execution time: 102_497_000 picoseconds. + Weight::from_parts(104_932_685, 1131) + // Standard Error: 78_974 + .saturating_add(Weight::from_parts(39_257_150, 0).saturating_mul(p.into())) .saturating_add(RocksDbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 9900).saturating_mul(p.into())) } @@ -3008,10 +3002,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `141` // Estimated: `1496 + p * (9883 ±2)` - // Minimum execution time: 592_496_000 picoseconds. - Weight::from_parts(565_533_871, 1496) - // Standard Error: 314_500 - .saturating_add(Weight::from_parts(55_506_484, 0).saturating_mul(p.into())) + // Minimum execution time: 612_308_000 picoseconds. + Weight::from_parts(642_079_999, 1496) + // Standard Error: 357_245 + .saturating_add(Weight::from_parts(46_518_860, 0).saturating_mul(p.into())) .saturating_add(RocksDbWeight::get().reads((4_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 9883).saturating_mul(p.into())) } @@ -3020,10 +3014,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `141` // Estimated: `317931` - // Minimum execution time: 993_621_000 picoseconds. - Weight::from_parts(1_012_993_434, 317931) - // Standard Error: 387_880 - .saturating_add(Weight::from_parts(53_105_611, 0).saturating_mul(p.into())) + // Minimum execution time: 1_068_248_000 picoseconds. + Weight::from_parts(1_080_741_205, 317931) + // Standard Error: 262_216 + .saturating_add(Weight::from_parts(50_047_907, 0).saturating_mul(p.into())) .saturating_add(RocksDbWeight::get().reads(128_u64)) } /// The range of component `r` is `[0, 20]`. @@ -3031,884 +3025,882 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_180_000 picoseconds. - Weight::from_parts(2_367_513, 0) - // Standard Error: 8_775 - .saturating_add(Weight::from_parts(24_100_608, 0).saturating_mul(r.into())) + // Minimum execution time: 3_099_000 picoseconds. + Weight::from_parts(6_340_084, 0) + // Standard Error: 180_257 + .saturating_add(Weight::from_parts(74_666_091, 0).saturating_mul(r.into())) } /// The range of component `r` is `[50, 500]`. fn instr_i64load(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 4_344_543_000 picoseconds. - Weight::from_parts(4_032_382_572, 0) - // Standard Error: 99_537 - .saturating_add(Weight::from_parts(5_787_910, 0).saturating_mul(r.into())) + // Minimum execution time: 4_391_547_000 picoseconds. + Weight::from_parts(4_140_785_425, 0) + // Standard Error: 89_369 + .saturating_add(Weight::from_parts(5_769_622, 0).saturating_mul(r.into())) } /// The range of component `r` is `[50, 500]`. fn instr_i32load(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 4_337_766_000 picoseconds. - Weight::from_parts(3_999_679_120, 0) - // Standard Error: 103_253 - .saturating_add(Weight::from_parts(5_927_871, 0).saturating_mul(r.into())) + // Minimum execution time: 4_386_802_000 picoseconds. + Weight::from_parts(4_243_536_456, 0) + // Standard Error: 95_210 + .saturating_add(Weight::from_parts(5_278_131, 0).saturating_mul(r.into())) } /// The range of component `r` is `[50, 500]`. fn instr_i64store(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 10_550_469_000 picoseconds. - Weight::from_parts(11_379_288_782, 0) - // Standard Error: 199_762 - .saturating_add(Weight::from_parts(12_085_908, 0).saturating_mul(r.into())) + // Minimum execution time: 11_072_272_000 picoseconds. + Weight::from_parts(11_558_306_225, 0) + // Standard Error: 165_659 + .saturating_add(Weight::from_parts(9_828_260, 0).saturating_mul(r.into())) } /// The range of component `r` is `[50, 500]`. fn instr_i32store(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 10_371_806_000 picoseconds. - Weight::from_parts(11_315_025_252, 0) - // Standard Error: 196_400 - .saturating_add(Weight::from_parts(9_868_462, 0).saturating_mul(r.into())) + // Minimum execution time: 10_285_071_000 picoseconds. + Weight::from_parts(11_137_621_942, 0) + // Standard Error: 147_513 + .saturating_add(Weight::from_parts(9_014_757, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_select(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_296_000 picoseconds. - Weight::from_parts(2_387_000, 0) - // Standard Error: 8_522 - .saturating_add(Weight::from_parts(3_812_287, 0).saturating_mul(r.into())) + // Minimum execution time: 2_285_000 picoseconds. + Weight::from_parts(2_410_000, 0) + // Standard Error: 7_624 + .saturating_add(Weight::from_parts(3_864_490, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_if(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_250_000 picoseconds. - Weight::from_parts(2_293_000, 0) - // Standard Error: 5_596 - .saturating_add(Weight::from_parts(3_015_385, 0).saturating_mul(r.into())) + // Minimum execution time: 2_342_000 picoseconds. + Weight::from_parts(2_433_000, 0) + // Standard Error: 6_413 + .saturating_add(Weight::from_parts(3_120_732, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_br(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_236_000 picoseconds. - Weight::from_parts(3_286_665, 0) - // Standard Error: 1_124 - .saturating_add(Weight::from_parts(1_572_972, 0).saturating_mul(r.into())) + // Minimum execution time: 2_301_000 picoseconds. + Weight::from_parts(3_591_730, 0) + // Standard Error: 1_106 + .saturating_add(Weight::from_parts(1_565_415, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_br_if(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_223_000 picoseconds. - Weight::from_parts(2_286_000, 0) - // Standard Error: 8_691 - .saturating_add(Weight::from_parts(2_934_320, 0).saturating_mul(r.into())) + // Minimum execution time: 2_306_000 picoseconds. + Weight::from_parts(2_461_000, 0) + // Standard Error: 7_711 + .saturating_add(Weight::from_parts(2_932_880, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_br_table(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_230_000 picoseconds. - Weight::from_parts(1_393_237, 0) - // Standard Error: 11_704 - .saturating_add(Weight::from_parts(5_179_849, 0).saturating_mul(r.into())) + // Minimum execution time: 2_358_000 picoseconds. + Weight::from_parts(2_144_801, 0) + // Standard Error: 22_082 + .saturating_add(Weight::from_parts(5_266_139, 0).saturating_mul(r.into())) } /// The range of component `e` is `[1, 256]`. fn instr_br_table_per_entry(e: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 7_013_000 picoseconds. - Weight::from_parts(5_664_804, 0) - // Standard Error: 2_473 - .saturating_add(Weight::from_parts(127_877, 0).saturating_mul(e.into())) + // Minimum execution time: 6_803_000 picoseconds. + Weight::from_parts(5_374_690, 0) + // Standard Error: 1_699 + .saturating_add(Weight::from_parts(171_193, 0).saturating_mul(e.into())) } /// The range of component `r` is `[0, 50]`. fn instr_call_const(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_351_000 picoseconds. - Weight::from_parts(4_248_352, 0) - // Standard Error: 5_303 - .saturating_add(Weight::from_parts(2_564_771, 0).saturating_mul(r.into())) + // Minimum execution time: 2_431_000 picoseconds. + Weight::from_parts(4_875_813, 0) + // Standard Error: 8_258 + .saturating_add(Weight::from_parts(2_629_733, 0).saturating_mul(r.into())) } fn instr_i64const(r: u32, ) -> Weight { Weight::from_parts(0, 0) - .saturating_add(Weight::from_parts(2_564_771 - - 2_417_980, 0).saturating_mul(r.into())) + .saturating_add(Weight::from_parts(2_629_733 - + 2_421_700, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_call(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_275_000 picoseconds. - Weight::from_parts(4_116_849, 0) - // Standard Error: 12_318 - .saturating_add(Weight::from_parts(2_417_980, 0).saturating_mul(r.into())) + // Minimum execution time: 2_403_000 picoseconds. + Weight::from_parts(5_140_243, 0) + // Standard Error: 13_164 + .saturating_add(Weight::from_parts(2_421_700, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_call_indirect(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_739_000 picoseconds. - Weight::from_parts(8_247_555, 0) - // Standard Error: 21_570 - .saturating_add(Weight::from_parts(10_290_172, 0).saturating_mul(r.into())) + // Minimum execution time: 2_669_000 picoseconds. + Weight::from_parts(22_369_265, 0) + // Standard Error: 28_577 + .saturating_add(Weight::from_parts(9_740_558, 0).saturating_mul(r.into())) } /// The range of component `p` is `[0, 128]`. fn instr_call_indirect_per_param(p: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 11_969_000 picoseconds. - Weight::from_parts(462_240, 0) - // Standard Error: 7_690 - .saturating_add(Weight::from_parts(1_320_559, 0).saturating_mul(p.into())) + // Minimum execution time: 12_277_000 picoseconds. + Weight::from_parts(3_596_853, 0) + // Standard Error: 5_869 + .saturating_add(Weight::from_parts(1_258_605, 0).saturating_mul(p.into())) } /// The range of component `l` is `[0, 1024]`. - fn instr_call_per_local(l: u32, ) -> Weight { + fn instr_call_per_local(_l: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 5_385_000 picoseconds. - Weight::from_parts(5_731_863, 0) - // Standard Error: 14 - .saturating_add(Weight::from_parts(7, 0).saturating_mul(l.into())) + // Minimum execution time: 5_391_000 picoseconds. + Weight::from_parts(5_778_137, 0) } /// The range of component `r` is `[0, 50]`. fn instr_local_get(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_267_000 picoseconds. - Weight::from_parts(1_509_226, 0) - // Standard Error: 3_855 - .saturating_add(Weight::from_parts(289_461, 0).saturating_mul(r.into())) + // Minimum execution time: 4_835_000 picoseconds. + Weight::from_parts(6_065_483, 0) + // Standard Error: 3_006 + .saturating_add(Weight::from_parts(378_512, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_local_set(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_290_000 picoseconds. - Weight::from_parts(2_403_000, 0) - // Standard Error: 6_135 - .saturating_add(Weight::from_parts(808_043, 0).saturating_mul(r.into())) + // Minimum execution time: 4_722_000 picoseconds. + Weight::from_parts(3_902_309, 0) + // Standard Error: 5_742 + .saturating_add(Weight::from_parts(1_056_408, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_local_tee(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_206_000 picoseconds. - Weight::from_parts(2_259_000, 0) - // Standard Error: 6_737 - .saturating_add(Weight::from_parts(815_196, 0).saturating_mul(r.into())) + // Minimum execution time: 4_888_000 picoseconds. + Weight::from_parts(4_512_058, 0) + // Standard Error: 6_410 + .saturating_add(Weight::from_parts(1_001_510, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_global_get(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_514_000 picoseconds. - Weight::from_parts(2_989_795, 0) - // Standard Error: 8_020 - .saturating_add(Weight::from_parts(785_708, 0).saturating_mul(r.into())) + // Minimum execution time: 6_413_000 picoseconds. + Weight::from_parts(2_704_134, 0) + // Standard Error: 7_244 + .saturating_add(Weight::from_parts(804_200, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_global_set(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_390_000 picoseconds. - Weight::from_parts(6_462_000, 0) - // Standard Error: 8_592 - .saturating_add(Weight::from_parts(1_340_863, 0).saturating_mul(r.into())) + // Minimum execution time: 6_516_000 picoseconds. + Weight::from_parts(1_028_752, 0) + // Standard Error: 8_792 + .saturating_add(Weight::from_parts(1_494_630, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_memory_current(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 4_894_000 picoseconds. - Weight::from_parts(1_962_792, 0) - // Standard Error: 10_808 - .saturating_add(Weight::from_parts(6_909_000, 0).saturating_mul(r.into())) + // Minimum execution time: 5_560_000 picoseconds. + Weight::from_parts(1_126_442, 0) + // Standard Error: 14_476 + .saturating_add(Weight::from_parts(7_240_597, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64clz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_282_000 picoseconds. - Weight::from_parts(2_309_000, 0) - // Standard Error: 9_270 - .saturating_add(Weight::from_parts(3_370_154, 0).saturating_mul(r.into())) + // Minimum execution time: 2_299_000 picoseconds. + Weight::from_parts(2_449_000, 0) + // Standard Error: 7_416 + .saturating_add(Weight::from_parts(3_344_387, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32clz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_214_000 picoseconds. - Weight::from_parts(2_328_000, 0) - // Standard Error: 6_565 - .saturating_add(Weight::from_parts(3_096_942, 0).saturating_mul(r.into())) + // Minimum execution time: 2_389_000 picoseconds. + Weight::from_parts(2_551_000, 0) + // Standard Error: 5_708 + .saturating_add(Weight::from_parts(3_133_430, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64ctz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_301_000 picoseconds. - Weight::from_parts(2_341_000, 0) - // Standard Error: 5_842 - .saturating_add(Weight::from_parts(3_131_625, 0).saturating_mul(r.into())) + // Minimum execution time: 2_428_000 picoseconds. + Weight::from_parts(2_511_000, 0) + // Standard Error: 7_262 + .saturating_add(Weight::from_parts(3_192_675, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32ctz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_290_000 picoseconds. - Weight::from_parts(2_341_000, 0) - // Standard Error: 5_456 - .saturating_add(Weight::from_parts(2_643_149, 0).saturating_mul(r.into())) + // Minimum execution time: 2_333_000 picoseconds. + Weight::from_parts(2_426_000, 0) + // Standard Error: 4_554 + .saturating_add(Weight::from_parts(2_683_293, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64popcnt(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_207_000 picoseconds. - Weight::from_parts(2_259_000, 0) - // Standard Error: 4_151 - .saturating_add(Weight::from_parts(559_292, 0).saturating_mul(r.into())) + // Minimum execution time: 2_334_000 picoseconds. + Weight::from_parts(2_385_000, 0) + // Standard Error: 4_686 + .saturating_add(Weight::from_parts(631_609, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32popcnt(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_282_000 picoseconds. - Weight::from_parts(1_656_873, 0) - // Standard Error: 3_537 - .saturating_add(Weight::from_parts(394_264, 0).saturating_mul(r.into())) + // Minimum execution time: 2_356_000 picoseconds. + Weight::from_parts(1_221_890, 0) + // Standard Error: 3_960 + .saturating_add(Weight::from_parts(452_047, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64eqz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_193_000 picoseconds. - Weight::from_parts(2_300_000, 0) - // Standard Error: 13_227 - .saturating_add(Weight::from_parts(1_891_285, 0).saturating_mul(r.into())) + // Minimum execution time: 2_318_000 picoseconds. + Weight::from_parts(2_390_000, 0) + // Standard Error: 11_114 + .saturating_add(Weight::from_parts(1_916_122, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32eqz(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_197_000 picoseconds. - Weight::from_parts(2_297_000, 0) - // Standard Error: 9_416 - .saturating_add(Weight::from_parts(1_195_412, 0).saturating_mul(r.into())) + // Minimum execution time: 2_436_000 picoseconds. + Weight::from_parts(2_504_000, 0) + // Standard Error: 7_104 + .saturating_add(Weight::from_parts(1_156_958, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32extend8s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_254_000 picoseconds. - Weight::from_parts(1_244_456, 0) - // Standard Error: 3_993 - .saturating_add(Weight::from_parts(393_631, 0).saturating_mul(r.into())) + // Minimum execution time: 2_276_000 picoseconds. + Weight::from_parts(1_708_596, 0) + // Standard Error: 2_843 + .saturating_add(Weight::from_parts(377_083, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32extend16s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_245_000 picoseconds. - Weight::from_parts(1_710_108, 0) - // Standard Error: 3_705 - .saturating_add(Weight::from_parts(357_471, 0).saturating_mul(r.into())) + // Minimum execution time: 2_386_000 picoseconds. + Weight::from_parts(1_424_415, 0) + // Standard Error: 3_599 + .saturating_add(Weight::from_parts(395_934, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extend8s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_300_000 picoseconds. - Weight::from_parts(2_350_000, 0) - // Standard Error: 4_034 - .saturating_add(Weight::from_parts(496_786, 0).saturating_mul(r.into())) + // Minimum execution time: 2_396_000 picoseconds. + Weight::from_parts(2_491_000, 0) + // Standard Error: 3_774 + .saturating_add(Weight::from_parts(516_281, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extend16s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_251_000 picoseconds. - Weight::from_parts(143_742, 0) - // Standard Error: 5_409 - .saturating_add(Weight::from_parts(551_665, 0).saturating_mul(r.into())) + // Minimum execution time: 2_308_000 picoseconds. + Weight::from_parts(548_192, 0) + // Standard Error: 4_583 + .saturating_add(Weight::from_parts(556_734, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extend32s(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_250_000 picoseconds. - Weight::from_parts(210_302, 0) - // Standard Error: 5_693 - .saturating_add(Weight::from_parts(526_432, 0).saturating_mul(r.into())) + // Minimum execution time: 2_333_000 picoseconds. + Weight::from_parts(447_271, 0) + // Standard Error: 5_300 + .saturating_add(Weight::from_parts(535_915, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extendsi32(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_246_000 picoseconds. - Weight::from_parts(1_582_329, 0) - // Standard Error: 3_448 - .saturating_add(Weight::from_parts(348_194, 0).saturating_mul(r.into())) + // Minimum execution time: 2_340_000 picoseconds. + Weight::from_parts(1_639_695, 0) + // Standard Error: 3_519 + .saturating_add(Weight::from_parts(368_523, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64extendui32(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_350_000 picoseconds. - Weight::from_parts(2_836_265, 0) - // Standard Error: 1_916 - .saturating_add(Weight::from_parts(158_153, 0).saturating_mul(r.into())) + // Minimum execution time: 2_305_000 picoseconds. + Weight::from_parts(2_843_474, 0) + // Standard Error: 1_950 + .saturating_add(Weight::from_parts(176_592, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32wrapi64(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_230_000 picoseconds. - Weight::from_parts(2_997_599, 0) - // Standard Error: 1_870 - .saturating_add(Weight::from_parts(155_117, 0).saturating_mul(r.into())) + // Minimum execution time: 2_351_000 picoseconds. + Weight::from_parts(2_894_613, 0) + // Standard Error: 2_024 + .saturating_add(Weight::from_parts(188_853, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64eq(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_267_000 picoseconds. - Weight::from_parts(2_344_000, 0) - // Standard Error: 11_719 - .saturating_add(Weight::from_parts(1_911_693, 0).saturating_mul(r.into())) + // Minimum execution time: 2_353_000 picoseconds. + Weight::from_parts(2_418_000, 0) + // Standard Error: 9_504 + .saturating_add(Weight::from_parts(1_936_605, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32eq(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_259_000 picoseconds. - Weight::from_parts(2_323_000, 0) - // Standard Error: 7_734 - .saturating_add(Weight::from_parts(1_135_022, 0).saturating_mul(r.into())) + // Minimum execution time: 2_291_000 picoseconds. + Weight::from_parts(2_364_000, 0) + // Standard Error: 8_346 + .saturating_add(Weight::from_parts(1_222_521, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64ne(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_189_000 picoseconds. - Weight::from_parts(2_254_000, 0) - // Standard Error: 13_208 - .saturating_add(Weight::from_parts(1_839_828, 0).saturating_mul(r.into())) + // Minimum execution time: 2_345_000 picoseconds. + Weight::from_parts(2_452_000, 0) + // Standard Error: 10_232 + .saturating_add(Weight::from_parts(1_883_867, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32ne(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_218_000 picoseconds. - Weight::from_parts(2_306_000, 0) - // Standard Error: 7_621 - .saturating_add(Weight::from_parts(1_164_880, 0).saturating_mul(r.into())) + // Minimum execution time: 2_323_000 picoseconds. + Weight::from_parts(2_387_000, 0) + // Standard Error: 7_581 + .saturating_add(Weight::from_parts(1_200_178, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64lts(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_238_000 picoseconds. - Weight::from_parts(2_291_000, 0) - // Standard Error: 10_468 - .saturating_add(Weight::from_parts(1_846_638, 0).saturating_mul(r.into())) + // Minimum execution time: 2_410_000 picoseconds. + Weight::from_parts(2_459_000, 0) + // Standard Error: 11_139 + .saturating_add(Weight::from_parts(1_877_766, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32lts(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_240_000 picoseconds. - Weight::from_parts(2_308_000, 0) - // Standard Error: 7_502 - .saturating_add(Weight::from_parts(1_112_456, 0).saturating_mul(r.into())) + // Minimum execution time: 2_273_000 picoseconds. + Weight::from_parts(2_387_000, 0) + // Standard Error: 8_083 + .saturating_add(Weight::from_parts(1_217_904, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64ltu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_192_000 picoseconds. - Weight::from_parts(2_283_000, 0) - // Standard Error: 12_282 - .saturating_add(Weight::from_parts(1_806_513, 0).saturating_mul(r.into())) + // Minimum execution time: 2_403_000 picoseconds. + Weight::from_parts(2_482_000, 0) + // Standard Error: 11_044 + .saturating_add(Weight::from_parts(1_956_302, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32ltu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_250_000 picoseconds. - Weight::from_parts(2_310_000, 0) - // Standard Error: 8_080 - .saturating_add(Weight::from_parts(1_114_020, 0).saturating_mul(r.into())) + // Minimum execution time: 2_353_000 picoseconds. + Weight::from_parts(2_420_000, 0) + // Standard Error: 7_870 + .saturating_add(Weight::from_parts(1_213_570, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64gts(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_270_000 picoseconds. - Weight::from_parts(2_319_000, 0) - // Standard Error: 11_947 - .saturating_add(Weight::from_parts(1_858_303, 0).saturating_mul(r.into())) + // Minimum execution time: 2_364_000 picoseconds. + Weight::from_parts(2_430_000, 0) + // Standard Error: 10_577 + .saturating_add(Weight::from_parts(1_968_043, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32gts(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_204_000 picoseconds. - Weight::from_parts(2_322_000, 0) - // Standard Error: 9_452 - .saturating_add(Weight::from_parts(1_236_546, 0).saturating_mul(r.into())) + // Minimum execution time: 2_328_000 picoseconds. + Weight::from_parts(2_442_000, 0) + // Standard Error: 7_838 + .saturating_add(Weight::from_parts(1_267_211, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64gtu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_222_000 picoseconds. - Weight::from_parts(2_289_000, 0) - // Standard Error: 9_388 - .saturating_add(Weight::from_parts(1_920_612, 0).saturating_mul(r.into())) + // Minimum execution time: 2_395_000 picoseconds. + Weight::from_parts(2_460_000, 0) + // Standard Error: 10_856 + .saturating_add(Weight::from_parts(1_910_357, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32gtu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_267_000 picoseconds. - Weight::from_parts(2_316_000, 0) - // Standard Error: 7_906 - .saturating_add(Weight::from_parts(1_147_958, 0).saturating_mul(r.into())) + // Minimum execution time: 2_343_000 picoseconds. + Weight::from_parts(2_409_000, 0) + // Standard Error: 5_786 + .saturating_add(Weight::from_parts(1_128_653, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64les(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_233_000 picoseconds. - Weight::from_parts(2_278_000, 0) - // Standard Error: 14_090 - .saturating_add(Weight::from_parts(1_923_509, 0).saturating_mul(r.into())) + // Minimum execution time: 2_318_000 picoseconds. + Weight::from_parts(2_433_000, 0) + // Standard Error: 10_344 + .saturating_add(Weight::from_parts(1_897_480, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32les(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_216_000 picoseconds. - Weight::from_parts(2_271_000, 0) - // Standard Error: 9_629 - .saturating_add(Weight::from_parts(1_197_507, 0).saturating_mul(r.into())) + // Minimum execution time: 2_355_000 picoseconds. + Weight::from_parts(2_460_000, 0) + // Standard Error: 6_963 + .saturating_add(Weight::from_parts(1_125_698, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64leu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_268_000 picoseconds. - Weight::from_parts(2_341_000, 0) - // Standard Error: 10_951 - .saturating_add(Weight::from_parts(1_915_569, 0).saturating_mul(r.into())) + // Minimum execution time: 2_356_000 picoseconds. + Weight::from_parts(2_447_000, 0) + // Standard Error: 8_285 + .saturating_add(Weight::from_parts(1_848_149, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32leu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_218_000 picoseconds. - Weight::from_parts(2_276_000, 0) - // Standard Error: 8_283 - .saturating_add(Weight::from_parts(1_212_268, 0).saturating_mul(r.into())) + // Minimum execution time: 2_327_000 picoseconds. + Weight::from_parts(2_394_000, 0) + // Standard Error: 7_282 + .saturating_add(Weight::from_parts(1_176_423, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64ges(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_221_000 picoseconds. - Weight::from_parts(2_283_000, 0) - // Standard Error: 11_398 - .saturating_add(Weight::from_parts(1_932_092, 0).saturating_mul(r.into())) + // Minimum execution time: 2_372_000 picoseconds. + Weight::from_parts(2_439_000, 0) + // Standard Error: 9_207 + .saturating_add(Weight::from_parts(1_837_009, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32ges(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_278_000 picoseconds. - Weight::from_parts(2_324_000, 0) - // Standard Error: 8_582 - .saturating_add(Weight::from_parts(1_170_243, 0).saturating_mul(r.into())) + // Minimum execution time: 2_368_000 picoseconds. + Weight::from_parts(2_427_000, 0) + // Standard Error: 8_320 + .saturating_add(Weight::from_parts(1_231_088, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64geu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_216_000 picoseconds. - Weight::from_parts(2_294_000, 0) - // Standard Error: 13_115 - .saturating_add(Weight::from_parts(1_902_257, 0).saturating_mul(r.into())) + // Minimum execution time: 2_373_000 picoseconds. + Weight::from_parts(2_461_000, 0) + // Standard Error: 9_499 + .saturating_add(Weight::from_parts(1_922_588, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32geu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_277_000 picoseconds. - Weight::from_parts(2_358_000, 0) - // Standard Error: 9_006 - .saturating_add(Weight::from_parts(1_220_902, 0).saturating_mul(r.into())) + // Minimum execution time: 2_387_000 picoseconds. + Weight::from_parts(2_455_000, 0) + // Standard Error: 7_681 + .saturating_add(Weight::from_parts(1_198_894, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64add(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_255_000 picoseconds. - Weight::from_parts(2_316_000, 0) - // Standard Error: 8_357 - .saturating_add(Weight::from_parts(1_302_969, 0).saturating_mul(r.into())) + // Minimum execution time: 2_308_000 picoseconds. + Weight::from_parts(2_389_000, 0) + // Standard Error: 7_797 + .saturating_add(Weight::from_parts(1_286_566, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32add(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_227_000 picoseconds. - Weight::from_parts(2_275_000, 0) - // Standard Error: 5_837 - .saturating_add(Weight::from_parts(637_533, 0).saturating_mul(r.into())) + // Minimum execution time: 2_329_000 picoseconds. + Weight::from_parts(2_389_000, 0) + // Standard Error: 4_968 + .saturating_add(Weight::from_parts(645_254, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64sub(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_182_000 picoseconds. - Weight::from_parts(2_253_000, 0) - // Standard Error: 7_474 - .saturating_add(Weight::from_parts(1_274_444, 0).saturating_mul(r.into())) + // Minimum execution time: 2_409_000 picoseconds. + Weight::from_parts(2_489_000, 0) + // Standard Error: 7_055 + .saturating_add(Weight::from_parts(1_232_084, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32sub(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_268_000 picoseconds. - Weight::from_parts(2_314_000, 0) - // Standard Error: 4_787 - .saturating_add(Weight::from_parts(598_295, 0).saturating_mul(r.into())) + // Minimum execution time: 2_371_000 picoseconds. + Weight::from_parts(2_420_000, 0) + // Standard Error: 4_348 + .saturating_add(Weight::from_parts(633_810, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64mul(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_184_000 picoseconds. - Weight::from_parts(2_286_000, 0) - // Standard Error: 13_111 - .saturating_add(Weight::from_parts(1_764_139, 0).saturating_mul(r.into())) + // Minimum execution time: 2_336_000 picoseconds. + Weight::from_parts(2_413_000, 0) + // Standard Error: 8_202 + .saturating_add(Weight::from_parts(1_777_425, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32mul(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_247_000 picoseconds. - Weight::from_parts(2_344_000, 0) - // Standard Error: 8_531 - .saturating_add(Weight::from_parts(1_233_195, 0).saturating_mul(r.into())) + // Minimum execution time: 2_314_000 picoseconds. + Weight::from_parts(2_369_000, 0) + // Standard Error: 6_935 + .saturating_add(Weight::from_parts(1_201_570, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64divs(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_215_000 picoseconds. - Weight::from_parts(2_308_000, 0) - // Standard Error: 8_554 - .saturating_add(Weight::from_parts(2_787_034, 0).saturating_mul(r.into())) + // Minimum execution time: 2_276_000 picoseconds. + Weight::from_parts(6_846_840, 0) + // Standard Error: 17_822 + .saturating_add(Weight::from_parts(2_268_370, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32divs(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_285_000 picoseconds. - Weight::from_parts(2_336_000, 0) - // Standard Error: 8_016 - .saturating_add(Weight::from_parts(2_444_420, 0).saturating_mul(r.into())) + // Minimum execution time: 2_394_000 picoseconds. + Weight::from_parts(4_704_336, 0) + // Standard Error: 10_960 + .saturating_add(Weight::from_parts(2_182_711, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64divu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_174_000 picoseconds. - Weight::from_parts(2_266_000, 0) - // Standard Error: 9_336 - .saturating_add(Weight::from_parts(3_001_762, 0).saturating_mul(r.into())) + // Minimum execution time: 2_375_000 picoseconds. + Weight::from_parts(1_968_824, 0) + // Standard Error: 15_899 + .saturating_add(Weight::from_parts(2_762_269, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32divu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_230_000 picoseconds. - Weight::from_parts(2_279_000, 0) - // Standard Error: 8_838 - .saturating_add(Weight::from_parts(2_479_926, 0).saturating_mul(r.into())) + // Minimum execution time: 2_335_000 picoseconds. + Weight::from_parts(1_450_000, 0) + // Standard Error: 13_496 + .saturating_add(Weight::from_parts(2_401_407, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64rems(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_222_000 picoseconds. - Weight::from_parts(2_251_000, 0) - // Standard Error: 15_694 - .saturating_add(Weight::from_parts(9_400_757, 0).saturating_mul(r.into())) + // Minimum execution time: 2_448_000 picoseconds. + Weight::from_parts(2_513_000, 0) + // Standard Error: 19_401 + .saturating_add(Weight::from_parts(9_309_211, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32rems(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_177_000 picoseconds. - Weight::from_parts(2_262_000, 0) - // Standard Error: 24_148 - .saturating_add(Weight::from_parts(7_553_495, 0).saturating_mul(r.into())) + // Minimum execution time: 2_273_000 picoseconds. + Weight::from_parts(1_738_370, 0) + // Standard Error: 42_672 + .saturating_add(Weight::from_parts(7_512_557, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64remu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_305_000 picoseconds. - Weight::from_parts(2_344_000, 0) - // Standard Error: 8_791 - .saturating_add(Weight::from_parts(2_956_458, 0).saturating_mul(r.into())) + // Minimum execution time: 2_371_000 picoseconds. + Weight::from_parts(2_215_088, 0) + // Standard Error: 15_445 + .saturating_add(Weight::from_parts(2_956_278, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32remu(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_280_000 picoseconds. - Weight::from_parts(2_297_000, 0) - // Standard Error: 7_657 - .saturating_add(Weight::from_parts(2_477_698, 0).saturating_mul(r.into())) + // Minimum execution time: 2_409_000 picoseconds. + Weight::from_parts(217_500, 0) + // Standard Error: 7_904 + .saturating_add(Weight::from_parts(2_576_151, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64and(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_206_000 picoseconds. - Weight::from_parts(2_261_000, 0) - // Standard Error: 8_702 - .saturating_add(Weight::from_parts(1_265_825, 0).saturating_mul(r.into())) + // Minimum execution time: 2_456_000 picoseconds. + Weight::from_parts(2_503_000, 0) + // Standard Error: 7_920 + .saturating_add(Weight::from_parts(1_321_543, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32and(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_198_000 picoseconds. - Weight::from_parts(2_243_000, 0) - // Standard Error: 5_815 - .saturating_add(Weight::from_parts(639_043, 0).saturating_mul(r.into())) + // Minimum execution time: 2_346_000 picoseconds. + Weight::from_parts(2_479_000, 0) + // Standard Error: 4_711 + .saturating_add(Weight::from_parts(689_892, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64or(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_243_000 picoseconds. - Weight::from_parts(2_299_000, 0) - // Standard Error: 8_918 - .saturating_add(Weight::from_parts(1_302_162, 0).saturating_mul(r.into())) + // Minimum execution time: 2_339_000 picoseconds. + Weight::from_parts(2_427_000, 0) + // Standard Error: 8_029 + .saturating_add(Weight::from_parts(1_256_838, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32or(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_278_000 picoseconds. - Weight::from_parts(2_329_000, 0) - // Standard Error: 4_483 - .saturating_add(Weight::from_parts(628_991, 0).saturating_mul(r.into())) + // Minimum execution time: 2_334_000 picoseconds. + Weight::from_parts(2_480_000, 0) + // Standard Error: 3_812 + .saturating_add(Weight::from_parts(607_420, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64xor(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_211_000 picoseconds. - Weight::from_parts(2_264_000, 0) - // Standard Error: 9_628 - .saturating_add(Weight::from_parts(1_310_707, 0).saturating_mul(r.into())) + // Minimum execution time: 2_328_000 picoseconds. + Weight::from_parts(2_392_000, 0) + // Standard Error: 7_362 + .saturating_add(Weight::from_parts(1_248_739, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32xor(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_197_000 picoseconds. - Weight::from_parts(2_261_000, 0) - // Standard Error: 4_478 - .saturating_add(Weight::from_parts(645_751, 0).saturating_mul(r.into())) + // Minimum execution time: 2_419_000 picoseconds. + Weight::from_parts(2_465_000, 0) + // Standard Error: 4_304 + .saturating_add(Weight::from_parts(604_813, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64shl(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_231_000 picoseconds. - Weight::from_parts(2_327_000, 0) - // Standard Error: 8_607 - .saturating_add(Weight::from_parts(1_149_332, 0).saturating_mul(r.into())) + // Minimum execution time: 2_298_000 picoseconds. + Weight::from_parts(2_433_000, 0) + // Standard Error: 8_043 + .saturating_add(Weight::from_parts(1_073_194, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32shl(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_245_000 picoseconds. - Weight::from_parts(2_263_000, 0) - // Standard Error: 4_008 - .saturating_add(Weight::from_parts(590_180, 0).saturating_mul(r.into())) + // Minimum execution time: 2_427_000 picoseconds. + Weight::from_parts(2_511_000, 0) + // Standard Error: 4_969 + .saturating_add(Weight::from_parts(594_802, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64shrs(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_158_000 picoseconds. - Weight::from_parts(2_285_000, 0) - // Standard Error: 8_280 - .saturating_add(Weight::from_parts(1_079_846, 0).saturating_mul(r.into())) + // Minimum execution time: 2_312_000 picoseconds. + Weight::from_parts(2_399_000, 0) + // Standard Error: 7_093 + .saturating_add(Weight::from_parts(1_110_114, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32shrs(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_310_000 picoseconds. - Weight::from_parts(2_385_000, 0) - // Standard Error: 3_875 - .saturating_add(Weight::from_parts(547_245, 0).saturating_mul(r.into())) + // Minimum execution time: 2_331_000 picoseconds. + Weight::from_parts(2_433_000, 0) + // Standard Error: 4_140 + .saturating_add(Weight::from_parts(600_354, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64shru(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_231_000 picoseconds. - Weight::from_parts(2_315_000, 0) - // Standard Error: 9_477 - .saturating_add(Weight::from_parts(1_110_046, 0).saturating_mul(r.into())) + // Minimum execution time: 2_300_000 picoseconds. + Weight::from_parts(2_419_000, 0) + // Standard Error: 7_150 + .saturating_add(Weight::from_parts(1_154_649, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32shru(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_174_000 picoseconds. - Weight::from_parts(2_305_000, 0) - // Standard Error: 4_474 - .saturating_add(Weight::from_parts(564_322, 0).saturating_mul(r.into())) + // Minimum execution time: 2_356_000 picoseconds. + Weight::from_parts(2_423_000, 0) + // Standard Error: 5_067 + .saturating_add(Weight::from_parts(594_487, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64rotl(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_271_000 picoseconds. - Weight::from_parts(2_318_000, 0) - // Standard Error: 8_819 - .saturating_add(Weight::from_parts(1_132_561, 0).saturating_mul(r.into())) + // Minimum execution time: 2_339_000 picoseconds. + Weight::from_parts(2_406_000, 0) + // Standard Error: 5_674 + .saturating_add(Weight::from_parts(1_051_819, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32rotl(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_240_000 picoseconds. - Weight::from_parts(2_292_000, 0) - // Standard Error: 4_113 - .saturating_add(Weight::from_parts(601_692, 0).saturating_mul(r.into())) + // Minimum execution time: 2_383_000 picoseconds. + Weight::from_parts(114_723, 0) + // Standard Error: 5_881 + .saturating_add(Weight::from_parts(646_798, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i64rotr(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_236_000 picoseconds. - Weight::from_parts(2_253_000, 0) - // Standard Error: 7_294 - .saturating_add(Weight::from_parts(1_106_781, 0).saturating_mul(r.into())) + // Minimum execution time: 2_292_000 picoseconds. + Weight::from_parts(2_422_000, 0) + // Standard Error: 6_697 + .saturating_add(Weight::from_parts(1_053_580, 0).saturating_mul(r.into())) } /// The range of component `r` is `[0, 50]`. fn instr_i32rotr(r: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_193_000 picoseconds. - Weight::from_parts(2_268_000, 0) - // Standard Error: 4_653 - .saturating_add(Weight::from_parts(587_731, 0).saturating_mul(r.into())) + // Minimum execution time: 2_325_000 picoseconds. + Weight::from_parts(206_699, 0) + // Standard Error: 5_851 + .saturating_add(Weight::from_parts(639_333, 0).saturating_mul(r.into())) } } diff --git a/runtime/vara/src/weights/pallet_gear_voucher.rs b/runtime/vara/src/weights/pallet_gear_voucher.rs index a6028a41c75..6d6889d1752 100644 --- a/runtime/vara/src/weights/pallet_gear_voucher.rs +++ b/runtime/vara/src/weights/pallet_gear_voucher.rs @@ -19,7 +19,7 @@ //! Autogenerated weights for pallet_gear_voucher //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-08-20, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-09-11, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` //! CPU: `Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("vara-dev"), DB CACHE: 1024 @@ -47,8 +47,8 @@ impl pallet_gear_voucher::WeightInfo for SubstrateWeigh // Proof Size summary in bytes: // Measured: `101` // Estimated: `6196` - // Minimum execution time: 26_236_000 picoseconds. - Weight::from_parts(26_891_000, 6196) + // Minimum execution time: 25_876_000 picoseconds. + Weight::from_parts(26_659_000, 6196) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(2_u64)) } @@ -60,8 +60,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `101` // Estimated: `6196` - // Minimum execution time: 26_236_000 picoseconds. - Weight::from_parts(26_891_000, 6196) + // Minimum execution time: 25_876_000 picoseconds. + Weight::from_parts(26_659_000, 6196) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(2_u64)) } diff --git a/runtime/vara/src/weights/pallet_timestamp.rs b/runtime/vara/src/weights/pallet_timestamp.rs index aa0808323f6..5c50f24c824 100644 --- a/runtime/vara/src/weights/pallet_timestamp.rs +++ b/runtime/vara/src/weights/pallet_timestamp.rs @@ -19,7 +19,7 @@ //! Autogenerated weights for pallet_timestamp //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-08-20, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-09-11, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` //! CPU: `Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("vara-dev"), DB CACHE: 1024 @@ -46,19 +46,19 @@ pub struct SubstrateWeight(PhantomData); impl pallet_timestamp::WeightInfo for SubstrateWeight { fn set() -> Weight { // Proof Size summary in bytes: - // Measured: `175` + // Measured: `211` // Estimated: `2986` - // Minimum execution time: 7_993_000 picoseconds. - Weight::from_parts(8_357_000, 2986) + // Minimum execution time: 9_513_000 picoseconds. + Weight::from_parts(10_337_000, 2986) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } fn on_finalize() -> Weight { // Proof Size summary in bytes: - // Measured: `57` + // Measured: `94` // Estimated: `0` - // Minimum execution time: 3_169_000 picoseconds. - Weight::from_parts(3_266_000, 0) + // Minimum execution time: 3_681_000 picoseconds. + Weight::from_parts(3_916_000, 0) } } @@ -66,18 +66,18 @@ impl pallet_timestamp::WeightInfo for SubstrateWeight Weight { // Proof Size summary in bytes: - // Measured: `175` + // Measured: `211` // Estimated: `2986` - // Minimum execution time: 7_993_000 picoseconds. - Weight::from_parts(8_357_000, 2986) + // Minimum execution time: 9_513_000 picoseconds. + Weight::from_parts(10_337_000, 2986) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } fn on_finalize() -> Weight { // Proof Size summary in bytes: - // Measured: `57` + // Measured: `94` // Estimated: `0` - // Minimum execution time: 3_169_000 picoseconds. - Weight::from_parts(3_266_000, 0) + // Minimum execution time: 3_681_000 picoseconds. + Weight::from_parts(3_916_000, 0) } } diff --git a/runtime/vara/src/weights/pallet_utility.rs b/runtime/vara/src/weights/pallet_utility.rs index 3d4b1380694..514181ef7a3 100644 --- a/runtime/vara/src/weights/pallet_utility.rs +++ b/runtime/vara/src/weights/pallet_utility.rs @@ -19,7 +19,7 @@ //! Autogenerated weights for pallet_utility //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-08-20, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-09-11, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` //! CPU: `Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("vara-dev"), DB CACHE: 1024 @@ -52,44 +52,44 @@ impl pallet_utility::WeightInfo for SubstrateWeight // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 5_430_000 picoseconds. - Weight::from_parts(6_278_690, 0) - // Standard Error: 4_027 - .saturating_add(Weight::from_parts(4_089_487, 0).saturating_mul(c.into())) + // Minimum execution time: 5_349_000 picoseconds. + Weight::from_parts(8_798_188, 0) + // Standard Error: 2_360 + .saturating_add(Weight::from_parts(3_859_914, 0).saturating_mul(c.into())) } fn as_derivative() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 3_676_000 picoseconds. - Weight::from_parts(3_933_000, 0) + // Minimum execution time: 3_760_000 picoseconds. + Weight::from_parts(3_882_000, 0) } /// The range of component `c` is `[0, 1000]`. fn batch_all(c: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 5_177_000 picoseconds. - Weight::from_parts(11_177_183, 0) - // Standard Error: 4_061 - .saturating_add(Weight::from_parts(4_284_675, 0).saturating_mul(c.into())) + // Minimum execution time: 5_343_000 picoseconds. + Weight::from_parts(6_613_150, 0) + // Standard Error: 2_902 + .saturating_add(Weight::from_parts(4_045_901, 0).saturating_mul(c.into())) } fn dispatch_as() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 7_036_000 picoseconds. - Weight::from_parts(7_341_000, 0) + // Minimum execution time: 6_983_000 picoseconds. + Weight::from_parts(7_317_000, 0) } /// The range of component `c` is `[0, 1000]`. fn force_batch(c: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 5_427_000 picoseconds. - Weight::from_parts(5_742_970, 0) - // Standard Error: 3_854 - .saturating_add(Weight::from_parts(4_084_209, 0).saturating_mul(c.into())) + // Minimum execution time: 5_419_000 picoseconds. + Weight::from_parts(9_009_348, 0) + // Standard Error: 2_400 + .saturating_add(Weight::from_parts(3_868_692, 0).saturating_mul(c.into())) } } @@ -100,43 +100,43 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 5_430_000 picoseconds. - Weight::from_parts(6_278_690, 0) - // Standard Error: 4_027 - .saturating_add(Weight::from_parts(4_089_487, 0).saturating_mul(c.into())) + // Minimum execution time: 5_349_000 picoseconds. + Weight::from_parts(8_798_188, 0) + // Standard Error: 2_360 + .saturating_add(Weight::from_parts(3_859_914, 0).saturating_mul(c.into())) } fn as_derivative() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 3_676_000 picoseconds. - Weight::from_parts(3_933_000, 0) + // Minimum execution time: 3_760_000 picoseconds. + Weight::from_parts(3_882_000, 0) } /// The range of component `c` is `[0, 1000]`. fn batch_all(c: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 5_177_000 picoseconds. - Weight::from_parts(11_177_183, 0) - // Standard Error: 4_061 - .saturating_add(Weight::from_parts(4_284_675, 0).saturating_mul(c.into())) + // Minimum execution time: 5_343_000 picoseconds. + Weight::from_parts(6_613_150, 0) + // Standard Error: 2_902 + .saturating_add(Weight::from_parts(4_045_901, 0).saturating_mul(c.into())) } fn dispatch_as() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 7_036_000 picoseconds. - Weight::from_parts(7_341_000, 0) + // Minimum execution time: 6_983_000 picoseconds. + Weight::from_parts(7_317_000, 0) } /// The range of component `c` is `[0, 1000]`. fn force_batch(c: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 5_427_000 picoseconds. - Weight::from_parts(5_742_970, 0) - // Standard Error: 3_854 - .saturating_add(Weight::from_parts(4_084_209, 0).saturating_mul(c.into())) + // Minimum execution time: 5_419_000 picoseconds. + Weight::from_parts(9_009_348, 0) + // Standard Error: 2_400 + .saturating_add(Weight::from_parts(3_868_692, 0).saturating_mul(c.into())) } } From 928276fe27685e299290ee5caf86ba0868fc37b6 Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Mon, 11 Sep 2023 17:00:35 +0400 Subject: [PATCH 02/21] chore(release): Versioning (#3244) --- pallets/gear-bank/src/lib.rs | 2 +- runtime/gear/src/lib.rs | 2 +- runtime/vara/src/lib.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pallets/gear-bank/src/lib.rs b/pallets/gear-bank/src/lib.rs index eb9e34e178e..44b5f1e3845 100644 --- a/pallets/gear-bank/src/lib.rs +++ b/pallets/gear-bank/src/lib.rs @@ -37,7 +37,7 @@ pub(crate) type GasMultiplier = common::GasMultiplier, u64>; pub(crate) type GasMultiplierOf = ::GasMultiplier; /// The current storage version. -pub(crate) const STORAGE_VERSION: StorageVersion = StorageVersion::new(1); +pub(crate) const STORAGE_VERSION: StorageVersion = StorageVersion::new(0); #[frame_support::pallet] pub mod pallet { diff --git a/runtime/gear/src/lib.rs b/runtime/gear/src/lib.rs index 2cc7472aab4..d083d09d03e 100644 --- a/runtime/gear/src/lib.rs +++ b/runtime/gear/src/lib.rs @@ -124,7 +124,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { impl_name: create_runtime_str!("gear"), apis: RUNTIME_API_VERSIONS, authoring_version: 1, - spec_version: 330, + spec_version: 340, impl_version: 1, transaction_version: 1, state_version: 1, diff --git a/runtime/vara/src/lib.rs b/runtime/vara/src/lib.rs index 305b3f35228..f99857dd56d 100644 --- a/runtime/vara/src/lib.rs +++ b/runtime/vara/src/lib.rs @@ -145,7 +145,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // The version of the runtime specification. A full node will not attempt to use its native // runtime in substitute for the on-chain Wasm runtime unless all of `spec_name`, // `spec_version`, and `authoring_version` are the same between Wasm and native. - spec_version: 330, + spec_version: 340, impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 1, From 9f02b29f56a52841d1f966f2aadf342127e1f05e Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Mon, 11 Sep 2023 17:09:42 +0400 Subject: [PATCH 03/21] chores(v0.3.3): Revert actual bump and set proper lib versions (#3246) --- Cargo.lock | 42 ++++++++++++++++++------------------ Cargo.toml | 2 +- pallets/gear-bank/src/lib.rs | 2 +- runtime/gear/src/lib.rs | 2 +- runtime/vara/src/lib.rs | 2 +- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c6ee9ecbb10..d02d3bb927e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3631,14 +3631,14 @@ dependencies = [ [[package]] name = "galloc" -version = "0.3.2" +version = "0.3.3" dependencies = [ "dlmalloc", ] [[package]] name = "gcli" -version = "0.3.2" +version = "0.3.3" dependencies = [ "anyhow", "base64 0.21.3", @@ -3677,7 +3677,7 @@ dependencies = [ [[package]] name = "gclient" -version = "0.3.2" +version = "0.3.3" dependencies = [ "anyhow", "async-trait", @@ -3721,7 +3721,7 @@ dependencies = [ [[package]] name = "gcore" -version = "0.3.2" +version = "0.3.3" dependencies = [ "galloc", "gear-core-errors", @@ -3776,7 +3776,7 @@ dependencies = [ [[package]] name = "gear-backend-codegen" -version = "0.3.2" +version = "0.3.3" dependencies = [ "proc-macro2", "quote", @@ -3785,7 +3785,7 @@ dependencies = [ [[package]] name = "gear-backend-common" -version = "0.3.2" +version = "0.3.3" dependencies = [ "actor-system-error", "blake2-rfc", @@ -3844,7 +3844,7 @@ dependencies = [ [[package]] name = "gear-cli" -version = "0.3.2" +version = "0.3.3" dependencies = [ "clap 4.4.2", "frame-benchmarking", @@ -3878,7 +3878,7 @@ dependencies = [ [[package]] name = "gear-common" -version = "0.3.2" +version = "0.3.3" dependencies = [ "derive_more", "enum-iterator 1.4.1", @@ -3906,7 +3906,7 @@ dependencies = [ [[package]] name = "gear-common-codegen" -version = "0.3.2" +version = "0.3.3" dependencies = [ "quote", "syn 2.0.31", @@ -3914,7 +3914,7 @@ dependencies = [ [[package]] name = "gear-core" -version = "0.3.2" +version = "0.3.3" dependencies = [ "blake2-rfc", "byteorder", @@ -3936,7 +3936,7 @@ dependencies = [ [[package]] name = "gear-core-errors" -version = "0.3.2" +version = "0.3.3" dependencies = [ "derive_more", "enum-iterator 1.4.1", @@ -3945,7 +3945,7 @@ dependencies = [ [[package]] name = "gear-core-processor" -version = "0.3.2" +version = "0.3.3" dependencies = [ "actor-system-error", "derive_more", @@ -4003,7 +4003,7 @@ dependencies = [ [[package]] name = "gear-node-loader" -version = "0.3.2" +version = "0.3.3" dependencies = [ "anyhow", "arbitrary", @@ -4343,7 +4343,7 @@ dependencies = [ [[package]] name = "gear-stack-buffer" -version = "0.3.2" +version = "0.3.3" dependencies = [ "cc", ] @@ -4436,7 +4436,7 @@ dependencies = [ [[package]] name = "gear-wasm-instrument" -version = "0.3.2" +version = "0.3.3" dependencies = [ "enum-iterator 1.4.1", "gear-backend-common", @@ -4606,7 +4606,7 @@ dependencies = [ [[package]] name = "gmeta" -version = "0.3.2" +version = "0.3.3" dependencies = [ "blake2-rfc", "derive_more", @@ -4620,7 +4620,7 @@ dependencies = [ [[package]] name = "gmeta-codegen" -version = "0.3.2" +version = "0.3.3" dependencies = [ "gmeta", "gstd", @@ -4644,7 +4644,7 @@ dependencies = [ [[package]] name = "gsdk" -version = "0.3.2" +version = "0.3.3" dependencies = [ "anyhow", "base64 0.21.3", @@ -4695,7 +4695,7 @@ dependencies = [ [[package]] name = "gsdk-codegen" -version = "0.3.2" +version = "0.3.3" dependencies = [ "proc-macro2", "quote", @@ -4704,7 +4704,7 @@ dependencies = [ [[package]] name = "gstd" -version = "0.3.2" +version = "0.3.3" dependencies = [ "bs58", "futures", @@ -4733,7 +4733,7 @@ dependencies = [ [[package]] name = "gsys" -version = "0.3.2" +version = "0.3.3" [[package]] name = "gtest" diff --git a/Cargo.toml b/Cargo.toml index cc657902e6f..bf10962750d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace.package] -version = "0.3.2" +version = "0.3.3" authors = ["Gear Technologies"] edition = "2021" license = "GPL-3.0" diff --git a/pallets/gear-bank/src/lib.rs b/pallets/gear-bank/src/lib.rs index 44b5f1e3845..eb9e34e178e 100644 --- a/pallets/gear-bank/src/lib.rs +++ b/pallets/gear-bank/src/lib.rs @@ -37,7 +37,7 @@ pub(crate) type GasMultiplier = common::GasMultiplier, u64>; pub(crate) type GasMultiplierOf = ::GasMultiplier; /// The current storage version. -pub(crate) const STORAGE_VERSION: StorageVersion = StorageVersion::new(0); +pub(crate) const STORAGE_VERSION: StorageVersion = StorageVersion::new(1); #[frame_support::pallet] pub mod pallet { diff --git a/runtime/gear/src/lib.rs b/runtime/gear/src/lib.rs index d083d09d03e..2cc7472aab4 100644 --- a/runtime/gear/src/lib.rs +++ b/runtime/gear/src/lib.rs @@ -124,7 +124,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { impl_name: create_runtime_str!("gear"), apis: RUNTIME_API_VERSIONS, authoring_version: 1, - spec_version: 340, + spec_version: 330, impl_version: 1, transaction_version: 1, state_version: 1, diff --git a/runtime/vara/src/lib.rs b/runtime/vara/src/lib.rs index f99857dd56d..305b3f35228 100644 --- a/runtime/vara/src/lib.rs +++ b/runtime/vara/src/lib.rs @@ -145,7 +145,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // The version of the runtime specification. A full node will not attempt to use its native // runtime in substitute for the on-chain Wasm runtime unless all of `spec_name`, // `spec_version`, and `authoring_version` are the same between Wasm and native. - spec_version: 340, + spec_version: 330, impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 1, From 998b976672586a4b04ddf3edcbb5be422164d565 Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Mon, 11 Sep 2023 17:25:43 +0400 Subject: [PATCH 04/21] chore(v0.3.3): Versioning (#3247) --- Cargo.lock | 42 ++++++++++++++++++------------------ Cargo.toml | 2 +- pallets/gear-bank/src/lib.rs | 2 +- runtime/gear/src/lib.rs | 2 +- runtime/vara/src/lib.rs | 2 +- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d02d3bb927e..2500a3e11f1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3631,14 +3631,14 @@ dependencies = [ [[package]] name = "galloc" -version = "0.3.3" +version = "0.3.4" dependencies = [ "dlmalloc", ] [[package]] name = "gcli" -version = "0.3.3" +version = "0.3.4" dependencies = [ "anyhow", "base64 0.21.3", @@ -3677,7 +3677,7 @@ dependencies = [ [[package]] name = "gclient" -version = "0.3.3" +version = "0.3.4" dependencies = [ "anyhow", "async-trait", @@ -3721,7 +3721,7 @@ dependencies = [ [[package]] name = "gcore" -version = "0.3.3" +version = "0.3.4" dependencies = [ "galloc", "gear-core-errors", @@ -3776,7 +3776,7 @@ dependencies = [ [[package]] name = "gear-backend-codegen" -version = "0.3.3" +version = "0.3.4" dependencies = [ "proc-macro2", "quote", @@ -3785,7 +3785,7 @@ dependencies = [ [[package]] name = "gear-backend-common" -version = "0.3.3" +version = "0.3.4" dependencies = [ "actor-system-error", "blake2-rfc", @@ -3844,7 +3844,7 @@ dependencies = [ [[package]] name = "gear-cli" -version = "0.3.3" +version = "0.3.4" dependencies = [ "clap 4.4.2", "frame-benchmarking", @@ -3878,7 +3878,7 @@ dependencies = [ [[package]] name = "gear-common" -version = "0.3.3" +version = "0.3.4" dependencies = [ "derive_more", "enum-iterator 1.4.1", @@ -3906,7 +3906,7 @@ dependencies = [ [[package]] name = "gear-common-codegen" -version = "0.3.3" +version = "0.3.4" dependencies = [ "quote", "syn 2.0.31", @@ -3914,7 +3914,7 @@ dependencies = [ [[package]] name = "gear-core" -version = "0.3.3" +version = "0.3.4" dependencies = [ "blake2-rfc", "byteorder", @@ -3936,7 +3936,7 @@ dependencies = [ [[package]] name = "gear-core-errors" -version = "0.3.3" +version = "0.3.4" dependencies = [ "derive_more", "enum-iterator 1.4.1", @@ -3945,7 +3945,7 @@ dependencies = [ [[package]] name = "gear-core-processor" -version = "0.3.3" +version = "0.3.4" dependencies = [ "actor-system-error", "derive_more", @@ -4003,7 +4003,7 @@ dependencies = [ [[package]] name = "gear-node-loader" -version = "0.3.3" +version = "0.3.4" dependencies = [ "anyhow", "arbitrary", @@ -4343,7 +4343,7 @@ dependencies = [ [[package]] name = "gear-stack-buffer" -version = "0.3.3" +version = "0.3.4" dependencies = [ "cc", ] @@ -4436,7 +4436,7 @@ dependencies = [ [[package]] name = "gear-wasm-instrument" -version = "0.3.3" +version = "0.3.4" dependencies = [ "enum-iterator 1.4.1", "gear-backend-common", @@ -4606,7 +4606,7 @@ dependencies = [ [[package]] name = "gmeta" -version = "0.3.3" +version = "0.3.4" dependencies = [ "blake2-rfc", "derive_more", @@ -4620,7 +4620,7 @@ dependencies = [ [[package]] name = "gmeta-codegen" -version = "0.3.3" +version = "0.3.4" dependencies = [ "gmeta", "gstd", @@ -4644,7 +4644,7 @@ dependencies = [ [[package]] name = "gsdk" -version = "0.3.3" +version = "0.3.4" dependencies = [ "anyhow", "base64 0.21.3", @@ -4695,7 +4695,7 @@ dependencies = [ [[package]] name = "gsdk-codegen" -version = "0.3.3" +version = "0.3.4" dependencies = [ "proc-macro2", "quote", @@ -4704,7 +4704,7 @@ dependencies = [ [[package]] name = "gstd" -version = "0.3.3" +version = "0.3.4" dependencies = [ "bs58", "futures", @@ -4733,7 +4733,7 @@ dependencies = [ [[package]] name = "gsys" -version = "0.3.3" +version = "0.3.4" [[package]] name = "gtest" diff --git a/Cargo.toml b/Cargo.toml index bf10962750d..6dbd8172a62 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace.package] -version = "0.3.3" +version = "0.3.4" authors = ["Gear Technologies"] edition = "2021" license = "GPL-3.0" diff --git a/pallets/gear-bank/src/lib.rs b/pallets/gear-bank/src/lib.rs index eb9e34e178e..44b5f1e3845 100644 --- a/pallets/gear-bank/src/lib.rs +++ b/pallets/gear-bank/src/lib.rs @@ -37,7 +37,7 @@ pub(crate) type GasMultiplier = common::GasMultiplier, u64>; pub(crate) type GasMultiplierOf = ::GasMultiplier; /// The current storage version. -pub(crate) const STORAGE_VERSION: StorageVersion = StorageVersion::new(1); +pub(crate) const STORAGE_VERSION: StorageVersion = StorageVersion::new(0); #[frame_support::pallet] pub mod pallet { diff --git a/runtime/gear/src/lib.rs b/runtime/gear/src/lib.rs index 2cc7472aab4..d083d09d03e 100644 --- a/runtime/gear/src/lib.rs +++ b/runtime/gear/src/lib.rs @@ -124,7 +124,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { impl_name: create_runtime_str!("gear"), apis: RUNTIME_API_VERSIONS, authoring_version: 1, - spec_version: 330, + spec_version: 340, impl_version: 1, transaction_version: 1, state_version: 1, diff --git a/runtime/vara/src/lib.rs b/runtime/vara/src/lib.rs index 305b3f35228..f99857dd56d 100644 --- a/runtime/vara/src/lib.rs +++ b/runtime/vara/src/lib.rs @@ -145,7 +145,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // The version of the runtime specification. A full node will not attempt to use its native // runtime in substitute for the on-chain Wasm runtime unless all of `spec_name`, // `spec_version`, and `authoring_version` are the same between Wasm and native. - spec_version: 330, + spec_version: 340, impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 1, From d8d59287bf874d41e9116d9cc6a4e21e40819e58 Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Mon, 11 Sep 2023 18:41:16 +0400 Subject: [PATCH 05/21] fix(0.3.3): Force reinstrumentation (#3248) --- Cargo.lock | 42 ++++++++++++++++++------------------ Cargo.toml | 2 +- pallets/gear/src/schedule.rs | 2 +- runtime/gear/src/lib.rs | 2 +- runtime/vara/src/lib.rs | 2 +- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2500a3e11f1..d02d3bb927e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3631,14 +3631,14 @@ dependencies = [ [[package]] name = "galloc" -version = "0.3.4" +version = "0.3.3" dependencies = [ "dlmalloc", ] [[package]] name = "gcli" -version = "0.3.4" +version = "0.3.3" dependencies = [ "anyhow", "base64 0.21.3", @@ -3677,7 +3677,7 @@ dependencies = [ [[package]] name = "gclient" -version = "0.3.4" +version = "0.3.3" dependencies = [ "anyhow", "async-trait", @@ -3721,7 +3721,7 @@ dependencies = [ [[package]] name = "gcore" -version = "0.3.4" +version = "0.3.3" dependencies = [ "galloc", "gear-core-errors", @@ -3776,7 +3776,7 @@ dependencies = [ [[package]] name = "gear-backend-codegen" -version = "0.3.4" +version = "0.3.3" dependencies = [ "proc-macro2", "quote", @@ -3785,7 +3785,7 @@ dependencies = [ [[package]] name = "gear-backend-common" -version = "0.3.4" +version = "0.3.3" dependencies = [ "actor-system-error", "blake2-rfc", @@ -3844,7 +3844,7 @@ dependencies = [ [[package]] name = "gear-cli" -version = "0.3.4" +version = "0.3.3" dependencies = [ "clap 4.4.2", "frame-benchmarking", @@ -3878,7 +3878,7 @@ dependencies = [ [[package]] name = "gear-common" -version = "0.3.4" +version = "0.3.3" dependencies = [ "derive_more", "enum-iterator 1.4.1", @@ -3906,7 +3906,7 @@ dependencies = [ [[package]] name = "gear-common-codegen" -version = "0.3.4" +version = "0.3.3" dependencies = [ "quote", "syn 2.0.31", @@ -3914,7 +3914,7 @@ dependencies = [ [[package]] name = "gear-core" -version = "0.3.4" +version = "0.3.3" dependencies = [ "blake2-rfc", "byteorder", @@ -3936,7 +3936,7 @@ dependencies = [ [[package]] name = "gear-core-errors" -version = "0.3.4" +version = "0.3.3" dependencies = [ "derive_more", "enum-iterator 1.4.1", @@ -3945,7 +3945,7 @@ dependencies = [ [[package]] name = "gear-core-processor" -version = "0.3.4" +version = "0.3.3" dependencies = [ "actor-system-error", "derive_more", @@ -4003,7 +4003,7 @@ dependencies = [ [[package]] name = "gear-node-loader" -version = "0.3.4" +version = "0.3.3" dependencies = [ "anyhow", "arbitrary", @@ -4343,7 +4343,7 @@ dependencies = [ [[package]] name = "gear-stack-buffer" -version = "0.3.4" +version = "0.3.3" dependencies = [ "cc", ] @@ -4436,7 +4436,7 @@ dependencies = [ [[package]] name = "gear-wasm-instrument" -version = "0.3.4" +version = "0.3.3" dependencies = [ "enum-iterator 1.4.1", "gear-backend-common", @@ -4606,7 +4606,7 @@ dependencies = [ [[package]] name = "gmeta" -version = "0.3.4" +version = "0.3.3" dependencies = [ "blake2-rfc", "derive_more", @@ -4620,7 +4620,7 @@ dependencies = [ [[package]] name = "gmeta-codegen" -version = "0.3.4" +version = "0.3.3" dependencies = [ "gmeta", "gstd", @@ -4644,7 +4644,7 @@ dependencies = [ [[package]] name = "gsdk" -version = "0.3.4" +version = "0.3.3" dependencies = [ "anyhow", "base64 0.21.3", @@ -4695,7 +4695,7 @@ dependencies = [ [[package]] name = "gsdk-codegen" -version = "0.3.4" +version = "0.3.3" dependencies = [ "proc-macro2", "quote", @@ -4704,7 +4704,7 @@ dependencies = [ [[package]] name = "gstd" -version = "0.3.4" +version = "0.3.3" dependencies = [ "bs58", "futures", @@ -4733,7 +4733,7 @@ dependencies = [ [[package]] name = "gsys" -version = "0.3.4" +version = "0.3.3" [[package]] name = "gtest" diff --git a/Cargo.toml b/Cargo.toml index 6dbd8172a62..bf10962750d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace.package] -version = "0.3.4" +version = "0.3.3" authors = ["Gear Technologies"] edition = "2021" license = "GPL-3.0" diff --git a/pallets/gear/src/schedule.rs b/pallets/gear/src/schedule.rs index bd6a4f5d03d..30c68805afe 100644 --- a/pallets/gear/src/schedule.rs +++ b/pallets/gear/src/schedule.rs @@ -753,7 +753,7 @@ impl Default for Limits { impl Default for InstructionWeights { fn default() -> Self { Self { - version: 9, + version: 10, i64const: cost_instr!(instr_i64const, 1), i64load: cost_instr!(instr_i64load, 0), i32load: cost_instr!(instr_i32load, 0), diff --git a/runtime/gear/src/lib.rs b/runtime/gear/src/lib.rs index d083d09d03e..2cc7472aab4 100644 --- a/runtime/gear/src/lib.rs +++ b/runtime/gear/src/lib.rs @@ -124,7 +124,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { impl_name: create_runtime_str!("gear"), apis: RUNTIME_API_VERSIONS, authoring_version: 1, - spec_version: 340, + spec_version: 330, impl_version: 1, transaction_version: 1, state_version: 1, diff --git a/runtime/vara/src/lib.rs b/runtime/vara/src/lib.rs index f99857dd56d..305b3f35228 100644 --- a/runtime/vara/src/lib.rs +++ b/runtime/vara/src/lib.rs @@ -145,7 +145,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // The version of the runtime specification. A full node will not attempt to use its native // runtime in substitute for the on-chain Wasm runtime unless all of `spec_name`, // `spec_version`, and `authoring_version` are the same between Wasm and native. - spec_version: 340, + spec_version: 330, impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 1, From e0b6b800606b53c686f78a5ce209f70613a7099b Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Tue, 12 Sep 2023 16:31:32 +0400 Subject: [PATCH 06/21] chore!(runtime): Release 0.3.4 (#3251) --- Cargo.lock | 42 +++---- Cargo.toml | 2 +- gsdk/src/metadata/generated.rs | 5 - node/cli/src/benchmarking.rs | 2 - node/testing/src/keyring.rs | 5 +- pallets/gas/src/migrations.rs | 10 +- runtime/gear/src/lib.rs | 2 +- runtime/vara/src/extensions/mod.rs | 109 ----------------- runtime/vara/src/integration_tests.rs | 168 +------------------------- runtime/vara/src/lib.rs | 7 +- 10 files changed, 35 insertions(+), 317 deletions(-) delete mode 100644 runtime/vara/src/extensions/mod.rs diff --git a/Cargo.lock b/Cargo.lock index d02d3bb927e..2500a3e11f1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3631,14 +3631,14 @@ dependencies = [ [[package]] name = "galloc" -version = "0.3.3" +version = "0.3.4" dependencies = [ "dlmalloc", ] [[package]] name = "gcli" -version = "0.3.3" +version = "0.3.4" dependencies = [ "anyhow", "base64 0.21.3", @@ -3677,7 +3677,7 @@ dependencies = [ [[package]] name = "gclient" -version = "0.3.3" +version = "0.3.4" dependencies = [ "anyhow", "async-trait", @@ -3721,7 +3721,7 @@ dependencies = [ [[package]] name = "gcore" -version = "0.3.3" +version = "0.3.4" dependencies = [ "galloc", "gear-core-errors", @@ -3776,7 +3776,7 @@ dependencies = [ [[package]] name = "gear-backend-codegen" -version = "0.3.3" +version = "0.3.4" dependencies = [ "proc-macro2", "quote", @@ -3785,7 +3785,7 @@ dependencies = [ [[package]] name = "gear-backend-common" -version = "0.3.3" +version = "0.3.4" dependencies = [ "actor-system-error", "blake2-rfc", @@ -3844,7 +3844,7 @@ dependencies = [ [[package]] name = "gear-cli" -version = "0.3.3" +version = "0.3.4" dependencies = [ "clap 4.4.2", "frame-benchmarking", @@ -3878,7 +3878,7 @@ dependencies = [ [[package]] name = "gear-common" -version = "0.3.3" +version = "0.3.4" dependencies = [ "derive_more", "enum-iterator 1.4.1", @@ -3906,7 +3906,7 @@ dependencies = [ [[package]] name = "gear-common-codegen" -version = "0.3.3" +version = "0.3.4" dependencies = [ "quote", "syn 2.0.31", @@ -3914,7 +3914,7 @@ dependencies = [ [[package]] name = "gear-core" -version = "0.3.3" +version = "0.3.4" dependencies = [ "blake2-rfc", "byteorder", @@ -3936,7 +3936,7 @@ dependencies = [ [[package]] name = "gear-core-errors" -version = "0.3.3" +version = "0.3.4" dependencies = [ "derive_more", "enum-iterator 1.4.1", @@ -3945,7 +3945,7 @@ dependencies = [ [[package]] name = "gear-core-processor" -version = "0.3.3" +version = "0.3.4" dependencies = [ "actor-system-error", "derive_more", @@ -4003,7 +4003,7 @@ dependencies = [ [[package]] name = "gear-node-loader" -version = "0.3.3" +version = "0.3.4" dependencies = [ "anyhow", "arbitrary", @@ -4343,7 +4343,7 @@ dependencies = [ [[package]] name = "gear-stack-buffer" -version = "0.3.3" +version = "0.3.4" dependencies = [ "cc", ] @@ -4436,7 +4436,7 @@ dependencies = [ [[package]] name = "gear-wasm-instrument" -version = "0.3.3" +version = "0.3.4" dependencies = [ "enum-iterator 1.4.1", "gear-backend-common", @@ -4606,7 +4606,7 @@ dependencies = [ [[package]] name = "gmeta" -version = "0.3.3" +version = "0.3.4" dependencies = [ "blake2-rfc", "derive_more", @@ -4620,7 +4620,7 @@ dependencies = [ [[package]] name = "gmeta-codegen" -version = "0.3.3" +version = "0.3.4" dependencies = [ "gmeta", "gstd", @@ -4644,7 +4644,7 @@ dependencies = [ [[package]] name = "gsdk" -version = "0.3.3" +version = "0.3.4" dependencies = [ "anyhow", "base64 0.21.3", @@ -4695,7 +4695,7 @@ dependencies = [ [[package]] name = "gsdk-codegen" -version = "0.3.3" +version = "0.3.4" dependencies = [ "proc-macro2", "quote", @@ -4704,7 +4704,7 @@ dependencies = [ [[package]] name = "gstd" -version = "0.3.3" +version = "0.3.4" dependencies = [ "bs58", "futures", @@ -4733,7 +4733,7 @@ dependencies = [ [[package]] name = "gsys" -version = "0.3.3" +version = "0.3.4" [[package]] name = "gtest" diff --git a/Cargo.toml b/Cargo.toml index bf10962750d..6dbd8172a62 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace.package] -version = "0.3.3" +version = "0.3.4" authors = ["Gear Technologies"] edition = "2021" license = "GPL-3.0" diff --git a/gsdk/src/metadata/generated.rs b/gsdk/src/metadata/generated.rs index be17b5ca758..cfc17329d53 100644 --- a/gsdk/src/metadata/generated.rs +++ b/gsdk/src/metadata/generated.rs @@ -8798,11 +8798,6 @@ pub mod runtime_types { } pub mod vara_runtime { use super::runtime_types; - pub mod extensions { - use super::runtime_types; - #[derive(Debug, crate::gp::Decode, crate::gp::DecodeAsType, crate::gp::Encode)] - pub struct DisableValueTransfers; - } pub mod governance { use super::runtime_types; pub mod origins { diff --git a/node/cli/src/benchmarking.rs b/node/cli/src/benchmarking.rs index 08673be672f..85da0e72834 100644 --- a/node/cli/src/benchmarking.rs +++ b/node/cli/src/benchmarking.rs @@ -108,7 +108,6 @@ macro_rules! with_signed_payload { $( $setup )* let $extra: runtime::SignedExtra = ( - runtime::DisableValueTransfers, pallet_gear_staking_rewards::StakingBlackList::::new(), frame_system::CheckNonZeroSender::::new(), frame_system::CheckSpecVersion::::new(), @@ -126,7 +125,6 @@ macro_rules! with_signed_payload { $call.clone(), $extra.clone(), ( - (), (), (), runtime::VERSION.spec_version, diff --git a/node/testing/src/keyring.rs b/node/testing/src/keyring.rs index 668945d8aaa..f0a74f264e9 100644 --- a/node/testing/src/keyring.rs +++ b/node/testing/src/keyring.rs @@ -28,8 +28,8 @@ use sp_keyring::{AccountKeyring, Ed25519Keyring, Sr25519Keyring}; use sp_runtime::generic::Era; #[cfg(feature = "vara-native")] use vara_runtime::{ - CustomChargeTransactionPayment, DisableValueTransfers, RuntimeCall, SessionKeys, SignedExtra, - StakingBlackList, UncheckedExtrinsic, + CustomChargeTransactionPayment, RuntimeCall, SessionKeys, SignedExtra, StakingBlackList, + UncheckedExtrinsic, }; pub type CheckedExtrinsic = @@ -94,7 +94,6 @@ pub fn to_session_keys( #[cfg(feature = "vara-native")] pub fn signed_extra(nonce: Index) -> SignedExtra { ( - DisableValueTransfers {}, StakingBlackList::new(), frame_system::CheckNonZeroSender::new(), frame_system::CheckSpecVersion::new(), diff --git a/pallets/gas/src/migrations.rs b/pallets/gas/src/migrations.rs index 809c218932e..8ade4e216c1 100644 --- a/pallets/gas/src/migrations.rs +++ b/pallets/gas/src/migrations.rs @@ -61,11 +61,15 @@ impl OnRuntimeUpgrade for MigrateToV3 { let previous: StorageVersion = Decode::decode(&mut state.as_ref()).map_err(|_| "Cannot decode version")?; - let onchain = Pallet::::on_chain_storage_version(); + if previous == 2 { + let onchain = Pallet::::on_chain_storage_version(); - assert_ne!(previous, onchain, "Must have upgraded from version 2 to 3"); + assert_ne!(previous, onchain, "Must have upgraded from version 2 to 3"); - log::info!("Storage `pallet-gear-gas` successfully migrated to V3"); + log::info!("Storage `pallet-gear-gas` successfully migrated to V3"); + } else { + log::info!("Storage `pallet-gear-gas` was already migrated to V3"); + } Ok(()) } diff --git a/runtime/gear/src/lib.rs b/runtime/gear/src/lib.rs index 2cc7472aab4..d083d09d03e 100644 --- a/runtime/gear/src/lib.rs +++ b/runtime/gear/src/lib.rs @@ -124,7 +124,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { impl_name: create_runtime_str!("gear"), apis: RUNTIME_API_VERSIONS, authoring_version: 1, - spec_version: 330, + spec_version: 340, impl_version: 1, transaction_version: 1, state_version: 1, diff --git a/runtime/vara/src/extensions/mod.rs b/runtime/vara/src/extensions/mod.rs deleted file mode 100644 index 27a3136e639..00000000000 --- a/runtime/vara/src/extensions/mod.rs +++ /dev/null @@ -1,109 +0,0 @@ -// This file is part of Gear. - -// Copyright (C) 2021-2023 Gear Technologies Inc. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -//! A list of the different weight modules for our runtime. - -use crate::{AccountId, RuntimeCall}; -use frame_support::{ - codec::{Decode, Encode}, - traits::Contains, -}; -use scale_info::TypeInfo; -use sp_runtime::{ - traits::{DispatchInfoOf, SignedExtension, Zero}, - transaction_validity::{InvalidTransaction, TransactionValidity, TransactionValidityError}, -}; - -/// Disallow balances transfer -/// -/// RELEASE: This is only relevant for the initial PoA run-in period and will be removed -/// from the release runtime. - -struct ValueTransferCallFilter; -impl Contains for ValueTransferCallFilter { - fn contains(call: &RuntimeCall) -> bool { - match call { - RuntimeCall::Balances(_) => true, - RuntimeCall::Gear(pallet_gear::Call::create_program { value, .. }) - | RuntimeCall::Gear(pallet_gear::Call::upload_program { value, .. }) - | RuntimeCall::Gear(pallet_gear::Call::send_message { value, .. }) - | RuntimeCall::Gear(pallet_gear::Call::send_reply { value, .. }) => !value.is_zero(), - RuntimeCall::Utility(utility_call) => { - match utility_call { - pallet_utility::Call::batch { calls } - | pallet_utility::Call::batch_all { calls } - | pallet_utility::Call::force_batch { calls } => { - for c in calls { - if Self::contains(c) { - return true; - } - } - } - pallet_utility::Call::as_derivative { call, .. } - | pallet_utility::Call::dispatch_as { call, .. } - | pallet_utility::Call::with_weight { call, .. } => { - return Self::contains(call); - } - _ => (), - } - false - } - RuntimeCall::Proxy(pallet_proxy::Call::proxy { call, .. }) - | RuntimeCall::Proxy(pallet_proxy::Call::proxy_announced { call, .. }) => { - Self::contains(call) - } - _ => false, - } - } -} - -#[derive(Default, Encode, Debug, Decode, Clone, Eq, PartialEq, TypeInfo)] -pub struct DisableValueTransfers; - -impl SignedExtension for DisableValueTransfers { - const IDENTIFIER: &'static str = "DisableValueTransfers"; - type AccountId = AccountId; - type Call = RuntimeCall; - type AdditionalSigned = (); - type Pre = (); - fn additional_signed(&self) -> Result { - Ok(()) - } - fn validate( - &self, - _: &Self::AccountId, - call: &Self::Call, - _: &DispatchInfoOf, - _: usize, - ) -> TransactionValidity { - if ValueTransferCallFilter::contains(call) { - Err(TransactionValidityError::Invalid(InvalidTransaction::Call)) - } else { - Ok(Default::default()) - } - } - fn pre_dispatch( - self, - _: &Self::AccountId, - _: &Self::Call, - _: &DispatchInfoOf, - _: usize, - ) -> Result { - Ok(()) - } -} diff --git a/runtime/vara/src/integration_tests.rs b/runtime/vara/src/integration_tests.rs index 9b1aadbc07c..fbc17eef11f 100644 --- a/runtime/vara/src/integration_tests.rs +++ b/runtime/vara/src/integration_tests.rs @@ -27,8 +27,8 @@ use sp_consensus_babe::{ Slot, BABE_ENGINE_ID, }; use sp_core::{ed25519, sr25519, Pair}; -use sp_keyring::{AccountKeyring, Sr25519Keyring}; -use sp_runtime::{traits::SignedExtension, Digest, DigestItem, MultiAddress}; +use sp_keyring::AccountKeyring; +use sp_runtime::{Digest, DigestItem}; const ENDOWMENT: u128 = 100 * UNITS; const STASH: u128 = 10 * UNITS; @@ -244,170 +244,6 @@ pub(crate) fn get_last_program_id() -> [u8; 32] { } } -#[test] -fn signed_extension_works() { - use sp_runtime::transaction_validity::{InvalidTransaction, TransactionSource}; - - init_logger(); - - let alice = AccountKeyring::Alice; - let bob = AccountKeyring::Bob; - let charlie = AccountKeyring::Charlie; - ExtBuilder::default() - .initial_authorities(vec![ - ( - alice.into(), - alice.into(), - alice.public(), - ed25519::Pair::from_string("//Alice", None) - .unwrap() - .public(), - alice.public(), - alice.public(), - ), - ( - bob.into(), - bob.into(), - bob.public(), - ed25519::Pair::from_string("//Bob", None).unwrap().public(), - bob.public(), - bob.public(), - ), - ]) - .stash(STASH) - .endowment(ENDOWMENT) - .endowed_accounts(vec![charlie.into()]) - .vested_accounts(vec![(charlie.into(), 100, 500, 10 * UNITS)]) - .build() - .execute_with(|| { - let construct_extrinsic = - |function: RuntimeCall, caller: Sr25519Keyring| -> UncheckedExtrinsic { - let extra: SignedExtra = ( - DisableValueTransfers {}, - StakingBlackList::::new(), - frame_system::CheckNonZeroSender::::new(), - frame_system::CheckSpecVersion::::new(), - frame_system::CheckTxVersion::::new(), - frame_system::CheckGenesis::::new(), - frame_system::CheckEra::::from(generic::Era::mortal(256, 0)), - frame_system::CheckNonce::::from(0), - frame_system::CheckWeight::::new(), - CustomChargeTransactionPayment::::from(0), - ); - UncheckedExtrinsic::new_signed( - function.clone(), - MultiAddress::Id(caller.public().into()), - Signature::Sr25519( - SignedPayload::from_raw( - function, - extra.clone(), - extra.additional_signed().unwrap(), - ) - .using_encoded(|e| caller.sign(e)), - ), - extra, - ) - }; - - // Balance transfer should be blocked by the signed extension - let invalid_call = construct_extrinsic( - RuntimeCall::Balances(pallet_balances::Call::transfer { - dest: MultiAddress::Id(bob.into()), - value: 10 * UNITS, - }), - alice, - ); - - // Wrapping `bond` call in a batch is also illegal - let invalid_batch = construct_extrinsic( - RuntimeCall::Utility(pallet_utility::Call::batch { - calls: vec![RuntimeCall::Balances(pallet_balances::Call::transfer { - dest: MultiAddress::Id(bob.into()), - value: 10 * UNITS, - })], - }), - alice, - ); - - let invalid_batch_all = construct_extrinsic( - RuntimeCall::Utility(pallet_utility::Call::batch_all { - calls: vec![RuntimeCall::Balances(pallet_balances::Call::transfer { - dest: MultiAddress::Id(bob.into()), - value: 10 * UNITS, - })], - }), - alice, - ); - - // Nested batches and/or other `Utility` calls shouldn't work, as well - let nested_batches = construct_extrinsic( - RuntimeCall::Utility(pallet_utility::Call::batch { - calls: vec![RuntimeCall::Utility(pallet_utility::Call::batch_all { - calls: vec![RuntimeCall::Utility(pallet_utility::Call::as_derivative { - index: 0, - call: Box::new(RuntimeCall::Balances( - pallet_balances::Call::transfer { - dest: MultiAddress::Id(bob.into()), - value: 10 * UNITS, - }, - )), - })], - })], - }), - alice, - ); - - let valid_call = - construct_extrinsic(RuntimeCall::Vesting(pallet_vesting::Call::vest {}), charlie); - - assert_eq!( - Executive::validate_transaction( - TransactionSource::External, - invalid_call, - Default::default(), - ) - .unwrap_err(), - InvalidTransaction::Call.into() - ); - - assert_eq!( - Executive::validate_transaction( - TransactionSource::External, - invalid_batch, - Default::default(), - ) - .unwrap_err(), - InvalidTransaction::Call.into() - ); - - assert_eq!( - Executive::validate_transaction( - TransactionSource::External, - invalid_batch_all, - Default::default(), - ) - .unwrap_err(), - InvalidTransaction::Call.into() - ); - - assert_eq!( - Executive::validate_transaction( - TransactionSource::External, - nested_batches, - Default::default(), - ) - .unwrap_err(), - InvalidTransaction::Call.into() - ); - - assert_ok!(Executive::validate_transaction( - TransactionSource::External, - valid_call, - Default::default(), - )); - }); -} - #[test] fn tokens_locking_works() { init_logger(); diff --git a/runtime/vara/src/lib.rs b/runtime/vara/src/lib.rs index 305b3f35228..fdaba1e9065 100644 --- a/runtime/vara/src/lib.rs +++ b/runtime/vara/src/lib.rs @@ -122,9 +122,6 @@ mod bag_thresholds; pub mod governance; use governance::{pallet_custom_origins, GeneralAdmin, Treasurer, TreasurySpender}; -mod extensions; -pub use extensions::DisableValueTransfers; - mod migrations; // By this we inject compile time version including commit hash @@ -145,7 +142,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // The version of the runtime specification. A full node will not attempt to use its native // runtime in substitute for the on-chain Wasm runtime unless all of `spec_name`, // `spec_version`, and `authoring_version` are the same between Wasm and native. - spec_version: 330, + spec_version: 340, impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 1, @@ -1248,8 +1245,6 @@ pub type Header = generic::Header; pub type Block = generic::Block; /// The SignedExtension to the basic transaction logic. pub type SignedExtra = ( - // RELEASE: remove before final release - DisableValueTransfers, // Keep as long as it's needed StakingBlackList, frame_system::CheckNonZeroSender, From 166afacc2bde04d9d3f79a32b0b94bf913d7974b Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Tue, 12 Sep 2023 18:50:18 +0400 Subject: [PATCH 07/21] test(runtime): Technical release 0.3.5 (#3255) --- runtime/gear/src/lib.rs | 2 +- runtime/vara/src/lib.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/runtime/gear/src/lib.rs b/runtime/gear/src/lib.rs index d083d09d03e..0c202c87f96 100644 --- a/runtime/gear/src/lib.rs +++ b/runtime/gear/src/lib.rs @@ -124,7 +124,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { impl_name: create_runtime_str!("gear"), apis: RUNTIME_API_VERSIONS, authoring_version: 1, - spec_version: 340, + spec_version: 350, impl_version: 1, transaction_version: 1, state_version: 1, diff --git a/runtime/vara/src/lib.rs b/runtime/vara/src/lib.rs index fdaba1e9065..ef160ec8e5e 100644 --- a/runtime/vara/src/lib.rs +++ b/runtime/vara/src/lib.rs @@ -142,7 +142,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // The version of the runtime specification. A full node will not attempt to use its native // runtime in substitute for the on-chain Wasm runtime unless all of `spec_name`, // `spec_version`, and `authoring_version` are the same between Wasm and native. - spec_version: 340, + spec_version: 350, impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 1, From 4e263f0d0717f512224f1c456a3f6805d95ad573 Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Tue, 12 Sep 2023 20:53:09 +0400 Subject: [PATCH 08/21] test(runtime): Technical release 0.3.6 (#3257) --- runtime/gear/src/lib.rs | 2 +- runtime/vara/src/lib.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/runtime/gear/src/lib.rs b/runtime/gear/src/lib.rs index 0c202c87f96..16168baefca 100644 --- a/runtime/gear/src/lib.rs +++ b/runtime/gear/src/lib.rs @@ -124,7 +124,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { impl_name: create_runtime_str!("gear"), apis: RUNTIME_API_VERSIONS, authoring_version: 1, - spec_version: 350, + spec_version: 360, impl_version: 1, transaction_version: 1, state_version: 1, diff --git a/runtime/vara/src/lib.rs b/runtime/vara/src/lib.rs index ef160ec8e5e..f175c6d9125 100644 --- a/runtime/vara/src/lib.rs +++ b/runtime/vara/src/lib.rs @@ -142,7 +142,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // The version of the runtime specification. A full node will not attempt to use its native // runtime in substitute for the on-chain Wasm runtime unless all of `spec_name`, // `spec_version`, and `authoring_version` are the same between Wasm and native. - spec_version: 350, + spec_version: 360, impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 1, From 44d16ffd2275cfe2052ca23e77ebaf172841230f Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Fri, 15 Sep 2023 16:49:28 +0400 Subject: [PATCH 09/21] chore(v1.0.0): Versions (#3263) --- Cargo.lock | 76 ++++++++++++------------- Cargo.toml | 16 +++--- lazy-pages/Cargo.toml | 8 +-- node/authorship/Cargo.toml | 7 +-- node/cli/Cargo.toml | 3 + node/service/Cargo.toml | 7 +-- node/testing/Cargo.toml | 7 +-- pallets/gas/Cargo.toml | 12 ++-- pallets/gear-bank/Cargo.toml | 4 +- pallets/gear-debug/Cargo.toml | 11 ++-- pallets/gear-messenger/Cargo.toml | 12 ++-- pallets/gear-program/Cargo.toml | 12 ++-- pallets/gear-scheduler/Cargo.toml | 12 ++-- pallets/gear-voucher/Cargo.toml | 12 ++-- pallets/gear/Cargo.toml | 14 ++--- pallets/gear/proc-macro/Cargo.toml | 12 ++-- pallets/gear/rpc/Cargo.toml | 6 +- pallets/gear/rpc/runtime-api/Cargo.toml | 10 ++-- pallets/payment/Cargo.toml | 11 ++-- pallets/staking-rewards/Cargo.toml | 12 ++-- runtime-interface/Cargo.toml | 8 +-- runtime/common/Cargo.toml | 6 +- runtime/gear/Cargo.toml | 8 +-- runtime/gear/src/lib.rs | 2 +- runtime/primitives/Cargo.toml | 8 +-- runtime/vara/Cargo.toml | 8 +-- runtime/vara/src/lib.rs | 2 +- 27 files changed, 153 insertions(+), 153 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2500a3e11f1..32ac68ad265 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3631,14 +3631,14 @@ dependencies = [ [[package]] name = "galloc" -version = "0.3.4" +version = "1.0.0" dependencies = [ "dlmalloc", ] [[package]] name = "gcli" -version = "0.3.4" +version = "1.0.0" dependencies = [ "anyhow", "base64 0.21.3", @@ -3677,7 +3677,7 @@ dependencies = [ [[package]] name = "gclient" -version = "0.3.4" +version = "1.0.0" dependencies = [ "anyhow", "async-trait", @@ -3721,7 +3721,7 @@ dependencies = [ [[package]] name = "gcore" -version = "0.3.4" +version = "1.0.0" dependencies = [ "galloc", "gear-core-errors", @@ -3734,7 +3734,7 @@ dependencies = [ [[package]] name = "gear-authorship" -version = "0.1.0" +version = "1.0.0" dependencies = [ "demo-mul-by-const", "env_logger", @@ -3776,7 +3776,7 @@ dependencies = [ [[package]] name = "gear-backend-codegen" -version = "0.3.4" +version = "1.0.0" dependencies = [ "proc-macro2", "quote", @@ -3785,7 +3785,7 @@ dependencies = [ [[package]] name = "gear-backend-common" -version = "0.3.4" +version = "1.0.0" dependencies = [ "actor-system-error", "blake2-rfc", @@ -3844,7 +3844,7 @@ dependencies = [ [[package]] name = "gear-cli" -version = "0.3.4" +version = "1.0.0" dependencies = [ "clap 4.4.2", "frame-benchmarking", @@ -3878,7 +3878,7 @@ dependencies = [ [[package]] name = "gear-common" -version = "0.3.4" +version = "1.0.0" dependencies = [ "derive_more", "enum-iterator 1.4.1", @@ -3906,7 +3906,7 @@ dependencies = [ [[package]] name = "gear-common-codegen" -version = "0.3.4" +version = "1.0.0" dependencies = [ "quote", "syn 2.0.31", @@ -3914,7 +3914,7 @@ dependencies = [ [[package]] name = "gear-core" -version = "0.3.4" +version = "1.0.0" dependencies = [ "blake2-rfc", "byteorder", @@ -3936,7 +3936,7 @@ dependencies = [ [[package]] name = "gear-core-errors" -version = "0.3.4" +version = "1.0.0" dependencies = [ "derive_more", "enum-iterator 1.4.1", @@ -3945,7 +3945,7 @@ dependencies = [ [[package]] name = "gear-core-processor" -version = "0.3.4" +version = "1.0.0" dependencies = [ "actor-system-error", "derive_more", @@ -3963,7 +3963,7 @@ dependencies = [ [[package]] name = "gear-lazy-pages" -version = "0.1.0" +version = "1.0.0" dependencies = [ "cfg-if", "derive_more", @@ -4003,7 +4003,7 @@ dependencies = [ [[package]] name = "gear-node-loader" -version = "0.3.4" +version = "1.0.0" dependencies = [ "anyhow", "arbitrary", @@ -4035,7 +4035,7 @@ dependencies = [ [[package]] name = "gear-node-testing" -version = "0.1.0" +version = "1.0.0" dependencies = [ "frame-benchmarking", "frame-support", @@ -4103,7 +4103,7 @@ dependencies = [ [[package]] name = "gear-runtime" -version = "0.1.0" +version = "1.0.0" dependencies = [ "const-str", "frame-benchmarking", @@ -4163,7 +4163,7 @@ dependencies = [ [[package]] name = "gear-runtime-common" -version = "0.1.0" +version = "1.0.0" dependencies = [ "frame-benchmarking", "frame-support", @@ -4189,7 +4189,7 @@ dependencies = [ [[package]] name = "gear-runtime-interface" -version = "0.1.0" +version = "1.0.0" dependencies = [ "byteorder", "derive_more", @@ -4211,7 +4211,7 @@ dependencies = [ [[package]] name = "gear-runtime-primitives" -version = "0.1.0" +version = "1.0.0" dependencies = [ "sp-core 7.0.0 (git+https://github.com/gear-tech/substrate.git?branch=gear-polkadot-v0.9.41-canary-no-sandbox)", "sp-runtime 7.0.0 (git+https://github.com/gear-tech/substrate.git?branch=gear-polkadot-v0.9.41-canary-no-sandbox)", @@ -4264,7 +4264,7 @@ dependencies = [ [[package]] name = "gear-service" -version = "0.1.0" +version = "1.0.0" dependencies = [ "frame-benchmarking", "frame-benchmarking-cli", @@ -4343,7 +4343,7 @@ dependencies = [ [[package]] name = "gear-stack-buffer" -version = "0.3.4" +version = "1.0.0" dependencies = [ "cc", ] @@ -4436,7 +4436,7 @@ dependencies = [ [[package]] name = "gear-wasm-instrument" -version = "0.3.4" +version = "1.0.0" dependencies = [ "enum-iterator 1.4.1", "gear-backend-common", @@ -4606,7 +4606,7 @@ dependencies = [ [[package]] name = "gmeta" -version = "0.3.4" +version = "1.0.0" dependencies = [ "blake2-rfc", "derive_more", @@ -4620,7 +4620,7 @@ dependencies = [ [[package]] name = "gmeta-codegen" -version = "0.3.4" +version = "1.0.0" dependencies = [ "gmeta", "gstd", @@ -4644,7 +4644,7 @@ dependencies = [ [[package]] name = "gsdk" -version = "0.3.4" +version = "1.0.0" dependencies = [ "anyhow", "base64 0.21.3", @@ -4695,7 +4695,7 @@ dependencies = [ [[package]] name = "gsdk-codegen" -version = "0.3.4" +version = "1.0.0" dependencies = [ "proc-macro2", "quote", @@ -4704,7 +4704,7 @@ dependencies = [ [[package]] name = "gstd" -version = "0.3.4" +version = "1.0.0" dependencies = [ "bs58", "futures", @@ -4733,7 +4733,7 @@ dependencies = [ [[package]] name = "gsys" -version = "0.3.4" +version = "1.0.0" [[package]] name = "gtest" @@ -7330,7 +7330,7 @@ dependencies = [ [[package]] name = "pallet-gear" -version = "2.0.0" +version = "1.0.0" dependencies = [ "blake2-rfc", "demo-async", @@ -7446,7 +7446,7 @@ dependencies = [ [[package]] name = "pallet-gear-debug" -version = "2.0.0" +version = "1.0.0" dependencies = [ "demo-vec", "env_logger", @@ -7483,7 +7483,7 @@ dependencies = [ [[package]] name = "pallet-gear-gas" -version = "2.0.0" +version = "1.0.0" dependencies = [ "env_logger", "frame-benchmarking", @@ -7536,7 +7536,7 @@ dependencies = [ [[package]] name = "pallet-gear-payment" -version = "0.1.0" +version = "1.0.0" dependencies = [ "env_logger", "frame-benchmarking", @@ -7570,7 +7570,7 @@ dependencies = [ [[package]] name = "pallet-gear-proc-macro" -version = "2.0.0" +version = "1.0.0" dependencies = [ "proc-macro2", "quote", @@ -7579,7 +7579,7 @@ dependencies = [ [[package]] name = "pallet-gear-program" -version = "2.0.0" +version = "1.0.0" dependencies = [ "frame-support", "frame-system", @@ -7604,7 +7604,7 @@ dependencies = [ [[package]] name = "pallet-gear-rpc" -version = "2.0.0" +version = "1.0.0" dependencies = [ "gear-common", "gear-core", @@ -7620,7 +7620,7 @@ dependencies = [ [[package]] name = "pallet-gear-rpc-runtime-api" -version = "2.0.0" +version = "1.0.0" dependencies = [ "pallet-gear", "sp-api", @@ -13492,7 +13492,7 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "vara-runtime" -version = "0.1.0" +version = "1.0.0" dependencies = [ "const-str", "env_logger", diff --git a/Cargo.toml b/Cargo.toml index 6dbd8172a62..f3d587003ee 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,9 +1,9 @@ [workspace.package] -version = "0.3.4" +version = "1.0.0" authors = ["Gear Technologies"] edition = "2021" license = "GPL-3.0" -homepage = "https://www.gear-tech.io" +homepage = "https://gear-tech.io" repository = "https://github.com/gear-tech/gear" [workspace] @@ -226,16 +226,16 @@ pallet-gear = { path = "pallets/gear", default-features = false } pallet-gear-debug = { path = "pallets/gear-debug", default-features = false } pallet-gear-gas = { path = "pallets/gas", default-features = false } pallet-gear-messenger = { path = "pallets/gear-messenger", default-features = false } -pallet-gear-payment = { version = "0.1.0", path = "pallets/payment", default-features = false } +pallet-gear-payment = { path = "pallets/payment", default-features = false } pallet-gear-program = { path = "pallets/gear-program", default-features = false } pallet-gear-rpc = { path = "pallets/gear/rpc" } -pallet-gear-rpc-runtime-api = { version = "2.0.0", path = "pallets/gear/rpc/runtime-api", default-features = false } +pallet-gear-rpc-runtime-api = { path = "pallets/gear/rpc/runtime-api", default-features = false } pallet-gear-scheduler = { path = "pallets/gear-scheduler", default-features = false } -pallet-gear-staking-rewards = { version = "1.0.0", path = "pallets/staking-rewards", default-features = false } -pallet-gear-voucher = { version = "1.0.0", path = "pallets/gear-voucher", default-features = false } -pallet-gear-bank = { version = "1.0.0", path = "pallets/gear-bank", default-features = false } +pallet-gear-staking-rewards = { path = "pallets/staking-rewards", default-features = false } +pallet-gear-voucher = { path = "pallets/gear-voucher", default-features = false } +pallet-gear-bank = { path = "pallets/gear-bank", default-features = false } runtime-common = { package = "gear-runtime-common", path = "runtime/common", default-features = false } -runtime-primitives = { package = "gear-runtime-primitives", path = "runtime/primitives", version = "0.1.0", default-features = false } +runtime-primitives = { package = "gear-runtime-primitives", path = "runtime/primitives", default-features = false } service = { package = "gear-service", path = "node/service", default-features = false } testing = { package = "gear-node-testing", path = "node/testing" } vara-runtime = { path = "runtime/vara" } diff --git a/lazy-pages/Cargo.toml b/lazy-pages/Cargo.toml index a088e0b9a48..56510ab1ed5 100644 --- a/lazy-pages/Cargo.toml +++ b/lazy-pages/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "gear-lazy-pages" -version = "0.1.0" -authors.workspace = true description = "Gear lazy-pages support" +version.workspace = true +authors.workspace = true edition.workspace = true license.workspace = true -homepage = "https://gear-tech.io" -repository = "https://github.com/gear-tech/gear" +homepage.workspace = true +repository.workspace = true [dependencies] log = { workspace = true, features = ["std"] } diff --git a/node/authorship/Cargo.toml b/node/authorship/Cargo.toml index a445c9d5f08..9c9633d0ce9 100644 --- a/node/authorship/Cargo.toml +++ b/node/authorship/Cargo.toml @@ -1,12 +1,11 @@ [package] name = "gear-authorship" -version = "0.1.0" +version.workspace = true authors.workspace = true -description = "Gear Node" edition.workspace = true license.workspace = true -homepage = "https://gear-tech.io" -repository = "https://github.com/gear-tech/gear" +homepage.workspace = true +repository.workspace = true [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] diff --git a/node/cli/Cargo.toml b/node/cli/Cargo.toml index 21fe8615206..022e3f13c0c 100644 --- a/node/cli/Cargo.toml +++ b/node/cli/Cargo.toml @@ -3,6 +3,9 @@ name = "gear-cli" version.workspace = true authors.workspace = true edition.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] diff --git a/node/service/Cargo.toml b/node/service/Cargo.toml index a51975375cb..8a7149183bc 100644 --- a/node/service/Cargo.toml +++ b/node/service/Cargo.toml @@ -1,12 +1,11 @@ [package] name = "gear-service" -version = "0.1.0" +version.workspace = true authors.workspace = true -description = "Gear Node" edition.workspace = true license.workspace = true -homepage = "https://gear-tech.io" -repository = "https://github.com/gear-tech/gear" +homepage.workspace = true +repository.workspace = true [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] diff --git a/node/testing/Cargo.toml b/node/testing/Cargo.toml index c3d823d90e9..807793fdf89 100644 --- a/node/testing/Cargo.toml +++ b/node/testing/Cargo.toml @@ -1,12 +1,11 @@ [package] name = "gear-node-testing" -version = "0.1.0" +version.workspace = true authors.workspace = true -description = "Gear Node" edition.workspace = true license.workspace = true -homepage = "https://gear-tech.io" -repository = "https://github.com/gear-tech/gear" +homepage.workspace = true +repository.workspace = true [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] diff --git a/pallets/gas/Cargo.toml b/pallets/gas/Cargo.toml index 765924dc01c..2d78fad78e2 100644 --- a/pallets/gas/Cargo.toml +++ b/pallets/gas/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "pallet-gear-gas" -version = "2.0.0" -authors = ['Gear Technologies'] -edition = '2021' -license.workspace = true -homepage = "https://gear-tech.io" -repository = "https://github.com/gear-tech/gear" description = "Gear gas pallet" +version.workspace = true +authors.workspace = true +edition.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true readme = "README.md" [package.metadata.docs.rs] diff --git a/pallets/gear-bank/Cargo.toml b/pallets/gear-bank/Cargo.toml index 0872ba22114..7075b18ace2 100644 --- a/pallets/gear-bank/Cargo.toml +++ b/pallets/gear-bank/Cargo.toml @@ -1,9 +1,11 @@ [package] name = "pallet-gear-bank" -version = "1.0.0" +version.workspace = true authors.workspace = true edition.workspace = true license.workspace = true +homepage.workspace = true +repository.workspace = true [dependencies] parity-scale-codec = { workspace = true, features = ["derive"] } diff --git a/pallets/gear-debug/Cargo.toml b/pallets/gear-debug/Cargo.toml index b50cc788401..f4d0e4c3294 100644 --- a/pallets/gear-debug/Cargo.toml +++ b/pallets/gear-debug/Cargo.toml @@ -1,12 +1,11 @@ [package] name = "pallet-gear-debug" -version = "2.0.0" -authors = ['Gear Technologies'] -edition = '2021' +version.workspace = true +authors.workspace = true +edition.workspace = true license.workspace = true -homepage = "https://gear-tech.io" -repository = "https://github.com/gear-tech/gear" -description = "Gear main pallet" +homepage.workspace = true +repository.workspace = true readme = "README.md" [package.metadata.docs.rs] diff --git a/pallets/gear-messenger/Cargo.toml b/pallets/gear-messenger/Cargo.toml index ba69981ea20..8037b76a09f 100644 --- a/pallets/gear-messenger/Cargo.toml +++ b/pallets/gear-messenger/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "pallet-gear-messenger" -version = "1.0.0" -authors = ['Gear Technologies'] -edition = '2021' -license.workspace = true -homepage = "https://gear-tech.io" -repository = "https://github.com/gear-tech/gear" description = "Gear pallet to work with messages" +version.workspace = true +authors.workspace = true +edition.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true readme = "README.md" [package.metadata.docs.rs] diff --git a/pallets/gear-program/Cargo.toml b/pallets/gear-program/Cargo.toml index e66e32b9fa3..0dd3e2653b9 100644 --- a/pallets/gear-program/Cargo.toml +++ b/pallets/gear-program/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "pallet-gear-program" -version = "2.0.0" -authors = ['Gear Technologies'] -edition = '2021' -license.workspace = true -homepage = "https://gear-tech.io" -repository = "https://github.com/gear-tech/gear" description = "Gear pallet to work with programs" +version.workspace = true +authors.workspace = true +edition.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true readme = "README.md" [package.metadata.docs.rs] diff --git a/pallets/gear-scheduler/Cargo.toml b/pallets/gear-scheduler/Cargo.toml index 58b1be5353f..b8d9a29ccb6 100644 --- a/pallets/gear-scheduler/Cargo.toml +++ b/pallets/gear-scheduler/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "pallet-gear-scheduler" -version = "1.0.0" -authors = ['Gear Technologies'] -edition = '2021' -license.workspace = true -homepage = "https://gear-tech.io" -repository = "https://github.com/gear-tech/gear" description = "Gear pallet to work with delayed tasks" +version.workspace = true +authors.workspace = true +edition.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true readme = "README.md" [package.metadata.docs.rs] diff --git a/pallets/gear-voucher/Cargo.toml b/pallets/gear-voucher/Cargo.toml index 7243aba712f..95a87591564 100644 --- a/pallets/gear-voucher/Cargo.toml +++ b/pallets/gear-voucher/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "pallet-gear-voucher" -version = "1.0.0" -authors = ['Gear Technologies'] -edition = '2021' -license.workspace = true -homepage = "https://gear-tech.io" -repository = "https://github.com/gear-tech/gear" description = "Gear pallet implementing payment-voucher like functionality" +version.workspace = true +authors.workspace = true +edition.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true readme = "README.md" [package.metadata.docs.rs] diff --git a/pallets/gear/Cargo.toml b/pallets/gear/Cargo.toml index efcf988b0a5..8dc26661bee 100644 --- a/pallets/gear/Cargo.toml +++ b/pallets/gear/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "pallet-gear" -version = "2.0.0" -authors = ['Gear Technologies'] -edition = '2021' -license.workspace = true -homepage = "https://gear-tech.io" -repository = "https://github.com/gear-tech/gear" description = "Gear main pallet" +version.workspace = true +authors.workspace = true +edition.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true readme = "README.md" [package.metadata.docs.rs] @@ -32,7 +32,7 @@ gear-core.workspace = true gear-core-errors.workspace = true gear-backend-common.workspace = true gear-backend-sandbox.workspace = true -pallet-gear-proc-macro = { version = "2.0.0", path = "proc-macro" } +pallet-gear-proc-macro = { path = "proc-macro" } gsys = { workspace = true, optional = true } pallet-gear-voucher.workspace = true pallet-gear-bank.workspace = true diff --git a/pallets/gear/proc-macro/Cargo.toml b/pallets/gear/proc-macro/Cargo.toml index b325315e902..8100f907371 100644 --- a/pallets/gear/proc-macro/Cargo.toml +++ b/pallets/gear/proc-macro/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "pallet-gear-proc-macro" -version = "2.0.0" -authors = ['Gear Technologies'] -edition = '2021' -license.workspace = true -homepage = "https://gear-tech.io" -repository = "https://github.com/gear-tech/gear" description = "Procedural macros used in pallet_gear" +version.workspace = true +authors.workspace = true +edition.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] diff --git a/pallets/gear/rpc/Cargo.toml b/pallets/gear/rpc/Cargo.toml index 47e51e985f9..366c3bb3a48 100644 --- a/pallets/gear/rpc/Cargo.toml +++ b/pallets/gear/rpc/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "pallet-gear-rpc" -version = "2.0.0" +version.workspace = true authors.workspace = true edition.workspace = true license.workspace = true -homepage = "https://gear-tech.io" -repository = "https://github.com/gear-tech/gear" +homepage.workspace = true +repository.workspace = true [dependencies] jsonrpsee = { workspace = true, features = ["server", "macros"] } diff --git a/pallets/gear/rpc/runtime-api/Cargo.toml b/pallets/gear/rpc/runtime-api/Cargo.toml index b4f28c1c773..252dc9e5d8e 100644 --- a/pallets/gear/rpc/runtime-api/Cargo.toml +++ b/pallets/gear/rpc/runtime-api/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "pallet-gear-rpc-runtime-api" -version = "2.0.0" -authors = ['Gear Technologies'] -edition = '2021' +version.workspace = true +authors.workspace = true +edition.workspace = true license.workspace = true -homepage = "https://gear-tech.io" -repository = "https://github.com/gear-tech/gear" +homepage.workspace = true +repository.workspace = true [dependencies] sp-api.workspace = true diff --git a/pallets/payment/Cargo.toml b/pallets/payment/Cargo.toml index bb6f5903037..93c809367f0 100644 --- a/pallets/payment/Cargo.toml +++ b/pallets/payment/Cargo.toml @@ -1,12 +1,11 @@ [package] name = "pallet-gear-payment" -version = "0.1.0" -authors = ['Gear Technologies'] -edition = '2021' +version.workspace = true +authors.workspace = true +edition.workspace = true license.workspace = true -homepage = "https://gear-tech.io" -repository = "https://github.com/gear-tech/gear" -description = "Gear main pallet" +homepage.workspace = true +repository.workspace = true readme = "README.md" [package.metadata.docs.rs] diff --git a/pallets/staking-rewards/Cargo.toml b/pallets/staking-rewards/Cargo.toml index db9f816b402..567659a9853 100644 --- a/pallets/staking-rewards/Cargo.toml +++ b/pallets/staking-rewards/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "pallet-gear-staking-rewards" -version = "1.0.0" -authors = ['Gear Technologies'] -edition = '2021' -license.workspace = true -homepage = "https://gear-tech.io" -repository = "https://github.com/gear-tech/gear" description = "Gear tokenomics implementation" +version.workspace = true +authors.workspace = true +edition.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true readme = "README.md" [package.metadata.docs.rs] diff --git a/runtime-interface/Cargo.toml b/runtime-interface/Cargo.toml index 15b023165b2..f2dd78dbb68 100644 --- a/runtime-interface/Cargo.toml +++ b/runtime-interface/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "gear-runtime-interface" -version = "0.1.0" -authors.workspace = true description = "Gear Runtime Interface" +version.workspace = true +authors.workspace = true edition.workspace = true license.workspace = true -homepage = "https://gear-tech.io" -repository = "https://github.com/gear-tech/gear" +homepage.workspace = true +repository.workspace = true [dependencies] gear-core.workspace = true diff --git a/runtime/common/Cargo.toml b/runtime/common/Cargo.toml index ab712a38152..b673f851b3d 100644 --- a/runtime/common/Cargo.toml +++ b/runtime/common/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "gear-runtime-common" -version = "0.1.0" +version.workspace = true authors.workspace = true edition.workspace = true license.workspace = true -homepage = "https://gear-tech.io" -repository = "https://github.com/gear-tech/gear" +homepage.workspace = true +repository.workspace = true [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] diff --git a/runtime/gear/Cargo.toml b/runtime/gear/Cargo.toml index 00cf7a60141..005773f2bed 100644 --- a/runtime/gear/Cargo.toml +++ b/runtime/gear/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "gear-runtime" -version = "0.1.0" +version.workspace = true authors.workspace = true edition.workspace = true -build = "build.rs" license.workspace = true -homepage = "https://gear-tech.io" -repository = "https://github.com/gear-tech/gear" +homepage.workspace = true +repository.workspace = true +build = "build.rs" [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] diff --git a/runtime/gear/src/lib.rs b/runtime/gear/src/lib.rs index 16168baefca..e7ed11281e6 100644 --- a/runtime/gear/src/lib.rs +++ b/runtime/gear/src/lib.rs @@ -124,7 +124,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { impl_name: create_runtime_str!("gear"), apis: RUNTIME_API_VERSIONS, authoring_version: 1, - spec_version: 360, + spec_version: 1000, impl_version: 1, transaction_version: 1, state_version: 1, diff --git a/runtime/primitives/Cargo.toml b/runtime/primitives/Cargo.toml index 420c73e1de6..a4589cb002f 100644 --- a/runtime/primitives/Cargo.toml +++ b/runtime/primitives/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "gear-runtime-primitives" -version = "0.1.0" -authors.workspace = true description = "Gear Runtime primitives" +version.workspace = true +authors.workspace = true edition.workspace = true license.workspace = true -homepage = "https://gear-tech.io" -repository = "https://github.com/gear-tech/gear" +homepage.workspace = true +repository.workspace = true [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] diff --git a/runtime/vara/Cargo.toml b/runtime/vara/Cargo.toml index 99fa7782b58..fa91b85ef26 100644 --- a/runtime/vara/Cargo.toml +++ b/runtime/vara/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "vara-runtime" -version = "0.1.0" +version.workspace = true authors.workspace = true edition.workspace = true -build = "build.rs" license.workspace = true -homepage = "https://gear-tech.io" -repository = "https://github.com/gear-tech/gear" +homepage.workspace = true +repository.workspace = true +build = "build.rs" [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] diff --git a/runtime/vara/src/lib.rs b/runtime/vara/src/lib.rs index f175c6d9125..cf6de126ae5 100644 --- a/runtime/vara/src/lib.rs +++ b/runtime/vara/src/lib.rs @@ -142,7 +142,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // The version of the runtime specification. A full node will not attempt to use its native // runtime in substitute for the on-chain Wasm runtime unless all of `spec_name`, // `spec_version`, and `authoring_version` are the same between Wasm and native. - spec_version: 360, + spec_version: 1000, impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 1, From b9641da7d532727296ef0819b8053d8eceff0555 Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Fri, 15 Sep 2023 19:20:49 +0400 Subject: [PATCH 10/21] chore(v1.0.0): Clean up and constants fix (#3265) --- node/service/src/chain_spec/vara.rs | 6 +- node/testing/src/genesis.rs | 44 ++-- pallets/gas/src/lib.rs | 2 - pallets/gas/src/migrations.rs | 243 ---------------------- pallets/staking-rewards/src/mock.rs | 7 +- runtime/gear/src/constants.rs | 2 + runtime/gear/src/migrations.rs | 2 +- runtime/vara/src/constants.rs | 16 +- runtime/vara/src/governance/fellowship.rs | 22 +- runtime/vara/src/governance/mod.rs | 2 +- runtime/vara/src/governance/tracks.rs | 26 +-- runtime/vara/src/lib.rs | 34 +-- runtime/vara/src/migrations.rs | 2 +- 13 files changed, 86 insertions(+), 322 deletions(-) delete mode 100644 pallets/gas/src/migrations.rs diff --git a/node/service/src/chain_spec/vara.rs b/node/service/src/chain_spec/vara.rs index b6522ae114a..3122e7326d8 100644 --- a/node/service/src/chain_spec/vara.rs +++ b/node/service/src/chain_spec/vara.rs @@ -28,7 +28,7 @@ use sp_consensus_grandpa::AuthorityId as GrandpaId; use sp_core::{crypto::UncheckedInto, sr25519}; use sp_runtime::{Perbill, Perquintill}; use vara_runtime::{ - constants::currency::{DOLLARS, EXISTENTIAL_DEPOSIT, UNITS as TOKEN}, + constants::currency::{ECONOMIC_UNITS, EXISTENTIAL_DEPOSIT, UNITS as TOKEN}, AuthorityDiscoveryConfig, BabeConfig, BalancesConfig, GenesisConfig, GrandpaConfig, ImOnlineConfig, NominationPoolsConfig, SessionConfig, SessionKeys, StakerStatus, StakingConfig, StakingRewardsConfig, SudoConfig, SystemConfig, VestingConfig, WASM_BINARY, @@ -617,8 +617,8 @@ fn testnet_genesis( transaction_payment: Default::default(), treasury: Default::default(), nomination_pools: NominationPoolsConfig { - min_create_bond: 10 * DOLLARS, - min_join_bond: DOLLARS, + min_create_bond: 10 * ECONOMIC_UNITS, + min_join_bond: ECONOMIC_UNITS, ..Default::default() }, vesting: VestingConfig { vesting: vec![] }, diff --git a/node/testing/src/genesis.rs b/node/testing/src/genesis.rs index f5a63aa4629..019e3f93948 100644 --- a/node/testing/src/genesis.rs +++ b/node/testing/src/genesis.rs @@ -49,18 +49,18 @@ pub fn genesis_config(code: Option<&[u8]>) -> GenesisConfig { #[cfg(feature = "vara-native")] pub fn config_endowed(code: Option<&[u8]>, extra_endowed: Vec) -> GenesisConfig { let mut endowed = vec![ - (alice(), 111 * DOLLARS), - (bob(), 100 * DOLLARS), - (charlie(), 100_000_000 * DOLLARS), - (dave(), 111 * DOLLARS), - (eve(), 101 * DOLLARS), - (ferdie(), 100 * DOLLARS), + (alice(), 111 * ECONOMIC_UNITS), + (bob(), 100 * ECONOMIC_UNITS), + (charlie(), 100_000_000 * ECONOMIC_UNITS), + (dave(), 111 * ECONOMIC_UNITS), + (eve(), 101 * ECONOMIC_UNITS), + (ferdie(), 100 * ECONOMIC_UNITS), ]; endowed.extend( extra_endowed .into_iter() - .map(|endowed| (endowed, 100 * DOLLARS)), + .map(|endowed| (endowed, 100 * ECONOMIC_UNITS)), ); GenesisConfig { @@ -98,9 +98,19 @@ pub fn config_endowed(code: Option<&[u8]>, extra_endowed: Vec) -> Gen }, staking: StakingConfig { stakers: vec![ - (dave(), alice(), 111 * DOLLARS, StakerStatus::Validator), - (eve(), bob(), 100 * DOLLARS, StakerStatus::Validator), - (ferdie(), charlie(), 100 * DOLLARS, StakerStatus::Validator), + ( + dave(), + alice(), + 111 * ECONOMIC_UNITS, + StakerStatus::Validator, + ), + (eve(), bob(), 100 * ECONOMIC_UNITS, StakerStatus::Validator), + ( + ferdie(), + charlie(), + 100 * ECONOMIC_UNITS, + StakerStatus::Validator, + ), ], validator_count: 3, minimum_validator_count: 3, @@ -128,18 +138,18 @@ pub fn config_endowed(code: Option<&[u8]>, extra_endowed: Vec) -> Gen #[cfg(all(not(feature = "vara-native"), feature = "gear-native"))] pub fn config_endowed(code: Option<&[u8]>, extra_endowed: Vec) -> GenesisConfig { let mut endowed = vec![ - (alice(), 111 * DOLLARS), - (bob(), 100 * DOLLARS), - (charlie(), 100_000_000 * DOLLARS), - (dave(), 111 * DOLLARS), - (eve(), 101 * DOLLARS), - (ferdie(), 100 * DOLLARS), + (alice(), 111 * ECONOMIC_UNITS), + (bob(), 100 * ECONOMIC_UNITS), + (charlie(), 100_000_000 * ECONOMIC_UNITS), + (dave(), 111 * ECONOMIC_UNITS), + (eve(), 101 * ECONOMIC_UNITS), + (ferdie(), 100 * ECONOMIC_UNITS), ]; endowed.extend( extra_endowed .into_iter() - .map(|endowed| (endowed, 100 * DOLLARS)), + .map(|endowed| (endowed, 100 * ECONOMIC_UNITS)), ); GenesisConfig { diff --git a/pallets/gas/src/lib.rs b/pallets/gas/src/lib.rs index 24d49b20d33..db681e5ca60 100644 --- a/pallets/gas/src/lib.rs +++ b/pallets/gas/src/lib.rs @@ -139,8 +139,6 @@ mod mock; #[cfg(test)] mod tests; -pub mod migrations; - type BlockGasLimitOf = ::BlockGasLimit; type AccountIdOf = ::AccountId; diff --git a/pallets/gas/src/migrations.rs b/pallets/gas/src/migrations.rs deleted file mode 100644 index 8ade4e216c1..00000000000 --- a/pallets/gas/src/migrations.rs +++ /dev/null @@ -1,243 +0,0 @@ -use crate::{Config, Error, Key, NodeOf, Pallet, Weight}; -use common::GasMultiplier; -use core::marker::PhantomData; -use frame_support::{ - dispatch::GetStorageVersion, - traits::{Get, OnRuntimeUpgrade}, -}; -#[cfg(feature = "try-runtime")] -use sp_std::vec::Vec; - -const MULTIPLIER: GasMultiplier = GasMultiplier::ValuePerGas(1_000); - -pub struct MigrateToV3(PhantomData); - -impl OnRuntimeUpgrade for MigrateToV3 { - #[cfg(feature = "try-runtime")] - fn pre_upgrade() -> Result, &'static str> { - use parity_scale_codec::Encode as _; - - let version = >::on_chain_storage_version(); - - Ok(version.encode()) - } - - fn on_runtime_upgrade() -> Weight { - let onchain = Pallet::::on_chain_storage_version(); - let current = Pallet::::current_storage_version(); - - if current != 3 || onchain != 2 { - log::info!("❌ Migrations of `pallet-gear-gas` to V3 are outdated"); - - return T::DbWeight::get().reads(1); - } - - log::info!("🚚 Running migrations to version {current:?} from version {onchain:?}"); - - let mut writes = 0u64; - - crate::GasNodes::::translate::, _>(|key, value| { - writes += 1; - translate::(key, value) - .map_err(|e| { - log::error!("Error translating {key:?} node: {e:?})"); - e - }) - .ok() - }); - - log::info!("Upgraded {writes:?} gas nodes"); - - current.put::>(); - - T::DbWeight::get().reads_writes(1, writes + 1) - } - - #[cfg(feature = "try-runtime")] - fn post_upgrade(state: Vec) -> Result<(), &'static str> { - use frame_support::traits::StorageVersion; - use parity_scale_codec::Decode; - - let previous: StorageVersion = - Decode::decode(&mut state.as_ref()).map_err(|_| "Cannot decode version")?; - - if previous == 2 { - let onchain = Pallet::::on_chain_storage_version(); - - assert_ne!(previous, onchain, "Must have upgraded from version 2 to 3"); - - log::info!("Storage `pallet-gear-gas` successfully migrated to V3"); - } else { - log::info!("Storage `pallet-gear-gas` was already migrated to V3"); - } - - Ok(()) - } -} - -fn translate(node_key: Key, node: v2::GasNode) -> Result, Error> { - log::info!("Translating {node_key:?} node"); - - let new_node = match node { - v2::GasNode::::Cut { id, value, lock } => NodeOf::::Cut { - id, - multiplier: MULTIPLIER, - value, - lock, - }, - v2::GasNode::::External { - id, - value, - lock, - system_reserve, - refs, - consumed, - deposit, - } => NodeOf::::External { - id, - multiplier: MULTIPLIER, - value, - lock, - system_reserve, - refs, - consumed, - deposit, - }, - v2::GasNode::::Reserved { - id, - value, - lock, - refs, - consumed, - } => NodeOf::::Reserved { - id, - multiplier: MULTIPLIER, - value, - lock, - refs, - consumed, - }, - v2::GasNode::::SpecifiedLocal { - parent, - value, - lock, - system_reserve, - refs, - consumed, - } => NodeOf::::SpecifiedLocal { - parent, - root: v2::root(node_key, node)?, - value, - lock, - system_reserve, - refs, - consumed, - }, - v2::GasNode::::UnspecifiedLocal { - parent, - lock, - system_reserve, - } => NodeOf::::UnspecifiedLocal { - parent, - root: v2::root(node_key, node)?, - lock, - system_reserve, - }, - }; - - Ok(new_node) -} - -mod v2 { - use crate::{AccountIdOf, Balance, Config, Error, Key, Pallet}; - use common::gas_provider::{ChildrenRefs, GasNodeId, NodeLock}; - use core::marker::PhantomData; - use frame_support::{ - storage::types::StorageMap, - traits::{PalletInfo, StorageInstance}, - Identity, - }; - use gear_core::ids::{MessageId, ReservationId}; - use parity_scale_codec::{Decode, Encode}; - - pub type GasNode = GasNodeImpl, GasNodeId, Balance>; - - pub struct GasNodesPrefix(PhantomData); - - impl StorageInstance for GasNodesPrefix { - const STORAGE_PREFIX: &'static str = "GasNodes"; - - fn pallet_prefix() -> &'static str { - <::PalletInfo as PalletInfo>::name::>() - .expect("No name found for the pallet in the runtime!") - } - } - - pub type GasNodes = StorageMap, Identity, Key, GasNode>; - - #[derive(Encode, Decode, Debug)] - pub enum GasNodeImpl { - External { - id: ExternalId, - value: Balance, - lock: NodeLock, - system_reserve: Balance, - refs: ChildrenRefs, - consumed: bool, - deposit: bool, - }, - - Cut { - id: ExternalId, - value: Balance, - lock: NodeLock, - }, - - Reserved { - id: ExternalId, - value: Balance, - lock: NodeLock, - refs: ChildrenRefs, - consumed: bool, - }, - - SpecifiedLocal { - parent: Id, - value: Balance, - lock: NodeLock, - system_reserve: Balance, - refs: ChildrenRefs, - consumed: bool, - }, - - UnspecifiedLocal { - parent: Id, - lock: NodeLock, - system_reserve: Balance, - }, - } - - impl GasNodeImpl { - pub fn parent(&self) -> Option { - match self { - Self::External { .. } | Self::Cut { .. } | Self::Reserved { .. } => None, - Self::SpecifiedLocal { parent, .. } | Self::UnspecifiedLocal { parent, .. } => { - Some(*parent) - } - } - } - } - - pub fn root(mut node_key: Key, mut node: GasNode) -> Result> { - log::trace!("Looking for root of {node_key:?} ({node:?}"); - - while let Some(parent) = node.parent() { - node_key = parent; - node = GasNodes::::get(node_key).ok_or(Error::::ParentIsLost)?; - } - - log::trace!("Root found: {node_key:?}"); - - Ok(node_key) - } -} diff --git a/pallets/staking-rewards/src/mock.rs b/pallets/staking-rewards/src/mock.rs index d491261680b..e5037ced27b 100644 --- a/pallets/staking-rewards/src/mock.rs +++ b/pallets/staking-rewards/src/mock.rs @@ -67,14 +67,11 @@ pub(crate) const NOM_1_CONTROLLER: AccountId = 41; pub(crate) const ROOT: AccountId = 101; pub(crate) const INITIAL_TOTAL_TOKEN_SUPPLY: u128 = 1_000_000 * UNITS; -pub(crate) const EXISTENTIAL_DEPOSIT: u128 = 10 * MILLICENTS; // 10 +pub(crate) const EXISTENTIAL_DEPOSIT: u128 = 10 * UNITS / 100_000; // 10 pub(crate) const VALIDATOR_STAKE: u128 = 100 * UNITS; // 10 pub(crate) const ENDOWMENT: u128 = 100 * UNITS; pub(crate) const UNITS: u128 = 100_000; // 10^(-5) precision -pub(crate) const DOLLARS: u128 = UNITS; // 1 to 1 -pub(crate) const CENTS: u128 = DOLLARS / 100; // 1_000 -pub(crate) const MILLICENTS: u128 = CENTS / 1_000; // 1 pub(crate) const MILLISECONDS_PER_YEAR: u64 = 1_000 * 3_600 * 24 * 36_525 / 100; pub(crate) const MILLISECS_PER_BLOCK: u64 = 2_400; pub(crate) const SESSION_DURATION: u64 = 1000; @@ -394,7 +391,7 @@ impl pallet_bags_list::Config for Test { parameter_types! { pub const ProposalBond: Permill = Permill::from_percent(5); - pub const ProposalBondMinimum: u128 = DOLLARS; + pub const ProposalBondMinimum: u128 = UNITS; pub const SpendPeriod: u32 = 100; pub const Burn: Permill = Permill::from_percent(50); pub const TreasuryPalletId: PalletId = PalletId(*b"py/trsry"); diff --git a/runtime/gear/src/constants.rs b/runtime/gear/src/constants.rs index 35c4873d511..0b4e927003b 100644 --- a/runtime/gear/src/constants.rs +++ b/runtime/gear/src/constants.rs @@ -20,6 +20,8 @@ pub mod currency { use runtime_primitives::Balance; + pub const UNITS: Balance = 1_000_000_000_000; // 10^(-12) precision + /// The existential deposit. pub const EXISTENTIAL_DEPOSIT: Balance = 500; diff --git a/runtime/gear/src/migrations.rs b/runtime/gear/src/migrations.rs index 8749826d911..248916f1fad 100644 --- a/runtime/gear/src/migrations.rs +++ b/runtime/gear/src/migrations.rs @@ -19,4 +19,4 @@ #[allow(unused)] use crate::*; -pub type Migrations = (pallet_gear_gas::migrations::MigrateToV3,); +pub type Migrations = (); diff --git a/runtime/vara/src/constants.rs b/runtime/vara/src/constants.rs index 75f273a42ee..b80d724a3ec 100644 --- a/runtime/vara/src/constants.rs +++ b/runtime/vara/src/constants.rs @@ -20,22 +20,22 @@ pub mod currency { use runtime_primitives::Balance; + pub const UNITS: Balance = 1_000_000_000_000; // 10^(-12) precision + + /// Base economic unit, 50 Vara. + pub const ECONOMIC_UNITS: Balance = UNITS * 50; + pub const ECONOMIC_CENTIUNITS: Balance = ECONOMIC_UNITS / 100; + /// The existential deposit. - pub const EXISTENTIAL_DEPOSIT: Balance = 10_000_000_000_000; // 10 Vara + pub const EXISTENTIAL_DEPOSIT: Balance = 10 * UNITS; // 10 Vara /// The program rent cost per block. pub const RENT_COST_PER_BLOCK: Balance = 125_000_000; - // TODO: review quantities based on economic model (issue #1277) - pub const UNITS: Balance = 1_000_000_000_000; // 10^(-12) precision - pub const DOLLARS: Balance = UNITS * 20; // 1 token is worth ~$0.05 - pub const CENTS: Balance = DOLLARS / 100; // 200_000_000_000 - pub const MILLICENTS: Balance = CENTS / 1_000; // 200_000_000 - /// Helper function to calculate various deposits for using pallets' storage pub const fn deposit(items: u32, bytes: u32) -> Balance { // TODO: review numbers (#2650) - items as Balance * 15 * CENTS + (bytes as Balance) * 6 * CENTS + items as Balance * 15 * ECONOMIC_CENTIUNITS + (bytes as Balance) * 6 * ECONOMIC_CENTIUNITS } } diff --git a/runtime/vara/src/governance/fellowship.rs b/runtime/vara/src/governance/fellowship.rs index e0e9a39c2c4..6adad66c76d 100644 --- a/runtime/vara/src/governance/fellowship.rs +++ b/runtime/vara/src/governance/fellowship.rs @@ -30,7 +30,7 @@ use sp_runtime::{ }; use super::*; -use crate::{DAYS, DOLLARS}; +use crate::{DAYS, ECONOMIC_UNITS}; parameter_types! { pub const AlarmInterval: BlockNumber = 1; @@ -49,7 +49,7 @@ impl pallet_referenda::TracksInfo for TracksInfo { pallet_referenda::TrackInfo { name: "candidates", max_deciding: 10, - decision_deposit: 100 * DOLLARS, + decision_deposit: 100 * ECONOMIC_UNITS, prepare_period: 30 * MINUTES, decision_period: 7 * DAYS, confirm_period: 30 * MINUTES, @@ -71,7 +71,7 @@ impl pallet_referenda::TracksInfo for TracksInfo { pallet_referenda::TrackInfo { name: "members", max_deciding: 10, - decision_deposit: 10 * DOLLARS, + decision_deposit: 10 * ECONOMIC_UNITS, prepare_period: 30 * MINUTES, decision_period: 7 * DAYS, confirm_period: 30 * MINUTES, @@ -93,7 +93,7 @@ impl pallet_referenda::TracksInfo for TracksInfo { pallet_referenda::TrackInfo { name: "proficients", max_deciding: 10, - decision_deposit: 10 * DOLLARS, + decision_deposit: 10 * ECONOMIC_UNITS, prepare_period: 30 * MINUTES, decision_period: 7 * DAYS, confirm_period: 30 * MINUTES, @@ -115,7 +115,7 @@ impl pallet_referenda::TracksInfo for TracksInfo { pallet_referenda::TrackInfo { name: "fellows", max_deciding: 10, - decision_deposit: 10 * DOLLARS, + decision_deposit: 10 * ECONOMIC_UNITS, prepare_period: 30 * MINUTES, decision_period: 7 * DAYS, confirm_period: 30 * MINUTES, @@ -137,7 +137,7 @@ impl pallet_referenda::TracksInfo for TracksInfo { pallet_referenda::TrackInfo { name: "senior fellows", max_deciding: 10, - decision_deposit: 10 * DOLLARS, + decision_deposit: 10 * ECONOMIC_UNITS, prepare_period: 30 * MINUTES, decision_period: 7 * DAYS, confirm_period: 30 * MINUTES, @@ -159,7 +159,7 @@ impl pallet_referenda::TracksInfo for TracksInfo { pallet_referenda::TrackInfo { name: "experts", max_deciding: 10, - decision_deposit: 1 * DOLLARS, + decision_deposit: 1 * ECONOMIC_UNITS, prepare_period: 30 * MINUTES, decision_period: 7 * DAYS, confirm_period: 30 * MINUTES, @@ -181,7 +181,7 @@ impl pallet_referenda::TracksInfo for TracksInfo { pallet_referenda::TrackInfo { name: "senior experts", max_deciding: 10, - decision_deposit: 1 * DOLLARS, + decision_deposit: 1 * ECONOMIC_UNITS, prepare_period: 30 * MINUTES, decision_period: 7 * DAYS, confirm_period: 30 * MINUTES, @@ -203,7 +203,7 @@ impl pallet_referenda::TracksInfo for TracksInfo { pallet_referenda::TrackInfo { name: "masters", max_deciding: 10, - decision_deposit: 1 * DOLLARS, + decision_deposit: 1 * ECONOMIC_UNITS, prepare_period: 30 * MINUTES, decision_period: 7 * DAYS, confirm_period: 30 * MINUTES, @@ -225,7 +225,7 @@ impl pallet_referenda::TracksInfo for TracksInfo { pallet_referenda::TrackInfo { name: "senior masters", max_deciding: 10, - decision_deposit: 1 * DOLLARS, + decision_deposit: 1 * ECONOMIC_UNITS, prepare_period: 30 * MINUTES, decision_period: 7 * DAYS, confirm_period: 30 * MINUTES, @@ -247,7 +247,7 @@ impl pallet_referenda::TracksInfo for TracksInfo { pallet_referenda::TrackInfo { name: "grand masters", max_deciding: 10, - decision_deposit: 1 * DOLLARS, + decision_deposit: 1 * ECONOMIC_UNITS, prepare_period: 30 * MINUTES, decision_period: 7 * DAYS, confirm_period: 30 * MINUTES, diff --git a/runtime/vara/src/governance/mod.rs b/runtime/vara/src/governance/mod.rs index cd3189fc2f4..6e435b4df51 100644 --- a/runtime/vara/src/governance/mod.rs +++ b/runtime/vara/src/governance/mod.rs @@ -53,7 +53,7 @@ impl pallet_conviction_voting::Config for Runtime { parameter_types! { pub const AlarmInterval: BlockNumber = 1; - pub const SubmissionDeposit: Balance = 10 * DOLLARS; + pub const SubmissionDeposit: Balance = 10 * ECONOMIC_UNITS; pub const UndecidingTimeout: BlockNumber = 14 * DAYS; } diff --git a/runtime/vara/src/governance/tracks.rs b/runtime/vara/src/governance/tracks.rs index b20bbf0b3ce..48170c7e827 100644 --- a/runtime/vara/src/governance/tracks.rs +++ b/runtime/vara/src/governance/tracks.rs @@ -67,7 +67,7 @@ const TRACKS_DATA: [(u16, pallet_referenda::TrackInfo); 13 pallet_referenda::TrackInfo { name: "root", max_deciding: 1, - decision_deposit: 100_000 * DOLLARS, + decision_deposit: 100_000 * ECONOMIC_UNITS, prepare_period: 2 * HOURS, decision_period: 14 * DAYS, confirm_period: 24 * HOURS, @@ -81,7 +81,7 @@ const TRACKS_DATA: [(u16, pallet_referenda::TrackInfo); 13 pallet_referenda::TrackInfo { name: "whitelisted_caller", max_deciding: 100, - decision_deposit: 10_000 * DOLLARS, + decision_deposit: 10_000 * ECONOMIC_UNITS, prepare_period: 30 * MINUTES, decision_period: 14 * DAYS, confirm_period: 10 * MINUTES, @@ -95,7 +95,7 @@ const TRACKS_DATA: [(u16, pallet_referenda::TrackInfo); 13 pallet_referenda::TrackInfo { name: "staking_admin", max_deciding: 10, - decision_deposit: 5_000 * DOLLARS, + decision_deposit: 5_000 * ECONOMIC_UNITS, prepare_period: 2 * HOURS, decision_period: 14 * DAYS, confirm_period: 3 * HOURS, @@ -109,7 +109,7 @@ const TRACKS_DATA: [(u16, pallet_referenda::TrackInfo); 13 pallet_referenda::TrackInfo { name: "treasurer", max_deciding: 10, - decision_deposit: 1_000 * DOLLARS, + decision_deposit: 1_000 * ECONOMIC_UNITS, prepare_period: 2 * HOURS, decision_period: 14 * DAYS, confirm_period: 3 * HOURS, @@ -123,7 +123,7 @@ const TRACKS_DATA: [(u16, pallet_referenda::TrackInfo); 13 pallet_referenda::TrackInfo { name: "fellowship_admin", max_deciding: 10, - decision_deposit: 5_000 * DOLLARS, + decision_deposit: 5_000 * ECONOMIC_UNITS, prepare_period: 2 * HOURS, decision_period: 14 * DAYS, confirm_period: 3 * HOURS, @@ -137,7 +137,7 @@ const TRACKS_DATA: [(u16, pallet_referenda::TrackInfo); 13 pallet_referenda::TrackInfo { name: "general_admin", max_deciding: 10, - decision_deposit: 5_000 * DOLLARS, + decision_deposit: 5_000 * ECONOMIC_UNITS, prepare_period: 2 * HOURS, decision_period: 14 * DAYS, confirm_period: 3 * HOURS, @@ -151,7 +151,7 @@ const TRACKS_DATA: [(u16, pallet_referenda::TrackInfo); 13 pallet_referenda::TrackInfo { name: "referendum_canceller", max_deciding: 1_000, - decision_deposit: 10_000 * DOLLARS, + decision_deposit: 10_000 * ECONOMIC_UNITS, prepare_period: 2 * HOURS, decision_period: 7 * DAYS, confirm_period: 3 * HOURS, @@ -165,7 +165,7 @@ const TRACKS_DATA: [(u16, pallet_referenda::TrackInfo); 13 pallet_referenda::TrackInfo { name: "referendum_killer", max_deciding: 1_000, - decision_deposit: 50_000 * DOLLARS, + decision_deposit: 50_000 * ECONOMIC_UNITS, prepare_period: 2 * HOURS, decision_period: 14 * DAYS, confirm_period: 3 * HOURS, @@ -179,7 +179,7 @@ const TRACKS_DATA: [(u16, pallet_referenda::TrackInfo); 13 pallet_referenda::TrackInfo { name: "small_tipper", max_deciding: 200, - decision_deposit: DOLLARS, + decision_deposit: ECONOMIC_UNITS, prepare_period: MINUTES, decision_period: 7 * DAYS, confirm_period: 10 * MINUTES, @@ -193,7 +193,7 @@ const TRACKS_DATA: [(u16, pallet_referenda::TrackInfo); 13 pallet_referenda::TrackInfo { name: "big_tipper", max_deciding: 100, - decision_deposit: 10 * DOLLARS, + decision_deposit: 10 * ECONOMIC_UNITS, prepare_period: 10 * MINUTES, decision_period: 7 * DAYS, confirm_period: HOURS, @@ -207,7 +207,7 @@ const TRACKS_DATA: [(u16, pallet_referenda::TrackInfo); 13 pallet_referenda::TrackInfo { name: "small_spender", max_deciding: 50, - decision_deposit: 100 * DOLLARS, + decision_deposit: 100 * ECONOMIC_UNITS, prepare_period: 4 * HOURS, decision_period: 14 * DAYS, confirm_period: 12 * HOURS, @@ -221,7 +221,7 @@ const TRACKS_DATA: [(u16, pallet_referenda::TrackInfo); 13 pallet_referenda::TrackInfo { name: "medium_spender", max_deciding: 50, - decision_deposit: 200 * DOLLARS, + decision_deposit: 200 * ECONOMIC_UNITS, prepare_period: 4 * HOURS, decision_period: 14 * DAYS, confirm_period: 24 * HOURS, @@ -235,7 +235,7 @@ const TRACKS_DATA: [(u16, pallet_referenda::TrackInfo); 13 pallet_referenda::TrackInfo { name: "big_spender", max_deciding: 50, - decision_deposit: 400 * DOLLARS, + decision_deposit: 400 * ECONOMIC_UNITS, prepare_period: 4 * HOURS, decision_period: 14 * DAYS, confirm_period: 48 * HOURS, diff --git a/runtime/vara/src/lib.rs b/runtime/vara/src/lib.rs index cf6de126ae5..c6332876d1b 100644 --- a/runtime/vara/src/lib.rs +++ b/runtime/vara/src/lib.rs @@ -313,8 +313,8 @@ impl pallet_scheduler::Config for Runtime { parameter_types! { pub const PreimageMaxSize: u32 = 4096 * 1024; - pub const PreimageBaseDeposit: Balance = DOLLARS; - pub const PreimageByteDeposit: Balance = CENTS; + pub const PreimageBaseDeposit: Balance = ECONOMIC_UNITS; + pub const PreimageByteDeposit: Balance = ECONOMIC_CENTIUNITS; } impl pallet_preimage::Config for Runtime { @@ -451,9 +451,9 @@ parameter_types! { pub const UnsignedPhase: u32 = EPOCH_DURATION_IN_BLOCKS / 4; // signed config - pub const SignedRewardBase: Balance = DOLLARS; - pub const SignedDepositBase: Balance = DOLLARS; - pub const SignedDepositByte: Balance = CENTS; + pub const SignedRewardBase: Balance = ECONOMIC_UNITS; + pub const SignedDepositBase: Balance = ECONOMIC_UNITS; + pub const SignedDepositByte: Balance = ECONOMIC_CENTIUNITS; pub BetterUnsignedThreshold: Perbill = Perbill::from_rational(1u32, 10_000); @@ -679,13 +679,13 @@ impl pallet_offences::Config for Runtime { parameter_types! { pub const ProposalBond: Permill = Permill::from_percent(5); - pub const ProposalBondMinimum: Balance = DOLLARS; + pub const ProposalBondMinimum: Balance = ECONOMIC_UNITS; pub const SpendPeriod: BlockNumber = DAYS; pub const Burn: Permill = Permill::from_percent(50); pub const TipCountdown: BlockNumber = DAYS; pub const TipFindersFee: Percent = Percent::from_percent(20); - pub const TipReportDepositBase: Balance = DOLLARS; - pub const DataDepositPerByte: Balance = CENTS; + pub const TipReportDepositBase: Balance = ECONOMIC_UNITS; + pub const DataDepositPerByte: Balance = ECONOMIC_CENTIUNITS; pub const TreasuryPalletId: PalletId = PalletId(*b"py/trsry"); pub const MaximumReasonLength: u32 = 300; pub const MaxApprovals: u32 = 100; @@ -712,11 +712,11 @@ impl pallet_treasury::Config for Runtime { parameter_types! { pub const BountyCuratorDeposit: Permill = Permill::from_percent(50); - pub const BountyValueMinimum: Balance = 5 * DOLLARS; - pub const BountyDepositBase: Balance = DOLLARS; + pub const BountyValueMinimum: Balance = 5 * ECONOMIC_UNITS; + pub const BountyDepositBase: Balance = ECONOMIC_UNITS; pub const CuratorDepositMultiplier: Permill = Permill::from_percent(50); - pub const CuratorDepositMin: Balance = DOLLARS; - pub const CuratorDepositMax: Balance = 100 * DOLLARS; + pub const CuratorDepositMin: Balance = ECONOMIC_UNITS; + pub const CuratorDepositMax: Balance = 100 * ECONOMIC_UNITS; pub const BountyDepositPayoutDelay: BlockNumber = DAYS; pub const BountyUpdatePeriod: BlockNumber = 14 * DAYS; } @@ -737,7 +737,7 @@ impl pallet_bounties::Config for Runtime { } parameter_types! { - pub const ChildBountyValueMinimum: Balance = DOLLARS; + pub const ChildBountyValueMinimum: Balance = ECONOMIC_UNITS; } impl pallet_child_bounties::Config for Runtime { @@ -775,9 +775,9 @@ impl pallet_authority_discovery::Config for Runtime { } parameter_types! { - pub const BasicDeposit: Balance = 10 * DOLLARS; // 258 bytes on-chain - pub const FieldDeposit: Balance = 250 * CENTS; // 66 bytes on-chain - pub const SubAccountDeposit: Balance = 2 * DOLLARS; // 53 bytes on-chain + pub const BasicDeposit: Balance = 10 * ECONOMIC_UNITS; // 258 bytes on-chain + pub const FieldDeposit: Balance = 250 * ECONOMIC_CENTIUNITS; // 66 bytes on-chain + pub const SubAccountDeposit: Balance = 2 * ECONOMIC_UNITS; // 53 bytes on-chain pub const MaxSubAccounts: u32 = 100; pub const MaxAdditionalFields: u32 = 100; pub const MaxRegistrars: u32 = 20; @@ -1094,7 +1094,7 @@ where } parameter_types! { - pub const MinVestedTransfer: Balance = 100 * CENTS; + pub const MinVestedTransfer: Balance = 100 * ECONOMIC_CENTIUNITS; pub UnvestedFundsAllowedWithdrawReasons: WithdrawReasons = WithdrawReasons::except(WithdrawReasons::TRANSFER | WithdrawReasons::RESERVE); } diff --git a/runtime/vara/src/migrations.rs b/runtime/vara/src/migrations.rs index 8749826d911..248916f1fad 100644 --- a/runtime/vara/src/migrations.rs +++ b/runtime/vara/src/migrations.rs @@ -19,4 +19,4 @@ #[allow(unused)] use crate::*; -pub type Migrations = (pallet_gear_gas::migrations::MigrateToV3,); +pub type Migrations = (); From 9e2576bd81fd257b329252acace14834f8bdf23e Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Fri, 15 Sep 2023 19:21:03 +0400 Subject: [PATCH 11/21] chore(v1.0.0): Remove `pallet-airdrop` (#3276) --- Cargo.lock | 32 --- Cargo.toml | 1 - gsdk/src/metadata/errors.rs | 1 - gsdk/src/metadata/generated.rs | 97 -------- pallets/airdrop/Cargo.toml | 70 ------ pallets/airdrop/README.md | 7 - pallets/airdrop/src/benchmarking.rs | 70 ------ pallets/airdrop/src/lib.rs | 214 ------------------ pallets/airdrop/src/mock.rs | 247 --------------------- pallets/airdrop/src/tests.rs | 173 --------------- pallets/airdrop/src/weights.rs | 95 -------- runtime/vara/Cargo.toml | 4 - runtime/vara/src/lib.rs | 13 +- runtime/vara/src/weights/mod.rs | 1 - runtime/vara/src/weights/pallet_airdrop.rs | 95 -------- 15 files changed, 2 insertions(+), 1118 deletions(-) delete mode 100644 pallets/airdrop/Cargo.toml delete mode 100644 pallets/airdrop/README.md delete mode 100644 pallets/airdrop/src/benchmarking.rs delete mode 100644 pallets/airdrop/src/lib.rs delete mode 100644 pallets/airdrop/src/mock.rs delete mode 100644 pallets/airdrop/src/tests.rs delete mode 100644 pallets/airdrop/src/weights.rs delete mode 100644 runtime/vara/src/weights/pallet_airdrop.rs diff --git a/Cargo.lock b/Cargo.lock index 32ac68ad265..f51d1120230 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7118,37 +7118,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "pallet-airdrop" -version = "1.0.0" -dependencies = [ - "env_logger", - "frame-benchmarking", - "frame-support", - "frame-support-test", - "frame-system", - "gear-common", - "log", - "pallet-authorship", - "pallet-balances", - "pallet-gear", - "pallet-gear-bank", - "pallet-gear-gas", - "pallet-gear-messenger", - "pallet-gear-program", - "pallet-gear-scheduler", - "pallet-sudo", - "pallet-timestamp", - "pallet-vesting", - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 7.0.0 (git+https://github.com/gear-tech/substrate.git?branch=gear-polkadot-v0.9.41-canary-no-sandbox)", - "sp-io 7.0.0 (git+https://github.com/gear-tech/substrate.git?branch=gear-polkadot-v0.9.41-canary-no-sandbox)", - "sp-runtime 7.0.0 (git+https://github.com/gear-tech/substrate.git?branch=gear-polkadot-v0.9.41-canary-no-sandbox)", - "sp-std 5.0.0 (git+https://github.com/gear-tech/substrate.git?branch=gear-polkadot-v0.9.41-canary-no-sandbox)", -] - [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" @@ -13511,7 +13480,6 @@ dependencies = [ "gear-runtime-primitives", "hex-literal", "log", - "pallet-airdrop", "pallet-authority-discovery", "pallet-authorship", "pallet-babe", diff --git a/Cargo.toml b/Cargo.toml index f3d587003ee..108d5011b92 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -221,7 +221,6 @@ gear-wasm-gen = { path = "utils/wasm-gen" } gear-wasm-instrument = { path = "utils/wasm-instrument", default-features = false } junit-common = { path = "utils/junit-common" } actor-system-error = { path = "utils/actor-system-error" } -pallet-airdrop = { path = "pallets/airdrop", default-features = false } pallet-gear = { path = "pallets/gear", default-features = false } pallet-gear-debug = { path = "pallets/gear-debug", default-features = false } pallet-gear-gas = { path = "pallets/gas", default-features = false } diff --git a/gsdk/src/metadata/errors.rs b/gsdk/src/metadata/errors.rs index fef6f00d76e..bfbd006d5a9 100644 --- a/gsdk/src/metadata/errors.rs +++ b/gsdk/src/metadata/errors.rs @@ -94,7 +94,6 @@ macro_rules! export_module_error { // pallets that don't have `Error` type. // // - pallet_transaction_payment -// - pallet_airdrop // // pallets that share the same `errors::RankedCollective` // diff --git a/gsdk/src/metadata/generated.rs b/gsdk/src/metadata/generated.rs index cfc17329d53..77010704434 100644 --- a/gsdk/src/metadata/generated.rs +++ b/gsdk/src/metadata/generated.rs @@ -1000,73 +1000,6 @@ pub mod runtime_types { } } } - pub mod pallet_airdrop { - use super::runtime_types; - pub mod pallet { - use super::runtime_types; - #[derive(Debug, crate::gp::Decode, crate::gp::DecodeAsType, crate::gp::Encode)] - #[doc = "Contains one variant per dispatchable that can be called by an extrinsic."] - pub enum Call { - #[codec(index = 0)] - #[doc = "Transfer tokens from pre-funded `source` to `dest` account."] - #[doc = ""] - #[doc = "The origin must be the root."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `source`: the pre-funded account (i.e. root),"] - #[doc = "- `dest`: the beneficiary account,"] - #[doc = "- `amount`: the amount of tokens to be minted."] - #[doc = ""] - #[doc = "Emits the following events:"] - #[doc = "- `TokensDeposited{ dest, amount }`"] - transfer { - source: ::subxt::utils::AccountId32, - dest: ::subxt::utils::AccountId32, - amount: ::core::primitive::u128, - }, - #[codec(index = 1)] - #[doc = "Remove vesting for `source` account and transfer tokens to `dest` account."] - #[doc = ""] - #[doc = "The origin must be the root."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `source`: the account with vesting running,"] - #[doc = "- `dest`: the beneficiary account,"] - #[doc = "- `schedule_index`: the index of `VestingInfo` for source account."] - #[doc = "- `amount`: the amount to be unlocked and transferred from `VestingInfo`."] - #[doc = ""] - #[doc = "Emits the following events:"] - #[doc = "- `VestingScheduleRemoved{ who, schedule_index }`"] - transfer_vested { - source: ::subxt::utils::AccountId32, - dest: ::subxt::utils::AccountId32, - schedule_index: ::core::primitive::u32, - amount: ::core::option::Option<::core::primitive::u128>, - }, - } - #[derive(Debug, crate::gp::Decode, crate::gp::DecodeAsType, crate::gp::Encode)] - #[doc = "Error for the airdrop pallet."] - pub enum Error { - #[codec(index = 0)] - #[doc = "Amount to being transferred is bigger than vested."] - AmountBigger, - } - #[derive(Debug, crate::gp::Decode, crate::gp::DecodeAsType, crate::gp::Encode)] - #[doc = "\n\t\t\tThe [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted\n\t\t\tby this pallet.\n\t\t\t"] - pub enum Event { - #[codec(index = 0)] - TokensDeposited { - account: ::subxt::utils::AccountId32, - amount: ::core::primitive::u128, - }, - #[codec(index = 1)] - VestingScheduleRemoved { - who: ::subxt::utils::AccountId32, - schedule_index: ::core::primitive::u32, - }, - } - } - } pub mod pallet_babe { use super::runtime_types; pub mod pallet { @@ -9113,8 +9046,6 @@ pub mod runtime_types { GearVoucher(runtime_types::pallet_gear_voucher::pallet::Call), #[codec(index = 99)] Sudo(runtime_types::pallet_sudo::pallet::Call), - #[codec(index = 198)] - Airdrop(runtime_types::pallet_airdrop::pallet::Call), #[codec(index = 199)] GearDebug(runtime_types::pallet_gear_debug::pallet::Call), } @@ -9182,8 +9113,6 @@ pub mod runtime_types { GearVoucher(runtime_types::pallet_gear_voucher::pallet::Event), #[codec(index = 99)] Sudo(runtime_types::pallet_sudo::pallet::Event), - #[codec(index = 198)] - Airdrop(runtime_types::pallet_airdrop::pallet::Event), #[codec(index = 199)] GearDebug(runtime_types::pallet_gear_debug::pallet::Event), } @@ -9204,20 +9133,6 @@ pub mod calls { #[doc = r" returns call name."] fn call_name(&self) -> &'static str; } - #[doc = "Calls of pallet `Airdrop`."] - pub enum AirdropCall { - Transfer, - TransferVested, - } - impl CallInfo for AirdropCall { - const PALLET: &'static str = "Airdrop"; - fn call_name(&self) -> &'static str { - match self { - Self::Transfer => "transfer", - Self::TransferVested => "transfer_vested", - } - } - } #[doc = "Calls of pallet `Babe`."] pub enum BabeCall { ReportEquivocation, @@ -11061,15 +10976,6 @@ pub mod impls { )?, )); } - if pallet_name == "Airdrop" { - return Ok(Event::Airdrop( - crate::metadata::airdrop::Event::decode_with_metadata( - &mut &*pallet_bytes, - pallet_ty, - metadata, - )?, - )); - } if pallet_name == "GearDebug" { return Ok(Event::GearDebug( crate::metadata::gear_debug::Event::decode_with_metadata( @@ -11179,9 +11085,6 @@ pub mod exports { pub mod sudo { pub use super::runtime_types::pallet_sudo::pallet::Event; } - pub mod airdrop { - pub use super::runtime_types::pallet_airdrop::pallet::Event; - } pub mod gear_debug { pub use super::runtime_types::pallet_gear_debug::pallet::Event; } diff --git a/pallets/airdrop/Cargo.toml b/pallets/airdrop/Cargo.toml deleted file mode 100644 index 35f74034b41..00000000000 --- a/pallets/airdrop/Cargo.toml +++ /dev/null @@ -1,70 +0,0 @@ -[package] -name = "pallet-airdrop" -version = "1.0.0" -authors = ['Gear Technologies'] -edition = '2021' -license.workspace = true -homepage = "https://gear-tech.io" -repository = "https://github.com/gear-tech/gear" -description = "Airdrop pallet" -readme = "README.md" - -[package.metadata.docs.rs] -targets = ["x86_64-unknown-linux-gnu"] - -[dependencies] -parity-scale-codec = { workspace = true, features = ["derive", "max-encoded-len"] } -scale-info = { workspace = true, features = ["derive"] } -log.workspace = true - -# Internal deps -common.workspace = true -pallet-gear.workspace = true -pallet-gear-bank.workspace = true - -# Substrate deps -frame-support.workspace = true -frame-system.workspace = true -frame-benchmarking = { workspace = true, optional = true } -sp-runtime.workspace = true -sp-std.workspace = true -pallet-balances.workspace = true -pallet-vesting.workspace = true - -[dev-dependencies] -serde.workspace = true -env_logger.workspace = true -sp-core = { workspace = true, features = ["std"] } -sp-io = { workspace = true, features = ["std"] } -pallet-authorship = { workspace = true, features = ["std"] } -pallet-sudo = { workspace = true, features = ["std"] } -pallet-timestamp = { workspace = true, features = ["std"] } -pallet-gear-program = { workspace = true, features = ["std"] } -pallet-gear-messenger = { workspace = true, features = ["std"] } -pallet-gear-scheduler = { workspace = true, features = ["std"] } -pallet-gear-gas = { workspace = true, features = ["std"] } -frame-support-test = { workspace = true, features = ["std"] } - -[features] -default = ["std"] -std = [ - "common/std", - "parity-scale-codec/std", - "log/std", - "frame-benchmarking?/std", - "frame-support/std", - "frame-system/std", - "scale-info/std", - "sp-std/std", - "pallet-balances/std", - "pallet-vesting/std", - "pallet-gear/std", - "pallet-gear-bank/std", -] -runtime-benchmarks = [ - "frame-benchmarking/runtime-benchmarks", - "frame-system/runtime-benchmarks", - "frame-support/runtime-benchmarks", - "common/runtime-benchmarks", -] -try-runtime = ["frame-support/try-runtime"] diff --git a/pallets/airdrop/README.md b/pallets/airdrop/README.md deleted file mode 100644 index 3f75afc1b5b..00000000000 --- a/pallets/airdrop/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Airdrop pallet used on testnet to dispense funds to users - -A crate which provides a mechanism to transfer tokens from pre-funded account to users while generic balance transfers are disabled. - -### Dispatchable Functions - -License: Unlicense diff --git a/pallets/airdrop/src/benchmarking.rs b/pallets/airdrop/src/benchmarking.rs deleted file mode 100644 index 68064fca290..00000000000 --- a/pallets/airdrop/src/benchmarking.rs +++ /dev/null @@ -1,70 +0,0 @@ -// This file is part of Gear. - -// Copyright (C) 2022-2023 Gear Technologies Inc. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -#[allow(unused)] -use crate::Pallet as Airdrop; -use crate::*; -use common::{benchmarking, Origin}; -use frame_benchmarking::{benchmarks, impl_benchmark_test_suite}; -use frame_support::traits::Currency; -use frame_system::RawOrigin; -use pallet_vesting::VestingInfo; -use sp_runtime::traits::{StaticLookup, UniqueSaturatedInto}; - -benchmarks! { - where_clause { where - T::AccountId: Origin, - } - - transfer { - let q in 1 .. 256; - - let source: T::AccountId = benchmarking::account("source", 0, 0); - ::Currency::deposit_creating(&source, (1u128 << 60).unique_saturated_into()); - let recipient: T::AccountId = benchmarking::account("recipient", 0, 0); - // Keeping in mind the existential deposit - let amount = 10_000_000_000_000_u128.saturating_add(10_u128.saturating_mul(q.into())); - - }: _(RawOrigin::Root, source, recipient.clone(), amount.unique_saturated_into()) - verify { - assert_eq!(pallet_balances::Pallet::::total_balance(&recipient), amount.unique_saturated_into()); - } - - transfer_vested { - let q in 1 .. 256; - - let source: T::AccountId = benchmarking::account("source", 0, 0); - let source_lookup = T::Lookup::unlookup(source.clone()); - ::Currency::deposit_creating(&source, (1u128 << 60).unique_saturated_into()); - let recipient: T::AccountId = benchmarking::account("recipient", 0, 0); - let amount = ::MinVestedTransfer::get().saturating_mul(q.into()); - - // create vesting schedule amount * 2 - let vested_amount = amount.saturating_mul(2u128.unique_saturated_into()); - let vesting_schedule = VestingInfo::new(vested_amount.unique_saturated_into(), 10u128.unique_saturated_into(), 1000u32.into()); - pallet_vesting::Pallet::::vested_transfer(RawOrigin::Signed(source.clone()).into(), source_lookup, vesting_schedule)?; - - }: _(RawOrigin::Root, source.clone(), recipient.clone(), 0, Some(amount)) - verify { - // check that the total vested amount is halved between the source and the recipient - assert_eq!(pallet_vesting::Pallet::::vesting_balance(&source), Some(amount)); - assert_eq!(::Currency::free_balance(&recipient), amount); - } -} - -impl_benchmark_test_suite!(Airdrop, crate::mock::new_test_ext(), crate::mock::Test,); diff --git a/pallets/airdrop/src/lib.rs b/pallets/airdrop/src/lib.rs deleted file mode 100644 index 7609271c50e..00000000000 --- a/pallets/airdrop/src/lib.rs +++ /dev/null @@ -1,214 +0,0 @@ -// This file is part of Gear. - -// Copyright (C) 2021-2023 Gear Technologies Inc. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -#![cfg_attr(not(feature = "std"), no_std)] - -use frame_support::{ - pallet_prelude::*, - traits::{Currency, ExistenceRequirement, VestingSchedule}, -}; -pub use pallet::*; -use sp_runtime::traits::{Convert, Saturating}; -pub use weights::WeightInfo; - -pub mod weights; - -#[cfg(feature = "runtime-benchmarks")] -mod benchmarking; - -#[cfg(test)] -mod mock; - -#[cfg(test)] -mod tests; - -pub(crate) type BalanceOf = <::Currency as Currency< - ::AccountId, ->>::Balance; - -pub(crate) type VestingBalanceOf = <::Currency as Currency< - ::AccountId, ->>::Balance; - -#[frame_support::pallet] -pub mod pallet { - use super::*; - - use frame_system::pallet_prelude::*; - - #[pallet::config] - pub trait Config: - frame_system::Config - + pallet_gear::Config - + pallet_balances::Config - + pallet_vesting::Config - { - /// Because this pallet emits events, it depends on the runtime's definition of an event. - type RuntimeEvent: From> + IsType<::RuntimeEvent>; - - /// Weight information for extrinsics in this pallet. - type WeightInfo: WeightInfo; - - /// To modify/remove vesting schedule - type VestingSchedule: VestingSchedule< - Self::AccountId, - Currency = ::Currency, - Moment = Self::BlockNumber, - >; - } - - #[pallet::pallet] - pub struct Pallet(_); - - #[pallet::event] - #[pallet::generate_deposit(pub(super) fn deposit_event)] - pub enum Event { - TokensDeposited { - account: T::AccountId, - amount: BalanceOf, - }, - VestingScheduleRemoved { - who: T::AccountId, - schedule_index: u32, - }, - } - - /// Error for the airdrop pallet. - #[pallet::error] - pub enum Error { - /// Amount to being transferred is bigger than vested. - AmountBigger, - } - - #[pallet::call] - impl Pallet { - /// Transfer tokens from pre-funded `source` to `dest` account. - /// - /// The origin must be the root. - /// - /// Parameters: - /// - `source`: the pre-funded account (i.e. root), - /// - `dest`: the beneficiary account, - /// - `amount`: the amount of tokens to be minted. - /// - /// Emits the following events: - /// - `TokensDeposited{ dest, amount }` - #[pallet::call_index(0)] - #[pallet::weight(::WeightInfo::transfer(1))] - pub fn transfer( - origin: OriginFor, - source: T::AccountId, - dest: T::AccountId, - amount: BalanceOf, - ) -> DispatchResultWithPostInfo { - ensure_root(origin)?; - - <::Currency as Currency<_>>::transfer( - &source, - &dest, - amount, - ExistenceRequirement::KeepAlive, - )?; - Self::deposit_event(Event::TokensDeposited { - account: dest, - amount, - }); - - // This extrinsic is not chargeable - Ok(Pays::No.into()) - } - - /// Remove vesting for `source` account and transfer tokens to `dest` account. - /// - /// The origin must be the root. - /// - /// Parameters: - /// - `source`: the account with vesting running, - /// - `dest`: the beneficiary account, - /// - `schedule_index`: the index of `VestingInfo` for source account. - /// - `amount`: the amount to be unlocked and transferred from `VestingInfo`. - /// - /// Emits the following events: - /// - `VestingScheduleRemoved{ who, schedule_index }` - #[pallet::call_index(1)] - #[pallet::weight(::WeightInfo::transfer_vested(1))] - pub fn transfer_vested( - origin: OriginFor, - source: T::AccountId, - dest: T::AccountId, - schedule_index: u32, - amount: Option>, - ) -> DispatchResultWithPostInfo { - ensure_root(origin)?; - - let schedules = pallet_vesting::Pallet::::vesting(&source) - .ok_or(pallet_vesting::Error::::NotVesting)?; - - let schedule = schedules - .get(schedule_index as usize) - .ok_or(pallet_vesting::Error::::ScheduleIndexOutOfBounds)?; - - T::VestingSchedule::remove_vesting_schedule(&source, schedule_index)?; - - Self::deposit_event(Event::VestingScheduleRemoved { - who: source.clone(), - schedule_index, - }); - - let amount = if let Some(amount) = amount { - ensure!(amount <= schedule.locked(), Error::::AmountBigger); - let end_amount = schedule.locked().saturating_sub(amount); - let end_block = schedule.ending_block_as_balance::(); - let start_block = T::BlockNumberToBalance::convert(schedule.starting_block()); - let per_block = end_amount / end_block.saturating_sub(start_block); - - T::VestingSchedule::can_add_vesting_schedule( - &source, - end_amount, - per_block, - schedule.starting_block(), - )?; - let res = T::VestingSchedule::add_vesting_schedule( - &source, - end_amount, - per_block, - schedule.starting_block(), - ); - - debug_assert!( - res.is_ok(), - "Failed to add a schedule when we had to succeed." - ); - - amount - } else { - schedule.locked() - }; - - <::Currency as Currency<_>>::transfer( - &source, - &dest, - amount, - ExistenceRequirement::AllowDeath, - )?; - - // This extrinsic is not chargeable - Ok(Pays::No.into()) - } - } -} diff --git a/pallets/airdrop/src/mock.rs b/pallets/airdrop/src/mock.rs deleted file mode 100644 index 6e4f334f9f2..00000000000 --- a/pallets/airdrop/src/mock.rs +++ /dev/null @@ -1,247 +0,0 @@ -// This file is part of Gear. - -// Copyright (C) 2021-2023 Gear Technologies Inc. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -use crate as pallet_airdrop; -use frame_support::{ - construct_runtime, parameter_types, - traits::{ConstU64, GenesisBuild, WithdrawReasons}, -}; -use frame_support_test::TestRandomness; -use frame_system as system; -use sp_core::ConstBool; -use sp_runtime::{ - testing::Header, - traits::{BlakeTwo256, ConvertInto, IdentityLookup}, -}; -use sp_std::convert::{TryFrom, TryInto}; - -type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; -type Block = frame_system::mocking::MockBlock; -type AccountId = u64; -type BlockNumber = u64; -type Balance = u128; - -pub const ALICE: AccountId = 1; -pub const BOB: AccountId = 2; -pub const ROOT: AccountId = 255; - -// Configure a mock runtime to test the pallet. -construct_runtime!( - pub enum Test where - Block = Block, - NodeBlock = Block, - UncheckedExtrinsic = UncheckedExtrinsic, - { - System: system, - Balances: pallet_balances, - Sudo: pallet_sudo, - Authorship: pallet_authorship, - Timestamp: pallet_timestamp, - GearProgram: pallet_gear_program, - GearMessenger: pallet_gear_messenger, - GearScheduler: pallet_gear_scheduler, - GearGas: pallet_gear_gas, - GearBank: pallet_gear_bank, - Gear: pallet_gear, - Airdrop: pallet_airdrop, - Vesting: pallet_vesting, - } -); - -parameter_types! { - pub const BlockHashCount: u64 = 250; - pub const SS58Prefix: u8 = 42; - pub const ExistentialDeposit: Balance = 1; - pub const OutgoingLimit: u32 = 1024; - pub GearSchedule: pallet_gear::Schedule = >::default(); -} - -impl system::Config for Test { - type BaseCallFilter = frame_support::traits::Everything; - type BlockWeights = (); - type BlockLength = (); - type DbWeight = (); - type RuntimeOrigin = RuntimeOrigin; - type RuntimeCall = RuntimeCall; - type Index = u64; - type BlockNumber = BlockNumber; - type Hash = sp_core::H256; - type Hashing = BlakeTwo256; - type AccountId = AccountId; - type Lookup = IdentityLookup; - type Header = Header; - type RuntimeEvent = RuntimeEvent; - type BlockHashCount = BlockHashCount; - type Version = (); - type PalletInfo = PalletInfo; - type AccountData = pallet_balances::AccountData; - type OnNewAccount = (); - type OnKilledAccount = (); - type SystemWeightInfo = (); - type SS58Prefix = SS58Prefix; - type OnSetCode = (); - type MaxConsumers = frame_support::traits::ConstU32<16>; -} - -impl pallet_balances::Config for Test { - type MaxLocks = (); - type MaxReserves = (); - type ReserveIdentifier = [u8; 8]; - type Balance = Balance; - type DustRemoval = (); - type RuntimeEvent = RuntimeEvent; - type ExistentialDeposit = ExistentialDeposit; - type AccountStore = System; - type WeightInfo = (); -} - -impl pallet_sudo::Config for Test { - type RuntimeEvent = RuntimeEvent; - type RuntimeCall = RuntimeCall; -} - -impl pallet_timestamp::Config for Test { - type Moment = u64; - type OnTimestampSet = (); - type MinimumPeriod = ConstU64<500>; - type WeightInfo = (); -} - -impl pallet_authorship::Config for Test { - type FindAuthor = (); - - type EventHandler = (); -} - -impl pallet_gear_gas::Config for Test { - type BlockGasLimit = ConstU64<100_000_000>; -} - -impl pallet_gear_messenger::Config for Test { - type BlockLimiter = GearGas; - type CurrentBlockNumber = Gear; -} - -impl pallet_gear_program::Config for Test { - type Scheduler = GearScheduler; - type CurrentBlockNumber = (); -} - -parameter_types! { - pub RentFreePeriod: BlockNumber = 1_000; - pub RentCostPerBlock: Balance = 11; - pub ResumeMinimalPeriod: BlockNumber = 100; - pub ResumeSessionDuration: BlockNumber = 1_000; - pub const BankAddress: AccountId = 15082001; - pub const GasMultiplier: common::GasMultiplier = common::GasMultiplier::ValuePerGas(25); -} - -impl pallet_gear_bank::Config for Test { - type Currency = Balances; - type BankAddress = BankAddress; - type GasMultiplier = GasMultiplier; -} - -impl pallet_gear::Config for Test { - type RuntimeEvent = RuntimeEvent; - type Randomness = TestRandomness; - type WeightInfo = (); - type Schedule = GearSchedule; - type OutgoingLimit = OutgoingLimit; - type DebugInfo = (); - type ProgramStorage = GearProgram; - type CodeStorage = GearProgram; - type MailboxThreshold = ConstU64<3000>; - type ReservationsLimit = ConstU64<256>; - type Messenger = GearMessenger; - type GasProvider = GearGas; - type BlockLimiter = GearGas; - type Scheduler = GearScheduler; - type QueueRunner = Gear; - type Voucher = (); - type ProgramRentFreePeriod = RentFreePeriod; - type ProgramResumeMinimalRentPeriod = ResumeMinimalPeriod; - type ProgramRentCostPerBlock = RentCostPerBlock; - type ProgramResumeSessionDuration = ResumeSessionDuration; - type ProgramRentEnabled = ConstBool; - type ProgramRentDisabledDelta = RentFreePeriod; -} - -impl pallet_gear_scheduler::Config for Test { - type BlockLimiter = GearGas; - type ReserveThreshold = ConstU64<1>; - type WaitlistCost = ConstU64<100>; - type MailboxCost = ConstU64<100>; - type ReservationCost = ConstU64<100>; - type DispatchHoldCost = ConstU64<100>; -} - -parameter_types! { - pub UnvestedFundsAllowedWithdrawReasons: WithdrawReasons = - WithdrawReasons::except(WithdrawReasons::TRANSFER | WithdrawReasons::RESERVE); -} - -impl pallet_vesting::Config for Test { - type RuntimeEvent = RuntimeEvent; - type Currency = Balances; - type BlockNumberToBalance = ConvertInto; - type MinVestedTransfer = (); - type WeightInfo = (); - type UnvestedFundsAllowedWithdrawReasons = UnvestedFundsAllowedWithdrawReasons; - const MAX_VESTING_SCHEDULES: u32 = 28; -} - -pub type VestingError = pallet_vesting::Error; - -impl pallet_airdrop::Config for Test { - type RuntimeEvent = RuntimeEvent; - type WeightInfo = (); - type VestingSchedule = Vesting; -} - -pub type AirdropCall = pallet_airdrop::Call; -pub type AirdropError = pallet_airdrop::Error; - -// Build genesis storage according to the mock runtime. -pub fn new_test_ext() -> sp_io::TestExternalities { - let mut t = system::GenesisConfig::default() - .build_storage::() - .unwrap(); - - pallet_balances::GenesisConfig:: { - balances: vec![ - (ROOT, 100_000_000_u128), - (BOB, 100_000_000_u128), - (BankAddress::get(), ExistentialDeposit::get()), - ], - } - .assimilate_storage(&mut t) - .unwrap(); - - pallet_sudo::GenesisConfig:: { key: Some(ROOT) } - .assimilate_storage(&mut t) - .unwrap(); - - pallet_vesting::GenesisConfig:: { - vesting: vec![(BOB, 100, 1000, 0)], - } - .assimilate_storage(&mut t) - .unwrap(); - - t.into() -} diff --git a/pallets/airdrop/src/tests.rs b/pallets/airdrop/src/tests.rs deleted file mode 100644 index 420b8c05930..00000000000 --- a/pallets/airdrop/src/tests.rs +++ /dev/null @@ -1,173 +0,0 @@ -// This file is part of Gear. - -// Copyright (C) 2021-2023 Gear Technologies Inc. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -use super::*; -use crate::mock::{ - new_test_ext, Airdrop, AirdropCall, AirdropError, Balances, BankAddress, ExistentialDeposit, - RuntimeCall, RuntimeOrigin, Sudo, Test, Vesting, VestingError, ALICE, BOB, ROOT, -}; -use frame_support::{assert_err, assert_noop, assert_ok}; -use frame_system::Config; -use pallet_vesting::VestingInfo; - -#[test] -fn test_setup_works() { - new_test_ext().execute_with(|| { - assert_eq!(Sudo::key(), Some(ROOT)); - assert_eq!( - Balances::total_issuance(), - 200_000_000 + ExistentialDeposit::get() - ); - }); -} - -#[test] -fn sudo_call_works() { - new_test_ext().execute_with(|| { - let call = Box::new(RuntimeCall::Airdrop(AirdropCall::transfer { - source: ROOT, - dest: ALICE, - amount: 10_000_000, - })); - assert_ok!(Sudo::sudo(RuntimeOrigin::signed(ROOT), call)); - assert_eq!(Balances::total_balance(&ALICE), 10_000_000); - assert_eq!(Balances::total_balance(&ROOT), 90_000_000); - assert_eq!( - Balances::total_balance(&BankAddress::get()), - ExistentialDeposit::get() - ); - assert_eq!( - Balances::total_issuance(), - 200_000_000 + ExistentialDeposit::get() - ); - - assert_eq!(Balances::locks(BOB).len(), 1); - let call = Box::new(RuntimeCall::Airdrop(AirdropCall::transfer_vested { - source: BOB, - dest: ALICE, - schedule_index: 0, - amount: None, - })); - assert_ok!(Sudo::sudo(RuntimeOrigin::signed(ROOT), call)); - assert_eq!(Balances::total_balance(&BOB), 0); - assert_eq!(Balances::locks(BOB), vec![]); - assert_eq!(Balances::total_balance(&ALICE), 110_000_000); - assert_eq!( - Balances::total_issuance(), - 200_000_000 + ExistentialDeposit::get() - ); - }); -} -#[test] -fn vesting_transfer_works() { - new_test_ext().execute_with(|| { - assert_eq!(Balances::locks(BOB).len(), 1); - assert_eq!( - Vesting::vesting(BOB).unwrap().first().unwrap(), - &VestingInfo::, ::BlockNumber>::new( - 100_000_000, - 100_000, - 100, - ) - ); - assert_eq!(Balances::total_balance(&ALICE), 0); - assert_eq!(Balances::total_balance(&BOB), 100_000_000); - assert_eq!(Balances::total_balance(&ROOT), 100_000_000); - assert_eq!( - Balances::total_balance(&BankAddress::get()), - ExistentialDeposit::get() - ); - assert_eq!( - Balances::total_issuance(), - 200_000_000 + ExistentialDeposit::get() - ); - - // Vesting must exist on the source account - assert_err!( - Airdrop::transfer_vested(RuntimeOrigin::root(), ALICE, BOB, 1, Some(200_000_000)), - VestingError::NotVesting - ); - - // Schedule must exist on the source account - assert_err!( - Airdrop::transfer_vested(RuntimeOrigin::root(), BOB, ALICE, 1, Some(200_000_000)), - VestingError::ScheduleIndexOutOfBounds - ); - - // Amount can't be bigger than locked funds - assert_err!( - Airdrop::transfer_vested(RuntimeOrigin::root(), BOB, ALICE, 0, Some(200_000_000)), - AirdropError::AmountBigger - ); - - // Transfer part of vested funds to ALICE - assert_ok!(Airdrop::transfer_vested( - RuntimeOrigin::root(), - BOB, - ALICE, - 0, - Some(10_000_000) - )); - - // Check that BOB have the same vesting schedule reduced by unlocked funds - assert_eq!( - Vesting::vesting(BOB).unwrap().first().unwrap(), - &VestingInfo::, ::BlockNumber>::new( - 90_000_000, 90_000, 100, - ) - ); - assert_eq!(Balances::total_balance(&BOB), 90_000_000); - assert_eq!(Balances::free_balance(ALICE), 10_000_000); - assert_eq!( - Balances::total_issuance(), - 200_000_000 + ExistentialDeposit::get() - ); - - // Transfer all of vested funds to ALICE - assert_ok!(Airdrop::transfer_vested( - RuntimeOrigin::root(), - BOB, - ALICE, - 0, - None - )); - - // Check that BOB have no vesting and ALICE have all the unlocked funds. - assert_eq!(Vesting::vesting(BOB), None); - assert_eq!(Balances::total_balance(&BOB), 0); - assert_eq!(Balances::free_balance(ALICE), 100_000_000); - assert_eq!( - Balances::total_issuance(), - 200_000_000 + ExistentialDeposit::get() - ); - }); -} - -#[test] -fn signed_extrinsic_fails() { - new_test_ext().execute_with(|| { - assert_noop!( - Airdrop::transfer(RuntimeOrigin::signed(ROOT), ROOT, ALICE, 10_000_000_u128), - DispatchError::BadOrigin, - ); - assert_noop!( - Airdrop::transfer_vested(RuntimeOrigin::signed(ROOT), BOB, ALICE, 0, None), - DispatchError::BadOrigin, - ); - }); -} diff --git a/pallets/airdrop/src/weights.rs b/pallets/airdrop/src/weights.rs deleted file mode 100644 index ddaa539a3d9..00000000000 --- a/pallets/airdrop/src/weights.rs +++ /dev/null @@ -1,95 +0,0 @@ -// This file is part of Gear. - -// Copyright (C) 2022-2023 Gear Technologies Inc. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -//! Autogenerated weights for pallet_airdrop -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-07-26, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! WORST CASE MAP SIZE: `1000000` -//! CPU: `Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("vara-dev"), DB CACHE: 1024 - -// Executed Command: -// ./target/production/gear benchmark pallet --chain=vara-dev --steps=50 --repeat=20 --pallet=pallet_airdrop --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=pallet_airdrop.rs --template=.maintain/frame-weight-template.hbs - -#![cfg_attr(rustfmt, rustfmt_skip)] -#![allow(unused_parens)] -#![allow(unused_imports)] -#![allow(clippy::unnecessary_cast)] - -use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; -use sp_std::marker::PhantomData; - -/// Weight functions needed for pallet_airdrop. -pub trait WeightInfo { - fn transfer(q: u32, ) -> Weight; - fn transfer_vested(q: u32, ) -> Weight; -} - -/// Weights for pallet_airdrop using the Gear node and recommended hardware. -pub struct SubstrateWeight(PhantomData); -impl WeightInfo for SubstrateWeight { - /// The range of component `q` is `[1, 256]`. - fn transfer(_q: u32, ) -> Weight { - // Proof Size summary in bytes: - // Measured: `103` - // Estimated: `6196` - // Minimum execution time: 25_027_000 picoseconds. - Weight::from_parts(25_985_030, 6196) - .saturating_add(T::DbWeight::get().reads(2_u64)) - .saturating_add(T::DbWeight::get().writes(2_u64)) - } - /// The range of component `q` is `[1, 256]`. - fn transfer_vested(q: u32, ) -> Weight { - // Proof Size summary in bytes: - // Measured: `550` - // Estimated: `15482` - // Minimum execution time: 65_271_000 picoseconds. - Weight::from_parts(67_109_074, 15482) - // Standard Error: 328 - .saturating_add(Weight::from_parts(336, 0).saturating_mul(q.into())) - .saturating_add(T::DbWeight::get().reads(4_u64)) - .saturating_add(T::DbWeight::get().writes(4_u64)) - } -} - -// For backwards compatibility and tests -impl WeightInfo for () { - /// The range of component `q` is `[1, 256]`. - fn transfer(_q: u32, ) -> Weight { - // Proof Size summary in bytes: - // Measured: `103` - // Estimated: `6196` - // Minimum execution time: 25_027_000 picoseconds. - Weight::from_parts(25_985_030, 6196) - .saturating_add(RocksDbWeight::get().reads(2_u64)) - .saturating_add(RocksDbWeight::get().writes(2_u64)) - } - /// The range of component `q` is `[1, 256]`. - fn transfer_vested(q: u32, ) -> Weight { - // Proof Size summary in bytes: - // Measured: `550` - // Estimated: `15482` - // Minimum execution time: 65_271_000 picoseconds. - Weight::from_parts(67_109_074, 15482) - // Standard Error: 328 - .saturating_add(Weight::from_parts(336, 0).saturating_mul(q.into())) - .saturating_add(RocksDbWeight::get().reads(4_u64)) - .saturating_add(RocksDbWeight::get().writes(4_u64)) - } -} diff --git a/runtime/vara/Cargo.toml b/runtime/vara/Cargo.toml index fa91b85ef26..dcfed171e56 100644 --- a/runtime/vara/Cargo.toml +++ b/runtime/vara/Cargo.toml @@ -98,7 +98,6 @@ pallet-gear-staking-rewards.workspace = true pallet-gear-voucher.workspace = true pallet-gear-rpc-runtime-api.workspace = true runtime-primitives.workspace = true -pallet-airdrop.workspace = true [dev-dependencies] sp-io.workspace = true @@ -185,7 +184,6 @@ std = [ "sp-transaction-pool/std", "sp-version/std", "substrate-wasm-builder", - "pallet-airdrop/std", ] runtime-benchmarks = [ "frame-benchmarking/runtime-benchmarks", @@ -200,7 +198,6 @@ runtime-benchmarks = [ "pallet-gear/runtime-benchmarks", "pallet-gear-voucher/runtime-benchmarks", "sp-runtime/runtime-benchmarks", - "pallet-airdrop/runtime-benchmarks", "pallet-bags-list/runtime-benchmarks", "pallet-staking/runtime-benchmarks", "pallet-conviction-voting/runtime-benchmarks", @@ -255,7 +252,6 @@ try-runtime = [ "pallet-utility/try-runtime", "pallet-vesting/try-runtime", "pallet-whitelist/try-runtime", - "pallet-airdrop/try-runtime", "pallet-bags-list/try-runtime", "runtime-common/try-runtime", ] diff --git a/runtime/vara/src/lib.rs b/runtime/vara/src/lib.rs index c6332876d1b..6317db2cc24 100644 --- a/runtime/vara/src/lib.rs +++ b/runtime/vara/src/lib.rs @@ -1015,12 +1015,6 @@ impl pallet_gear_messenger::Config for Runtime { type CurrentBlockNumber = Gear; } -impl pallet_airdrop::Config for Runtime { - type RuntimeEvent = RuntimeEvent; - type WeightInfo = weights::pallet_airdrop::SubstrateWeight; - type VestingSchedule = Vesting; -} - pub struct ExtraFeeFilter; impl Contains for ExtraFeeFilter { fn contains(call: &RuntimeCall) -> bool { @@ -1167,8 +1161,7 @@ construct_runtime!( // TODO: Remove in stage 3 Sudo: pallet_sudo = 99, - // TODO: remove from production version - Airdrop: pallet_airdrop = 198, + // NOTE (!): `pallet_airdrop` used to be idx(198). // Only available with "debug-mode" feature on GearDebug: pallet_gear_debug = 199, @@ -1232,8 +1225,7 @@ construct_runtime!( // TODO: Remove in stage 3 Sudo: pallet_sudo = 99, - // TODO: remove from production version - Airdrop: pallet_airdrop = 198, + // NOTE (!): `pallet_airdrop` used to be idx(198). } ); @@ -1295,7 +1287,6 @@ mod benches { [pallet_timestamp, Timestamp] [pallet_utility, Utility] // Gear pallets - [pallet_airdrop, Airdrop] [pallet_gear, Gear] [pallet_gear_voucher, GearVoucher] ); diff --git a/runtime/vara/src/weights/mod.rs b/runtime/vara/src/weights/mod.rs index 170d6f59e22..b4eebedfe52 100644 --- a/runtime/vara/src/weights/mod.rs +++ b/runtime/vara/src/weights/mod.rs @@ -19,7 +19,6 @@ //! A list of the different weight modules for our runtime. pub mod frame_system; -pub mod pallet_airdrop; pub mod pallet_balances; pub mod pallet_gear; pub mod pallet_gear_voucher; diff --git a/runtime/vara/src/weights/pallet_airdrop.rs b/runtime/vara/src/weights/pallet_airdrop.rs deleted file mode 100644 index ffe616fea00..00000000000 --- a/runtime/vara/src/weights/pallet_airdrop.rs +++ /dev/null @@ -1,95 +0,0 @@ -// This file is part of Gear. - -// Copyright (C) 2022-2023 Gear Technologies Inc. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -//! Autogenerated weights for pallet_airdrop -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-09-11, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! WORST CASE MAP SIZE: `1000000` -//! CPU: `Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("vara-dev"), DB CACHE: 1024 - -// Executed Command: -// ./target/production/gear benchmark pallet --chain=vara-dev --steps=50 --repeat=20 --pallet=pallet_airdrop --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./scripts/benchmarking/weights-output/pallet_airdrop.rs --template=.maintain/frame-weight-template.hbs - -#![cfg_attr(rustfmt, rustfmt_skip)] -#![allow(unused_parens)] -#![allow(unused_imports)] -#![allow(clippy::unnecessary_cast)] - -use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; -use sp_std::marker::PhantomData; - -/// Weight functions needed for pallet_airdrop. -pub trait WeightInfo { - fn transfer(q: u32, ) -> Weight; - fn transfer_vested(q: u32, ) -> Weight; -} - -/// Weights for pallet_airdrop using the Gear node and recommended hardware. -pub struct SubstrateWeight(PhantomData); -impl pallet_airdrop::WeightInfo for SubstrateWeight { - /// The range of component `q` is `[1, 256]`. - fn transfer(_q: u32, ) -> Weight { - // Proof Size summary in bytes: - // Measured: `103` - // Estimated: `6196` - // Minimum execution time: 25_162_000 picoseconds. - Weight::from_parts(26_300_954, 6196) - .saturating_add(T::DbWeight::get().reads(2_u64)) - .saturating_add(T::DbWeight::get().writes(2_u64)) - } - /// The range of component `q` is `[1, 256]`. - fn transfer_vested(q: u32, ) -> Weight { - // Proof Size summary in bytes: - // Measured: `550` - // Estimated: `15482` - // Minimum execution time: 65_671_000 picoseconds. - Weight::from_parts(67_524_170, 15482) - // Standard Error: 398 - .saturating_add(Weight::from_parts(280, 0).saturating_mul(q.into())) - .saturating_add(T::DbWeight::get().reads(4_u64)) - .saturating_add(T::DbWeight::get().writes(4_u64)) - } -} - -// For backwards compatibility and tests -impl WeightInfo for () { - /// The range of component `q` is `[1, 256]`. - fn transfer(_q: u32, ) -> Weight { - // Proof Size summary in bytes: - // Measured: `103` - // Estimated: `6196` - // Minimum execution time: 25_162_000 picoseconds. - Weight::from_parts(26_300_954, 6196) - .saturating_add(RocksDbWeight::get().reads(2_u64)) - .saturating_add(RocksDbWeight::get().writes(2_u64)) - } - /// The range of component `q` is `[1, 256]`. - fn transfer_vested(q: u32, ) -> Weight { - // Proof Size summary in bytes: - // Measured: `550` - // Estimated: `15482` - // Minimum execution time: 65_671_000 picoseconds. - Weight::from_parts(67_524_170, 15482) - // Standard Error: 398 - .saturating_add(Weight::from_parts(280, 0).saturating_mul(q.into())) - .saturating_add(RocksDbWeight::get().reads(4_u64)) - .saturating_add(RocksDbWeight::get().writes(4_u64)) - } -} From 80fb8478fffe5316f64fc0e491e76b358adda40c Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Fri, 15 Sep 2023 19:39:02 +0400 Subject: [PATCH 12/21] chore(v1.0.0): Development features gate (#3277) --- .github/workflows/release.yml | 53 ++++++++++++++++++++--------- gsdk/build.rs | 6 +--- node/authorship/Cargo.toml | 2 +- node/cli/Cargo.toml | 8 ++--- node/cli/src/command.rs | 39 ++++++++++++++------- node/service/Cargo.toml | 6 ++-- node/service/src/chain_spec/gear.rs | 1 + node/service/src/chain_spec/vara.rs | 1 + node/testing/Cargo.toml | 4 +-- pallets/gear-debug/Cargo.toml | 2 +- pallets/gear-debug/src/tests/mod.rs | 8 ++--- pallets/gear-program/Cargo.toml | 2 +- pallets/gear-program/src/lib.rs | 4 +-- runtime/gear/Cargo.toml | 2 +- runtime/gear/src/lib.rs | 14 ++++---- runtime/vara/Cargo.toml | 2 +- runtime/vara/src/lib.rs | 14 ++++---- scripts/update-gsdk-metadata.sh | 2 +- 18 files changed, 101 insertions(+), 69 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5c62aa29c58..07d09151710 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -49,46 +49,67 @@ jobs: needs: prepare runs-on: [kuberunner] steps: - - name: Checkout + - name: "Actions: Checkout" uses: actions/checkout@v4 - - name: Set cargo path - run: echo "/tmp/cargo/bin" >> $GITHUB_PATH + - name: "Environment: Cargo path" + run: > + echo "/tmp/cargo/bin" >> $GITHUB_PATH - name: "Install: Rust toolchain" uses: dsherret/rust-toolchain-file@v1 - - name: Install build deps + - name: "Install: Build dependencies" run: | sudo apt update -y sudo apt install -y git clang curl libssl-dev llvm libudev-dev cmake protobuf-compiler wget bzip2 - - name: Build wasm-proc + - name: "Environment: Export versions" + run: | + export GEAR_SPEC="$(cat runtime/gear/src/lib.rs | grep "spec_version: " | awk -F " " '{print substr($2, 1, length($2)-1)}')" + export VARA_SPEC="$(cat runtime/vara/src/lib.rs | grep "spec_version: " | awk -F " " '{print substr($2, 1, length($2)-1)}')" + + - name: "Artifact: Make `artifact` directory" + run: > + mkdir -p artifact + + - name: "Build: `wasm-proc`" run: | cargo build -p wasm-proc --release cp -vf target/release/wasm-proc ./ - - name: Build binaries + - name: "Build: Production `gear-cli`" run: > cargo build -p gear-cli --profile production - - name: Test runtimes + - name: "Test: Production runtimes" run: | ./wasm-proc --check-runtime-imports target/production/wbuild/gear-runtime/gear_runtime.wasm ./wasm-proc --check-runtime-imports target/production/wbuild/vara-runtime/vara_runtime.wasm - - name: Prepare artifacts + - name: "Artifact: Production binaries" run: | - mkdir -p artifact - cp target/production/wbuild/gear-runtime/gear_runtime.compact.compressed.wasm artifact/ - cp target/production/wbuild/gear-runtime/gear_runtime.compact.wasm artifact/ - cp target/production/wbuild/gear-runtime/gear_runtime.wasm artifact/ - cp target/production/wbuild/vara-runtime/vara_runtime.compact.compressed.wasm artifact/ - cp target/production/wbuild/vara-runtime/vara_runtime.compact.wasm artifact/ - cp target/production/wbuild/vara-runtime/vara_runtime.wasm artifact/ - cp target/production/gear artifact/ + cp target/production/wbuild/gear-runtime/gear_runtime.compact.compressed.wasm "artifact/gear_v$GEAR_SPEC.wasm" + cp target/production/wbuild/vara-runtime/vara_runtime.compact.compressed.wasm "artifact/vara_v$VARA_SPEC.wasm" + cp target/production/gear artifact/gear strip artifact/gear || true + - name: "Build: Development `gear-cli`" + run: > + cargo build -p gear-cli --profile production -F dev + + - name: "Test: Development runtimes" + run: | + ./wasm-proc --check-runtime-imports target/production/wbuild/gear-runtime/gear_runtime.wasm + ./wasm-proc --check-runtime-imports target/production/wbuild/vara-runtime/vara_runtime.wasm + + - name: "Artifact: Development binaries" + run: | + cp target/production/wbuild/gear-runtime/gear_runtime.compact.compressed.wasm "artifact/dev_gear_v$GEAR_SPEC.wasm" + cp target/production/wbuild/vara-runtime/vara_runtime.compact.compressed.wasm "artifact/dev_vara_v$VARA_SPEC.wasm" + cp target/production/gear artifact/dev-gear + strip artifact/dev-gear || true + - name: Publish uses: softprops/action-gh-release@v1 with: diff --git a/gsdk/build.rs b/gsdk/build.rs index 992126a4a46..a7e74efbc13 100644 --- a/gsdk/build.rs +++ b/gsdk/build.rs @@ -40,11 +40,7 @@ fn generate_api() -> Vec { // NOTE: use vara here since vara includes all pallets gear have, // and the API we are building here is for both vara and gear. let [vara_runtime, api_gen] = [ - ( - VARA_RUNTIME_RELATIVE_PATH, - VARA_RUNTIME_PKG, - vec!["debug-mode"], - ), + (VARA_RUNTIME_RELATIVE_PATH, VARA_RUNTIME_PKG, vec!["dev"]), (GSDK_API_GEN_RELATIVE_PATH, GSDK_API_GEN_PKG, vec![]), ] .map(|(relative_path, pkg, features)| get_path(root, &profile, relative_path, pkg, features)); diff --git a/node/authorship/Cargo.toml b/node/authorship/Cargo.toml index 9c9633d0ce9..041944ca157 100644 --- a/node/authorship/Cargo.toml +++ b/node/authorship/Cargo.toml @@ -55,6 +55,6 @@ pallet-balances = { workspace = true, features = ["std"] } pallet-gear = { workspace = true, features = ["std"] } pallet-gear-messenger = { workspace = true, features = ["std"] } testing = {workspace = true, features = ["vara-native"] } -vara-runtime = { workspace = true, features = ["std"] } +vara-runtime = { workspace = true, features = ["std", "dev"] } demo-mul-by-const.workspace = true env_logger.workspace = true diff --git a/node/cli/Cargo.toml b/node/cli/Cargo.toml index 022e3f13c0c..02fe1c8c9d2 100644 --- a/node/cli/Cargo.toml +++ b/node/cli/Cargo.toml @@ -86,10 +86,10 @@ runtime-benchmarks = [ runtime-benchmarks-checkers = [ "service/runtime-benchmarks-checkers", ] -debug-mode = [ - "service/debug-mode", - "gear-runtime?/debug-mode", - "vara-runtime?/debug-mode", +dev = [ + "service/dev", + "gear-runtime?/dev", + "vara-runtime?/dev", ] try-runtime = [ "service/try-runtime", diff --git a/node/cli/src/command.rs b/node/cli/src/command.rs index 42cf04ca104..d88945fd663 100644 --- a/node/cli/src/command.rs +++ b/node/cli/src/command.rs @@ -52,20 +52,32 @@ impl SubstrateCli for Cli { fn load_spec(&self, id: &str) -> Result, String> { Ok(match id { - #[cfg(feature = "gear-native")] + #[cfg(all(feature = "gear-native", feature = "dev"))] "dev" | "gear-dev" => Box::new(chain_spec::gear::development_config()?), - #[cfg(feature = "vara-native")] + #[cfg(all(feature = "vara-native", feature = "dev"))] "vara-dev" => Box::new(chain_spec::vara::development_config()?), #[cfg(feature = "gear-native")] - "local" | "gear-local" => Box::new(chain_spec::gear::local_testnet_config()?), + "local" | "gear-local" => { + #[cfg(feature = "dev")] + log::warn!("Running `gear-local` in `dev` mode"); + Box::new(chain_spec::gear::local_testnet_config()?) + } #[cfg(feature = "vara-native")] "vara" => Box::new(chain_spec::RawChainSpec::from_json_bytes( &include_bytes!("../../res/vara.json")[..], )?), #[cfg(feature = "vara-native")] - "vara-local" => Box::new(chain_spec::vara::local_testnet_config()?), + "vara-local" => { + #[cfg(feature = "dev")] + log::warn!("Running `vara-local` in `dev` mode"); + Box::new(chain_spec::vara::local_testnet_config()?) + } #[cfg(feature = "gear-native")] - "staging" | "gear-staging" => Box::new(chain_spec::gear::staging_testnet_config()?), + "staging" | "gear-staging" => { + #[cfg(feature = "dev")] + log::warn!("Running `gear-staging` in `dev` mode"); + Box::new(chain_spec::gear::staging_testnet_config()?) + } "test" | "" => Box::new(chain_spec::RawChainSpec::from_json_bytes( &include_bytes!("../../res/staging.json")[..], )?), @@ -75,24 +87,25 @@ impl SubstrateCli for Cli { let chain_spec = Box::new(chain_spec::RawChainSpec::from_json_file(path.clone())?) as Box; + if chain_spec.is_dev() { + #[cfg(not(feature = "dev"))] + return Err("Development runtimes are not available. Please compile the node with `-F dev` to enable it.".into()); + } + // When `force_*` is provide or the file name starts with the name of a known chain, // we use the chain spec for the specific chain. if self.run.force_vara || chain_spec.is_vara() { #[cfg(feature = "vara-native")] - { - Box::new(chain_spec::vara::ChainSpec::from_json_file(path)?) - } + return Ok(Box::new(chain_spec::vara::ChainSpec::from_json_file(path)?)); #[cfg(not(feature = "vara-native"))] - return Err("Vara runtime is not available. Please compile the node with `--features vara-native` to enable it.".into()); + return Err("Vara runtime is not available. Please compile the node with `-F vara-native` to enable it.".into()); } else { #[cfg(feature = "gear-native")] - { - Box::new(chain_spec::gear::ChainSpec::from_json_file(path)?) - } + return Ok(Box::new(chain_spec::gear::ChainSpec::from_json_file(path)?)); #[cfg(not(feature = "gear-native"))] - return Err("Gear runtime is not available. Please compile the node with default features to enable it.".into()); + return Err("Gear runtime is not available. Please compile the node with `-F gear-native` to enable it.".into()); } } }) diff --git a/node/service/Cargo.toml b/node/service/Cargo.toml index 8a7149183bc..79ff6da306f 100644 --- a/node/service/Cargo.toml +++ b/node/service/Cargo.toml @@ -123,9 +123,9 @@ runtime-benchmarks-checkers = [ "gear-runtime?/runtime-benchmarks-checkers", "vara-runtime?/runtime-benchmarks-checkers", ] -debug-mode = [ - "gear-runtime?/debug-mode", - "vara-runtime?/debug-mode", +dev = [ + "gear-runtime?/dev", + "vara-runtime?/dev", ] try-runtime = [ "gear-runtime?/try-runtime", diff --git a/node/service/src/chain_spec/gear.rs b/node/service/src/chain_spec/gear.rs index 89c4fd29c96..d180fde5185 100644 --- a/node/service/src/chain_spec/gear.rs +++ b/node/service/src/chain_spec/gear.rs @@ -41,6 +41,7 @@ pub fn authority_keys_from_seed(s: &str) -> (AccountId, BabeId, GrandpaId) { ) } +#[cfg(feature = "dev")] pub fn development_config() -> Result { let wasm_binary = WASM_BINARY.ok_or_else(|| "Development wasm not available".to_string())?; diff --git a/node/service/src/chain_spec/vara.rs b/node/service/src/chain_spec/vara.rs index 3122e7326d8..95bb0eb244f 100644 --- a/node/service/src/chain_spec/vara.rs +++ b/node/service/src/chain_spec/vara.rs @@ -91,6 +91,7 @@ pub fn authority_keys_from_seed( ) } +#[cfg(feature = "dev")] pub fn development_config() -> Result { let wasm_binary = WASM_BINARY.ok_or_else(|| "Development wasm not available".to_string())?; diff --git a/node/testing/Cargo.toml b/node/testing/Cargo.toml index 807793fdf89..8607639dc26 100644 --- a/node/testing/Cargo.toml +++ b/node/testing/Cargo.toml @@ -72,5 +72,5 @@ std = [ "gear-runtime?/std", "vara-runtime?/std", ] -gear-native = ["gear-runtime"] -vara-native = ["vara-runtime"] +gear-native = ["gear-runtime/dev"] +vara-native = ["vara-runtime/dev"] diff --git a/pallets/gear-debug/Cargo.toml b/pallets/gear-debug/Cargo.toml index f4d0e4c3294..af5b894aecf 100644 --- a/pallets/gear-debug/Cargo.toml +++ b/pallets/gear-debug/Cargo.toml @@ -45,7 +45,7 @@ pallet-gear-bank = { workspace = true, features = ["std"] } pallet-gear-gas = { workspace = true, features = ["std"] } pallet-gear-messenger = { workspace = true, features = ["std"] } pallet-gear-scheduler = { workspace = true, features = ["std"] } -pallet-gear-program = { workspace = true, features = ["debug-mode", "std"] } +pallet-gear-program = { workspace = true, features = ["dev", "std"] } gear-wasm-instrument.workspace = true demo-vec.workspace = true test-syscalls.workspace = true diff --git a/pallets/gear-debug/src/tests/mod.rs b/pallets/gear-debug/src/tests/mod.rs index 66d5b8b57ef..2008ae84895 100644 --- a/pallets/gear-debug/src/tests/mod.rs +++ b/pallets/gear-debug/src/tests/mod.rs @@ -159,7 +159,7 @@ fn debug_mode_works() { ) .expect("Failed to submit program"); - // Enable debug-mode + // Enable debug mode. DebugMode::::put(true); run_to_block(2, None); @@ -528,7 +528,7 @@ fn check_not_allocated_pages() { 0_u128, )); - // Enable debug-mode + // Enable debug mode. DebugMode::::put(true); run_to_block(2, None); @@ -756,7 +756,7 @@ fn check_changed_pages_in_storage() { 0_u128, )); - // Enable debug-mode + // Enable debug mode. DebugMode::::put(true); run_to_block(2, None); @@ -886,7 +886,7 @@ fn check_gear_stack_end() { 0_u128, )); - // Enable debug-mode + // Enable debug mode. DebugMode::::put(true); run_to_block(2, None); diff --git a/pallets/gear-program/Cargo.toml b/pallets/gear-program/Cargo.toml index 0dd3e2653b9..72b9afd28e1 100644 --- a/pallets/gear-program/Cargo.toml +++ b/pallets/gear-program/Cargo.toml @@ -55,4 +55,4 @@ std = [ "primitive-types/std", ] try-runtime = ["frame-support/try-runtime"] -debug-mode = [] +dev = [] diff --git a/pallets/gear-program/src/lib.rs b/pallets/gear-program/src/lib.rs index 8d6e8c0cea3..281366bac31 100644 --- a/pallets/gear-program/src/lib.rs +++ b/pallets/gear-program/src/lib.rs @@ -145,7 +145,7 @@ pub mod pallet { storage::*, CodeMetadata, Program, }; - #[cfg(feature = "debug-mode")] + #[cfg(feature = "dev")] use frame_support::storage::PrefixIterator; use frame_support::{ dispatch::EncodeLike, pallet_prelude::*, traits::StorageVersion, StoragePrefixedMap, @@ -388,7 +388,7 @@ pub mod pallet { type SessionMemoryPages = SessionMemoryPagesWrap; } - #[cfg(feature = "debug-mode")] + #[cfg(feature = "dev")] impl IterableMap<(ProgramId, Program>)> for pallet::Pallet { type DrainIter = PrefixIterator<(ProgramId, Program>)>; type Iter = PrefixIterator<(ProgramId, Program>)>; diff --git a/runtime/gear/Cargo.toml b/runtime/gear/Cargo.toml index 005773f2bed..fdd6f2deb3a 100644 --- a/runtime/gear/Cargo.toml +++ b/runtime/gear/Cargo.toml @@ -176,7 +176,7 @@ try-runtime = [ "validator-set/try-runtime", "runtime-common/try-runtime", ] -debug-mode = ["pallet-gear-debug", "pallet-gear-program/debug-mode"] +dev = ["pallet-gear-debug", "pallet-gear-program/dev"] lazy-pages = [ "pallet-gear/lazy-pages", "pallet-gear-payment/lazy-pages", diff --git a/runtime/gear/src/lib.rs b/runtime/gear/src/lib.rs index e7ed11281e6..6094556ebd9 100644 --- a/runtime/gear/src/lib.rs +++ b/runtime/gear/src/lib.rs @@ -89,7 +89,7 @@ pub use pallet_timestamp::Call as TimestampCall; pub use sp_runtime::BuildStorage; pub use pallet_gear; -#[cfg(feature = "debug-mode")] +#[cfg(feature = "dev")] pub use pallet_gear_debug; pub use pallet_gear_gas; pub use pallet_gear_payment; @@ -495,7 +495,7 @@ impl pallet_gear::Config for Runtime { type ProgramRentDisabledDelta = ConstU32<{ WEEKS * RENT_DISABLED_DELTA_WEEK_FACTOR }>; } -#[cfg(feature = "debug-mode")] +#[cfg(feature = "dev")] impl pallet_gear_debug::Config for Runtime { type RuntimeEvent = RuntimeEvent; type WeightInfo = pallet_gear_debug::weights::GearSupportWeight; @@ -600,7 +600,7 @@ where // // While updating the indexes, please update the indexes in `gsdk/src/metadata/mod.rs` // as well, example: https://github.com/gear-tech/gear/pull/2370/commits/a82cb5ba365cf47aef2c42a285a1793a86e711c1 -#[cfg(feature = "debug-mode")] +#[cfg(feature = "dev")] construct_runtime!( pub enum Runtime where Block = Block, @@ -631,12 +631,12 @@ construct_runtime!( GearVoucher: pallet_gear_voucher = 106, GearBank: pallet_gear_bank = 107, - // Only available with "debug-mode" feature on + // Only available with "dev" feature on GearDebug: pallet_gear_debug = 199, } ); -#[cfg(not(feature = "debug-mode"))] +#[cfg(not(feature = "dev"))] construct_runtime!( pub enum Runtime where Block = Block, @@ -704,9 +704,9 @@ pub type Executive = frame_executive::Executive< #[cfg(test)] mod tests; -#[cfg(feature = "debug-mode")] +#[cfg(feature = "dev")] type DebugInfo = GearDebug; -#[cfg(not(feature = "debug-mode"))] +#[cfg(not(feature = "dev"))] type DebugInfo = (); #[cfg(feature = "runtime-benchmarks")] diff --git a/runtime/vara/Cargo.toml b/runtime/vara/Cargo.toml index dcfed171e56..74551fefa6d 100644 --- a/runtime/vara/Cargo.toml +++ b/runtime/vara/Cargo.toml @@ -255,7 +255,7 @@ try-runtime = [ "pallet-bags-list/try-runtime", "runtime-common/try-runtime", ] -debug-mode = ["pallet-gear-debug", "pallet-gear-program/debug-mode"] +dev = ["pallet-gear-debug", "pallet-gear-program/dev"] lazy-pages = [ "pallet-gear/lazy-pages", "pallet-gear-payment/lazy-pages", diff --git a/runtime/vara/src/lib.rs b/runtime/vara/src/lib.rs index 6317db2cc24..7b9f86b4447 100644 --- a/runtime/vara/src/lib.rs +++ b/runtime/vara/src/lib.rs @@ -104,7 +104,7 @@ pub use pallet_sudo::Call as SudoCall; pub use sp_runtime::BuildStorage; pub use pallet_gear; -#[cfg(feature = "debug-mode")] +#[cfg(feature = "dev")] pub use pallet_gear_debug; pub use pallet_gear_gas; pub use pallet_gear_payment; @@ -988,7 +988,7 @@ impl pallet_gear::Config for Runtime { type ProgramRentDisabledDelta = ConstU32<{ WEEKS * RENT_DISABLED_DELTA_WEEK_FACTOR }>; } -#[cfg(feature = "debug-mode")] +#[cfg(feature = "dev")] impl pallet_gear_debug::Config for Runtime { type RuntimeEvent = RuntimeEvent; type WeightInfo = pallet_gear_debug::weights::GearSupportWeight; @@ -1104,7 +1104,7 @@ impl pallet_vesting::Config for Runtime { } // Create the runtime by composing the FRAME pallets that were previously configured. -#[cfg(feature = "debug-mode")] +#[cfg(feature = "dev")] construct_runtime!( pub enum Runtime where Block = Block, @@ -1163,12 +1163,12 @@ construct_runtime!( // NOTE (!): `pallet_airdrop` used to be idx(198). - // Only available with "debug-mode" feature on + // Only available with "dev" feature on GearDebug: pallet_gear_debug = 199, } ); -#[cfg(not(feature = "debug-mode"))] +#[cfg(not(feature = "dev"))] construct_runtime!( pub enum Runtime where Block = Block, @@ -1269,9 +1269,9 @@ mod tests; #[cfg(test)] mod integration_tests; -#[cfg(feature = "debug-mode")] +#[cfg(feature = "dev")] type DebugInfo = GearDebug; -#[cfg(not(feature = "debug-mode"))] +#[cfg(not(feature = "dev"))] type DebugInfo = (); #[cfg(feature = "runtime-benchmarks")] diff --git a/scripts/update-gsdk-metadata.sh b/scripts/update-gsdk-metadata.sh index 8ae3903eae0..b28692c0b81 100755 --- a/scripts/update-gsdk-metadata.sh +++ b/scripts/update-gsdk-metadata.sh @@ -5,7 +5,7 @@ set -ex -cargo build --package vara-runtime --features debug-mode --release +cargo build --package vara-runtime --features dev --release cargo build --package gsdk-api-gen --release touch gsdk/build.rs GSDK_API_GEN=1 cargo build --package gsdk --release From 30af61477b9c6c16c49b5f601d6e6aac41d13f58 Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Fri, 15 Sep 2023 22:15:27 +0400 Subject: [PATCH 13/21] fix(node): Throw error on `--dev` in case of non-dev build (#3280) --- Makefile | 4 ++-- node/cli/src/command.rs | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 0a253551404..347a011742a 100644 --- a/Makefile +++ b/Makefile @@ -46,11 +46,11 @@ examples-proc: wasm-proc-release .PHONY: node node: - @ ./scripts/gear.sh build node + @ ./scripts/gear.sh build node -F dev .PHONY: node-release node-release: - @ ./scripts/gear.sh build node --release + @ ./scripts/gear.sh build node -F dev --release .PHONY: vara vara: diff --git a/node/cli/src/command.rs b/node/cli/src/command.rs index d88945fd663..4daf4785562 100644 --- a/node/cli/src/command.rs +++ b/node/cli/src/command.rs @@ -52,6 +52,8 @@ impl SubstrateCli for Cli { fn load_spec(&self, id: &str) -> Result, String> { Ok(match id { + #[cfg(not(feature = "dev"))] + "dev" | "gear-dev" | "vara-dev" => return Err("Development runtimes are not available. Please compile the node with `-F dev` to enable it.".into()), #[cfg(all(feature = "gear-native", feature = "dev"))] "dev" | "gear-dev" => Box::new(chain_spec::gear::development_config()?), #[cfg(all(feature = "vara-native", feature = "dev"))] From 9eea531dae180c7150a8e0566f67b56967a73d35 Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Fri, 15 Sep 2023 22:15:39 +0400 Subject: [PATCH 14/21] chore(v1.0.0): Remove `pallet-sudo` from production Vara (#3279) --- .github/workflows/build.yml | 8 +++--- .github/workflows/test-measurements.yaml | 2 +- Cargo.lock | 2 ++ node/authorship/Cargo.toml | 1 + node/service/src/chain_spec/vara.rs | 8 +++++- node/testing/Cargo.toml | 5 ++-- runtime/vara/Cargo.toml | 12 +++++--- runtime/vara/src/lib.rs | 32 ++++++++++++++-------- scripts/benchmarking/run_all_benchmarks.sh | 2 +- 9 files changed, 47 insertions(+), 25 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 190dfc4f524..7dc8cfc4c84 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -66,7 +66,7 @@ jobs: run: ./scripts/gear.sh init cargo - name: "Build: Gear" - run: ./scripts/gear.sh build gear --locked --release + run: ./scripts/gear.sh build gear -F gear-cli/dev --locked --release - name: "Build fuzzer" run: ./scripts/gear.sh build fuzz --locked --release @@ -96,7 +96,7 @@ jobs: - name: "Test: Runtime benchmarks and benchmark tests work" run: | - cargo build -p gear-cli --release --features=runtime-benchmarks,runtime-benchmarks-checkers + cargo build -p gear-cli --release --features=dev,runtime-benchmarks,runtime-benchmarks-checkers # check that perf benchmarks works. `--steps=20` need to test, that benchmarks works for different input number. ./target/release/gear benchmark pallet --chain=dev --pallet=pallet_gear --steps=20 --extrinsic="*" --execution=wasm --wasm-execution=compiled --heap-pages=4096 # check that read_big_state benchmarks works @@ -111,11 +111,11 @@ jobs: - name: "Test: `try-runtime` feature tests" run: | - cargo test -p "pallet-*" --features try-runtime --release --locked + cargo test -p "pallet-*" --features try-runtime,dev --release --locked - name: "Test: Try runtime migrations" run: | - cargo build -p gear-cli --features try-runtime --release --locked + cargo build -p gear-cli --features try-runtime,dev --release --locked ./target/release/gear try-runtime --runtime ./target/release/wbuild/gear-runtime/gear_runtime.wasm on-runtime-upgrade --checks live --uri wss://rpc-private-testnet.gear-tech.io:443 env: RUST_LOG: info diff --git a/.github/workflows/test-measurements.yaml b/.github/workflows/test-measurements.yaml index 1368cadb136..b9c3a16a657 100644 --- a/.github/workflows/test-measurements.yaml +++ b/.github/workflows/test-measurements.yaml @@ -42,7 +42,7 @@ jobs: tar -xf /cache/check_cargo_registry_${{ github.ref_name }}.tar -C / - name: "Build: Gear" - run: ./scripts/gear.sh build gear --release --locked --features=runtime-benchmarks,lazy-pages + run: ./scripts/gear.sh build gear --release --locked --features=dev,runtime-benchmarks,lazy-pages - name: "Collect: Gear workspace tests" run: | diff --git a/Cargo.lock b/Cargo.lock index f51d1120230..108999619f0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3745,6 +3745,7 @@ dependencies = [ "gear-common", "gear-node-testing", "gear-runtime-primitives", + "gear-service", "log", "pallet-balances", "pallet-gear", @@ -4046,6 +4047,7 @@ dependencies = [ "gear-runtime", "gear-runtime-interface", "gear-runtime-primitives", + "gear-service", "log", "pallet-gear-rpc-runtime-api", "parity-scale-codec", diff --git a/node/authorship/Cargo.toml b/node/authorship/Cargo.toml index 041944ca157..7b474e043a6 100644 --- a/node/authorship/Cargo.toml +++ b/node/authorship/Cargo.toml @@ -58,3 +58,4 @@ testing = {workspace = true, features = ["vara-native"] } vara-runtime = { workspace = true, features = ["std", "dev"] } demo-mul-by-const.workspace = true env_logger.workspace = true +service = { workspace = true, features = ["dev", "vara-native"] } diff --git a/node/service/src/chain_spec/vara.rs b/node/service/src/chain_spec/vara.rs index 95bb0eb244f..3245ae1aef5 100644 --- a/node/service/src/chain_spec/vara.rs +++ b/node/service/src/chain_spec/vara.rs @@ -27,11 +27,13 @@ use sp_consensus_babe::AuthorityId as BabeId; use sp_consensus_grandpa::AuthorityId as GrandpaId; use sp_core::{crypto::UncheckedInto, sr25519}; use sp_runtime::{Perbill, Perquintill}; +#[cfg(feature = "dev")] +use vara_runtime::SudoConfig; use vara_runtime::{ constants::currency::{ECONOMIC_UNITS, EXISTENTIAL_DEPOSIT, UNITS as TOKEN}, AuthorityDiscoveryConfig, BabeConfig, BalancesConfig, GenesisConfig, GrandpaConfig, ImOnlineConfig, NominationPoolsConfig, SessionConfig, SessionKeys, StakerStatus, StakingConfig, - StakingRewardsConfig, SudoConfig, SystemConfig, VestingConfig, WASM_BINARY, + StakingRewardsConfig, SystemConfig, VestingConfig, WASM_BINARY, }; /// Specialized `ChainSpec`. This is a specialization of the general Substrate ChainSpec type. @@ -558,6 +560,9 @@ fn testnet_genesis( bank_account: AccountId, _enable_println: bool, ) -> GenesisConfig { + #[cfg(not(feature = "dev"))] + let _ = root_key; + const ENDOWMENT: u128 = 1_000_000 * TOKEN; const STASH: u128 = 100 * TOKEN; const MIN_NOMINATOR_BOND: u128 = 50 * TOKEN; @@ -609,6 +614,7 @@ fn testnet_genesis( min_nominator_bond: MIN_NOMINATOR_BOND, ..Default::default() }, + #[cfg(feature = "dev")] sudo: SudoConfig { // Assign network admin rights. key: Some(root_key), diff --git a/node/testing/Cargo.toml b/node/testing/Cargo.toml index 8607639dc26..6706a388f32 100644 --- a/node/testing/Cargo.toml +++ b/node/testing/Cargo.toml @@ -25,6 +25,7 @@ pallet-gear-rpc-runtime-api.workspace = true gear-runtime = { workspace = true, optional = true } vara-runtime = { workspace = true, optional = true } gear-runtime-interface.workspace = true +service = { workspace = true, features = ["dev"] } # Substrate Client sc-block-builder.workspace = true @@ -72,5 +73,5 @@ std = [ "gear-runtime?/std", "vara-runtime?/std", ] -gear-native = ["gear-runtime/dev"] -vara-native = ["vara-runtime/dev"] +gear-native = ["gear-runtime/dev", "service/gear-native"] +vara-native = ["vara-runtime/dev", "service/vara-native"] diff --git a/runtime/vara/Cargo.toml b/runtime/vara/Cargo.toml index 74551fefa6d..f179c2bd346 100644 --- a/runtime/vara/Cargo.toml +++ b/runtime/vara/Cargo.toml @@ -49,7 +49,7 @@ pallet-referenda.workspace = true pallet-scheduler.workspace = true pallet-session = { workspace = true, features = [ "historical" ] } pallet-staking.workspace = true -pallet-sudo.workspace = true +pallet-sudo = { workspace = true, optional = true } pallet-timestamp.workspace = true pallet-transaction-payment.workspace = true pallet-treasury.workspace = true @@ -157,7 +157,7 @@ std = [ "pallet-session/std", "pallet-scheduler/std", "pallet-staking/std", - "pallet-sudo/std", + "pallet-sudo?/std", "pallet-timestamp/std", "pallet-transaction-payment/std", "pallet-transaction-payment-rpc-runtime-api/std", @@ -245,7 +245,7 @@ try-runtime = [ "pallet-scheduler/try-runtime", "pallet-session/try-runtime", "pallet-staking/try-runtime", - "pallet-sudo/try-runtime", + "pallet-sudo?/try-runtime", "pallet-timestamp/try-runtime", "pallet-transaction-payment/try-runtime", "pallet-treasury/try-runtime", @@ -255,7 +255,11 @@ try-runtime = [ "pallet-bags-list/try-runtime", "runtime-common/try-runtime", ] -dev = ["pallet-gear-debug", "pallet-gear-program/dev"] +dev = [ + "pallet-gear-debug", + "pallet-gear-program/dev", + "pallet-sudo", +] lazy-pages = [ "pallet-gear/lazy-pages", "pallet-gear-payment/lazy-pages", diff --git a/runtime/vara/src/lib.rs b/runtime/vara/src/lib.rs index 7b9f86b4447..fee12da3048 100644 --- a/runtime/vara/src/lib.rs +++ b/runtime/vara/src/lib.rs @@ -98,7 +98,7 @@ pub use frame_system::Call as SystemCall; pub use pallet_balances::Call as BalancesCall; #[cfg(any(feature = "std", test))] pub use pallet_staking::StakerStatus; -#[cfg(any(feature = "std", test))] +#[cfg(all(feature = "dev", any(feature = "std", test)))] pub use pallet_sudo::Call as SudoCall; #[cfg(any(feature = "std", test))] pub use sp_runtime::BuildStorage; @@ -798,6 +798,7 @@ impl pallet_identity::Config for Runtime { type WeightInfo = pallet_identity::weights::SubstrateWeight; } +#[cfg(feature = "dev")] impl pallet_sudo::Config for Runtime { type RuntimeEvent = RuntimeEvent; type RuntimeCall = RuntimeCall; @@ -869,13 +870,23 @@ impl InstanceFilter for ProxyType { fn filter(&self, c: &RuntimeCall) -> bool { match self { ProxyType::Any => true, - ProxyType::NonTransfer => !matches!( - c, - RuntimeCall::Balances(..) - | RuntimeCall::Sudo(..) - | RuntimeCall::Vesting(pallet_vesting::Call::vested_transfer { .. }) - | RuntimeCall::Vesting(pallet_vesting::Call::force_vested_transfer { .. }) - ), + ProxyType::NonTransfer => { + #[cfg(feature = "dev")] + return !matches!( + c, + RuntimeCall::Balances(..) + | RuntimeCall::Sudo(..) + | RuntimeCall::Vesting(pallet_vesting::Call::vested_transfer { .. }) + | RuntimeCall::Vesting(pallet_vesting::Call::force_vested_transfer { .. }) + ); + #[cfg(not(feature = "dev"))] + return !matches!( + c, + RuntimeCall::Balances(..) + | RuntimeCall::Vesting(pallet_vesting::Call::vested_transfer { .. }) + | RuntimeCall::Vesting(pallet_vesting::Call::force_vested_transfer { .. }) + ); + } ProxyType::Governance => matches!( c, RuntimeCall::Treasury(..) @@ -1158,7 +1169,6 @@ construct_runtime!( GearVoucher: pallet_gear_voucher = 107, GearBank: pallet_gear_bank = 108, - // TODO: Remove in stage 3 Sudo: pallet_sudo = 99, // NOTE (!): `pallet_airdrop` used to be idx(198). @@ -1222,9 +1232,7 @@ construct_runtime!( GearVoucher: pallet_gear_voucher = 107, GearBank: pallet_gear_bank = 108, - // TODO: Remove in stage 3 - Sudo: pallet_sudo = 99, - + // NOTE (!): `pallet_sudo` used to be idx(99). // NOTE (!): `pallet_airdrop` used to be idx(198). } ); diff --git a/scripts/benchmarking/run_all_benchmarks.sh b/scripts/benchmarking/run_all_benchmarks.sh index 87c957ca3f4..caa838da4f2 100755 --- a/scripts/benchmarking/run_all_benchmarks.sh +++ b/scripts/benchmarking/run_all_benchmarks.sh @@ -58,7 +58,7 @@ done if [ "$skip_build" != true ] then echo "[+] Compiling Gear benchmarks..." - cargo build --profile=production --locked --features=runtime-benchmarks + cargo build --profile=production --locked --features=dev,runtime-benchmarks fi # The executable to use. From 604d713569fb817982da88706e5d00c23c67bb86 Mon Sep 17 00:00:00 2001 From: clearloop <26088946+clearloop@users.noreply.github.com> Date: Sat, 16 Sep 2023 11:33:27 +0800 Subject: [PATCH 15/21] chore(scripts): sync doc test command with the help message (#3223) --- .github/workflows/check.yml | 2 +- Makefile | 2 +- scripts/gear.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index c69b1afdf27..5d0588a862e 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -43,7 +43,7 @@ jobs: run: ./scripts/gear.sh clippy examples --all-targets --locked - name: "Test: Doc tests" - run: ./scripts/gear.sh test doc + run: ./scripts/gear.sh test docs - name: "Test: Changes in gsdk generated code" run: | diff --git a/Makefile b/Makefile index 347a011742a..23d3f966ed4 100644 --- a/Makefile +++ b/Makefile @@ -191,7 +191,7 @@ test-release: test-gear-release .PHONY: test-doc test-doc: - @ ./scripts/gear.sh test doc + @ ./scripts/gear.sh test docs .PHONY: test-gear test-gear: #\ diff --git a/scripts/gear.sh b/scripts/gear.sh index e74c01c7145..05161f5c741 100755 --- a/scripts/gear.sh +++ b/scripts/gear.sh @@ -309,7 +309,7 @@ case "$COMMAND" in header "Running syscalls integrity test of pallet-gear 'benchmarking' module on WASMI executor" syscalls_integrity_test "$@"; ;; - doc) + docs) header "Testing examples in docs" doc_test "$ROOT_DIR/Cargo.toml" "$@"; ;; From 50a4ec10b145d793ba112d29092e64287f8400c4 Mon Sep 17 00:00:00 2001 From: Georgy Shepelev Date: Sun, 17 Sep 2023 20:30:16 +0400 Subject: [PATCH 16/21] refactor(node): Benchmark tasks and reduce GasAllowance accordingly (#2797) --- Cargo.lock | 2 + Cargo.toml | 8 +- common/src/lib.rs | 15 +- common/src/scheduler/task.rs | 28 +- examples/constructor/Cargo.toml | 4 +- examples/constructor/build.rs | 6 +- examples/constructor/src/arg.rs | 2 +- examples/constructor/src/call.rs | 2 +- examples/constructor/src/lib.rs | 10 +- .../src/scheme/demo_proxy_with_gas.rs | 2 +- examples/delayed-sender/Cargo.toml | 3 +- examples/delayed-sender/build.rs | 6 +- examples/delayed-sender/src/code.rs | 18 + examples/delayed-sender/src/lib.rs | 7 +- examples/init-wait/Cargo.toml | 9 +- examples/init-wait/build.rs | 6 +- examples/init-wait/src/code.rs | 18 + examples/init-wait/src/lib.rs | 24 +- examples/reserve-gas/Cargo.toml | 3 +- examples/reserve-gas/build.rs | 6 +- examples/reserve-gas/src/lib.rs | 6 +- examples/wait_wake/build.rs | 6 +- examples/waiter/Cargo.toml | 8 +- examples/waiter/build.rs | 6 +- examples/waiter/src/code.rs | 28 +- examples/waiter/src/lib.rs | 30 +- gclient/Cargo.toml | 4 +- gsdk/Cargo.toml | 2 +- gsdk/tests/rpc.rs | 2 +- pallets/gear-scheduler/src/tests.rs | 15 +- pallets/gear/Cargo.toml | 15 + pallets/gear/src/benchmarking/mod.rs | 122 +++++- pallets/gear/src/benchmarking/tasks.rs | 371 ++++++++++++++++++ pallets/gear/src/lib.rs | 58 ++- pallets/gear/src/manager/task.rs | 164 ++++++-- pallets/gear/src/mock.rs | 2 +- pallets/gear/src/tests.rs | 37 +- pallets/gear/src/weights.rs | 231 +++++++++++ runtime/gear/src/weights/pallet_gear.rs | 231 +++++++++++ runtime/vara/src/weights/pallet_gear.rs | 231 +++++++++++ 40 files changed, 1595 insertions(+), 153 deletions(-) create mode 100644 pallets/gear/src/benchmarking/tasks.rs diff --git a/Cargo.lock b/Cargo.lock index 108999619f0..76d3ff7a82e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1903,6 +1903,7 @@ dependencies = [ name = "demo-constructor" version = "0.1.0" dependencies = [ + "gcore", "gear-wasm-builder", "gstd", "hex", @@ -2314,6 +2315,7 @@ version = "0.1.0" dependencies = [ "demo-waiter", "futures", + "gcore", "gear-core", "gear-wasm-builder", "gstd", diff --git a/Cargo.toml b/Cargo.toml index 108d5011b92..1b581dac2b3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -371,7 +371,7 @@ demo-calc-hash-in-one-block = { path = "examples/calc-hash/in-one-block" } demo-calc-hash-over-blocks = { path = "examples/calc-hash/over-blocks" } demo-custom = { path = "examples/custom" } demo-compose = { path = "examples/compose" } -demo-constructor = { path = "examples/constructor" } +demo-constructor = { path = "examples/constructor", default-features = false } demo-delayed-sender = { path = "examples/delayed-sender" } demo-distributor = { path = "examples/distributor" } demo-futures-unordered = { path = "examples/futures-unordered", features = ["debug"] } @@ -379,7 +379,7 @@ demo-gas-burned = { path = "examples/gas-burned" } demo-fungible-token = { path = "examples/fungible-token" } demo-incomplete-async-payloads = { path = "examples/incomplete-async-payloads" } demo-init-fail-sender = { path = "examples/init-fail-sender" } -demo-init-wait = { path = "examples/init-wait" } +demo-init-wait = { path = "examples/init-wait", default-features = false } demo-init-wait-reply-exit = { path = "examples/init-wait-reply-exit" } demo-messager = { path = "examples/messager" } demo-meta-io = { path = "examples/new-meta/io" } @@ -396,7 +396,7 @@ demo-proxy-relay = { path = "examples/proxy-relay" } demo-proxy-reservation-with-gas = { path = "examples/proxy-reservation-with-gas" } demo-read-big-state = { path = "examples/read-big-state", default-features = false } demo-reservation-manager = { path = "examples/reservation-manager" } -demo-reserve-gas = { path = "examples/reserve-gas" } +demo-reserve-gas = { path = "examples/reserve-gas", default-features = false } demo-rwlock = { path = "examples/rwlock" } demo-send-from-reservation = { path = "examples/send-from-reservation" } demo-signal-entry = { path = "examples/signal-entry" } @@ -404,7 +404,7 @@ demo-state-rollback = { path = "examples/state-rollback" } demo-sync-duplicate = { path = "examples/sync-duplicate" } demo-vec = { path = "examples/vec" } demo-wait = { path = "examples/wait" } -demo-waiter = { path = "examples/waiter" } +demo-waiter = { path = "examples/waiter", default-features = false } demo-wait-timeout = { path = "examples/wait-timeout" } demo-wait-wake = { path = "examples/wait_wake" } demo-waiting-proxy = { path = "examples/waiting-proxy" } diff --git a/common/src/lib.rs b/common/src/lib.rs index 3d4873bb6a2..64f47fd4aa4 100644 --- a/common/src/lib.rs +++ b/common/src/lib.rs @@ -73,6 +73,9 @@ pub use gas_provider::{ LockId, LockableTree, Provider as GasProvider, ReservableTree, Tree as GasTree, }; +/// Type alias for gas entity. +pub type Gas = u64; + pub trait Origin: Sized { fn into_origin(self) -> H256; fn from_origin(val: H256) -> Self; @@ -228,18 +231,6 @@ impl Program { }) ) } - - pub fn is_uninitialized(&self) -> Option { - if let Program::Active(ActiveProgram { - state: ProgramState::Uninitialized { message_id }, - .. - }) = self - { - Some(*message_id) - } else { - None - } - } } #[derive(Clone, Debug, derive_more::Display)] diff --git a/common/src/scheduler/task.rs b/common/src/scheduler/task.rs index ebeb0ff7e78..cbfd0575943 100644 --- a/common/src/scheduler/task.rs +++ b/common/src/scheduler/task.rs @@ -16,7 +16,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -use crate::paused_program_storage::SessionId; +use crate::{paused_program_storage::SessionId, Gas}; use frame_support::{ codec::{self, Decode, Encode, MaxEncodedLen}, scale_info::{self, TypeInfo}, @@ -85,7 +85,7 @@ pub enum ScheduledTask { } impl ScheduledTask { - pub fn process_with(self, handler: &mut impl TaskHandler) { + pub fn process_with(self, handler: &mut impl TaskHandler) -> Gas { use ScheduledTask::*; match self { @@ -117,32 +117,36 @@ pub trait TaskHandler { // Rent charging section. // ----- /// Pause program action. - fn pause_program(&mut self, program_id: ProgramId); + fn pause_program(&mut self, program_id: ProgramId) -> Gas; /// Remove code action. - fn remove_code(&mut self, code_id: CodeId); + fn remove_code(&mut self, code_id: CodeId) -> Gas; /// Remove from mailbox action. - fn remove_from_mailbox(&mut self, user_id: AccountId, message_id: MessageId); + fn remove_from_mailbox(&mut self, user_id: AccountId, message_id: MessageId) -> Gas; /// Remove from waitlist action. - fn remove_from_waitlist(&mut self, program_id: ProgramId, message_id: MessageId); + fn remove_from_waitlist(&mut self, program_id: ProgramId, message_id: MessageId) -> Gas; /// Remove paused program action. - fn remove_paused_program(&mut self, program_id: ProgramId); + fn remove_paused_program(&mut self, program_id: ProgramId) -> Gas; // Time chained section. // ----- /// Wake message action. - fn wake_message(&mut self, program_id: ProgramId, message_id: MessageId); + fn wake_message(&mut self, program_id: ProgramId, message_id: MessageId) -> Gas; // Send delayed message to program action. - fn send_dispatch(&mut self, stashed_message_id: MessageId); + fn send_dispatch(&mut self, stashed_message_id: MessageId) -> Gas; // Send delayed message to user action. - fn send_user_message(&mut self, stashed_message_id: MessageId, to_mailbox: bool); + fn send_user_message(&mut self, stashed_message_id: MessageId, to_mailbox: bool) -> Gas; /// Remove gas reservation action. - fn remove_gas_reservation(&mut self, program_id: ProgramId, reservation_id: ReservationId); + fn remove_gas_reservation( + &mut self, + program_id: ProgramId, + reservation_id: ReservationId, + ) -> Gas; /// Remove data created by resume program session. - fn remove_resume_session(&mut self, session_id: SessionId); + fn remove_resume_session(&mut self, session_id: SessionId) -> Gas; } #[test] diff --git a/examples/constructor/Cargo.toml b/examples/constructor/Cargo.toml index 10782f0558e..383ed6e29f7 100644 --- a/examples/constructor/Cargo.toml +++ b/examples/constructor/Cargo.toml @@ -7,6 +7,7 @@ license.workspace = true workspace = "../../" [dependencies] +gcore.workspace = true gstd.workspace = true parity-scale-codec = { workspace = true, features = ["derive"] } hex.workspace = true @@ -16,5 +17,6 @@ gear-wasm-builder.workspace = true [features] debug = ["gstd/debug"] -std = [] +wasm-wrapper = [] +std = ["wasm-wrapper"] default = ["std"] diff --git a/examples/constructor/build.rs b/examples/constructor/build.rs index 4c502a3ddee..b911ce127bb 100644 --- a/examples/constructor/build.rs +++ b/examples/constructor/build.rs @@ -16,6 +16,10 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +use gear_wasm_builder::WasmBuilder; + fn main() { - gear_wasm_builder::build(); + WasmBuilder::new() + .exclude_features(vec!["std", "wasm-wrapper"]) + .build(); } diff --git a/examples/constructor/src/arg.rs b/examples/constructor/src/arg.rs index 2d78edf7576..b749bbc03b7 100644 --- a/examples/constructor/src/arg.rs +++ b/examples/constructor/src/arg.rs @@ -90,7 +90,7 @@ impl From<&'static str> for Arg { } } -#[cfg(not(feature = "std"))] +#[cfg(not(feature = "wasm-wrapper"))] mod wasm { use super::*; diff --git a/examples/constructor/src/call.rs b/examples/constructor/src/call.rs index 0287abd0db5..06c0fde0edb 100644 --- a/examples/constructor/src/call.rs +++ b/examples/constructor/src/call.rs @@ -44,7 +44,7 @@ pub enum Call { Loop, } -#[cfg(not(feature = "std"))] +#[cfg(not(feature = "wasm-wrapper"))] mod wasm { use super::*; use crate::DATA; diff --git a/examples/constructor/src/lib.rs b/examples/constructor/src/lib.rs index d112fb3d26b..0ebc224368d 100644 --- a/examples/constructor/src/lib.rs +++ b/examples/constructor/src/lib.rs @@ -16,22 +16,22 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -#![no_std] +#![cfg_attr(not(feature = "std"), no_std)] extern crate alloc; -#[cfg(not(feature = "std"))] +#[cfg(not(feature = "wasm-wrapper"))] mod wasm; -#[cfg(not(feature = "std"))] +#[cfg(not(feature = "wasm-wrapper"))] pub(crate) use wasm::DATA; -#[cfg(feature = "std")] +#[cfg(feature = "wasm-wrapper")] mod code { include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); } -#[cfg(feature = "std")] +#[cfg(feature = "wasm-wrapper")] pub use code::WASM_BINARY_OPT as WASM_BINARY; mod arg; diff --git a/examples/constructor/src/scheme/demo_proxy_with_gas.rs b/examples/constructor/src/scheme/demo_proxy_with_gas.rs index 35c33e3b6c1..70b7e2a1ba5 100644 --- a/examples/constructor/src/scheme/demo_proxy_with_gas.rs +++ b/examples/constructor/src/scheme/demo_proxy_with_gas.rs @@ -1,5 +1,5 @@ use crate::{Arg, Call, Calls, Scheme}; -use gstd::errors::{ReplyCode, SuccessReplyReason}; +use gcore::errors::{ReplyCode, SuccessReplyReason}; use parity_scale_codec::Encode; pub const PROXIED_MESSAGE: &[u8] = b"proxied message"; diff --git a/examples/delayed-sender/Cargo.toml b/examples/delayed-sender/Cargo.toml index e23c5e2f310..7c386c1b22a 100644 --- a/examples/delayed-sender/Cargo.toml +++ b/examples/delayed-sender/Cargo.toml @@ -14,5 +14,6 @@ gear-wasm-builder.workspace = true [features] debug = ["gstd/debug"] -std = [ ] +wasm-wrapper = [] +std = ["wasm-wrapper"] default = ["std"] diff --git a/examples/delayed-sender/build.rs b/examples/delayed-sender/build.rs index 4c502a3ddee..b911ce127bb 100644 --- a/examples/delayed-sender/build.rs +++ b/examples/delayed-sender/build.rs @@ -16,6 +16,10 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +use gear_wasm_builder::WasmBuilder; + fn main() { - gear_wasm_builder::build(); + WasmBuilder::new() + .exclude_features(vec!["std", "wasm-wrapper"]) + .build(); } diff --git a/examples/delayed-sender/src/code.rs b/examples/delayed-sender/src/code.rs index 3107b539988..c1c1c2d61f8 100644 --- a/examples/delayed-sender/src/code.rs +++ b/examples/delayed-sender/src/code.rs @@ -1,3 +1,21 @@ +// This file is part of Gear. + +// Copyright (C) Gear Technologies Inc. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + use gstd::{msg, MessageId, exec}; static mut MID: Option = None; diff --git a/examples/delayed-sender/src/lib.rs b/examples/delayed-sender/src/lib.rs index 9348dfb7a52..1175ebd0d91 100644 --- a/examples/delayed-sender/src/lib.rs +++ b/examples/delayed-sender/src/lib.rs @@ -15,17 +15,18 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . + #![no_std] -#[cfg(feature = "std")] +#[cfg(feature = "wasm-wrapper")] mod code { include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); } -#[cfg(feature = "std")] +#[cfg(feature = "wasm-wrapper")] pub use code::WASM_BINARY_OPT as WASM_BINARY; -#[cfg(not(feature = "std"))] +#[cfg(not(feature = "wasm-wrapper"))] mod wasm { include! {"./code.rs"} } diff --git a/examples/init-wait/Cargo.toml b/examples/init-wait/Cargo.toml index 8b0d9b0b238..5a7c643798f 100644 --- a/examples/init-wait/Cargo.toml +++ b/examples/init-wait/Cargo.toml @@ -2,8 +2,8 @@ name = "demo-init-wait" version = "0.1.0" authors.workspace = true -edition = "2021" -license = "GPL-3.0" +edition.workspace = true +license.workspace = true workspace = "../../" [dependencies] @@ -12,9 +12,8 @@ gstd.workspace = true [build-dependencies] gear-wasm-builder.workspace = true -[lib] - [features] debug = ["gstd/debug"] -std = [] +wasm-wrapper = [] +std = ["wasm-wrapper"] default = ["std"] diff --git a/examples/init-wait/build.rs b/examples/init-wait/build.rs index 4c502a3ddee..b911ce127bb 100644 --- a/examples/init-wait/build.rs +++ b/examples/init-wait/build.rs @@ -16,6 +16,10 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +use gear_wasm_builder::WasmBuilder; + fn main() { - gear_wasm_builder::build(); + WasmBuilder::new() + .exclude_features(vec!["std", "wasm-wrapper"]) + .build(); } diff --git a/examples/init-wait/src/code.rs b/examples/init-wait/src/code.rs index 432a5fe94f1..c6ef0bc9edc 100644 --- a/examples/init-wait/src/code.rs +++ b/examples/init-wait/src/code.rs @@ -1,3 +1,21 @@ +// This file is part of Gear. + +// Copyright (C) 2021-2023 Gear Technologies Inc. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + use gstd::{exec, msg, collections::BTreeMap, MessageId}; #[derive(PartialEq, Debug)] diff --git a/examples/init-wait/src/lib.rs b/examples/init-wait/src/lib.rs index e5e4ef17484..a4fc7ea8b42 100644 --- a/examples/init-wait/src/lib.rs +++ b/examples/init-wait/src/lib.rs @@ -1,14 +1,32 @@ +// This file is part of Gear. + +// Copyright (C) 2021-2023 Gear Technologies Inc. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + #![cfg_attr(not(feature = "std"), no_std)] -#[cfg(feature = "std")] +#[cfg(feature = "wasm-wrapper")] mod code { include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); } -#[cfg(feature = "std")] +#[cfg(feature = "wasm-wrapper")] pub use code::WASM_BINARY_OPT as WASM_BINARY; -#[cfg(not(feature = "std"))] +#[cfg(not(feature = "wasm-wrapper"))] mod wasm { include! {"./code.rs"} } diff --git a/examples/reserve-gas/Cargo.toml b/examples/reserve-gas/Cargo.toml index aef27afb79c..132b43911fa 100644 --- a/examples/reserve-gas/Cargo.toml +++ b/examples/reserve-gas/Cargo.toml @@ -18,5 +18,6 @@ gtest.workspace = true [features] debug = ["gstd/debug"] -std = [] +wasm-wrapper = [] +std = ["wasm-wrapper", "parity-scale-codec/std"] default = ["std"] diff --git a/examples/reserve-gas/build.rs b/examples/reserve-gas/build.rs index 4c502a3ddee..b911ce127bb 100644 --- a/examples/reserve-gas/build.rs +++ b/examples/reserve-gas/build.rs @@ -16,6 +16,10 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +use gear_wasm_builder::WasmBuilder; + fn main() { - gear_wasm_builder::build(); + WasmBuilder::new() + .exclude_features(vec!["std", "wasm-wrapper"]) + .build(); } diff --git a/examples/reserve-gas/src/lib.rs b/examples/reserve-gas/src/lib.rs index da47e95a438..7644c983bb7 100644 --- a/examples/reserve-gas/src/lib.rs +++ b/examples/reserve-gas/src/lib.rs @@ -23,12 +23,12 @@ extern crate alloc; use alloc::vec::Vec; use parity_scale_codec::{Decode, Encode}; -#[cfg(feature = "std")] +#[cfg(feature = "wasm-wrapper")] mod code { include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); } -#[cfg(feature = "std")] +#[cfg(feature = "wasm-wrapper")] pub use code::WASM_BINARY_OPT as WASM_BINARY; pub const RESERVATION_AMOUNT: u64 = 50_000_000; @@ -62,7 +62,7 @@ pub enum ReplyAction { pub type GasAmount = u64; pub type BlockCount = u32; -#[cfg(not(feature = "std"))] +#[cfg(not(feature = "wasm-wrapper"))] mod wasm { use super::*; use gstd::{ diff --git a/examples/wait_wake/build.rs b/examples/wait_wake/build.rs index 4c502a3ddee..b911ce127bb 100644 --- a/examples/wait_wake/build.rs +++ b/examples/wait_wake/build.rs @@ -16,6 +16,10 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +use gear_wasm_builder::WasmBuilder; + fn main() { - gear_wasm_builder::build(); + WasmBuilder::new() + .exclude_features(vec!["std", "wasm-wrapper"]) + .build(); } diff --git a/examples/waiter/Cargo.toml b/examples/waiter/Cargo.toml index a72ef94b3a5..3090fc3f7a0 100644 --- a/examples/waiter/Cargo.toml +++ b/examples/waiter/Cargo.toml @@ -2,14 +2,15 @@ name = "demo-waiter" version = "0.1.0" authors.workspace = true -edition = "2021" -license = "GPL-3.0" +edition.workspace = true +license.workspace = true workspace = "../../" [dependencies] parity-scale-codec = { workspace = true, features = ["derive"] } futures.workspace = true gstd.workspace = true +gcore.workspace = true [build-dependencies] gear-wasm-builder.workspace = true @@ -23,5 +24,6 @@ demo-waiter = { path = ".", features = ["debug"] } [features] debug = ["gstd/debug"] -std = ["parity-scale-codec/std"] +wasm-wrapper = [] +std = ["parity-scale-codec/std", "wasm-wrapper"] default = ["std"] diff --git a/examples/waiter/build.rs b/examples/waiter/build.rs index 4c502a3ddee..b911ce127bb 100644 --- a/examples/waiter/build.rs +++ b/examples/waiter/build.rs @@ -16,6 +16,10 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +use gear_wasm_builder::WasmBuilder; + fn main() { - gear_wasm_builder::build(); + WasmBuilder::new() + .exclude_features(vec!["std", "wasm-wrapper"]) + .build(); } diff --git a/examples/waiter/src/code.rs b/examples/waiter/src/code.rs index 9bc91cb726d..7a68dd08957 100644 --- a/examples/waiter/src/code.rs +++ b/examples/waiter/src/code.rs @@ -1,3 +1,21 @@ +// This file is part of Gear. + +// Copyright (C) 2021-2023 Gear Technologies Inc. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + use crate::{ Command, LockContinuation, LockStaticAccessSubcommand, MxLockContinuation, RwLockContinuation, RwLockType, SleepForWaitType, WaitSubcommand, @@ -22,33 +40,33 @@ async fn main() { match cmd { Command::Wait(subcommand) => process_wait_subcommand(subcommand), Command::SendFor(to, duration) => { - msg::send_bytes_for_reply(to, [], 0, 0) + msg::send_bytes_for_reply(to.into(), [], 0, 0) .expect("send message failed") .exactly(Some(duration)) .expect("Invalid wait duration.") .await; } Command::SendUpTo(to, duration) => { - msg::send_bytes_for_reply(to, [], 0, 0) + msg::send_bytes_for_reply(to.into(), [], 0, 0) .expect("send message failed") .up_to(Some(duration)) .expect("Invalid wait duration.") .await; } Command::SendUpToWait(to, duration) => { - msg::send_bytes_for_reply(to, [], 0, 0) + msg::send_bytes_for_reply(to.into(), [], 0, 0) .expect("send message failed") .up_to(Some(duration)) .expect("Invalid wait duration.") .await; // after waking, wait again. - msg::send_bytes_for_reply(to, [], 0, 0) + msg::send_bytes_for_reply(to.into(), [], 0, 0) .expect("send message failed") .await; } Command::SendAndWaitFor(duration, to) => { - msg::send(to, b"ping", 0); + msg::send(to.into(), b"ping", 0); exec::wait_for(duration); } Command::ReplyAndWait(subcommand) => { diff --git a/examples/waiter/src/lib.rs b/examples/waiter/src/lib.rs index 1e744113065..b7d4619f789 100644 --- a/examples/waiter/src/lib.rs +++ b/examples/waiter/src/lib.rs @@ -15,29 +15,37 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -#![no_std] -use gstd::{ActorId, Vec}; +#![cfg_attr(not(feature = "std"), no_std)] + +extern crate alloc; + +use alloc::vec::Vec; +use gcore::BlockCount; use parity_scale_codec::{Decode, Encode}; -#[cfg(feature = "std")] +type ActorId = [u8; 32]; + +#[cfg(feature = "wasm-wrapper")] mod code { include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); } -#[cfg(feature = "std")] +#[cfg(feature = "wasm-wrapper")] pub use code::WASM_BINARY_OPT as WASM_BINARY; -#[cfg(not(feature = "std"))] +#[cfg(not(feature = "wasm-wrapper"))] mod wasm { include! {"./code.rs"} } +#[cfg(feature = "std")] pub fn system_reserve() -> u64 { gstd::Config::system_reserve() } // Re-exports for testing +#[cfg(feature = "std")] pub fn default_wait_up_to_duration() -> u32 { gstd::Config::wait_up_to() } @@ -94,14 +102,14 @@ pub enum RwLockContinuation { #[derive(Debug, Encode, Decode)] pub enum Command { Wait(WaitSubcommand), - SendFor(ActorId, gstd::BlockCount), - SendUpTo(ActorId, gstd::BlockCount), - SendUpToWait(ActorId, gstd::BlockCount), - SendAndWaitFor(gstd::BlockCount, ActorId), + SendFor(ActorId, BlockCount), + SendUpTo(ActorId, BlockCount), + SendUpToWait(ActorId, BlockCount), + SendAndWaitFor(BlockCount, ActorId), ReplyAndWait(WaitSubcommand), - SleepFor(Vec, SleepForWaitType), + SleepFor(Vec, SleepForWaitType), WakeUp([u8; 32]), - MxLock(gstd::BlockCount, MxLockContinuation), + MxLock(BlockCount, MxLockContinuation), MxLockStaticAccess(LockStaticAccessSubcommand), RwLock(RwLockType, RwLockContinuation), RwLockStaticAccess(RwLockType, LockStaticAccessSubcommand), diff --git a/gclient/Cargo.toml b/gclient/Cargo.toml index 3ee7de0f6ec..26f9d8b973a 100644 --- a/gclient/Cargo.toml +++ b/gclient/Cargo.toml @@ -38,7 +38,7 @@ demo-async-tester.workspace = true demo-calc-hash.workspace = true demo-calc-hash-in-one-block.workspace = true demo-custom.workspace = true -demo-constructor.workspace = true +demo-constructor = { workspace = true, features = ["std"] } demo-distributor.workspace = true demo-meta-io.workspace = true demo-new-meta.workspace = true @@ -47,7 +47,7 @@ demo-node.workspace = true demo-program-factory.workspace = true demo-proxy = { workspace = true, features = ["std"] } demo-proxy-relay.workspace = true -demo-reserve-gas.workspace = true +demo-reserve-gas = { workspace = true, features = ["std"] } gmeta = { workspace = true } gstd = { workspace = true, features = ["debug"] } demo-wat.workspace = true diff --git a/gsdk/Cargo.toml b/gsdk/Cargo.toml index d823fcd42d9..3985dbc5494 100644 --- a/gsdk/Cargo.toml +++ b/gsdk/Cargo.toml @@ -42,7 +42,7 @@ gsdk = { path = ".", features = ["testing"] } tokio = { workspace = true, features = [ "full" ] } demo-messager.workspace = true demo-new-meta.workspace = true -demo-waiter.workspace = true +demo-waiter = { workspace = true, features = ["std"] } [features] testing = [ "rand" ] diff --git a/gsdk/tests/rpc.rs b/gsdk/tests/rpc.rs index c458cee94e8..376af7741de 100644 --- a/gsdk/tests/rpc.rs +++ b/gsdk/tests/rpc.rs @@ -151,7 +151,7 @@ async fn test_calculate_reply_gas() -> Result<()> { let salt = vec![]; let pid = ProgramId::generate(CodeId::generate(demo_waiter::WASM_BINARY), &salt); - let payload = demo_waiter::Command::SendUpTo(alice.into(), 10); + let payload = demo_waiter::Command::SendUpTo(alice, 10); // 1. upload program. let signer = Api::new(Some(&node_uri(&node))) diff --git a/pallets/gear-scheduler/src/tests.rs b/pallets/gear-scheduler/src/tests.rs index d2ba06af84f..58a0285d026 100644 --- a/pallets/gear-scheduler/src/tests.rs +++ b/pallets/gear-scheduler/src/tests.rs @@ -89,6 +89,7 @@ fn populate_wl_from( (mid, pid) } +#[track_caller] fn task_and_wl_message_exist( mid: impl Into, pid: impl Into, @@ -100,9 +101,7 @@ fn task_and_wl_message_exist( let ts = TaskPoolOf::::contains(&bn, &ScheduledTask::RemoveFromWaitlist(pid, mid)); let wl = WaitlistOf::::contains(&pid, &mid); - if ts != wl { - panic!("Logic invalidated"); - } + assert_eq!(ts, wl, "Logic invalidated"); ts } @@ -196,12 +195,14 @@ fn gear_handles_tasks() { ); assert_eq!(GearBank::account_total(&USER_1), gas_price(DEFAULT_GAS)); + let task = ScheduledTask::RemoveFromWaitlist(Default::default(), Default::default()); + let task_gas = pallet_gear::manager::get_maximum_task_gas::(&task); // Check if task and message got processed in block `bn`. run_to_block(bn, Some(u64::MAX)); // Read of the first block of incomplete tasks and write for removal of task. assert_eq!( GasAllowanceOf::::get(), - u64::MAX - db_r_w(1, 1).ref_time() + u64::MAX - db_r_w(1, 1).ref_time() - task_gas ); // Storages checking. @@ -298,7 +299,9 @@ fn gear_handles_outdated_tasks() { // Check if task and message got processed before start of block `bn`. // But due to the low gas allowance, we may process the only first task. - run_to_block(bn, Some(db_r_w(1, 2).ref_time() + 1)); + let task = ScheduledTask::RemoveFromWaitlist(Default::default(), Default::default()); + let task_gas = pallet_gear::manager::get_maximum_task_gas::(&task); + run_to_block(bn, Some(db_r_w(2, 2).ref_time() + task_gas + 1)); // Read of the first block of incomplete tasks, write to it afterwards + single task processing. assert_eq!(GasAllowanceOf::::get(), 1); @@ -329,7 +332,7 @@ fn gear_handles_outdated_tasks() { // Delete of the first block of incomplete tasks + single task processing. assert_eq!( GasAllowanceOf::::get(), - u64::MAX - db_r_w(0, 2).ref_time() + u64::MAX - db_r_w(0, 2).ref_time() - task_gas ); let cost2 = wl_cost_for(bn + 1 - initial_block); diff --git a/pallets/gear/Cargo.toml b/pallets/gear/Cargo.toml index 8dc26661bee..ac6f96b0a64 100644 --- a/pallets/gear/Cargo.toml +++ b/pallets/gear/Cargo.toml @@ -60,6 +60,11 @@ sp-consensus-slots = { workspace = true, optional = true } test-syscalls = { workspace = true, optional = true } demo-read-big-state = { workspace = true, optional = true } demo-proxy = { workspace = true, optional = true } +demo-reserve-gas = { workspace = true, optional = true } +demo-delayed-sender = { workspace = true, optional = true } +demo-constructor = { workspace = true, optional = true } +demo-waiter = { workspace = true, optional = true } +demo-init-wait = { workspace = true, optional = true } [dev-dependencies] wabt.workspace = true @@ -154,6 +159,11 @@ std = [ "test-syscalls?/std", "demo-read-big-state?/std", "demo-proxy?/std", + "demo-reserve-gas?/std", + "demo-delayed-sender?/std", + "demo-constructor?/std", + "demo-waiter?/std", + "demo-init-wait?/std", "gear-runtime-interface/std", ] runtime-benchmarks = [ @@ -172,6 +182,11 @@ runtime-benchmarks = [ "demo-read-big-state/wasm-wrapper", "demo-proxy/wasm-wrapper", "gsys", + "demo-reserve-gas/wasm-wrapper", + "demo-delayed-sender/wasm-wrapper", + "demo-constructor/wasm-wrapper", + "demo-waiter/wasm-wrapper", + "demo-init-wait/wasm-wrapper", ] runtime-benchmarks-checkers = [] try-runtime = ["frame-support/try-runtime"] diff --git a/pallets/gear/src/benchmarking/mod.rs b/pallets/gear/src/benchmarking/mod.rs index 089b6ba2799..354379bfe16 100644 --- a/pallets/gear/src/benchmarking/mod.rs +++ b/pallets/gear/src/benchmarking/mod.rs @@ -39,6 +39,7 @@ mod code; mod sandbox; mod syscalls; +mod tasks; mod utils; use syscalls::Benches; @@ -59,7 +60,7 @@ use crate::{ schedule::{API_BENCHMARK_BATCH_SIZE, INSTR_BENCHMARK_BATCH_SIZE}, BalanceOf, BenchmarkStorage, Call, Config, CurrencyOf, Event, ExecutionEnvironment, Ext as Externalities, GasHandlerOf, GearBank, MailboxOf, Pallet as Gear, Pallet, - ProgramStorageOf, QueueOf, RentFreePeriodOf, ResumeMinimalPeriodOf, Schedule, + ProgramStorageOf, QueueOf, RentFreePeriodOf, ResumeMinimalPeriodOf, Schedule, TaskPoolOf, }; use ::alloc::{ collections::{BTreeMap, BTreeSet}, @@ -68,6 +69,7 @@ use ::alloc::{ use common::{ self, benchmarking, paused_program_storage::SessionId, + scheduler::{ScheduledTask, TaskHandler}, storage::{Counter, *}, ActiveProgram, CodeMetadata, CodeStorage, GasTree, Origin, PausedProgramStorage, ProgramStorage, ReservableTree, @@ -241,6 +243,31 @@ where .unwrap_or_else(|e| unreachable!("core-processor logic invalidated: {}", e)) } +fn get_last_session_id() -> Option { + find_latest_event::(|event| match event { + Event::ProgramResumeSessionStarted { session_id, .. } => Some(session_id), + _ => None, + }) +} + +pub fn find_latest_event(mapping_filter: F) -> Option +where + T: Config, + F: Fn(Event) -> Option, +{ + SystemPallet::::events() + .into_iter() + .rev() + .filter_map(|event_record| { + let event = <::RuntimeEvent as From<_>>::from(event_record.event); + let event: Result, _> = event.try_into(); + + event.ok() + }) + .find_map(mapping_filter) +} + +#[track_caller] fn resume_session_prepare( c: u32, program_id: ProgramId, @@ -261,14 +288,6 @@ where ) .expect("failed to start resume session"); - let event_record = SystemPallet::::events().pop().unwrap(); - let event = <::RuntimeEvent as From<_>>::from(event_record.event); - let event: Result, _> = event.try_into(); - let session_id = match event { - Ok(Event::ProgramResumeSessionStarted { session_id, .. }) => session_id, - _ => unreachable!(), - }; - let memory_pages = { let mut pages = Vec::with_capacity(c as usize); for i in 0..c { @@ -278,7 +297,7 @@ where pages }; - (session_id, memory_pages) + (get_last_session_id::().unwrap(), memory_pages) } /// An instantiated and deployed program. @@ -2741,6 +2760,89 @@ benchmarks! { sbox.invoke(); } + tasks_remove_resume_session { + let session_id = tasks::remove_resume_session::(); + let mut ext_manager = ExtManager::::default(); + }: { + ext_manager.remove_resume_session(session_id); + } + + tasks_remove_gas_reservation { + let (program_id, reservation_id) = tasks::remove_gas_reservation::(); + let mut ext_manager = ExtManager::::default(); + }: { + ext_manager.remove_gas_reservation(program_id, reservation_id); + } + + tasks_send_user_message_to_mailbox { + let message_id = tasks::send_user_message::(); + let mut ext_manager = ExtManager::::default(); + }: { + ext_manager.send_user_message(message_id, true); + } + + tasks_send_user_message { + let message_id = tasks::send_user_message::(); + let mut ext_manager = ExtManager::::default(); + }: { + ext_manager.send_user_message(message_id, false); + } + + tasks_send_dispatch { + let message_id = tasks::send_dispatch::(); + let mut ext_manager = ExtManager::::default(); + }: { + ext_manager.send_dispatch(message_id); + } + + tasks_wake_message { + let (program_id, message_id) = tasks::wake_message::(); + let mut ext_manager = ExtManager::::default(); + }: { + ext_manager.wake_message(program_id, message_id); + } + + tasks_wake_message_no_wake { + let mut ext_manager = ExtManager::::default(); + }: { + ext_manager.wake_message(Default::default(), Default::default()); + } + + tasks_remove_from_waitlist { + let (program_id, message_id) = tasks::remove_from_waitlist::(); + let mut ext_manager = ExtManager::::default(); + }: { + ext_manager.remove_from_waitlist(program_id, message_id); + } + + tasks_remove_from_mailbox { + let (user, message_id) = tasks::remove_from_mailbox::(); + let mut ext_manager = ExtManager::::default(); + }: { + ext_manager.remove_from_mailbox(T::AccountId::from_origin(user.into_origin()), message_id); + } + + tasks_pause_program { + let c in 0 .. (MAX_PAGES - 1) * (WASM_PAGE_SIZE / GEAR_PAGE_SIZE) as u32; + + let code = benchmarking::generate_wasm2(0.into()).unwrap(); + let program_id = tasks::pause_program_prepare::(c, code); + + let mut ext_manager = ExtManager::::default(); + }: { + ext_manager.pause_program(program_id); + } + + tasks_pause_program_uninited { + let c in 0 .. (MAX_PAGES - 1) * (WASM_PAGE_SIZE / GEAR_PAGE_SIZE) as u32; + + let program_id = tasks::pause_program_prepare::(c, demo_init_wait::WASM_BINARY.to_vec()); + + let mut ext_manager = ExtManager::::default(); + }: { + ext_manager.pause_program(program_id); + } + // This is no benchmark. It merely exist to have an easy way to pretty print the currently // configured `Schedule` during benchmark development. // It can be outputted using the following command: diff --git a/pallets/gear/src/benchmarking/tasks.rs b/pallets/gear/src/benchmarking/tasks.rs new file mode 100644 index 00000000000..6447b509f01 --- /dev/null +++ b/pallets/gear/src/benchmarking/tasks.rs @@ -0,0 +1,371 @@ +// This file is part of Gear. + +// Copyright (C) Gear Technologies Inc. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +use super::*; +use gear_core::ids::ReservationId; + +#[track_caller] +fn send_user_message_prepare(delay: u32) +where + T: Config, + T::AccountId: Origin, +{ + use demo_delayed_sender::WASM_BINARY; + + let caller = benchmarking::account("caller", 0, 0); + CurrencyOf::::deposit_creating(&caller, 200_000_000_000_000u128.unique_saturated_into()); + + init_block::(None); + + let salt = vec![]; + Gear::::upload_program( + RawOrigin::Signed(caller).into(), + WASM_BINARY.to_vec(), + salt, + delay.encode(), + 100_000_000_000, + 0u32.into(), + ) + .expect("submit program failed"); + + Gear::::process_queue(Default::default()); +} + +#[track_caller] +pub(super) fn pause_program_prepare(c: u32, code: Vec) -> ProgramId +where + T: Config, + T::AccountId: Origin, +{ + let caller = benchmarking::account("caller", 0, 0); + CurrencyOf::::deposit_creating(&caller, 400_000_000_000_000u128.unique_saturated_into()); + + init_block::(None); + + let salt = vec![]; + let program_id = ProgramId::generate(CodeId::generate(&code), &salt); + Gear::::upload_program( + RawOrigin::Signed(caller).into(), + code, + salt, + b"init_payload".to_vec(), + 10_000_000_000, + 0u32.into(), + ) + .expect("submit program failed"); + + Gear::::process_queue(Default::default()); + + let memory_page = { + let mut page = PageBuf::new_zeroed(); + page[0] = 1; + + page + }; + + for i in 0..c { + ProgramStorageOf::::set_program_page_data( + program_id, + GearPage::from(i as u16), + memory_page.clone(), + ); + } + + ProgramStorageOf::::update_active_program(program_id, |program| { + program.pages_with_data = BTreeSet::from_iter((0..c).map(|i| GearPage::from(i as u16))); + + let wasm_pages = (c as usize * GEAR_PAGE_SIZE) / WASM_PAGE_SIZE; + program.allocations = + BTreeSet::from_iter((0..wasm_pages).map(|i| WasmPage::from(i as u16))); + }) + .expect("program should exist"); + + program_id +} + +#[track_caller] +pub(super) fn remove_resume_session() -> SessionId +where + T: Config, + T::AccountId: Origin, +{ + let caller = benchmarking::account("caller", 0, 0); + CurrencyOf::::deposit_creating(&caller, 200_000_000_000_000u128.unique_saturated_into()); + let code = benchmarking::generate_wasm2(16.into()).unwrap(); + let salt = vec![]; + let program_id = ProgramId::generate(CodeId::generate(&code), &salt); + Gear::::upload_program( + RawOrigin::Signed(caller.clone()).into(), + code, + salt, + b"init_payload".to_vec(), + 10_000_000_000, + 0u32.into(), + ) + .expect("submit program failed"); + + init_block::(None); + + ProgramStorageOf::::pause_program(program_id, 100u32.into()).unwrap(); + + Gear::::resume_session_init( + RawOrigin::Signed(caller).into(), + program_id, + Default::default(), + CodeId::default(), + ) + .expect("failed to start resume session"); + + get_last_session_id::().unwrap() +} + +#[track_caller] +pub(super) fn remove_gas_reservation() -> (ProgramId, ReservationId) +where + T: Config, + T::AccountId: Origin, +{ + use demo_reserve_gas::{InitAction, WASM_BINARY}; + + let caller = benchmarking::account("caller", 0, 0); + CurrencyOf::::deposit_creating(&caller, 200_000_000_000_000u128.unique_saturated_into()); + + init_block::(None); + + let salt = vec![]; + let program_id = ProgramId::generate(CodeId::generate(WASM_BINARY), &salt); + Gear::::upload_program( + RawOrigin::Signed(caller).into(), + WASM_BINARY.to_vec(), + salt, + InitAction::Normal(vec![(50_000, 100)]).encode(), + 10_000_000_000, + 0u32.into(), + ) + .expect("submit program failed"); + + Gear::::process_queue(Default::default()); + + let program: ActiveProgram<_> = ProgramStorageOf::::get_program(program_id) + .expect("program should exist") + .try_into() + .expect("program should be active"); + + ( + program_id, + program + .gas_reservation_map + .first_key_value() + .map(|(k, _v)| *k) + .unwrap(), + ) +} + +#[track_caller] +pub(super) fn send_user_message() -> MessageId +where + T: Config, + T::AccountId: Origin, +{ + let delay = 1u32; + send_user_message_prepare::(delay); + + let task = TaskPoolOf::::iter_prefix_keys(Gear::::block_number() + delay.into()) + .next() + .expect("task should be scheduled"); + let (message_id, to_mailbox) = match task { + ScheduledTask::SendUserMessage { + message_id, + to_mailbox, + } => (message_id, to_mailbox), + _ => unreachable!("task should be SendUserMessage"), + }; + assert!(to_mailbox); + + message_id +} + +#[track_caller] +pub(super) fn send_dispatch() -> MessageId +where + T: Config, + T::AccountId: Origin, +{ + use demo_constructor::{Call, Calls, Scheme, WASM_BINARY}; + + let caller = benchmarking::account("caller", 0, 0); + CurrencyOf::::deposit_creating(&caller, 200_000_000_000_000u128.unique_saturated_into()); + + init_block::(None); + + let salt = vec![]; + let program_id = ProgramId::generate(CodeId::generate(WASM_BINARY), &salt); + Gear::::upload_program( + RawOrigin::Signed(caller.clone()).into(), + WASM_BINARY.to_vec(), + salt, + Scheme::empty().encode(), + 10_000_000_000, + 0u32.into(), + ) + .expect("submit program failed"); + + let delay = 1u32; + let calls = Calls::builder().add_call(Call::Send( + <[u8; 32]>::from(program_id.into_origin()).into(), + [].into(), + Some(0u64.into()), + 0u128.into(), + delay.into(), + )); + Gear::::send_message( + RawOrigin::Signed(caller).into(), + program_id, + calls.encode(), + 10_000_000_000, + 0u32.into(), + false, + ) + .expect("failed to send message"); + + Gear::::process_queue(Default::default()); + + let task = TaskPoolOf::::iter_prefix_keys(Gear::::block_number() + delay.into()) + .next() + .unwrap(); + + match task { + ScheduledTask::SendDispatch(message_id) => message_id, + _ => unreachable!(), + } +} + +#[track_caller] +pub(super) fn wake_message() -> (ProgramId, MessageId) +where + T: Config, + T::AccountId: Origin, +{ + use demo_waiter::{Command, WaitSubcommand, WASM_BINARY}; + + let caller = benchmarking::account("caller", 0, 0); + CurrencyOf::::deposit_creating(&caller, 200_000_000_000_000u128.unique_saturated_into()); + + init_block::(None); + + let salt = vec![]; + let program_id = ProgramId::generate(CodeId::generate(WASM_BINARY), &salt); + Gear::::upload_program( + RawOrigin::Signed(caller.clone()).into(), + WASM_BINARY.to_vec(), + salt, + vec![], + 10_000_000_000, + 0u32.into(), + ) + .expect("submit program failed"); + + let delay = 10u32; + Gear::::send_message( + RawOrigin::Signed(caller).into(), + program_id, + Command::Wait(WaitSubcommand::WaitFor(delay)).encode(), + 10_000_000_000, + 0u32.into(), + false, + ) + .expect("failed to send message"); + + Gear::::process_queue(Default::default()); + + let task = TaskPoolOf::::iter_prefix_keys(Gear::::block_number() + delay.into()) + .next() + .unwrap(); + let (_program_id, message_id) = match task { + ScheduledTask::WakeMessage(program_id, message_id) => (program_id, message_id), + _ => unreachable!(), + }; + + (program_id, message_id) +} + +#[track_caller] +pub(super) fn remove_from_waitlist() -> (ProgramId, MessageId) +where + T: Config, + T::AccountId: Origin, +{ + use demo_waiter::{Command, WaitSubcommand, WASM_BINARY}; + + let caller = benchmarking::account("caller", 0, 0); + CurrencyOf::::deposit_creating(&caller, 200_000_000_000_000u128.unique_saturated_into()); + + init_block::(None); + + let salt = vec![]; + let program_id = ProgramId::generate(CodeId::generate(WASM_BINARY), &salt); + Gear::::upload_program( + RawOrigin::Signed(caller.clone()).into(), + WASM_BINARY.to_vec(), + salt, + vec![], + 10_000_000_000, + 0u32.into(), + ) + .expect("submit program failed"); + + Gear::::send_message( + RawOrigin::Signed(caller).into(), + program_id, + Command::Wait(WaitSubcommand::Wait).encode(), + 10_000_000_000, + 0u32.into(), + false, + ) + .expect("failed to send message"); + + Gear::::process_queue(Default::default()); + + let expiration = find_latest_event::(|event| match event { + Event::MessageWaited { expiration, .. } => Some(expiration), + _ => None, + }) + .expect("message should be waited"); + + let task = TaskPoolOf::::iter_prefix_keys(expiration) + .next() + .unwrap(); + let (_program_id, message_id) = match task { + ScheduledTask::RemoveFromWaitlist(program_id, message_id) => (program_id, message_id), + _ => unreachable!(), + }; + + (program_id, message_id) +} + +#[track_caller] +pub(super) fn remove_from_mailbox() -> (ProgramId, MessageId) +where + T: Config, + T::AccountId: Origin, +{ + send_user_message_prepare::(0u32); + + find_latest_event::(|event| match event { + Event::UserMessageSent { message, .. } => Some((message.destination(), message.id())), + _ => None, + }) + .expect("message should be sent") +} diff --git a/pallets/gear/src/lib.rs b/pallets/gear/src/lib.rs index e236c02de33..0db25c86d60 100644 --- a/pallets/gear/src/lib.rs +++ b/pallets/gear/src/lib.rs @@ -934,7 +934,6 @@ pub mod pallet { ..=current_bn.saturated_into()) .map(|block| block.saturated_into::>()); for bn in missing_blocks { - // Tasks drain iterator. let tasks = TaskPoolOf::::drain_prefix_keys(bn); // Checking gas allowance. @@ -948,30 +947,63 @@ pub mod pallet { } // Iterating over tasks, scheduled on `bn`. + let mut last_task = None; for task in tasks { - log::debug!("Processing task: {:?}", task); - // Decreasing gas allowance due to DB deletion. GasAllowanceOf::::decrease(DbWeightOf::::get().writes(1).ref_time()); - // Processing task. - // - // NOTE: Gas allowance decrease should be implemented - // inside `TaskHandler` trait and/or inside other - // generic types, which interact with storage. - task.process_with(ext_manager); + // gas required to process task. + let max_task_gas = manager::get_maximum_task_gas::(&task); + log::debug!("Processing task: {task:?}, max gas = {max_task_gas}"); // Checking gas allowance. // - // Making sure we have gas to remove next task - // or update the first block of incomplete tasks. - if GasAllowanceOf::::get() <= DbWeightOf::::get().writes(2).ref_time() { + // Making sure we have gas to process the current task + // and update the first block of incomplete tasks. + if GasAllowanceOf::::get().saturating_sub(max_task_gas) + <= DbWeightOf::::get().writes(1).ref_time() + { + // Since the task is not processed write DB cost should be refunded. + // In the same time gas allowance should be charged for read DB cost. + GasAllowanceOf::::put( + GasAllowanceOf::::get() + .saturating_add(DbWeightOf::::get().writes(1).ref_time()) + .saturating_sub(DbWeightOf::::get().reads(1).ref_time()), + ); + + last_task = Some(task); + log::debug!("Not enough gas to process task at: {bn:?}"); + + break; + } + + // Processing task and update allowance of gas. + let task_gas = task.process_with(ext_manager); + GasAllowanceOf::::decrease(task_gas); + + // Check that there is enough gas allowance to query next task and update the first block of incomplete tasks. + if GasAllowanceOf::::get() + <= DbWeightOf::::get().reads_writes(1, 1).ref_time() + { stopped_at = Some(bn); - log::debug!("Stopping processing tasks at: {stopped_at:?}"); + log::debug!("Stopping processing tasks at (read next): {stopped_at:?}"); break; } } + if let Some(task) = last_task { + stopped_at = Some(bn); + + // since there is the overlay mechanism we don't need to subtract write cost + // from gas allowance on task insertion. + GasAllowanceOf::::put( + GasAllowanceOf::::get() + .saturating_add(DbWeightOf::::get().writes(1).ref_time()), + ); + TaskPoolOf::::add(bn, task) + .unwrap_or_else(|e| unreachable!("Scheduling logic invalidated! {:?}", e)); + } + // Stopping iteration over blocks if no resources left. if stopped_at.is_some() { break; diff --git a/pallets/gear/src/manager/task.rs b/pallets/gear/src/manager/task.rs index 41a399265f2..54f6eb85f2b 100644 --- a/pallets/gear/src/manager/task.rs +++ b/pallets/gear/src/manager/task.rs @@ -17,8 +17,8 @@ // along with this program. If not, see . use crate::{ - manager::ExtManager, Config, DispatchStashOf, Event, Pallet, ProgramStorageOf, QueueOf, - TaskPoolOf, WaitlistOf, + manager::ExtManager, weights::WeightInfo, Config, DbWeightOf, DispatchStashOf, Event, Pallet, + ProgramStorageOf, QueueOf, TaskPoolOf, WaitlistOf, }; use alloc::string::ToString; use common::{ @@ -29,21 +29,71 @@ use common::{ paused_program_storage::SessionId, scheduler::*, storage::*, - Origin, PausedProgramStorage, Program, ProgramStorage, + ActiveProgram, Gas, Origin, PausedProgramStorage, Program, ProgramState, ProgramStorage, }; +use core::cmp; use gear_core::{ + code::MAX_WASM_PAGE_COUNT, ids::{CodeId, MessageId, ProgramId, ReservationId}, message::{DispatchKind, ReplyMessage}, + pages::{GEAR_PAGE_SIZE, WASM_PAGE_SIZE}, }; use gear_core_errors::{ErrorReplyReason, SignalCode}; use sp_core::Get; use sp_runtime::Saturating; +pub fn get_maximum_task_gas(task: &ScheduledTask) -> Gas { + use ScheduledTask::*; + + match task { + PauseProgram(_) => { + // TODO: #3079 + if ::ProgramRentEnabled::get() { + let count = + u32::from(MAX_WASM_PAGE_COUNT * (WASM_PAGE_SIZE / GEAR_PAGE_SIZE) as u16 / 2); + cmp::max( + ::WeightInfo::tasks_pause_program(count).ref_time(), + ::WeightInfo::tasks_pause_program_uninited(count).ref_time(), + ) + } else { + DbWeightOf::::get().writes(2).ref_time() + } + } + RemoveCode(_) => todo!("#646"), + RemoveFromMailbox(_, _) => { + ::WeightInfo::tasks_remove_from_mailbox().ref_time() + } + RemoveFromWaitlist(_, _) => { + ::WeightInfo::tasks_remove_from_waitlist().ref_time() + } + RemovePausedProgram(_) => todo!("#646"), + WakeMessage(_, _) => cmp::max( + ::WeightInfo::tasks_wake_message().ref_time(), + ::WeightInfo::tasks_wake_message_no_wake().ref_time(), + ), + SendDispatch(_) => ::WeightInfo::tasks_send_dispatch().ref_time(), + SendUserMessage { .. } => cmp::max( + ::WeightInfo::tasks_send_user_message_to_mailbox().ref_time(), + ::WeightInfo::tasks_send_user_message().ref_time(), + ), + RemoveGasReservation(_, _) => { + ::WeightInfo::tasks_remove_gas_reservation().ref_time() + } + RemoveResumeSession(_) => { + ::WeightInfo::tasks_remove_resume_session().ref_time() + } + } +} + impl TaskHandler for ExtManager where T::AccountId: Origin, { - fn pause_program(&mut self, program_id: ProgramId) { + fn pause_program(&mut self, program_id: ProgramId) -> Gas { + // + // TODO: #3079 + // + if !::ProgramRentEnabled::get() { log::debug!("Program rent logic is disabled."); @@ -63,13 +113,17 @@ where TaskPoolOf::::add(expiration_block, task) .unwrap_or_else(|e| unreachable!("Scheduling logic invalidated! {:?}", e)); - return; + return DbWeightOf::::get().writes(1).ref_time(); } - let program = ProgramStorageOf::::get_program(program_id) - .unwrap_or_else(|| unreachable!("Program to pause not found.")); + let program: ActiveProgram<_> = ProgramStorageOf::::get_program(program_id) + .unwrap_or_else(|| unreachable!("Program to pause not found.")) + .try_into() + .unwrap_or_else(|e| unreachable!("Pause program task logic corrupted: {e:?}")); - let Some(init_message_id) = program.is_uninitialized() else { + let pages_with_data = program.pages_with_data.len() as u32; + + let ProgramState::Uninitialized{ message_id: init_message_id } = program.state else { // pause initialized program let gas_reservation_map = ProgramStorageOf::::pause_program(program_id, Pallet::::block_number()) @@ -90,7 +144,10 @@ where change: ProgramChangeKind::Paused, }); - return; + let gas = ::WeightInfo::tasks_pause_program(pages_with_data).ref_time(); + log::trace!("Task gas: tasks_pause_program = {gas}"); + + return gas; }; // terminate uninitialized program @@ -141,13 +198,19 @@ where id: program_id, change: ProgramChangeKind::Terminated, }); + + let gas = + ::WeightInfo::tasks_pause_program_uninited(pages_with_data).ref_time(); + log::trace!("Task gas: tasks_pause_program_uninited = {gas}"); + + gas } - fn remove_code(&mut self, _code_id: CodeId) { - todo!("#646"); + fn remove_code(&mut self, _code_id: CodeId) -> Gas { + todo!("#646") } - fn remove_from_mailbox(&mut self, user_id: T::AccountId, message_id: MessageId) { + fn remove_from_mailbox(&mut self, user_id: T::AccountId, message_id: MessageId) -> Gas { // Read reason. let reason = UserMessageReadSystemReason::OutOfRent.into_reason(); @@ -169,9 +232,14 @@ where // Queueing dispatch. QueueOf::::queue(dispatch) .unwrap_or_else(|e| unreachable!("Message queue corrupted! {:?}", e)); + + let gas = ::WeightInfo::tasks_remove_from_mailbox().ref_time(); + log::trace!("Task gas: tasks_remove_from_mailbox = {gas}"); + + gas } - fn remove_from_waitlist(&mut self, program_id: ProgramId, message_id: MessageId) { + fn remove_from_waitlist(&mut self, program_id: ProgramId, message_id: MessageId) -> Gas { // Wake reason. let reason = MessageWokenSystemReason::OutOfRent.into_reason(); @@ -240,24 +308,42 @@ where let origin = waitlisted.source(); Self::process_failed_init(program_id, origin, true); } + + let gas = ::WeightInfo::tasks_remove_from_waitlist().ref_time(); + log::trace!("Task gas: tasks_remove_from_waitlist = {gas}"); + + gas } - fn remove_paused_program(&mut self, _program_id: ProgramId) { - todo!("#646"); + fn remove_paused_program(&mut self, _program_id: ProgramId) -> Gas { + todo!("#646") } - fn wake_message(&mut self, program_id: ProgramId, message_id: MessageId) { - if let Some(dispatch) = Pallet::::wake_dispatch( + fn wake_message(&mut self, program_id: ProgramId, message_id: MessageId) -> Gas { + match Pallet::::wake_dispatch( program_id, message_id, MessageWokenRuntimeReason::WakeCalled.into_reason(), ) { - QueueOf::::queue(dispatch) - .unwrap_or_else(|e| unreachable!("Message queue corrupted! {:?}", e)); + Some(dispatch) => { + QueueOf::::queue(dispatch) + .unwrap_or_else(|e| unreachable!("Message queue corrupted! {:?}", e)); + + let gas = ::WeightInfo::tasks_wake_message().ref_time(); + log::trace!("Task gas: tasks_wake_message = {gas}"); + + gas + } + None => { + let gas = ::WeightInfo::tasks_wake_message_no_wake().ref_time(); + log::trace!("Task gas: tasks_wake_message_no_wake = {gas}"); + + gas + } } } - fn send_dispatch(&mut self, stashed_message_id: MessageId) { + fn send_dispatch(&mut self, stashed_message_id: MessageId) -> Gas { // No validation required. If program doesn't exist, then NotExecuted appears. let (dispatch, hold_interval) = DispatchStashOf::::take(stashed_message_id) @@ -268,9 +354,14 @@ where QueueOf::::queue(dispatch) .unwrap_or_else(|e| unreachable!("Message queue corrupted! {:?}", e)); + + let gas = ::WeightInfo::tasks_send_dispatch().ref_time(); + log::trace!("Task gas: tasks_send_dispatch = {gas}"); + + gas } - fn send_user_message(&mut self, stashed_message_id: MessageId, to_mailbox: bool) { + fn send_user_message(&mut self, stashed_message_id: MessageId, to_mailbox: bool) -> Gas { // TODO: validate here destination and send error reply, if required. // Atm despite the fact that program may exist, message goes into mailbox / event. let (message, hold_interval) = DispatchStashOf::::take(stashed_message_id) @@ -285,15 +376,40 @@ where .try_into() .unwrap_or_else(|_| unreachable!("Signal message sent to user")); Pallet::::send_user_message_after_delay(message, to_mailbox); + + if to_mailbox { + let gas = ::WeightInfo::tasks_send_user_message_to_mailbox().ref_time(); + log::trace!("Task gas: tasks_send_user_message_to_mailbox = {gas}"); + + gas + } else { + let gas = ::WeightInfo::tasks_send_user_message().ref_time(); + log::trace!("Task gas: tasks_send_user_message = {gas}"); + + gas + } } - fn remove_gas_reservation(&mut self, program_id: ProgramId, reservation_id: ReservationId) { + fn remove_gas_reservation( + &mut self, + program_id: ProgramId, + reservation_id: ReservationId, + ) -> Gas { let _slot = Self::remove_gas_reservation_impl(program_id, reservation_id); + + let gas = ::WeightInfo::tasks_remove_gas_reservation().ref_time(); + log::trace!("Task gas: tasks_remove_gas_reservation = {gas}"); + + gas } - fn remove_resume_session(&mut self, session_id: SessionId) { - log::debug!("Execute task to remove resume session with session_id = {session_id}"); + fn remove_resume_session(&mut self, session_id: SessionId) -> Gas { ProgramStorageOf::::remove_resume_session(session_id) .unwrap_or_else(|e| unreachable!("ProgramStorage corrupted! {:?}", e)); + + let gas = ::WeightInfo::tasks_remove_resume_session().ref_time(); + log::trace!("Task gas: tasks_remove_resume_session = {gas}"); + + gas } } diff --git a/pallets/gear/src/mock.rs b/pallets/gear/src/mock.rs index e4f29b149e2..6ddddaa70ca 100644 --- a/pallets/gear/src/mock.rs +++ b/pallets/gear/src/mock.rs @@ -302,7 +302,7 @@ pub fn new_test_ext() -> sp_io::TestExternalities { pallet_balances::GenesisConfig:: { balances: vec![ (USER_1, 5_000_000_000_000_000_u128), - (USER_2, 200_000_000_000_000_u128), + (USER_2, 350_000_000_000_000_u128), (USER_3, 500_000_000_000_000_u128), (LOW_BALANCE_USER, 1_000_000_u128), (BLOCK_AUTHOR, 500_000_u128), diff --git a/pallets/gear/src/tests.rs b/pallets/gear/src/tests.rs index ae861d0d365..019d2ac293b 100644 --- a/pallets/gear/src/tests.rs +++ b/pallets/gear/src/tests.rs @@ -5118,7 +5118,7 @@ fn test_requeue_after_wait_for_timeout() { run_to_next_block(None); let duration = 10; - let payload = Command::SendAndWaitFor(duration, USER_1.into()).encode(); + let payload = Command::SendAndWaitFor(duration, USER_1.into_origin().into()).encode(); assert_ok!(Gear::send_message( RuntimeOrigin::signed(USER_1), program_id, @@ -5189,7 +5189,7 @@ fn test_sending_waits() { // // Send message and then wait_for. let duration = 5; - let payload = Command::SendFor(USER_1.into(), duration).encode(); + let payload = Command::SendFor(USER_1.into_origin().into(), duration).encode(); assert_ok!(Gear::send_message( RuntimeOrigin::signed(USER_1), @@ -5209,7 +5209,7 @@ fn test_sending_waits() { // // Send message and then wait_up_to. let duration = 10; - let payload = Command::SendUpTo(USER_1.into(), duration).encode(); + let payload = Command::SendUpTo(USER_1.into_origin().into(), duration).encode(); assert_ok!(Gear::send_message( RuntimeOrigin::signed(USER_1), program_id, @@ -5228,7 +5228,7 @@ fn test_sending_waits() { // // Send message and then wait no_more, wake, wait no_more again. let duration = 10; - let payload = Command::SendUpToWait(USER_2.into(), duration).encode(); + let payload = Command::SendUpToWait(USER_2.into_origin().into(), duration).encode(); assert_ok!(Gear::send_message( RuntimeOrigin::signed(USER_1), program_id, @@ -8809,6 +8809,8 @@ fn free_storage_hold_on_scheduler_overwhelm() { #[test] fn execution_over_blocks() { + const MAX_BLOCK: u64 = 10_000_000_000; + init_logger(); let assert_last_message = |src: [u8; 32], count: u128| { @@ -8849,7 +8851,7 @@ fn execution_over_blocks() { )); let in_one_block = get_last_program_id(); - run_to_next_block(None); + run_to_next_block(Some(MAX_BLOCK)); // estimate start cost let pkg = Package::new(times, src); @@ -8870,7 +8872,7 @@ fn execution_over_blocks() { use demo_calc_hash_in_one_block::{Package, WASM_BINARY}; // We suppose that gas limit is less than gas allowance - let block_gas_limit = BlockGasLimitOf::::get() - 10000; + let block_gas_limit = MAX_BLOCK - 10_000; // Deploy demo-calc-hash-in-one-block. assert_ok!(Gear::upload_program( @@ -8887,30 +8889,31 @@ fn execution_over_blocks() { let src = [0; 32]; + let expected = 64; assert_ok!(Gear::send_message( RuntimeOrigin::signed(USER_1), in_one_block, - Package::new(128, src).encode(), + Package::new(expected, src).encode(), block_gas_limit, 0, false, )); - run_to_next_block(None); + run_to_next_block(Some(MAX_BLOCK)); - assert_last_message([0; 32], 128); + assert_last_message([0; 32], expected); assert_ok!(Gear::send_message( RuntimeOrigin::signed(USER_1), in_one_block, - Package::new(17_384, src).encode(), + Package::new(1_024, src).encode(), block_gas_limit, 0, false, )); let message_id = get_last_message_id(); - run_to_next_block(None); + run_to_next_block(Some(MAX_BLOCK)); assert_failed( message_id, @@ -8921,7 +8924,7 @@ fn execution_over_blocks() { new_test_ext().execute_with(|| { use demo_calc_hash::sha2_512_256; use demo_calc_hash_over_blocks::{Method, WASM_BINARY}; - let block_gas_limit = BlockGasLimitOf::::get(); + let block_gas_limit = MAX_BLOCK; let (_, calc_threshold) = estimate_gas_per_calc(); @@ -8931,26 +8934,26 @@ fn execution_over_blocks() { WASM_BINARY.to_vec(), DEFAULT_SALT.to_vec(), calc_threshold.encode(), - 10_000_000_000, + 9_000_000_000, 0, )); let over_blocks = get_last_program_id(); assert!(ProgramStorageOf::::program_exists(over_blocks)); - let (src, id, expected) = ([0; 32], sha2_512_256(b"42"), 16_384); + let (src, id, expected) = ([0; 32], sha2_512_256(b"42"), 512); // trigger calculation assert_ok!(Gear::send_message( RuntimeOrigin::signed(USER_1), over_blocks, Method::Start { src, id, expected }.encode(), - 10_000_000_000, + 9_000_000_000, 0, false, )); - run_to_next_block(None); + run_to_next_block(Some(MAX_BLOCK)); let mut count = 0; loop { @@ -8970,7 +8973,7 @@ fn execution_over_blocks() { )); count += 1; - run_to_next_block(None); + run_to_next_block(Some(MAX_BLOCK)); } assert!(count > 1); diff --git a/pallets/gear/src/weights.rs b/pallets/gear/src/weights.rs index c52d1f58fac..3ad8efedec0 100644 --- a/pallets/gear/src/weights.rs +++ b/pallets/gear/src/weights.rs @@ -215,6 +215,17 @@ pub trait WeightInfo { fn instr_i32rotl(r: u32, ) -> Weight; fn instr_i64rotr(r: u32, ) -> Weight; fn instr_i32rotr(r: u32, ) -> Weight; + fn tasks_remove_resume_session() -> Weight; + fn tasks_remove_gas_reservation() -> Weight; + fn tasks_send_user_message_to_mailbox() -> Weight; + fn tasks_send_user_message() -> Weight; + fn tasks_send_dispatch() -> Weight; + fn tasks_wake_message() -> Weight; + fn tasks_wake_message_no_wake() -> Weight; + fn tasks_remove_from_waitlist() -> Weight; + fn tasks_remove_from_mailbox() -> Weight; + fn tasks_pause_program(c: u32, ) -> Weight; + fn tasks_pause_program_uninited(c: u32, ) -> Weight; fn allocation_cost() -> Weight; fn grow_cost() -> Weight; fn initial_cost() -> Weight; @@ -2062,6 +2073,116 @@ impl WeightInfo for SubstrateWeight { // Standard Error: 5_851 .saturating_add(Weight::from_parts(639_333, 0).saturating_mul(r.into())) } + fn tasks_remove_resume_session() -> Weight { + // Proof Size summary in bytes: + // Measured: `352` + // Estimated: `4169` + // Minimum execution time: 5_698_000 picoseconds. + Weight::from_parts(5_953_000, 4169) + .saturating_add(T::DbWeight::get().reads(1_u64)) + .saturating_add(T::DbWeight::get().writes(2_u64)) + } + fn tasks_remove_gas_reservation() -> Weight { + // Proof Size summary in bytes: + // Measured: `1003` + // Estimated: `23637` + // Minimum execution time: 61_615_000 picoseconds. + Weight::from_parts(64_309_000, 23637) + .saturating_add(T::DbWeight::get().reads(7_u64)) + .saturating_add(T::DbWeight::get().writes(6_u64)) + } + fn tasks_send_user_message_to_mailbox() -> Weight { + // Proof Size summary in bytes: + // Measured: `784` + // Estimated: `21534` + // Minimum execution time: 43_449_000 picoseconds. + Weight::from_parts(44_990_000, 21534) + .saturating_add(T::DbWeight::get().reads(6_u64)) + .saturating_add(T::DbWeight::get().writes(5_u64)) + } + fn tasks_send_user_message() -> Weight { + // Proof Size summary in bytes: + // Measured: `906` + // Estimated: `33891` + // Minimum execution time: 75_764_000 picoseconds. + Weight::from_parts(77_875_000, 33891) + .saturating_add(T::DbWeight::get().reads(11_u64)) + .saturating_add(T::DbWeight::get().writes(10_u64)) + } + fn tasks_send_dispatch() -> Weight { + // Proof Size summary in bytes: + // Measured: `591` + // Estimated: `19885` + // Minimum execution time: 31_362_000 picoseconds. + Weight::from_parts(32_425_000, 19885) + .saturating_add(T::DbWeight::get().reads(7_u64)) + .saturating_add(T::DbWeight::get().writes(6_u64)) + } + fn tasks_wake_message() -> Weight { + // Proof Size summary in bytes: + // Measured: `872` + // Estimated: `25908` + // Minimum execution time: 45_023_000 picoseconds. + Weight::from_parts(46_479_000, 25908) + .saturating_add(T::DbWeight::get().reads(8_u64)) + .saturating_add(T::DbWeight::get().writes(6_u64)) + } + fn tasks_wake_message_no_wake() -> Weight { + // Proof Size summary in bytes: + // Measured: `80` + // Estimated: `3545` + // Minimum execution time: 3_365_000 picoseconds. + Weight::from_parts(3_639_000, 3545) + .saturating_add(T::DbWeight::get().reads(1_u64)) + } + fn tasks_remove_from_waitlist() -> Weight { + // Proof Size summary in bytes: + // Measured: `1522` + // Estimated: `57192` + // Minimum execution time: 114_023_000 picoseconds. + Weight::from_parts(117_157_000, 57192) + .saturating_add(T::DbWeight::get().reads(16_u64)) + .saturating_add(T::DbWeight::get().writes(13_u64)) + } + fn tasks_remove_from_mailbox() -> Weight { + // Proof Size summary in bytes: + // Measured: `1228` + // Estimated: `46026` + // Minimum execution time: 90_320_000 picoseconds. + Weight::from_parts(93_096_000, 46026) + .saturating_add(T::DbWeight::get().reads(14_u64)) + .saturating_add(T::DbWeight::get().writes(13_u64)) + } + /// The range of component `c` is `[0, 2044]`. + fn tasks_pause_program(c: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `2200 + c * (16400 ±0)` + // Estimated: `19363 + c * (84480 ±0)` + // Minimum execution time: 28_326_000 picoseconds. + Weight::from_parts(28_612_000, 19363) + // Standard Error: 73_191 + .saturating_add(Weight::from_parts(39_403_570, 0).saturating_mul(c.into())) + .saturating_add(T::DbWeight::get().reads(4_u64)) + .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(c.into()))) + .saturating_add(T::DbWeight::get().writes(2_u64)) + .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(c.into()))) + .saturating_add(Weight::from_parts(0, 84480).saturating_mul(c.into())) + } + /// The range of component `c` is `[0, 2044]`. + fn tasks_pause_program_uninited(c: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `3025 + c * (42 ±0)` + // Estimated: `59431 + c * (2947 ±0)` + // Minimum execution time: 86_517_000 picoseconds. + Weight::from_parts(78_047_954, 59431) + // Standard Error: 2_660 + .saturating_add(Weight::from_parts(1_060_607, 0).saturating_mul(c.into())) + .saturating_add(T::DbWeight::get().reads(13_u64)) + .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(c.into()))) + .saturating_add(T::DbWeight::get().writes(9_u64)) + .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(c.into()))) + .saturating_add(Weight::from_parts(0, 2947).saturating_mul(c.into())) + } } // For backwards compatibility and tests @@ -3903,4 +4024,114 @@ impl WeightInfo for () { // Standard Error: 5_851 .saturating_add(Weight::from_parts(639_333, 0).saturating_mul(r.into())) } + fn tasks_remove_resume_session() -> Weight { + // Proof Size summary in bytes: + // Measured: `352` + // Estimated: `4169` + // Minimum execution time: 5_698_000 picoseconds. + Weight::from_parts(5_953_000, 4169) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + .saturating_add(RocksDbWeight::get().writes(2_u64)) + } + fn tasks_remove_gas_reservation() -> Weight { + // Proof Size summary in bytes: + // Measured: `1003` + // Estimated: `23637` + // Minimum execution time: 61_615_000 picoseconds. + Weight::from_parts(64_309_000, 23637) + .saturating_add(RocksDbWeight::get().reads(7_u64)) + .saturating_add(RocksDbWeight::get().writes(6_u64)) + } + fn tasks_send_user_message_to_mailbox() -> Weight { + // Proof Size summary in bytes: + // Measured: `784` + // Estimated: `21534` + // Minimum execution time: 43_449_000 picoseconds. + Weight::from_parts(44_990_000, 21534) + .saturating_add(RocksDbWeight::get().reads(6_u64)) + .saturating_add(RocksDbWeight::get().writes(5_u64)) + } + fn tasks_send_user_message() -> Weight { + // Proof Size summary in bytes: + // Measured: `906` + // Estimated: `33891` + // Minimum execution time: 75_764_000 picoseconds. + Weight::from_parts(77_875_000, 33891) + .saturating_add(RocksDbWeight::get().reads(11_u64)) + .saturating_add(RocksDbWeight::get().writes(10_u64)) + } + fn tasks_send_dispatch() -> Weight { + // Proof Size summary in bytes: + // Measured: `591` + // Estimated: `19885` + // Minimum execution time: 31_362_000 picoseconds. + Weight::from_parts(32_425_000, 19885) + .saturating_add(RocksDbWeight::get().reads(7_u64)) + .saturating_add(RocksDbWeight::get().writes(6_u64)) + } + fn tasks_wake_message() -> Weight { + // Proof Size summary in bytes: + // Measured: `872` + // Estimated: `25908` + // Minimum execution time: 45_023_000 picoseconds. + Weight::from_parts(46_479_000, 25908) + .saturating_add(RocksDbWeight::get().reads(8_u64)) + .saturating_add(RocksDbWeight::get().writes(6_u64)) + } + fn tasks_wake_message_no_wake() -> Weight { + // Proof Size summary in bytes: + // Measured: `80` + // Estimated: `3545` + // Minimum execution time: 3_365_000 picoseconds. + Weight::from_parts(3_639_000, 3545) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + } + fn tasks_remove_from_waitlist() -> Weight { + // Proof Size summary in bytes: + // Measured: `1522` + // Estimated: `57192` + // Minimum execution time: 114_023_000 picoseconds. + Weight::from_parts(117_157_000, 57192) + .saturating_add(RocksDbWeight::get().reads(16_u64)) + .saturating_add(RocksDbWeight::get().writes(13_u64)) + } + fn tasks_remove_from_mailbox() -> Weight { + // Proof Size summary in bytes: + // Measured: `1228` + // Estimated: `46026` + // Minimum execution time: 90_320_000 picoseconds. + Weight::from_parts(93_096_000, 46026) + .saturating_add(RocksDbWeight::get().reads(14_u64)) + .saturating_add(RocksDbWeight::get().writes(13_u64)) + } + /// The range of component `c` is `[0, 2044]`. + fn tasks_pause_program(c: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `2200 + c * (16400 ±0)` + // Estimated: `19363 + c * (84480 ±0)` + // Minimum execution time: 28_326_000 picoseconds. + Weight::from_parts(28_612_000, 19363) + // Standard Error: 73_191 + .saturating_add(Weight::from_parts(39_403_570, 0).saturating_mul(c.into())) + .saturating_add(RocksDbWeight::get().reads(4_u64)) + .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(c.into()))) + .saturating_add(RocksDbWeight::get().writes(2_u64)) + .saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(c.into()))) + .saturating_add(Weight::from_parts(0, 84480).saturating_mul(c.into())) + } + /// The range of component `c` is `[0, 2044]`. + fn tasks_pause_program_uninited(c: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `3025 + c * (42 ±0)` + // Estimated: `59431 + c * (2947 ±0)` + // Minimum execution time: 86_517_000 picoseconds. + Weight::from_parts(78_047_954, 59431) + // Standard Error: 2_660 + .saturating_add(Weight::from_parts(1_060_607, 0).saturating_mul(c.into())) + .saturating_add(RocksDbWeight::get().reads(13_u64)) + .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(c.into()))) + .saturating_add(RocksDbWeight::get().writes(9_u64)) + .saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(c.into()))) + .saturating_add(Weight::from_parts(0, 2947).saturating_mul(c.into())) + } } diff --git a/runtime/gear/src/weights/pallet_gear.rs b/runtime/gear/src/weights/pallet_gear.rs index 707b287d5c5..8b14d71ab58 100644 --- a/runtime/gear/src/weights/pallet_gear.rs +++ b/runtime/gear/src/weights/pallet_gear.rs @@ -215,6 +215,17 @@ pub trait WeightInfo { fn instr_i32rotl(r: u32, ) -> Weight; fn instr_i64rotr(r: u32, ) -> Weight; fn instr_i32rotr(r: u32, ) -> Weight; + fn tasks_remove_resume_session() -> Weight; + fn tasks_remove_gas_reservation() -> Weight; + fn tasks_send_user_message_to_mailbox() -> Weight; + fn tasks_send_user_message() -> Weight; + fn tasks_send_dispatch() -> Weight; + fn tasks_wake_message() -> Weight; + fn tasks_wake_message_no_wake() -> Weight; + fn tasks_remove_from_waitlist() -> Weight; + fn tasks_remove_from_mailbox() -> Weight; + fn tasks_pause_program(c: u32, ) -> Weight; + fn tasks_pause_program_uninited(c: u32, ) -> Weight; fn allocation_cost() -> Weight; fn grow_cost() -> Weight; fn initial_cost() -> Weight; @@ -2062,6 +2073,116 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Standard Error: 5_851 .saturating_add(Weight::from_parts(639_333, 0).saturating_mul(r.into())) } + fn tasks_remove_resume_session() -> Weight { + // Proof Size summary in bytes: + // Measured: `352` + // Estimated: `4169` + // Minimum execution time: 5_698_000 picoseconds. + Weight::from_parts(5_953_000, 4169) + .saturating_add(T::DbWeight::get().reads(1_u64)) + .saturating_add(T::DbWeight::get().writes(2_u64)) + } + fn tasks_remove_gas_reservation() -> Weight { + // Proof Size summary in bytes: + // Measured: `1003` + // Estimated: `23637` + // Minimum execution time: 61_615_000 picoseconds. + Weight::from_parts(64_309_000, 23637) + .saturating_add(T::DbWeight::get().reads(7_u64)) + .saturating_add(T::DbWeight::get().writes(6_u64)) + } + fn tasks_send_user_message_to_mailbox() -> Weight { + // Proof Size summary in bytes: + // Measured: `784` + // Estimated: `21534` + // Minimum execution time: 43_449_000 picoseconds. + Weight::from_parts(44_990_000, 21534) + .saturating_add(T::DbWeight::get().reads(6_u64)) + .saturating_add(T::DbWeight::get().writes(5_u64)) + } + fn tasks_send_user_message() -> Weight { + // Proof Size summary in bytes: + // Measured: `906` + // Estimated: `33891` + // Minimum execution time: 75_764_000 picoseconds. + Weight::from_parts(77_875_000, 33891) + .saturating_add(T::DbWeight::get().reads(11_u64)) + .saturating_add(T::DbWeight::get().writes(10_u64)) + } + fn tasks_send_dispatch() -> Weight { + // Proof Size summary in bytes: + // Measured: `591` + // Estimated: `19885` + // Minimum execution time: 31_362_000 picoseconds. + Weight::from_parts(32_425_000, 19885) + .saturating_add(T::DbWeight::get().reads(7_u64)) + .saturating_add(T::DbWeight::get().writes(6_u64)) + } + fn tasks_wake_message() -> Weight { + // Proof Size summary in bytes: + // Measured: `872` + // Estimated: `25908` + // Minimum execution time: 45_023_000 picoseconds. + Weight::from_parts(46_479_000, 25908) + .saturating_add(T::DbWeight::get().reads(8_u64)) + .saturating_add(T::DbWeight::get().writes(6_u64)) + } + fn tasks_wake_message_no_wake() -> Weight { + // Proof Size summary in bytes: + // Measured: `80` + // Estimated: `3545` + // Minimum execution time: 3_365_000 picoseconds. + Weight::from_parts(3_639_000, 3545) + .saturating_add(T::DbWeight::get().reads(1_u64)) + } + fn tasks_remove_from_waitlist() -> Weight { + // Proof Size summary in bytes: + // Measured: `1522` + // Estimated: `57192` + // Minimum execution time: 114_023_000 picoseconds. + Weight::from_parts(117_157_000, 57192) + .saturating_add(T::DbWeight::get().reads(16_u64)) + .saturating_add(T::DbWeight::get().writes(13_u64)) + } + fn tasks_remove_from_mailbox() -> Weight { + // Proof Size summary in bytes: + // Measured: `1228` + // Estimated: `46026` + // Minimum execution time: 90_320_000 picoseconds. + Weight::from_parts(93_096_000, 46026) + .saturating_add(T::DbWeight::get().reads(14_u64)) + .saturating_add(T::DbWeight::get().writes(13_u64)) + } + /// The range of component `c` is `[0, 2044]`. + fn tasks_pause_program(c: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `2200 + c * (16400 ±0)` + // Estimated: `19363 + c * (84480 ±0)` + // Minimum execution time: 28_326_000 picoseconds. + Weight::from_parts(28_612_000, 19363) + // Standard Error: 73_191 + .saturating_add(Weight::from_parts(39_403_570, 0).saturating_mul(c.into())) + .saturating_add(T::DbWeight::get().reads(4_u64)) + .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(c.into()))) + .saturating_add(T::DbWeight::get().writes(2_u64)) + .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(c.into()))) + .saturating_add(Weight::from_parts(0, 84480).saturating_mul(c.into())) + } + /// The range of component `c` is `[0, 2044]`. + fn tasks_pause_program_uninited(c: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `3025 + c * (42 ±0)` + // Estimated: `59431 + c * (2947 ±0)` + // Minimum execution time: 86_517_000 picoseconds. + Weight::from_parts(78_047_954, 59431) + // Standard Error: 2_660 + .saturating_add(Weight::from_parts(1_060_607, 0).saturating_mul(c.into())) + .saturating_add(T::DbWeight::get().reads(13_u64)) + .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(c.into()))) + .saturating_add(T::DbWeight::get().writes(9_u64)) + .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(c.into()))) + .saturating_add(Weight::from_parts(0, 2947).saturating_mul(c.into())) + } } // For backwards compatibility and tests @@ -3903,4 +4024,114 @@ impl WeightInfo for () { // Standard Error: 5_851 .saturating_add(Weight::from_parts(639_333, 0).saturating_mul(r.into())) } + fn tasks_remove_resume_session() -> Weight { + // Proof Size summary in bytes: + // Measured: `352` + // Estimated: `4169` + // Minimum execution time: 5_698_000 picoseconds. + Weight::from_parts(5_953_000, 4169) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + .saturating_add(RocksDbWeight::get().writes(2_u64)) + } + fn tasks_remove_gas_reservation() -> Weight { + // Proof Size summary in bytes: + // Measured: `1003` + // Estimated: `23637` + // Minimum execution time: 61_615_000 picoseconds. + Weight::from_parts(64_309_000, 23637) + .saturating_add(RocksDbWeight::get().reads(7_u64)) + .saturating_add(RocksDbWeight::get().writes(6_u64)) + } + fn tasks_send_user_message_to_mailbox() -> Weight { + // Proof Size summary in bytes: + // Measured: `784` + // Estimated: `21534` + // Minimum execution time: 43_449_000 picoseconds. + Weight::from_parts(44_990_000, 21534) + .saturating_add(RocksDbWeight::get().reads(6_u64)) + .saturating_add(RocksDbWeight::get().writes(5_u64)) + } + fn tasks_send_user_message() -> Weight { + // Proof Size summary in bytes: + // Measured: `906` + // Estimated: `33891` + // Minimum execution time: 75_764_000 picoseconds. + Weight::from_parts(77_875_000, 33891) + .saturating_add(RocksDbWeight::get().reads(11_u64)) + .saturating_add(RocksDbWeight::get().writes(10_u64)) + } + fn tasks_send_dispatch() -> Weight { + // Proof Size summary in bytes: + // Measured: `591` + // Estimated: `19885` + // Minimum execution time: 31_362_000 picoseconds. + Weight::from_parts(32_425_000, 19885) + .saturating_add(RocksDbWeight::get().reads(7_u64)) + .saturating_add(RocksDbWeight::get().writes(6_u64)) + } + fn tasks_wake_message() -> Weight { + // Proof Size summary in bytes: + // Measured: `872` + // Estimated: `25908` + // Minimum execution time: 45_023_000 picoseconds. + Weight::from_parts(46_479_000, 25908) + .saturating_add(RocksDbWeight::get().reads(8_u64)) + .saturating_add(RocksDbWeight::get().writes(6_u64)) + } + fn tasks_wake_message_no_wake() -> Weight { + // Proof Size summary in bytes: + // Measured: `80` + // Estimated: `3545` + // Minimum execution time: 3_365_000 picoseconds. + Weight::from_parts(3_639_000, 3545) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + } + fn tasks_remove_from_waitlist() -> Weight { + // Proof Size summary in bytes: + // Measured: `1522` + // Estimated: `57192` + // Minimum execution time: 114_023_000 picoseconds. + Weight::from_parts(117_157_000, 57192) + .saturating_add(RocksDbWeight::get().reads(16_u64)) + .saturating_add(RocksDbWeight::get().writes(13_u64)) + } + fn tasks_remove_from_mailbox() -> Weight { + // Proof Size summary in bytes: + // Measured: `1228` + // Estimated: `46026` + // Minimum execution time: 90_320_000 picoseconds. + Weight::from_parts(93_096_000, 46026) + .saturating_add(RocksDbWeight::get().reads(14_u64)) + .saturating_add(RocksDbWeight::get().writes(13_u64)) + } + /// The range of component `c` is `[0, 2044]`. + fn tasks_pause_program(c: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `2200 + c * (16400 ±0)` + // Estimated: `19363 + c * (84480 ±0)` + // Minimum execution time: 28_326_000 picoseconds. + Weight::from_parts(28_612_000, 19363) + // Standard Error: 73_191 + .saturating_add(Weight::from_parts(39_403_570, 0).saturating_mul(c.into())) + .saturating_add(RocksDbWeight::get().reads(4_u64)) + .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(c.into()))) + .saturating_add(RocksDbWeight::get().writes(2_u64)) + .saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(c.into()))) + .saturating_add(Weight::from_parts(0, 84480).saturating_mul(c.into())) + } + /// The range of component `c` is `[0, 2044]`. + fn tasks_pause_program_uninited(c: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `3025 + c * (42 ±0)` + // Estimated: `59431 + c * (2947 ±0)` + // Minimum execution time: 86_517_000 picoseconds. + Weight::from_parts(78_047_954, 59431) + // Standard Error: 2_660 + .saturating_add(Weight::from_parts(1_060_607, 0).saturating_mul(c.into())) + .saturating_add(RocksDbWeight::get().reads(13_u64)) + .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(c.into()))) + .saturating_add(RocksDbWeight::get().writes(9_u64)) + .saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(c.into()))) + .saturating_add(Weight::from_parts(0, 2947).saturating_mul(c.into())) + } } diff --git a/runtime/vara/src/weights/pallet_gear.rs b/runtime/vara/src/weights/pallet_gear.rs index 707b287d5c5..c5702325ce6 100644 --- a/runtime/vara/src/weights/pallet_gear.rs +++ b/runtime/vara/src/weights/pallet_gear.rs @@ -215,6 +215,17 @@ pub trait WeightInfo { fn instr_i32rotl(r: u32, ) -> Weight; fn instr_i64rotr(r: u32, ) -> Weight; fn instr_i32rotr(r: u32, ) -> Weight; + fn tasks_remove_resume_session() -> Weight; + fn tasks_remove_gas_reservation() -> Weight; + fn tasks_send_user_message_to_mailbox() -> Weight; + fn tasks_send_user_message() -> Weight; + fn tasks_send_dispatch() -> Weight; + fn tasks_wake_message() -> Weight; + fn tasks_wake_message_no_wake() -> Weight; + fn tasks_remove_from_waitlist() -> Weight; + fn tasks_remove_from_mailbox() -> Weight; + fn tasks_pause_program(c: u32, ) -> Weight; + fn tasks_pause_program_uninited(c: u32, ) -> Weight; fn allocation_cost() -> Weight; fn grow_cost() -> Weight; fn initial_cost() -> Weight; @@ -2062,6 +2073,116 @@ impl pallet_gear::WeightInfo for SubstrateWeight { // Standard Error: 5_851 .saturating_add(Weight::from_parts(639_333, 0).saturating_mul(r.into())) } + fn tasks_remove_resume_session() -> Weight { + // Proof Size summary in bytes: + // Measured: `352` + // Estimated: `4169` + // Minimum execution time: 6_081_000 picoseconds. + Weight::from_parts(6_314_000, 4169) + .saturating_add(T::DbWeight::get().reads(1_u64)) + .saturating_add(T::DbWeight::get().writes(2_u64)) + } + fn tasks_remove_gas_reservation() -> Weight { + // Proof Size summary in bytes: + // Measured: `1107` + // Estimated: `24053` + // Minimum execution time: 61_245_000 picoseconds. + Weight::from_parts(64_310_000, 24053) + .saturating_add(T::DbWeight::get().reads(7_u64)) + .saturating_add(T::DbWeight::get().writes(6_u64)) + } + fn tasks_send_user_message_to_mailbox() -> Weight { + // Proof Size summary in bytes: + // Measured: `888` + // Estimated: `22158` + // Minimum execution time: 47_184_000 picoseconds. + Weight::from_parts(48_335_000, 22158) + .saturating_add(T::DbWeight::get().reads(6_u64)) + .saturating_add(T::DbWeight::get().writes(5_u64)) + } + fn tasks_send_user_message() -> Weight { + // Proof Size summary in bytes: + // Measured: `1010` + // Estimated: `34619` + // Minimum execution time: 75_767_000 picoseconds. + Weight::from_parts(77_229_000, 34619) + .saturating_add(T::DbWeight::get().reads(11_u64)) + .saturating_add(T::DbWeight::get().writes(10_u64)) + } + fn tasks_send_dispatch() -> Weight { + // Proof Size summary in bytes: + // Measured: `695` + // Estimated: `20509` + // Minimum execution time: 31_513_000 picoseconds. + Weight::from_parts(33_232_000, 20509) + .saturating_add(T::DbWeight::get().reads(7_u64)) + .saturating_add(T::DbWeight::get().writes(6_u64)) + } + fn tasks_wake_message() -> Weight { + // Proof Size summary in bytes: + // Measured: `976` + // Estimated: `26636` + // Minimum execution time: 48_739_000 picoseconds. + Weight::from_parts(49_963_000, 26636) + .saturating_add(T::DbWeight::get().reads(8_u64)) + .saturating_add(T::DbWeight::get().writes(6_u64)) + } + fn tasks_wake_message_no_wake() -> Weight { + // Proof Size summary in bytes: + // Measured: `80` + // Estimated: `3545` + // Minimum execution time: 3_513_000 picoseconds. + Weight::from_parts(3_670_000, 3545) + .saturating_add(T::DbWeight::get().reads(1_u64)) + } + fn tasks_remove_from_waitlist() -> Weight { + // Proof Size summary in bytes: + // Measured: `1626` + // Estimated: `58232` + // Minimum execution time: 109_582_000 picoseconds. + Weight::from_parts(112_343_000, 58232) + .saturating_add(T::DbWeight::get().reads(16_u64)) + .saturating_add(T::DbWeight::get().writes(13_u64)) + } + fn tasks_remove_from_mailbox() -> Weight { + // Proof Size summary in bytes: + // Measured: `1332` + // Estimated: `46962` + // Minimum execution time: 90_789_000 picoseconds. + Weight::from_parts(93_329_000, 46962) + .saturating_add(T::DbWeight::get().reads(14_u64)) + .saturating_add(T::DbWeight::get().writes(13_u64)) + } + /// The range of component `c` is `[0, 2044]`. + fn tasks_pause_program(c: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `2303 + c * (16400 ±0)` + // Estimated: `19878 + c * (84480 ±0)` + // Minimum execution time: 31_262_000 picoseconds. + Weight::from_parts(31_610_000, 19878) + // Standard Error: 69_131 + .saturating_add(Weight::from_parts(39_928_419, 0).saturating_mul(c.into())) + .saturating_add(T::DbWeight::get().reads(4_u64)) + .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(c.into()))) + .saturating_add(T::DbWeight::get().writes(2_u64)) + .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(c.into()))) + .saturating_add(Weight::from_parts(0, 84480).saturating_mul(c.into())) + } + /// The range of component `c` is `[0, 2044]`. + fn tasks_pause_program_uninited(c: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `3129 + c * (42 ±0)` + // Estimated: `60575 + c * (2947 ±0)` + // Minimum execution time: 91_223_000 picoseconds. + Weight::from_parts(98_002_861, 60575) + // Standard Error: 2_086 + .saturating_add(Weight::from_parts(1_092_801, 0).saturating_mul(c.into())) + .saturating_add(T::DbWeight::get().reads(13_u64)) + .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(c.into()))) + .saturating_add(T::DbWeight::get().writes(9_u64)) + .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(c.into()))) + .saturating_add(Weight::from_parts(0, 2947).saturating_mul(c.into())) + } } // For backwards compatibility and tests @@ -3903,4 +4024,114 @@ impl WeightInfo for () { // Standard Error: 5_851 .saturating_add(Weight::from_parts(639_333, 0).saturating_mul(r.into())) } + fn tasks_remove_resume_session() -> Weight { + // Proof Size summary in bytes: + // Measured: `352` + // Estimated: `4169` + // Minimum execution time: 6_081_000 picoseconds. + Weight::from_parts(6_314_000, 4169) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + .saturating_add(RocksDbWeight::get().writes(2_u64)) + } + fn tasks_remove_gas_reservation() -> Weight { + // Proof Size summary in bytes: + // Measured: `1107` + // Estimated: `24053` + // Minimum execution time: 61_245_000 picoseconds. + Weight::from_parts(64_310_000, 24053) + .saturating_add(RocksDbWeight::get().reads(7_u64)) + .saturating_add(RocksDbWeight::get().writes(6_u64)) + } + fn tasks_send_user_message_to_mailbox() -> Weight { + // Proof Size summary in bytes: + // Measured: `888` + // Estimated: `22158` + // Minimum execution time: 47_184_000 picoseconds. + Weight::from_parts(48_335_000, 22158) + .saturating_add(RocksDbWeight::get().reads(6_u64)) + .saturating_add(RocksDbWeight::get().writes(5_u64)) + } + fn tasks_send_user_message() -> Weight { + // Proof Size summary in bytes: + // Measured: `1010` + // Estimated: `34619` + // Minimum execution time: 75_767_000 picoseconds. + Weight::from_parts(77_229_000, 34619) + .saturating_add(RocksDbWeight::get().reads(11_u64)) + .saturating_add(RocksDbWeight::get().writes(10_u64)) + } + fn tasks_send_dispatch() -> Weight { + // Proof Size summary in bytes: + // Measured: `695` + // Estimated: `20509` + // Minimum execution time: 31_513_000 picoseconds. + Weight::from_parts(33_232_000, 20509) + .saturating_add(RocksDbWeight::get().reads(7_u64)) + .saturating_add(RocksDbWeight::get().writes(6_u64)) + } + fn tasks_wake_message() -> Weight { + // Proof Size summary in bytes: + // Measured: `976` + // Estimated: `26636` + // Minimum execution time: 48_739_000 picoseconds. + Weight::from_parts(49_963_000, 26636) + .saturating_add(RocksDbWeight::get().reads(8_u64)) + .saturating_add(RocksDbWeight::get().writes(6_u64)) + } + fn tasks_wake_message_no_wake() -> Weight { + // Proof Size summary in bytes: + // Measured: `80` + // Estimated: `3545` + // Minimum execution time: 3_513_000 picoseconds. + Weight::from_parts(3_670_000, 3545) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + } + fn tasks_remove_from_waitlist() -> Weight { + // Proof Size summary in bytes: + // Measured: `1626` + // Estimated: `58232` + // Minimum execution time: 109_582_000 picoseconds. + Weight::from_parts(112_343_000, 58232) + .saturating_add(RocksDbWeight::get().reads(16_u64)) + .saturating_add(RocksDbWeight::get().writes(13_u64)) + } + fn tasks_remove_from_mailbox() -> Weight { + // Proof Size summary in bytes: + // Measured: `1332` + // Estimated: `46962` + // Minimum execution time: 90_789_000 picoseconds. + Weight::from_parts(93_329_000, 46962) + .saturating_add(RocksDbWeight::get().reads(14_u64)) + .saturating_add(RocksDbWeight::get().writes(13_u64)) + } + /// The range of component `c` is `[0, 2044]`. + fn tasks_pause_program(c: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `2303 + c * (16400 ±0)` + // Estimated: `19878 + c * (84480 ±0)` + // Minimum execution time: 31_262_000 picoseconds. + Weight::from_parts(31_610_000, 19878) + // Standard Error: 69_131 + .saturating_add(Weight::from_parts(39_928_419, 0).saturating_mul(c.into())) + .saturating_add(RocksDbWeight::get().reads(4_u64)) + .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(c.into()))) + .saturating_add(RocksDbWeight::get().writes(2_u64)) + .saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(c.into()))) + .saturating_add(Weight::from_parts(0, 84480).saturating_mul(c.into())) + } + /// The range of component `c` is `[0, 2044]`. + fn tasks_pause_program_uninited(c: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `3129 + c * (42 ±0)` + // Estimated: `60575 + c * (2947 ±0)` + // Minimum execution time: 91_223_000 picoseconds. + Weight::from_parts(98_002_861, 60575) + // Standard Error: 2_086 + .saturating_add(Weight::from_parts(1_092_801, 0).saturating_mul(c.into())) + .saturating_add(RocksDbWeight::get().reads(13_u64)) + .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(c.into()))) + .saturating_add(RocksDbWeight::get().writes(9_u64)) + .saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(c.into()))) + .saturating_add(Weight::from_parts(0, 2947).saturating_mul(c.into())) + } } From 766c8bc3ade9f330e14b68e1381d52985139c0ec Mon Sep 17 00:00:00 2001 From: Sabaun Taraki Date: Mon, 18 Sep 2023 15:04:52 +0300 Subject: [PATCH 17/21] feat(runtime-fuzzer): Aggregational PR for different fuzzer features and adjustments (#3268) --- docker/runtime-fuzzer/Dockerfile | 2 +- utils/node-loader/src/utils.rs | 28 +++- utils/runtime-fuzzer/Cargo.toml | 4 + utils/runtime-fuzzer/README.md | 2 +- utils/runtime-fuzzer/bin/run_corpus.rs | 58 ++++++++ utils/runtime-fuzzer/src/arbitrary_call.rs | 31 +++- utils/wasm-gen/src/config.rs | 20 +++ utils/wasm-gen/src/config/generator.rs | 6 +- utils/wasm-gen/src/config/syscalls.rs | 50 +++---- utils/wasm-gen/src/config/syscalls/amount.rs | 34 +++-- utils/wasm-gen/src/config/syscalls/param.rs | 12 +- utils/wasm-gen/src/generator/syscalls.rs | 38 +++++ .../src/generator/syscalls/additional_data.rs | 4 +- .../src/generator/syscalls/imports.rs | 132 ++++++++---------- .../src/generator/syscalls/invocator.rs | 114 ++++++++------- utils/wasm-gen/src/tests.rs | 30 ++-- 16 files changed, 381 insertions(+), 184 deletions(-) create mode 100644 utils/runtime-fuzzer/bin/run_corpus.rs diff --git a/docker/runtime-fuzzer/Dockerfile b/docker/runtime-fuzzer/Dockerfile index 339055cb3b4..9cf7f8550f4 100644 --- a/docker/runtime-fuzzer/Dockerfile +++ b/docker/runtime-fuzzer/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:22.10 +FROM ubuntu:22.04 MAINTAINER GEAR diff --git a/utils/node-loader/src/utils.rs b/utils/node-loader/src/utils.rs index 9beff5e7cda..d63d12ea75a 100644 --- a/utils/node-loader/src/utils.rs +++ b/utils/node-loader/src/utils.rs @@ -6,7 +6,10 @@ use gear_call_gen::Seed; use gear_core::ids::{MessageId, ProgramId}; use gear_core_errors::ReplyCode; use gear_utils::NonEmpty; -use gear_wasm_gen::{EntryPointsSet, StandardGearWasmConfigsBundle}; +use gear_wasm_gen::{ + EntryPointsSet, InvocableSysCall, ParamType, StandardGearWasmConfigsBundle, SysCallName, + SysCallsInjectionAmounts, SysCallsParamsConfig, +}; use gsdk::metadata::runtime_types::{ gear_common::event::DispatchStatus as GenDispatchStatus, gear_core::{ @@ -209,10 +212,33 @@ pub fn get_wasm_gen_config( seed: Seed, existing_programs: impl Iterator, ) -> StandardGearWasmConfigsBundle { + let initial_pages = 2; + let mut injection_amounts = SysCallsInjectionAmounts::all_once(); + injection_amounts.set_multiple( + [ + (SysCallName::Leave, 0..=0), + (SysCallName::Panic, 0..=0), + (SysCallName::OomPanic, 0..=0), + (SysCallName::Send, 20..=30), + (SysCallName::Exit, 0..=1), + (SysCallName::Alloc, 5..=10), + (SysCallName::Free, 5..=10), + ] + .map(|(sys_call, range)| (InvocableSysCall::Loose(sys_call), range)) + .into_iter(), + ); + + let mut params_config = SysCallsParamsConfig::default(); + params_config.add_rule(ParamType::Alloc, (1..=10).into()); + params_config.add_rule(ParamType::Free, (initial_pages..=initial_pages + 25).into()); + StandardGearWasmConfigsBundle { log_info: Some(format!("Gear program seed = '{seed}'")), existing_addresses: NonEmpty::collect(existing_programs), entry_points_set: EntryPointsSet::InitHandleHandleReply, + injection_amounts, + params_config, + initial_pages: initial_pages as u32, ..Default::default() } } diff --git a/utils/runtime-fuzzer/Cargo.toml b/utils/runtime-fuzzer/Cargo.toml index 0c145193e63..410ab54b0f9 100644 --- a/utils/runtime-fuzzer/Cargo.toml +++ b/utils/runtime-fuzzer/Cargo.toml @@ -4,6 +4,10 @@ version = "0.1.0" authors.workspace = true edition.workspace = true +[[bin]] +name = "run_corpus" +path = "bin/run_corpus.rs" + [dependencies] anyhow.workspace = true arbitrary.workspace = true diff --git a/utils/runtime-fuzzer/README.md b/utils/runtime-fuzzer/README.md index a7600d80bf9..8c141ea4f23 100644 --- a/utils/runtime-fuzzer/README.md +++ b/utils/runtime-fuzzer/README.md @@ -70,7 +70,7 @@ There are two ways to view coverage: ```bash # generate `lcov.info` file with coverage HOST_TARGET=$(rustc -Vv | grep "host: " | sed "s/^host: \(.*\)$/\1/") - cargo cov -- export target/x86_64-unknown-linux-gnu/coverage/x86_64-unknown-linux-gnu/release/main \ + cargo cov -- export target/$HOST_TARGET/coverage/$HOST_TARGET/release/main \ --format=lcov \ --instr-profile=fuzz/coverage/main/coverage.profdata \ --ignore-filename-regex=/rustc/ \ diff --git a/utils/runtime-fuzzer/bin/run_corpus.rs b/utils/runtime-fuzzer/bin/run_corpus.rs new file mode 100644 index 00000000000..fd4e2aaa66b --- /dev/null +++ b/utils/runtime-fuzzer/bin/run_corpus.rs @@ -0,0 +1,58 @@ +// This file is part of Gear. + +// Copyright (C) 2021-2023 Gear Technologies Inc. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +//! Runs provided from the cli corpus +//! +//! Alternatively, `cargo fuzz run` can be used to reproduce some corpus, +//! but it won't give logs of [`GearCalls`] generation, which sheds some +//! light on how `gear-wasm-gen` worked. +//! +//! Also that script can be used to run any bytes input, not only fuzzer's +//! corpus. +//! +//! Just simply run `cargo run --release -- -p `. + +use anyhow::Result; +use arbitrary::{Arbitrary, Unstructured}; +use clap::Parser; +use runtime_fuzzer::{self, GearCalls}; +use std::{fs, path::PathBuf}; + +/// A simple tool to run corpus. +#[derive(Debug, Parser)] +#[command(author, version, about, long_about = None)] +struct Params { + /// Path to the file, which contains corpus. + #[arg(short, long)] + path: PathBuf, +} + +fn main() -> Result<()> { + let params = Params::parse(); + + let corpus_bytes = fs::read(params.path)?; + + gear_utils::init_default_logger(); + + let mut unstructured = Unstructured::new(&corpus_bytes); + let gear_calls = GearCalls::arbitrary(&mut unstructured)?; + + runtime_fuzzer::run(gear_calls); + + Ok(()) +} diff --git a/utils/runtime-fuzzer/src/arbitrary_call.rs b/utils/runtime-fuzzer/src/arbitrary_call.rs index e8eb10c5c70..5f4d9f5836f 100644 --- a/utils/runtime-fuzzer/src/arbitrary_call.rs +++ b/utils/runtime-fuzzer/src/arbitrary_call.rs @@ -23,7 +23,8 @@ use arbitrary::{Arbitrary, Result, Unstructured}; use gear_core::ids::{CodeId, ProgramId}; use gear_utils::NonEmpty; use gear_wasm_gen::{ - EntryPointsSet, StandardGearWasmConfigsBundle, SysCallName, SysCallsInjectionAmounts, + EntryPointsSet, InvocableSysCall, ParamType, StandardGearWasmConfigsBundle, SysCallName, + SysCallsInjectionAmounts, SysCallsParamsConfig, }; use sha1::*; use std::{ @@ -190,12 +191,28 @@ fn config( programs: [ProgramId; GearCalls::INIT_MSGS], log_info: Option, ) -> StandardGearWasmConfigsBundle { + let initial_pages = 2; let mut injection_amounts = SysCallsInjectionAmounts::all_once(); - injection_amounts.set(SysCallName::Leave, 0, 0); - injection_amounts.set(SysCallName::Panic, 0, 0); - injection_amounts.set(SysCallName::OomPanic, 0, 0); - injection_amounts.set(SysCallName::Send, 20, 30); - injection_amounts.set(SysCallName::Exit, 0, 1); + injection_amounts.set_multiple( + [ + (SysCallName::Leave, 0..=0), + (SysCallName::Panic, 0..=0), + (SysCallName::OomPanic, 0..=0), + (SysCallName::Send, 20..=30), + (SysCallName::Exit, 0..=1), + (SysCallName::Alloc, 20..=30), + (SysCallName::Free, 20..=30), + ] + .map(|(sys_call, range)| (InvocableSysCall::Loose(sys_call), range)) + .into_iter(), + ); + + let mut params_config = SysCallsParamsConfig::default(); + params_config.add_rule(ParamType::Alloc, (10..=20).into()); + params_config.add_rule( + ParamType::Free, + (initial_pages..=initial_pages + 250).into(), + ); let existing_addresses = NonEmpty::collect( programs @@ -214,6 +231,8 @@ fn config( injection_amounts, existing_addresses, log_info, + params_config, + initial_pages: initial_pages as u32, ..Default::default() } } diff --git a/utils/wasm-gen/src/config.rs b/utils/wasm-gen/src/config.rs index e07b62de0e7..5993ab0283e 100644 --- a/utils/wasm-gen/src/config.rs +++ b/utils/wasm-gen/src/config.rs @@ -147,6 +147,12 @@ pub struct StandardGearWasmConfigsBundle { pub injection_amounts: SysCallsInjectionAmounts, /// Config of gear wasm call entry-points (exports). pub entry_points_set: EntryPointsSet, + /// Initial wasm memory pages. + pub initial_pages: u32, + /// Optional stack end pages. + pub stack_end_page: Option, + /// Sys-calls params config + pub params_config: SysCallsParamsConfig, } impl Default for StandardGearWasmConfigsBundle { @@ -158,6 +164,9 @@ impl Default for StandardGearWasmConfigsBundle { call_indirect_enabled: true, injection_amounts: SysCallsInjectionAmounts::all_once(), entry_points_set: Default::default(), + initial_pages: DEFAULT_INITIAL_SIZE, + stack_end_page: None, + params_config: SysCallsParamsConfig::default(), } } } @@ -171,6 +180,9 @@ impl> ConfigsBundle for StandardGearWasmConfigsBundle { call_indirect_enabled, injection_amounts, entry_points_set, + initial_pages, + stack_end_page, + params_config, } = self; let selectable_params = SelectableParams { @@ -188,10 +200,18 @@ impl> ConfigsBundle for StandardGearWasmConfigsBundle { } else { sys_calls_config_builder = sys_calls_config_builder.with_source_msg_dest(); } + sys_calls_config_builder = sys_calls_config_builder.with_params_config(params_config); + + let memory_pages_config = MemoryPagesConfig { + initial_size: initial_pages, + stack_end_page, + upper_limit: None, + }; let gear_wasm_generator_config = GearWasmGeneratorConfigBuilder::new() .with_recursions_removed(remove_recursion) .with_sys_calls_config(sys_calls_config_builder.build()) .with_entry_points_config(entry_points_set) + .with_memory_config(memory_pages_config) .build(); (gear_wasm_generator_config, selectable_params) diff --git a/utils/wasm-gen/src/config/generator.rs b/utils/wasm-gen/src/config/generator.rs index 5ee9341d8bd..7d831396143 100644 --- a/utils/wasm-gen/src/config/generator.rs +++ b/utils/wasm-gen/src/config/generator.rs @@ -20,6 +20,8 @@ use crate::SysCallsConfig; +pub(crate) const DEFAULT_INITIAL_SIZE: u32 = 16; + /// Builder for [`GearWasmGeneratorConfig`]. pub struct GearWasmGeneratorConfigBuilder(GearWasmGeneratorConfig); @@ -95,9 +97,9 @@ pub struct MemoryPagesConfig { impl Default for MemoryPagesConfig { fn default() -> Self { Self { - initial_size: Self::MAX_VALUE / 2 + 5, + initial_size: DEFAULT_INITIAL_SIZE, upper_limit: None, - stack_end_page: Some(Self::MAX_VALUE / 2), + stack_end_page: None, } } } diff --git a/utils/wasm-gen/src/config/syscalls.rs b/utils/wasm-gen/src/config/syscalls.rs index b9a37a4ed17..baa69462473 100644 --- a/utils/wasm-gen/src/config/syscalls.rs +++ b/utils/wasm-gen/src/config/syscalls.rs @@ -41,7 +41,7 @@ impl SysCallsConfigBuilder { Self(SysCallsConfig { injection_amounts, params_config: SysCallsParamsConfig::default(), - sending_message_destination: MessageDestination::default(), + sys_call_destination: SysCallDestination::default(), error_processing_config: ErrorProcessingConfig::None, log_info: None, }) @@ -54,23 +54,23 @@ impl SysCallsConfigBuilder { self } - /// Set whether `gr_send*` sys-calls must use `gr_source` result for message destination. + /// Set whether `gr_send*` and `gr_exit` sys-calls must use `gr_source` result for sys-call destination. pub fn with_source_msg_dest(mut self) -> Self { - self.0.sending_message_destination = MessageDestination::Source; - self.enable_sys_call(SysCallName::Source); + self.0.sys_call_destination = SysCallDestination::Source; + self.enable_sys_call(InvocableSysCall::Loose(SysCallName::Source)); self } - /// Set whether `gr_send*` sys-calls must use some address from `addresses` collection - /// as a message destination. + /// Set whether `gr_send*` and `gr_exit` sys-calls must use some address from `addresses` collection + /// as a sys-call destination. pub fn with_data_offset_msg_dest>(mut self, addresses: NonEmpty) -> Self { let addresses = NonEmpty::collect(addresses.into_iter().map(|pid| HashWithValue { hash: pid.into(), value: 0, })) .expect("collected from non empty"); - self.0.sending_message_destination = MessageDestination::ExistingAddresses(addresses); + self.0.sys_call_destination = SysCallDestination::ExistingAddresses(addresses); self } @@ -81,7 +81,7 @@ impl SysCallsConfigBuilder { /// Choosing gear export to log data is done from best `init` to worse `handle`. pub fn with_log_info(mut self, log: String) -> Self { self.0.log_info = Some(log); - self.enable_sys_call(SysCallName::Debug); + self.enable_sys_call(InvocableSysCall::Loose(SysCallName::Debug)); self } @@ -93,7 +93,7 @@ impl SysCallsConfigBuilder { self } - fn enable_sys_call(&mut self, name: SysCallName) { + fn enable_sys_call(&mut self, name: InvocableSysCall) { let range = self.0.injection_amounts.get(name); let range_start = *range.start(); @@ -138,22 +138,22 @@ impl ErrorProcessingConfig { pub struct SysCallsConfig { injection_amounts: SysCallsInjectionAmounts, params_config: SysCallsParamsConfig, - sending_message_destination: MessageDestination, + sys_call_destination: SysCallDestination, error_processing_config: ErrorProcessingConfig, log_info: Option, } impl SysCallsConfig { /// Get possible number of times (range) the sys-call can be injected in the wasm. - pub fn injection_amounts(&self, name: SysCallName) -> RangeInclusive { + pub fn injection_amounts(&self, name: InvocableSysCall) -> RangeInclusive { self.injection_amounts.get(name) } - /// Get defined message destination for `gr_send*` sys-calls. + /// Get defined sys-call destination for `gr_send*` and `gr_exit` sys-calls. /// - /// For more info, read [`MessageDestination`]. - pub fn sending_message_destination(&self) -> &MessageDestination { - &self.sending_message_destination + /// For more info, read [`SysCallDestination`]. + pub fn sys_call_destination(&self) -> &SysCallDestination { + &self.sys_call_destination } /// Get defined log info. @@ -174,33 +174,33 @@ impl SysCallsConfig { } } -/// Message destination choice. +/// Sys-call destination choice. /// -/// `gr_send*` sys-calls generated from this crate can send messages +/// `gr_send*` and `gr_exit` sys-calls generated from this crate can be sent /// to different destination in accordance to the config. /// It's either to the message source, to some existing known address, /// or to some random, most probably non-existing, address. #[derive(Debug, Clone, Default)] -pub enum MessageDestination { +pub enum SysCallDestination { Source, ExistingAddresses(NonEmpty), #[default] Random, } -impl MessageDestination { - /// Check whether message destination is a result of `gr_source`. +impl SysCallDestination { + /// Check whether sys-call destination is a result of `gr_source`. pub fn is_source(&self) -> bool { - matches!(&self, MessageDestination::Source) + matches!(&self, SysCallDestination::Source) } - /// Check whether message destination is defined randomly. + /// Check whether sys-call destination is defined randomly. pub fn is_random(&self) -> bool { - matches!(&self, MessageDestination::Random) + matches!(&self, SysCallDestination::Random) } - /// Check whether message destination is defined from a collection of existing addresses. + /// Check whether sys-call destination is defined from a collection of existing addresses. pub fn is_existing_addresses(&self) -> bool { - matches!(&self, MessageDestination::ExistingAddresses(_)) + matches!(&self, SysCallDestination::ExistingAddresses(_)) } } diff --git a/utils/wasm-gen/src/config/syscalls/amount.rs b/utils/wasm-gen/src/config/syscalls/amount.rs index 10653a8ab74..58350dea518 100644 --- a/utils/wasm-gen/src/config/syscalls/amount.rs +++ b/utils/wasm-gen/src/config/syscalls/amount.rs @@ -20,36 +20,44 @@ //! //! Types here are used to create [`crate::SysCallsConfig`]. +use crate::InvocableSysCall; + use gear_wasm_instrument::syscalls::SysCallName; use std::{collections::HashMap, ops::RangeInclusive}; /// Possible injection amount ranges for each sys-call. #[derive(Debug, Clone)] -pub struct SysCallsInjectionAmounts(HashMap>); +pub struct SysCallsInjectionAmounts(HashMap>); impl SysCallsInjectionAmounts { /// Instantiate a sys-calls amounts ranges map, where each gear sys-call is injected into wasm-module only once. pub fn all_once() -> Self { - Self( - SysCallName::instrumentable() - .into_iter() - .map(|name| (name, (1..=1))) - .collect(), - ) + Self::new_with_range(1..=1) } /// Instantiate a sys-calls amounts ranges map, where no gear sys-call is ever injected into wasm-module. pub fn all_never() -> Self { + Self::new_with_range(0..=0) + } + + /// Instantiate a sys-calls amounts ranges map with given range. + fn new_with_range(range: RangeInclusive) -> Self { + let sys_calls = SysCallName::instrumentable(); Self( - SysCallName::instrumentable() - .into_iter() - .map(|name| (name, (0..=0))) + sys_calls + .iter() + .cloned() + .map(|name| (InvocableSysCall::Loose(name), range.clone())) + .chain(sys_calls.iter().cloned().filter_map(|name| { + InvocableSysCall::has_precise_variant(name) + .then_some((InvocableSysCall::Precise(name), range.clone())) + })) .collect(), ) } /// Get amount possible sys-call amount range. - pub fn get(&self, name: SysCallName) -> RangeInclusive { + pub fn get(&self, name: InvocableSysCall) -> RangeInclusive { self.0 .get(&name) .cloned() @@ -57,14 +65,14 @@ impl SysCallsInjectionAmounts { } /// Sets possible amount range for the the sys-call. - pub fn set(&mut self, name: SysCallName, min: u32, max: u32) { + pub fn set(&mut self, name: InvocableSysCall, min: u32, max: u32) { self.0.insert(name, min..=max); } /// Same as [`SysCallsAmountRanges::set`], but sets amount ranges for multiple sys-calls. pub fn set_multiple( &mut self, - sys_calls_freqs: impl Iterator)>, + sys_calls_freqs: impl Iterator)>, ) { self.0.extend(sys_calls_freqs) } diff --git a/utils/wasm-gen/src/config/syscalls/param.rs b/utils/wasm-gen/src/config/syscalls/param.rs index 81b94c3e90b..705bdd580ed 100644 --- a/utils/wasm-gen/src/config/syscalls/param.rs +++ b/utils/wasm-gen/src/config/syscalls/param.rs @@ -20,10 +20,12 @@ //! //! Types here are used to create [`crate::SysCallsConfig`]. +use crate::DEFAULT_INITIAL_SIZE; use arbitrary::{Result, Unstructured}; -use gear_wasm_instrument::syscalls::ParamType; use std::{collections::HashMap, ops::RangeInclusive}; +pub use gear_wasm_instrument::syscalls::ParamType; + /// Sys-calls params config. /// /// This is basically a map, which creates a relationship between each kind of @@ -42,6 +44,10 @@ use std::{collections::HashMap, ops::RangeInclusive}; pub struct SysCallsParamsConfig(HashMap); impl SysCallsParamsConfig { + pub fn empty() -> Self { + Self(HashMap::new()) + } + /// New [`SysCallsParamsConfig`] with all rules set to produce one constant value. pub fn all_constant_value(value: i64) -> Self { let allowed_values: SysCallParamAllowedValues = (value..=value).into(); @@ -77,6 +83,8 @@ impl SysCallsParamsConfig { impl Default for SysCallsParamsConfig { fn default() -> Self { + let free_start = DEFAULT_INITIAL_SIZE as i64; + let free_end = free_start + 5; Self( [ (ParamType::Size, (0..=0x10000).into()), @@ -87,7 +95,7 @@ impl Default for SysCallsParamsConfig { (ParamType::Duration, (1..=8).into()), (ParamType::Delay, (0..=4).into()), (ParamType::Handler, (0..=100).into()), - (ParamType::Free, (0..=512).into()), + (ParamType::Free, (free_start..=free_end).into()), ] .into_iter() .collect(), diff --git a/utils/wasm-gen/src/generator/syscalls.rs b/utils/wasm-gen/src/generator/syscalls.rs index 5b667c216fe..20997838ed6 100644 --- a/utils/wasm-gen/src/generator/syscalls.rs +++ b/utils/wasm-gen/src/generator/syscalls.rs @@ -113,6 +113,44 @@ impl InvocableSysCall { } } + /// Checks whether given sys-call has the precise variant. + pub(crate) fn has_precise_variant(sys_call: SysCallName) -> bool { + Self::required_imports_for_sys_call(sys_call).is_some() + } + + /// Returns the required imports to build precise sys-call. + fn required_imports_for_sys_call(sys_call: SysCallName) -> Option<&'static [SysCallName]> { + // NOTE: the last sys-call must be pattern itself + Some(match sys_call { + SysCallName::ReservationSend => { + &[SysCallName::ReserveGas, SysCallName::ReservationSend] + } + SysCallName::ReservationReply => { + &[SysCallName::ReserveGas, SysCallName::ReservationReply] + } + SysCallName::SendCommit => &[ + SysCallName::SendInit, + SysCallName::SendPush, + SysCallName::SendCommit, + ], + SysCallName::SendCommitWGas => &[ + SysCallName::Size, + SysCallName::SendInit, + SysCallName::SendPushInput, + SysCallName::SendCommitWGas, + ], + _ => return None, + }) + } + + /// Returns the required imports to build precise sys-call, but of a fixed size. + fn required_imports(sys_call: SysCallName) -> &'static [SysCallName; N] { + Self::required_imports_for_sys_call(sys_call) + .expect("failed to find required imports for sys-call") + .try_into() + .expect("failed to convert slice") + } + // If syscall changes from fallible into infallible or vice versa in future, // we'll see it by analyzing code coverage stats produced by fuzzer. pub(crate) fn is_fallible(&self) -> bool { diff --git a/utils/wasm-gen/src/generator/syscalls/additional_data.rs b/utils/wasm-gen/src/generator/syscalls/additional_data.rs index 4a2cdbb3751..ed31137c446 100644 --- a/utils/wasm-gen/src/generator/syscalls/additional_data.rs +++ b/utils/wasm-gen/src/generator/syscalls/additional_data.rs @@ -23,7 +23,7 @@ use crate::{ CallIndexes, CallIndexesHandle, DisabledSysCallsImportsGenerator, ModuleWithCallIndexes, SysCallsImportsGenerationProof, }, - utils, EntryPointName, InvocableSysCall, MessageDestination, SysCallsConfig, WasmModule, + utils, EntryPointName, InvocableSysCall, SysCallDestination, SysCallsConfig, WasmModule, }; use arbitrary::Unstructured; use gear_core::ids::ProgramId; @@ -140,7 +140,7 @@ impl<'a, 'b> AdditionalDataInjector<'a, 'b> { )); } - let MessageDestination::ExistingAddresses(existing_addresses) = self.config.sending_message_destination() else { + let SysCallDestination::ExistingAddresses(existing_addresses) = self.config.sys_call_destination() else { return None; }; diff --git a/utils/wasm-gen/src/generator/syscalls/imports.rs b/utils/wasm-gen/src/generator/syscalls/imports.rs index 8389f943f08..91887407814 100644 --- a/utils/wasm-gen/src/generator/syscalls/imports.rs +++ b/utils/wasm-gen/src/generator/syscalls/imports.rs @@ -57,16 +57,9 @@ pub struct SysCallsImportsGeneratorInstantiator<'a, 'b>( ), ); -/// The set of sys-calls that need to be imported to create precise sys-call. -#[derive(thiserror::Error, Debug)] -#[error("The following sys-calls must be imported: {0:?}")] -pub struct RequiredSysCalls(&'static [SysCallName]); - /// An error that occurs when generating precise sys-call. #[derive(thiserror::Error, Debug)] pub enum PreciseSysCallError { - #[error("{0}")] - RequiredImports(#[from] RequiredSysCalls), #[error("{0}")] Arbitrary(#[from] ArbitraryError), } @@ -197,16 +190,32 @@ impl<'a, 'b> SysCallsImportsGenerator<'a, 'b> { /// Generates precise sys-calls and handles errors if any occurred during generation. fn generate_precise_sys_calls(&mut self) -> Result<()> { - for result in [ - self.generate_send_from_reservation(), - self.generate_reply_from_reservation(), - self.generate_send_commit(), - self.generate_send_commit_with_gas(), - ] { - if let Err(err) = result { - match err { - PreciseSysCallError::RequiredImports(err) => log::trace!("{err}"), - PreciseSysCallError::Arbitrary(err) => return Err(err), + use SysCallName::*; + + #[allow(clippy::type_complexity)] + let sys_calls: [( + SysCallName, + fn(&mut Self, SysCallName) -> Result<(), PreciseSysCallError>, + ); 4] = [ + (ReservationSend, Self::generate_send_from_reservation), + (ReservationReply, Self::generate_reply_from_reservation), + (SendCommit, Self::generate_send_commit), + (SendCommitWGas, Self::generate_send_commit_with_gas), + ]; + + for (sys_call, generate_method) in sys_calls { + let sys_call_amount_range = self + .config + .injection_amounts(InvocableSysCall::Precise(sys_call)); + let sys_call_amount = self.unstructured.int_in_range(sys_call_amount_range)?; + for _ in 0..sys_call_amount { + log::trace!( + "Constructing {name} sys-call...", + name = InvocableSysCall::Precise(sys_call).to_str() + ); + + if let Err(PreciseSysCallError::Arbitrary(err)) = generate_method(self, sys_call) { + return Err(err); } } } @@ -223,7 +232,9 @@ impl<'a, 'b> SysCallsImportsGenerator<'a, 'b> { &mut self, sys_call: SysCallName, ) -> Result> { - let sys_call_amount_range = self.config.injection_amounts(sys_call); + let sys_call_amount_range = self + .config + .injection_amounts(InvocableSysCall::Loose(sys_call)); let sys_call_amount = self.unstructured.int_in_range(sys_call_amount_range)?; Ok((sys_call_amount != 0).then(|| { let call_indexes_handle = self.insert_sys_call_import(sys_call); @@ -280,9 +291,9 @@ impl<'a, 'b> SysCallsImportsGenerator<'a, 'b> { /// Returns the indexes of invocable sys-calls. fn invocable_sys_calls_indexes( - &self, + &mut self, sys_calls: &'static [SysCallName; N], - ) -> Result<[usize; N], RequiredSysCalls> { + ) -> [usize; N] { let mut indexes = [0; N]; for (index, &sys_call) in indexes.iter_mut().zip(sys_calls.iter()) { @@ -290,10 +301,16 @@ impl<'a, 'b> SysCallsImportsGenerator<'a, 'b> { .sys_calls_imports .get(&InvocableSysCall::Loose(sys_call)) .map(|&(_, call_indexes_handle)| call_indexes_handle) - .ok_or_else(|| RequiredSysCalls(&sys_calls[..]))?; + .unwrap_or_else(|| { + // insert required import when we can't find it + let call_indexes_handle = self.insert_sys_call_import(sys_call); + self.sys_calls_imports + .insert(InvocableSysCall::Loose(sys_call), (0, call_indexes_handle)); + call_indexes_handle + }) } - Ok(indexes) + indexes } /// Generates a function which calls "properly" the given sys-call. @@ -327,13 +344,12 @@ impl<'a, 'b> SysCallsImportsGenerator<'a, 'b> { log::trace!( "Built proper call to {precise_sys_call_name}", - precise_sys_call_name = InvocableSysCall::Precise(sys_call).to_str() + precise_sys_call_name = invocable_sys_call.to_str() ); let call_indexes_handle = self.call_indexes.len(); self.call_indexes.add_func(func_idx.signature as usize); - // TODO: make separate config for precise sys-calls (#3122) self.sys_calls_imports .insert(invocable_sys_call, (1, call_indexes_handle)); } @@ -355,15 +371,12 @@ impl<'a, 'b> SysCallsImportsGenerator<'a, 'b> { } /// Generates a function which calls "properly" the `gr_reservation_send`. - fn generate_send_from_reservation(&mut self) -> Result<(), PreciseSysCallError> { - const SYS_CALL: SysCallName = SysCallName::ReservationSend; - log::trace!( - "Constructing {name} sys-call...", - name = InvocableSysCall::Precise(SYS_CALL).to_str() - ); - + fn generate_send_from_reservation( + &mut self, + sys_call: SysCallName, + ) -> Result<(), PreciseSysCallError> { let [reserve_gas_idx, reservation_send_idx] = - self.invocable_sys_calls_indexes(&[SysCallName::ReserveGas, SYS_CALL])?; + self.invocable_sys_calls_indexes(InvocableSysCall::required_imports(sys_call)); // subtract to be sure we are in memory boundaries. let rid_pid_value_ptr = self.reserve_memory(); @@ -443,21 +456,18 @@ impl<'a, 'b> SysCallsImportsGenerator<'a, 'b> { Instruction::End, ]); - self.generate_proper_sys_call_invocation(SYS_CALL, func_instructions); + self.generate_proper_sys_call_invocation(sys_call, func_instructions); Ok(()) } /// Generates a function which calls "properly" the `gr_reservation_reply`. - fn generate_reply_from_reservation(&mut self) -> Result<(), PreciseSysCallError> { - const SYS_CALL: SysCallName = SysCallName::ReservationReply; - log::trace!( - "Constructing {name} sys-call...", - name = InvocableSysCall::Precise(SYS_CALL).to_str() - ); - + fn generate_reply_from_reservation( + &mut self, + sys_call: SysCallName, + ) -> Result<(), PreciseSysCallError> { let [reserve_gas_idx, reservation_reply_idx] = - self.invocable_sys_calls_indexes(&[SysCallName::ReserveGas, SYS_CALL])?; + self.invocable_sys_calls_indexes(InvocableSysCall::required_imports(sys_call)); // subtract to be sure we are in memory boundaries. let rid_value_ptr = self.reserve_memory(); @@ -518,25 +528,15 @@ impl<'a, 'b> SysCallsImportsGenerator<'a, 'b> { Instruction::End, ]); - self.generate_proper_sys_call_invocation(SYS_CALL, func_instructions); + self.generate_proper_sys_call_invocation(sys_call, func_instructions); Ok(()) } /// Generates a function which calls "properly" the `gr_send_commit`. - fn generate_send_commit(&mut self) -> Result<(), PreciseSysCallError> { - const SYS_CALL: SysCallName = SysCallName::SendCommit; - log::trace!( - "Constructing {name} sys-call...", - name = InvocableSysCall::Precise(SYS_CALL).to_str() - ); - + fn generate_send_commit(&mut self, sys_call: SysCallName) -> Result<(), PreciseSysCallError> { let [send_init_idx, send_push_idx, send_commit_idx] = - self.invocable_sys_calls_indexes(&[ - SysCallName::SendInit, - SysCallName::SendPush, - SYS_CALL, - ])?; + self.invocable_sys_calls_indexes(InvocableSysCall::required_imports(sys_call)); // subtract to be sure we are in memory boundaries. let handle_ptr = self.reserve_memory(); @@ -620,26 +620,18 @@ impl<'a, 'b> SysCallsImportsGenerator<'a, 'b> { let func_instructions = Instructions::new(elements); - self.generate_proper_sys_call_invocation(SYS_CALL, func_instructions); + self.generate_proper_sys_call_invocation(sys_call, func_instructions); Ok(()) } /// Generates a function which calls "properly" the `gr_send_commit_wgas`. - fn generate_send_commit_with_gas(&mut self) -> Result<(), PreciseSysCallError> { - const SYS_CALL: SysCallName = SysCallName::SendCommitWGas; - log::trace!( - "Constructing {name} sys-call...", - name = InvocableSysCall::Precise(SYS_CALL).to_str() - ); - - let [size_idx, send_init_idx, send_push_input_idx, send_commit_wgas_idx] = self - .invocable_sys_calls_indexes(&[ - SysCallName::Size, - SysCallName::SendInit, - SysCallName::SendPushInput, - SYS_CALL, - ])?; + fn generate_send_commit_with_gas( + &mut self, + sys_call: SysCallName, + ) -> Result<(), PreciseSysCallError> { + let [size_idx, send_init_idx, send_push_input_idx, send_commit_wgas_idx] = + self.invocable_sys_calls_indexes(InvocableSysCall::required_imports(sys_call)); // subtract to be sure we are in memory boundaries. let handle_ptr = self.reserve_memory(); @@ -730,7 +722,7 @@ impl<'a, 'b> SysCallsImportsGenerator<'a, 'b> { let func_instructions = Instructions::new(elements); - self.generate_proper_sys_call_invocation(SYS_CALL, func_instructions); + self.generate_proper_sys_call_invocation(sys_call, func_instructions); Ok(()) } diff --git a/utils/wasm-gen/src/generator/syscalls/invocator.rs b/utils/wasm-gen/src/generator/syscalls/invocator.rs index 479913e10cf..df5d3fca451 100644 --- a/utils/wasm-gen/src/generator/syscalls/invocator.rs +++ b/utils/wasm-gen/src/generator/syscalls/invocator.rs @@ -35,7 +35,9 @@ use std::{collections::BTreeMap, iter}; #[derive(Debug)] pub(crate) enum ProcessedSysCallParams { - Alloc, + Alloc { + allowed_values: Option, + }, Value { value_type: ValueType, allowed_values: Option, @@ -56,7 +58,9 @@ pub(crate) fn process_sys_call_params( continue; } let processed_param = match param { - ParamType::Alloc => ProcessedSysCallParams::Alloc, + ParamType::Alloc => ProcessedSysCallParams::Alloc { + allowed_values: params_config.get_rule(¶m), + }, ParamType::Ptr(maybe_idx) => maybe_idx .map(|_| { // skipping next as we don't need the following `Size` param, @@ -87,7 +91,7 @@ pub(crate) fn process_sys_call_params( /// data injection outcome ([`AddressesInjectionOutcome`]). The latter was introduced /// to give additional guarantees for config and generators consistency. Otherwise, /// if there wasn't any addresses injection outcome, which signals that there was a try to -/// inject addresses, sys-calls invocator could falsely set `gr_send*` call's destination param +/// inject addresses, sys-calls invocator could falsely set `gr_send*` and `gr_exit` call's destination param /// to random value. For example, existing addresses could have been defined in the config, but /// additional data injector was disabled, before injecting addresses from the config. As a result, /// invocator would set un-intended by config values as messages destination. To avoid such @@ -170,8 +174,11 @@ impl<'a, 'b> SysCallsInvocator<'a, 'b> { ); for (invocable, (amount, call_indexes_handle)) in self.sys_call_imports.clone() { - let instructions = - self.build_sys_call_invoke_instructions(invocable, call_indexes_handle)?; + let instructions = self.build_sys_call_invoke_instructions( + invocable, + invocable.into_signature(), + call_indexes_handle, + )?; log::trace!( "Inserting the {} sys_call {} times", @@ -200,6 +207,7 @@ impl<'a, 'b> SysCallsInvocator<'a, 'b> { fn build_sys_call_invoke_instructions( &mut self, invocable: InvocableSysCall, + signature: SysCallSignature, call_indexes_handle: CallIndexesHandle, ) -> Result> { log::trace!( @@ -208,42 +216,37 @@ impl<'a, 'b> SysCallsInvocator<'a, 'b> { self.unstructured.len() ); - let insert_error_processing = self - .config - .error_processing_config() - .error_should_be_processed(&invocable); - let (fallible, mut signature) = (invocable.is_fallible(), invocable.into_signature()); - - if self.is_not_send_sys_call(invocable) { + if self.is_sys_call_with_destination(invocable) { log::trace!( - " -- Generating build call for non-send sys-call {}", + " -- Generating build call for {} sys-call with destination", invocable.to_str() ); - return self.build_call( - signature, - fallible, - insert_error_processing, - call_indexes_handle, + + self.build_call_with_destination(invocable, signature, call_indexes_handle) + } else { + log::trace!( + " -- Generating build call for common sys-call {}", + invocable.to_str() ); - } - log::trace!( - " -- Generating build call for send sys-call {}", - invocable.to_str() - ); + self.build_call(invocable, signature, call_indexes_handle) + } + } + fn build_call_with_destination( + &mut self, + invocable: InvocableSysCall, + mut signature: SysCallSignature, + call_indexes_handle: CallIndexesHandle, + ) -> Result> { // The value for the first param is chosen from config. // It's either the result of `gr_source`, some existing address (set in the data section) or a completely random value. signature.params.remove(0); - let mut call_without_destination_instrs = self.build_call( - signature, - fallible, - insert_error_processing, - call_indexes_handle, - )?; + let mut call_without_destination_instrs = + self.build_call(invocable, signature, call_indexes_handle)?; - let res = if self.config.sending_message_destination().is_source() { - log::trace!(" -- Message destination is result of `gr_source`"); + let res = if self.config.sys_call_destination().is_source() { + log::trace!(" -- Sys-call destination is result of `gr_source`"); let gr_source_call_indexes_handle = self .sys_call_imports @@ -278,17 +281,14 @@ impl<'a, 'b> SysCallsInvocator<'a, 'b> { let address_offset = match self.offsets.as_mut() { Some(offsets) => { - assert!(self - .config - .sending_message_destination() - .is_existing_addresses()); - log::trace!(" -- Message destination is an existing program address"); + assert!(self.config.sys_call_destination().is_existing_addresses()); + log::trace!(" -- Sys-call destination is an existing program address"); offsets.next_offset() } None => { - assert!(self.config.sending_message_destination().is_random()); - log::trace!(" -- Message destination is a random address"); + assert!(self.config.sys_call_destination().is_random()); + log::trace!(" -- Sys-call destination is a random address"); self.unstructured.arbitrary()? } @@ -303,23 +303,32 @@ impl<'a, 'b> SysCallsInvocator<'a, 'b> { Ok(res) } - fn is_not_send_sys_call(&self, sys_call: InvocableSysCall) -> bool { + fn is_sys_call_with_destination(&self, sys_call: InvocableSysCall) -> bool { + self.is_send_sys_call(sys_call) || self.is_exit_sys_call(sys_call) + } + + fn is_send_sys_call(&self, sys_call: InvocableSysCall) -> bool { use InvocableSysCall::*; - ![ + [ Loose(SysCallName::Send), Loose(SysCallName::SendWGas), Loose(SysCallName::SendInput), Loose(SysCallName::SendInputWGas), Precise(SysCallName::ReservationSend), + Precise(SysCallName::SendCommit), + Precise(SysCallName::SendCommitWGas), ] .contains(&sys_call) } + fn is_exit_sys_call(&self, sys_call: InvocableSysCall) -> bool { + matches!(sys_call, InvocableSysCall::Loose(SysCallName::Exit)) + } + fn build_call( &mut self, + invocable: InvocableSysCall, signature: SysCallSignature, - fallible: bool, - insert_error_processing: bool, call_indexes_handle: CallIndexesHandle, ) -> Result> { let param_setters = self.build_param_setters(&signature.params)?; @@ -331,9 +340,14 @@ impl<'a, 'b> SysCallsInvocator<'a, 'b> { instructions.push(Instruction::Call(call_indexes_handle as u32)); + let insert_error_processing = self + .config + .error_processing_config() + .error_should_be_processed(&invocable); + let mut result_processing = if !insert_error_processing { Self::build_result_processing_ignored(signature) - } else if fallible { + } else if invocable.is_fallible() { Self::build_result_processing_fallible(signature, ¶m_setters) } else { Self::build_result_processing_infallible(signature) @@ -360,15 +374,17 @@ impl<'a, 'b> SysCallsInvocator<'a, 'b> { let mut setters = Vec::with_capacity(params.len()); for processed_param in process_sys_call_params(params, self.config.params_config()) { match processed_param { - ProcessedSysCallParams::Alloc => { - let pages_to_alloc = self - .unstructured - .int_in_range(0..=mem_size_pages.saturating_sub(1))?; - let setter = ParamSetter::new_i32(pages_to_alloc as i32); + ProcessedSysCallParams::Alloc { allowed_values } => { + let pages_to_alloc = if let Some(allowed_values) = allowed_values { + allowed_values.get_i32(self.unstructured)? + } else { + let mem_size_pages = (mem_size_pages / 3).max(1); + self.unstructured.int_in_range(0..=mem_size_pages)? as i32 + }; log::trace!(" ---- Allocate memory - {pages_to_alloc}"); - setters.push(setter); + setters.push(ParamSetter::new_i32(pages_to_alloc)); } ProcessedSysCallParams::Value { value_type, diff --git a/utils/wasm-gen/src/tests.rs b/utils/wasm-gen/src/tests.rs index 1f45db0b6fd..57019510d32 100644 --- a/utils/wasm-gen/src/tests.rs +++ b/utils/wasm-gen/src/tests.rs @@ -18,17 +18,25 @@ use super::*; use arbitrary::Unstructured; -use gear_backend_common::{TerminationReason, TrapExplanation}; +use gear_backend_common::{BackendReport, Environment, TerminationReason, TrapExplanation}; +use gear_backend_sandbox::SandboxEnvironment; use gear_core::{ code::Code, memory::Memory, - message::{IncomingMessage, ReplyPacket}, + message::{ + ContextSettings, DispatchKind, IncomingDispatch, IncomingMessage, MessageContext, + ReplyPacket, + }, pages::WASM_PAGE_SIZE, }; +use gear_core_processor::{ProcessorContext, ProcessorExternalities}; use gear_utils::NonEmpty; -use gear_wasm_instrument::parity_wasm::{ - self, - elements::{Instruction, Module}, +use gear_wasm_instrument::{ + parity_wasm::{ + self, + elements::{Instruction, Module}, + }, + rules::CustomConstantCostRules, }; use proptest::prelude::*; use rand::{rngs::SmallRng, RngCore, SeedableRng}; @@ -231,12 +239,6 @@ fn execute_wasm_with_syscall_injected( params_config: SysCallsParamsConfig, initial_memory_write: Option, ) -> TerminationReason { - use gear_backend_common::{BackendReport, Environment}; - use gear_backend_sandbox::SandboxEnvironment; - use gear_core::message::{ContextSettings, DispatchKind, IncomingDispatch, MessageContext}; - use gear_core_processor::{ProcessorContext, ProcessorExternalities}; - use gear_wasm_instrument::rules::CustomConstantCostRules; - const INITIAL_PAGES: u16 = 1; const INJECTED_SYSCALLS: u32 = 8; @@ -245,7 +247,11 @@ fn execute_wasm_with_syscall_injected( let mut unstructured = Unstructured::new(&buf); let mut injection_amounts = SysCallsInjectionAmounts::all_never(); - injection_amounts.set(syscall, INJECTED_SYSCALLS, INJECTED_SYSCALLS); + injection_amounts.set( + InvocableSysCall::Loose(syscall), + INJECTED_SYSCALLS, + INJECTED_SYSCALLS, + ); let error_processing_config = if ignore_fallible_errors { ErrorProcessingConfig::None From 7ccc91c4281b9db64eebb9caa66367f97f7f3266 Mon Sep 17 00:00:00 2001 From: ekovalev Date: Mon, 18 Sep 2023 16:19:19 +0200 Subject: [PATCH 18/21] feat(rpc): Add RPC call to query inflation and ROI (#3290) --- Cargo.lock | 24 +++++ Cargo.toml | 2 + node/service/Cargo.toml | 2 + node/service/src/client.rs | 4 +- node/service/src/rpc/mod.rs | 6 +- pallets/staking-rewards/rpc/Cargo.toml | 19 ++++ .../rpc/runtime-api/Cargo.toml | 19 ++++ .../rpc/runtime-api/src/lib.rs | 28 ++++++ pallets/staking-rewards/rpc/src/lib.rs | 96 +++++++++++++++++++ pallets/staking-rewards/src/lib.rs | 40 ++++++++ runtime/gear/Cargo.toml | 4 + runtime/gear/src/lib.rs | 6 ++ runtime/vara/Cargo.toml | 2 + runtime/vara/src/lib.rs | 6 ++ 14 files changed, 256 insertions(+), 2 deletions(-) create mode 100644 pallets/staking-rewards/rpc/Cargo.toml create mode 100644 pallets/staking-rewards/rpc/runtime-api/Cargo.toml create mode 100644 pallets/staking-rewards/rpc/runtime-api/src/lib.rs create mode 100644 pallets/staking-rewards/rpc/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 76d3ff7a82e..00d28e6f667 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4136,6 +4136,8 @@ dependencies = [ "pallet-gear-program", "pallet-gear-rpc-runtime-api", "pallet-gear-scheduler", + "pallet-gear-staking-rewards", + "pallet-gear-staking-rewards-rpc-runtime-api", "pallet-gear-voucher", "pallet-grandpa", "pallet-multisig", @@ -4288,6 +4290,8 @@ dependencies = [ "log", "pallet-gear-rpc", "pallet-gear-rpc-runtime-api", + "pallet-gear-staking-rewards-rpc", + "pallet-gear-staking-rewards-rpc-runtime-api", "pallet-im-online", "pallet-staking", "pallet-transaction-payment", @@ -7666,6 +7670,25 @@ dependencies = [ "sp-std 5.0.0 (git+https://github.com/gear-tech/substrate.git?branch=gear-polkadot-v0.9.41-canary-no-sandbox)", ] +[[package]] +name = "pallet-gear-staking-rewards-rpc" +version = "1.0.0" +dependencies = [ + "jsonrpsee", + "pallet-gear-staking-rewards-rpc-runtime-api", + "sp-api", + "sp-blockchain", + "sp-runtime 7.0.0 (git+https://github.com/gear-tech/substrate.git?branch=gear-polkadot-v0.9.41-canary-no-sandbox)", +] + +[[package]] +name = "pallet-gear-staking-rewards-rpc-runtime-api" +version = "1.0.0" +dependencies = [ + "pallet-gear-staking-rewards", + "sp-api", +] + [[package]] name = "pallet-gear-voucher" version = "1.0.0" @@ -13503,6 +13526,7 @@ dependencies = [ "pallet-gear-rpc-runtime-api", "pallet-gear-scheduler", "pallet-gear-staking-rewards", + "pallet-gear-staking-rewards-rpc-runtime-api", "pallet-gear-voucher", "pallet-grandpa", "pallet-identity", diff --git a/Cargo.toml b/Cargo.toml index 1b581dac2b3..eecdbf0432f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -231,6 +231,8 @@ pallet-gear-rpc = { path = "pallets/gear/rpc" } pallet-gear-rpc-runtime-api = { path = "pallets/gear/rpc/runtime-api", default-features = false } pallet-gear-scheduler = { path = "pallets/gear-scheduler", default-features = false } pallet-gear-staking-rewards = { path = "pallets/staking-rewards", default-features = false } +pallet-gear-staking-rewards-rpc = { path = "pallets/staking-rewards/rpc" } +pallet-gear-staking-rewards-rpc-runtime-api = { path = "pallets/staking-rewards/rpc/runtime-api", default-features = false } pallet-gear-voucher = { path = "pallets/gear-voucher", default-features = false } pallet-gear-bank = { path = "pallets/gear-bank", default-features = false } runtime-common = { package = "gear-runtime-common", path = "runtime/common", default-features = false } diff --git a/node/service/Cargo.toml b/node/service/Cargo.toml index 79ff6da306f..707bd61836a 100644 --- a/node/service/Cargo.toml +++ b/node/service/Cargo.toml @@ -22,6 +22,8 @@ serde = { workspace = true, features = ["derive"] } # Gear pallet-gear-rpc.workspace = true pallet-gear-rpc-runtime-api = { workspace = true, features = ["std"] } +pallet-gear-staking-rewards-rpc.workspace = true +pallet-gear-staking-rewards-rpc-runtime-api = { workspace = true, features = ["std"] } runtime-primitives = { workspace = true, features = ["std"] } gear-runtime-interface = { workspace = true, features = ["std"] } authorship.workspace = true diff --git a/node/service/src/client.rs b/node/service/src/client.rs index 284686c4cb3..b118fe36453 100644 --- a/node/service/src/client.rs +++ b/node/service/src/client.rs @@ -119,6 +119,7 @@ pub trait RuntimeApiCollection: + sp_offchain::OffchainWorkerApi + sp_session::SessionKeys + pallet_gear_rpc_runtime_api::GearApi + + pallet_gear_staking_rewards_rpc_runtime_api::GearStakingRewardsApi where >::StateBackend: sp_api::StateBackend, { @@ -136,7 +137,8 @@ where + sp_api::Metadata + sp_offchain::OffchainWorkerApi + sp_session::SessionKeys - + pallet_gear_rpc_runtime_api::GearApi, + + pallet_gear_rpc_runtime_api::GearApi + + pallet_gear_staking_rewards_rpc_runtime_api::GearStakingRewardsApi, >::StateBackend: sp_api::StateBackend, { } diff --git a/node/service/src/rpc/mod.rs b/node/service/src/rpc/mod.rs index 527495e6f18..8c1242bb07b 100644 --- a/node/service/src/rpc/mod.rs +++ b/node/service/src/rpc/mod.rs @@ -101,6 +101,7 @@ where + 'static, C::Api: substrate_frame_rpc_system::AccountNonceApi, C::Api: pallet_gear_rpc::GearRuntimeApi, + C::Api: pallet_gear_staking_rewards_rpc::GearStakingRewardsRuntimeApi, C::Api: pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi, C::Api: BabeApi, C::Api: BlockBuilder, @@ -110,6 +111,7 @@ where B::State: sc_client_api::backend::StateBackend>, { use pallet_gear_rpc::{Gear, GearApiServer}; + use pallet_gear_staking_rewards_rpc::{GearStakingRewards, GearStakingRewardsApiServer}; use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApiServer}; use runtime_info::{RuntimeInfoApi, RuntimeInfoServer}; use sc_consensus_babe_rpc::{Babe, BabeApiServer}; @@ -192,7 +194,9 @@ where io.merge(Gear::new(client.clone()).into_rpc())?; - io.merge(RuntimeInfoApi::::new(client).into_rpc())?; + io.merge(RuntimeInfoApi::::new(client.clone()).into_rpc())?; + + io.merge(GearStakingRewards::new(client).into_rpc())?; Ok(io) } diff --git a/pallets/staking-rewards/rpc/Cargo.toml b/pallets/staking-rewards/rpc/Cargo.toml new file mode 100644 index 00000000000..9d1240ed403 --- /dev/null +++ b/pallets/staking-rewards/rpc/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "pallet-gear-staking-rewards-rpc" +version = "1.0.0" +authors.workspace = true +edition.workspace = true +license.workspace = true +homepage = "https://gear-tech.io" +repository = "https://github.com/gear-tech/gear" + +[dependencies] +jsonrpsee = { workspace = true, features = ["server", "macros"] } + +# Substrate packages +sp-api.workspace = true +sp-blockchain.workspace = true +sp-runtime.workspace = true + +# Local packages +pallet-gear-staking-rewards-rpc-runtime-api.workspace = true diff --git a/pallets/staking-rewards/rpc/runtime-api/Cargo.toml b/pallets/staking-rewards/rpc/runtime-api/Cargo.toml new file mode 100644 index 00000000000..5c9d8cb65e9 --- /dev/null +++ b/pallets/staking-rewards/rpc/runtime-api/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "pallet-gear-staking-rewards-rpc-runtime-api" +version = "1.0.0" +authors.workspace = true +edition.workspace = true +license.workspace = true +homepage = "https://gear-tech.io" +repository = "https://github.com/gear-tech/gear" + +[dependencies] +sp-api.workspace = true +pallet-gear-staking-rewards.workspace = true + +[features] +default = ["std"] +std = [ + "sp-api/std", + "pallet-gear-staking-rewards/std", +] diff --git a/pallets/staking-rewards/rpc/runtime-api/src/lib.rs b/pallets/staking-rewards/rpc/runtime-api/src/lib.rs new file mode 100644 index 00000000000..04aebbf65da --- /dev/null +++ b/pallets/staking-rewards/rpc/runtime-api/src/lib.rs @@ -0,0 +1,28 @@ +// This file is part of Gear. + +// Copyright (C) 2021-2023 Gear Technologies Inc. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#![cfg_attr(not(feature = "std"), no_std)] + +pub use pallet_gear_staking_rewards::InflationInfo; + +sp_api::decl_runtime_apis! { + pub trait GearStakingRewardsApi { + /// Calculate token economics related data. + fn inflation_info() -> InflationInfo; + } +} diff --git a/pallets/staking-rewards/rpc/src/lib.rs b/pallets/staking-rewards/rpc/src/lib.rs new file mode 100644 index 00000000000..45267e0bfd9 --- /dev/null +++ b/pallets/staking-rewards/rpc/src/lib.rs @@ -0,0 +1,96 @@ +// This file is part of Gear. + +// Copyright (C) 2021-2023 Gear Technologies Inc. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +//! RPC interface for the gear module. + +use jsonrpsee::{ + core::{Error as JsonRpseeError, RpcResult}, + proc_macros::rpc, + types::error::{CallError, ErrorObject}, +}; +pub use pallet_gear_staking_rewards_rpc_runtime_api::GearStakingRewardsApi as GearStakingRewardsRuntimeApi; +use pallet_gear_staking_rewards_rpc_runtime_api::InflationInfo; +use sp_api::ProvideRuntimeApi; +use sp_blockchain::HeaderBackend; +use sp_runtime::traits::Block as BlockT; +use std::sync::Arc; + +#[rpc(server)] +pub trait GearStakingRewardsApi { + #[method(name = "stakingRewards_inflationInfo")] + fn query_inflation_info(&self, at: Option) -> RpcResult; +} + +/// Provides RPC methods to query token economics related data. +pub struct GearStakingRewards { + /// Shared reference to the client. + client: Arc, + _marker: std::marker::PhantomData

, +} + +impl GearStakingRewards { + /// Creates a new instance of the GearStakingRewards Rpc helper. + pub fn new(client: Arc) -> Self { + Self { + client, + _marker: Default::default(), + } + } +} + +/// Error type of this RPC api. +pub enum Error { + /// The transaction was not decodable. + DecodeError, + /// The call to runtime failed. + RuntimeError, +} + +impl From for i32 { + fn from(e: Error) -> i32 { + match e { + Error::RuntimeError => 1, + Error::DecodeError => 2, + } + } +} + +impl GearStakingRewardsApiServer<::Hash, InflationInfo> + for GearStakingRewards +where + Block: BlockT, + C: 'static + ProvideRuntimeApi + HeaderBackend, + C::Api: GearStakingRewardsRuntimeApi, +{ + fn query_inflation_info(&self, at: Option) -> RpcResult { + let api = self.client.runtime_api(); + let at_hash = at.unwrap_or_else(|| self.client.info().best_hash); + + fn map_err(err: impl std::fmt::Debug, desc: &'static str) -> JsonRpseeError { + CallError::Custom(ErrorObject::owned( + Error::RuntimeError.into(), + desc, + Some(format!("{err:?}")), + )) + .into() + } + + api.inflation_info(at_hash) + .map_err(|e| map_err(e, "Unable to query inflation info")) + } +} diff --git a/pallets/staking-rewards/src/lib.rs b/pallets/staking-rewards/src/lib.rs index a379e014e8b..039a0ee60df 100644 --- a/pallets/staking-rewards/src/lib.rs +++ b/pallets/staking-rewards/src/lib.rs @@ -59,6 +59,8 @@ use frame_support::{ PalletId, }; use pallet_staking::EraPayout; +use parity_scale_codec::{Decode, Encode}; +pub use scale_info::TypeInfo; use sp_runtime::{ traits::{AccountIdConversion, Saturating, StaticLookup}, PerThing, Perquintill, @@ -79,6 +81,16 @@ pub type NegativeImbalanceOf = <::Currency as Cu >>::NegativeImbalance; type AccountIdLookupOf = <::Lookup as StaticLookup>::Source; +/// Token economics related details. +#[derive(Clone, Decode, Encode, Eq, PartialEq, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug, serde::Deserialize, serde::Serialize))] +pub struct InflationInfo { + /// Inflation + pub inflation: Perquintill, + /// ROI + pub roi: Perquintill, +} + #[frame_support::pallet] pub mod pallet { use super::*; @@ -333,11 +345,39 @@ pub mod pallet { .saturating_sub(T::Currency::minimum_balance()) } + /// Return the current total stakeable tokens amount. + /// + /// This value is not calculated but rather updated manually in line with tokenomics model. pub fn total_stakeable_tokens() -> BalanceOf { // Should never be 0 but in theory could (Self::non_stakeable_share().left_from_one() * T::Currency::total_issuance()) .saturating_sub(Self::pool()) } + + /// Calculate actual infaltion and ROI parameters. + pub fn inflation_info() -> InflationInfo { + let total_staked = pallet_staking::Pallet::::eras_total_stake( + pallet_staking::Pallet::::current_era().unwrap_or(0), + ); + let total_issuance = T::Currency::total_issuance(); + + let (payout, _) = inflation::compute_total_payout( + total_staked, + Self::total_stakeable_tokens(), + total_issuance, + Self::ideal_staking_ratio(), + T::MinInflation::get(), + Self::target_inflation(), + T::Falloff::get(), + T::MaxROI::get(), + Perquintill::one(), + ); + + let inflation = Perquintill::from_rational(payout, total_issuance); + let roi = Perquintill::from_rational(payout, total_staked); + + InflationInfo { inflation, roi } + } } } diff --git a/runtime/gear/Cargo.toml b/runtime/gear/Cargo.toml index fdd6f2deb3a..c68acce6ee8 100644 --- a/runtime/gear/Cargo.toml +++ b/runtime/gear/Cargo.toml @@ -70,6 +70,8 @@ pallet-gear-payment.workspace = true pallet-gear-voucher.workspace = true pallet-gear-rpc-runtime-api.workspace = true runtime-primitives.workspace = true +pallet-gear-staking-rewards.workspace = true +pallet-gear-staking-rewards-rpc-runtime-api.workspace = true [build-dependencies] substrate-build-script-utils.workspace = true @@ -126,6 +128,8 @@ std = [ "sp-transaction-pool/std", "sp-version/std", "substrate-wasm-builder", + "pallet-gear-staking-rewards-rpc-runtime-api/std", + "pallet-gear-staking-rewards/std", ] runtime-benchmarks = [ "frame-benchmarking/runtime-benchmarks", diff --git a/runtime/gear/src/lib.rs b/runtime/gear/src/lib.rs index 6094556ebd9..da93e6fce77 100644 --- a/runtime/gear/src/lib.rs +++ b/runtime/gear/src/lib.rs @@ -806,4 +806,10 @@ impl_runtime_apis_plus_common! { Executive::try_execute_block(block, state_root_check, signature_check, select).unwrap() } } + + impl pallet_gear_staking_rewards_rpc_runtime_api::GearStakingRewardsApi for Runtime { + fn inflation_info() -> pallet_gear_staking_rewards::InflationInfo { + unimplemented!(); + } + } } diff --git a/runtime/vara/Cargo.toml b/runtime/vara/Cargo.toml index f179c2bd346..40e450428e2 100644 --- a/runtime/vara/Cargo.toml +++ b/runtime/vara/Cargo.toml @@ -97,6 +97,7 @@ pallet-gear-payment.workspace = true pallet-gear-staking-rewards.workspace = true pallet-gear-voucher.workspace = true pallet-gear-rpc-runtime-api.workspace = true +pallet-gear-staking-rewards-rpc-runtime-api.workspace = true runtime-primitives.workspace = true [dev-dependencies] @@ -143,6 +144,7 @@ std = [ "pallet-gear-program/std", "pallet-gear-staking-rewards/std", "pallet-gear-rpc-runtime-api/std", + "pallet-gear-staking-rewards-rpc-runtime-api/std", "pallet-grandpa/std", "pallet-identity/std", "pallet-im-online/std", diff --git a/runtime/vara/src/lib.rs b/runtime/vara/src/lib.rs index fee12da3048..f0446824539 100644 --- a/runtime/vara/src/lib.rs +++ b/runtime/vara/src/lib.rs @@ -1382,4 +1382,10 @@ impl_runtime_apis_plus_common! { Executive::try_execute_block(block, state_root_check, signature_check, select).unwrap() } } + + impl pallet_gear_staking_rewards_rpc_runtime_api::GearStakingRewardsApi for Runtime { + fn inflation_info() -> pallet_gear_staking_rewards::InflationInfo { + StakingRewards::inflation_info() + } + } } From 65a7177a83556af48a0b50baeed16d4171f859de Mon Sep 17 00:00:00 2001 From: Dmitry Novikov Date: Mon, 18 Sep 2023 21:09:13 +0400 Subject: [PATCH 19/21] fix(builds): Pass `dev` feature (#3298) --- .github/workflows/build.yml | 2 +- Makefile | 4 ++-- scripts/calc-gas-spent.sh | 2 +- scripts/ci_build.sh | 4 ++-- scripts/read-state.sh | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7dc8cfc4c84..7c913d062b7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -158,7 +158,7 @@ jobs: - name: "Build: Production binaries" if: github.event_name == 'push' - run: cargo build -p gear-cli -F cli --profile production + run: cargo build -p gear-cli -F dev,cli --profile production - name: Prepare artifacts if: github.event_name == 'push' diff --git a/Makefile b/Makefile index 23d3f966ed4..223516d7f46 100644 --- a/Makefile +++ b/Makefile @@ -175,11 +175,11 @@ purge-chain-release: .PHONY: purge-dev-chain purge-dev-chain: - @ ./scripts/gear.sh run purge-dev-chain + @ ./scripts/gear.sh run purge-dev-chain -F dev .PHONY: purge-dev-chain-release purge-dev-chain-release: - @ ./scripts/gear.sh run purge-dev-chain --release + @ ./scripts/gear.sh run purge-dev-chain --release -F dev # Test section .PHONY: test # \ diff --git a/scripts/calc-gas-spent.sh b/scripts/calc-gas-spent.sh index 7f2a67a5adb..342cc89791f 100755 --- a/scripts/calc-gas-spent.sh +++ b/scripts/calc-gas-spent.sh @@ -2,7 +2,7 @@ # # Prerequisites: # -# RUST_LOG=gwasm=debug,pallet_gear=debug cargo run -p gear-cli --release -- --dev --tmp -l0 +# RUST_LOG=gwasm=debug,pallet_gear=debug cargo run -p gear-cli --release -F dev -- --dev --tmp -l0 # # Then upload the PING program and copy it's ID. # URL: https://github.com/gear-tech/apps/releases/download/build/demo_ping.opt.wasm diff --git a/scripts/ci_build.sh b/scripts/ci_build.sh index 2ddaff402ab..628a9490a6e 100755 --- a/scripts/ci_build.sh +++ b/scripts/ci_build.sh @@ -42,7 +42,7 @@ echo "Test: gsdk tests" ./scripts/gear.sh test gsdk --release echo "Test: Runtime benchmarks and benchmark tests work" - cargo build -p gear-cli --release --features=runtime-benchmarks,runtime-benchmarks-checkers + cargo build -p gear-cli --release --features=dev,runtime-benchmarks,runtime-benchmarks-checkers ./target/release/gear benchmark pallet --chain=dev --pallet=pallet_gear --steps=20 --extrinsic="*" --execution=wasm --wasm-execution=compiled --heap-pages=4096 ./target/release/gear benchmark pallet --chain=dev --pallet=pallet_gear --extrinsic="check_all" --execution=wasm --wasm-execution=compiled --heap-pages=4096 --extra ./target/release/gear benchmark pallet --chain=dev --pallet=pallet_gear --extrinsic="check_lazy_pages_all" --execution=native --heap-pages=4096 --extra @@ -54,5 +54,5 @@ echo "Test: `try-runtime` feature tests" cargo test -p "pallet-*" --features try-runtime --release --locked echo "Test: Try runtime migrations" - cargo build -p gear-cli --features try-runtime --release --locked + cargo build -p gear-cli --features dev,try-runtime --release --locked ./target/release/gear try-runtime --runtime ./target/release/wbuild/gear-runtime/gear_runtime.wasm on-runtime-upgrade --checks live --uri wss://rpc-private-testnet.gear-tech.io:443 diff --git a/scripts/read-state.sh b/scripts/read-state.sh index f94795e116a..af24d82d4ef 100755 --- a/scripts/read-state.sh +++ b/scripts/read-state.sh @@ -2,7 +2,7 @@ # # Prerequisites: # -# RUST_LOG=gwasm=debug,pallet_gear=debug cargo run -p gear-cli --release -- --dev --tmp -l0 +# RUST_LOG=gwasm=debug,pallet_gear=debug cargo run -p gear-cli --release -F dev -- --dev --tmp -l0 # # Usage: # From 012c1eb8bbfd7f2f30b8129bd153305d374fb0ad Mon Sep 17 00:00:00 2001 From: Arsenii Lyashenko Date: Mon, 18 Sep 2023 21:16:34 +0300 Subject: [PATCH 20/21] chore!: Stabilize `lazy-pages` feature (#3123) --- .github/workflows/CI.yaml | 1 - .github/workflows/build-macos.yml | 5 +- .github/workflows/build.yml | 6 +- .github/workflows/test-measurements.yaml | 4 +- Cargo.lock | 8 +- Makefile | 8 +- core-processor/Cargo.toml | 6 +- core-processor/src/common.rs | 2 - core-processor/src/executor.rs | 283 +------------- core-processor/src/ext.rs | 364 ++++++----------- core-processor/src/processing.rs | 6 +- core/Cargo.toml | 1 + core/src/memory.rs | 118 ++++++ docker/Vara-Dockerfile | 2 +- examples/new-meta/tests/read_state.rs | 6 +- gcli/Cargo.toml | 4 +- gcli/src/meta/mod.rs | 35 +- gtest/Cargo.toml | 5 +- gtest/src/manager.rs | 68 ++-- gtest/src/program.rs | 10 +- gtest/src/system.rs | 5 + node/cli/Cargo.toml | 7 +- node/service/Cargo.toml | 4 - pallets/gear-debug/Cargo.toml | 1 - pallets/gear-debug/src/tests/mod.rs | 12 +- pallets/gear-scheduler/Cargo.toml | 2 +- pallets/gear/Cargo.toml | 6 +- pallets/gear/src/benchmarking/mod.rs | 24 +- .../gear/src/benchmarking/tests/lazy_pages.rs | 5 - pallets/gear/src/benchmarking/tests/mod.rs | 2 - pallets/gear/src/benchmarking/utils.rs | 13 +- pallets/gear/src/ext.rs | 367 ------------------ pallets/gear/src/lib.rs | 57 +-- pallets/gear/src/manager/journal.rs | 2 + pallets/gear/src/queue.rs | 18 +- pallets/gear/src/runtime_api.rs | 48 +-- pallets/gear/src/tests.rs | 18 +- pallets/payment/Cargo.toml | 1 - runtime/common/Cargo.toml | 1 + runtime/gear/Cargo.toml | 5 - runtime/vara/Cargo.toml | 5 - scripts/ci_build.sh | 7 +- utils/runtime-fuzzer/Cargo.toml | 2 +- utils/wasm-gen/Cargo.toml | 3 +- utils/wasm-gen/src/tests.rs | 21 +- 45 files changed, 428 insertions(+), 1150 deletions(-) delete mode 100644 pallets/gear/src/ext.rs diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index 9256c5ee13e..01a50f5f55a 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -139,7 +139,6 @@ jobs: -p "pallet-*" -p gear-lazy-pages -p gear-runtime-interface - --features=lazy-pages --release upload: diff --git a/.github/workflows/build-macos.yml b/.github/workflows/build-macos.yml index a4a3a9a2cb9..1337b6fc61c 100644 --- a/.github/workflows/build-macos.yml +++ b/.github/workflows/build-macos.yml @@ -43,9 +43,7 @@ jobs: run: curl -LsSf https://get.nexte.st/latest/mac | tar zxf - -C ${CARGO_HOME:-~/.cargo}/bin - name: "Build: Node" - run: >- - cargo build - -p gear-cli --features=lazy-pages + run: cargo build -p gear-cli - name: "Test: Lazy pages" run: >- @@ -53,4 +51,3 @@ jobs: -p "pallet-*" -p gear-lazy-pages -p gear-runtime-interface - --features=lazy-pages diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7c913d062b7..fc674d05f4b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -77,11 +77,8 @@ jobs: - name: "Check: Vara runtime imports" run: ./target/release/wasm-proc --check-runtime-imports target/release/wbuild/vara-runtime/vara_runtime.compact.wasm - - name: "Test: Gear pallet tests with lazy pages" - run: ./scripts/gear.sh test pallet --features lazy-pages --release --locked - - name: "Test: Gear workspace" - run: ./scripts/gear.sh test gear --exclude gclient --exclude gcli --exclude gsdk --features pallet-gear-debug/lazy-pages --release --locked + run: ./scripts/gear.sh test gear --exclude gclient --exclude gcli --exclude gsdk --release --locked - name: "Test: gsdk tests" run: ./scripts/gear.sh test gsdk --release @@ -252,7 +249,6 @@ jobs: -p "pallet-*" -p gear-lazy-pages -p gear-runtime-interface - --features=lazy-pages --release env: CARGO_BUILD_TARGET: x86_64-pc-windows-msvc diff --git a/.github/workflows/test-measurements.yaml b/.github/workflows/test-measurements.yaml index b9c3a16a657..fca0c365b9e 100644 --- a/.github/workflows/test-measurements.yaml +++ b/.github/workflows/test-measurements.yaml @@ -42,13 +42,13 @@ jobs: tar -xf /cache/check_cargo_registry_${{ github.ref_name }}.tar -C / - name: "Build: Gear" - run: ./scripts/gear.sh build gear --release --locked --features=dev,runtime-benchmarks,lazy-pages + run: ./scripts/gear.sh build gear --release --locked --features=dev,runtime-benchmarks - name: "Collect: Gear workspace tests" run: | mkdir -p ./target/analysis/tests/ mkdir -p ./target/analysis/output/ - for i in `seq 1 $COUNT`; do echo $i; ./scripts/gear.sh test gear --exclude gclient --exclude gcli --features pallet-gear-debug/lazy-pages --release -j1 > ./target/analysis/output/$i 2>&1 ; mv ./target/nextest/ci/junit.xml ./target/analysis/tests/$i; done + for i in `seq 1 $COUNT`; do echo $i; ./scripts/gear.sh test gear --exclude gclient --exclude gcli --release -j1 > ./target/analysis/output/$i 2>&1 ; mv ./target/nextest/ci/junit.xml ./target/analysis/tests/$i; done ./target/release/regression-analysis collect-data --data-folder-path ./target/analysis/tests/ --output-path ./target/pallet-tests.json - name: "Generate report: Gear workspace tests" diff --git a/Cargo.lock b/Cargo.lock index 00d28e6f667..3041ea8580e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3656,6 +3656,7 @@ dependencies = [ "gear-core", "gear-core-errors", "gear-core-processor", + "gear-lazy-pages-common", "gmeta", "gsdk", "hex", @@ -3671,6 +3672,7 @@ dependencies = [ "schnorrkel", "serde", "serde_json", + "sp-io 7.0.0 (git+https://github.com/gear-tech/substrate.git?branch=gear-polkadot-v0.9.41-canary-no-sandbox)", "thiserror", "tokio", "which", @@ -3931,6 +3933,7 @@ dependencies = [ "log", "parity-scale-codec", "paste", + "proptest", "scale-info", "static_assertions", "wabt", @@ -3957,9 +3960,9 @@ dependencies = [ "gear-backend-common", "gear-core", "gear-core-errors", + "gear-lazy-pages-common", "gear-wasm-instrument", "log", - "proptest", "scale-info", "static_assertions", ] @@ -4427,6 +4430,7 @@ dependencies = [ "gear-backend-sandbox", "gear-core", "gear-core-processor", + "gear-lazy-pages-common", "gear-utils", "gear-wasm-instrument", "gsys", @@ -4761,6 +4765,7 @@ dependencies = [ "gear-core", "gear-core-errors", "gear-core-processor", + "gear-lazy-pages-common", "gear-utils", "gear-wasm-builder", "gear-wasm-instrument", @@ -4769,6 +4774,7 @@ dependencies = [ "parity-scale-codec", "path-clean", "rand 0.8.5", + "sp-io 7.0.0 (git+https://github.com/gear-tech/substrate.git?branch=gear-polkadot-v0.9.41-canary-no-sandbox)", ] [[package]] diff --git a/Makefile b/Makefile index 223516d7f46..0e6ee45d5ed 100644 --- a/Makefile +++ b/Makefile @@ -54,11 +54,11 @@ node-release: .PHONY: vara vara: - @ ./scripts/gear.sh build node --no-default-features --features=vara-native,lazy-pages + @ ./scripts/gear.sh build node --no-default-features --features=vara-native .PHONY: vara-release vara-release: - @ ./scripts/gear.sh build node --release --no-default-features --features=vara-native,lazy-pages + @ ./scripts/gear.sh build node --release --no-default-features --features=vara-native .PHONY: gear-replay gear-replay: @@ -197,13 +197,13 @@ test-doc: test-gear: #\ We use lazy-pages feature for pallet-gear-debug due to cargo building issue \ and fact that pallet-gear default is lazy-pages. - @ ./scripts/gear.sh test gear --exclude gclient --exclude gcli --exclude gsdk --features pallet-gear-debug/lazy-pages + @ ./scripts/gear.sh test gear --exclude gclient --exclude gcli --exclude gsdk .PHONY: test-gear-release test-gear-release: # \ We use lazy-pages feature for pallet-gear-debug due to cargo building issue \ and fact that pallet-gear default is lazy-pages. - @ ./scripts/gear.sh test gear --release --exclude gclient --exclude gcli --exclude gsdk --features pallet-gear-debug/lazy-pages + @ ./scripts/gear.sh test gear --release --exclude gclient --exclude gcli --exclude gsdk .PHONY: test-gsdk test-gsdk: node-release diff --git a/core-processor/Cargo.toml b/core-processor/Cargo.toml index 7230e40a335..cc07d9088ee 100644 --- a/core-processor/Cargo.toml +++ b/core-processor/Cargo.toml @@ -15,6 +15,7 @@ gear-core.workspace = true gear-core-errors = { workspace = true, features = ["codec"] } gear-backend-common.workspace = true gear-wasm-instrument.workspace = true +gear-lazy-pages-common.workspace = true scale-info = { workspace = true, features = ["derive"] } log.workspace = true @@ -23,10 +24,11 @@ static_assertions.workspace = true actor-system-error.workspace = true [dev-dependencies] -proptest.workspace = true env_logger.workspace = true enum-iterator.workspace = true [features] +default = ["std"] +std = ["gear-lazy-pages-common/std"] strict = [] -mock = [] \ No newline at end of file +mock = [] diff --git a/core-processor/src/common.rs b/core-processor/src/common.rs index 65d7df3f45f..16d0f842f07 100644 --- a/core-processor/src/common.rs +++ b/core-processor/src/common.rs @@ -545,8 +545,6 @@ pub struct WasmExecutionContext { pub gas_reserver: GasReserver, /// Program to be executed. pub program: Program, - /// Memory pages with initial data. - pub pages_initial_data: BTreeMap, /// Size of the memory block. pub memory_size: WasmPage, } diff --git a/core-processor/src/executor.rs b/core-processor/src/executor.rs index c98778ff592..c1fa182a76e 100644 --- a/core-processor/src/executor.rs +++ b/core-processor/src/executor.rs @@ -26,7 +26,7 @@ use crate::{ }; use actor_system_error::actor_system_error; use alloc::{ - collections::{BTreeMap, BTreeSet}, + collections::BTreeSet, format, string::{String, ToString}, vec::Vec, @@ -41,12 +41,12 @@ use gear_core::{ env::Externalities, gas::{CountersOwner, GasAllowanceCounter, GasCounter, ValueCounter}, ids::ProgramId, - memory::{AllocationsContext, Memory, MemoryError, PageBuf}, + memory::{AllocationsContext, Memory}, message::{ ContextSettings, DispatchKind, IncomingDispatch, IncomingMessage, MessageContext, WasmEntryPoint, }, - pages::{GearPage, PageU32Size, WasmPage}, + pages::{PageU32Size, WasmPage}, program::Program, reservation::GasReserver, }; @@ -67,9 +67,6 @@ pub enum ActorPrepareMemoryError { /// Stack end page, which value is specified in WASM code, cannot be bigger than static memory size. #[display(fmt = "Stack end page {_0:?} is bigger then WASM static memory size {_1:?}")] StackEndPageBiggerWasmMemSize(WasmPage, WasmPage), - /// It's not allowed to set initial data for stack memory pages, if they are specified in WASM code. - #[display(fmt = "Set initial data for stack pages is restricted")] - StackPagesHaveInitialData, /// Stack is not aligned to WASM page size #[display(fmt = "Stack end addr {_0:#x} must be aligned to WASM page size")] StackIsNotAligned(u32), @@ -80,24 +77,10 @@ pub enum SystemPrepareMemoryError { /// Mem size less then static pages num #[display(fmt = "Mem size less then static pages num")] InsufficientMemorySize, - /// Page with data is not allocated for program - #[display(fmt = "{_0:?} is not allocated for program")] - PageIsNotAllocated(GearPage), - /// Cannot read initial memory data from wasm memory. - #[display(fmt = "Cannot read data for {_0:?}: {_1}")] - InitialMemoryReadFailed(GearPage, MemoryError), - /// Cannot write initial data to wasm memory. - #[display(fmt = "Cannot write initial data for {_0:?}: {_1}")] - InitialDataWriteFailed(GearPage, MemoryError), - /// Initial pages data must be empty in lazy pages mode - #[display(fmt = "Initial pages data must be empty when execute with lazy pages")] - InitialPagesContainsDataInLazyPagesMode, } /// Make checks that everything with memory goes well. -fn check_memory<'a>( - allocations: &BTreeSet, - pages_with_data: impl Iterator, +fn check_memory( static_pages: WasmPage, memory_size: WasmPage, ) -> Result<(), SystemPrepareMemoryError> { @@ -110,31 +93,13 @@ fn check_memory<'a>( return Err(SystemPrepareMemoryError::InsufficientMemorySize); } - // Checks that all pages with data are in allocations set. - for page in pages_with_data { - let wasm_page = page.to_page(); - if wasm_page >= static_pages && !allocations.contains(&wasm_page) { - return Err(SystemPrepareMemoryError::PageIsNotAllocated(*page)); - } - } - Ok(()) } -fn lazy_pages_check_initial_data( - initial_pages_data: &BTreeMap, -) -> Result<(), SystemPrepareMemoryError> { - initial_pages_data - .is_empty() - .then_some(()) - .ok_or(SystemPrepareMemoryError::InitialPagesContainsDataInLazyPagesMode) -} - /// Writes initial pages data to memory and prepare memory for execution. fn prepare_memory( mem: &mut EnvMem, program_id: ProgramId, - pages_data: &mut BTreeMap, static_pages: WasmPage, stack_end: Option, globals_config: GlobalsAccessConfig, @@ -158,94 +123,17 @@ fn prepare_memory( None }; - // Set initial data for pages - for (page, data) in pages_data.iter_mut() { - mem.write(page.offset(), data) - .map_err(|err| SystemPrepareMemoryError::InitialDataWriteFailed(*page, err))?; - } - - if ProcessorExt::LAZY_PAGES_ENABLED { - lazy_pages_check_initial_data(pages_data)?; - - ProcessorExt::lazy_pages_init_for_program( - mem, - program_id, - stack_end, - globals_config, - lazy_pages_weights, - ); - } else { - // If we executes without lazy pages, then we have to save all initial data for static pages, - // in order to be able to identify pages, which has been changed during execution. - // Skip stack page if they are specified. - let begin = stack_end.unwrap_or_default(); - - if pages_data.keys().any(|&p| p < begin.to_page()) { - return Err(ActorPrepareMemoryError::StackPagesHaveInitialData.into()); - } + ProcessorExt::lazy_pages_init_for_program( + mem, + program_id, + stack_end, + globals_config, + lazy_pages_weights, + ); - let non_stack_pages = begin.iter_end(static_pages).unwrap_or_else(|err| { - unreachable!( - "We have already checked that `stack_end` is <= `static_pages`, but get: {}", - err - ) - }); - for page in non_stack_pages.flat_map(|p| p.to_pages_iter()) { - if pages_data.contains_key(&page) { - // This page already has initial data - continue; - } - let mut data = PageBuf::new_zeroed(); - mem.read(page.offset(), &mut data) - .map_err(|err| SystemPrepareMemoryError::InitialMemoryReadFailed(page, err))?; - pages_data.insert(page, data); - } - } Ok(()) } -/// Returns pages and their new data, which must be updated or uploaded to storage. -fn get_pages_to_be_updated( - old_pages_data: BTreeMap, - new_pages_data: BTreeMap, - static_pages: WasmPage, -) -> BTreeMap { - if ProcessorExt::LAZY_PAGES_ENABLED { - // In lazy pages mode we update some page data in storage, - // when it has been write accessed, so no need to compare old and new page data. - new_pages_data.keys().for_each(|page| { - log::trace!("{:?} has been write accessed, update it in storage", page) - }); - return new_pages_data; - } - - let mut page_update = BTreeMap::new(); - let mut old_pages_data = old_pages_data; - let static_gear_pages = static_pages.to_page(); - for (page, new_data) in new_pages_data { - let initial_data = if let Some(initial_data) = old_pages_data.remove(&page) { - initial_data - } else { - // If it's static page without initial data, - // then it's stack page and we skip this page update. - if page < static_gear_pages { - continue; - } - - // If page has no data in `pages_initial_data` then data is zeros. - // Because it's default data for wasm pages which is not static, - // and for all static pages we save data in `pages_initial_data` in E::new. - PageBuf::new_zeroed() - }; - - if new_data != initial_data { - page_update.insert(page, new_data); - log::trace!("{page:?} has been changed - will be updated in storage"); - } - } - page_update -} - /// Execute wasm with dispatch and return dispatch result. pub fn execute_wasm( balance: u128, @@ -264,7 +152,6 @@ where gas_allowance_counter, gas_reserver, program, - mut pages_initial_data, memory_size, } = context; @@ -277,13 +164,7 @@ where let static_pages = program.static_pages(); let allocations = program.allocations(); - check_memory( - allocations, - pages_initial_data.keys(), - static_pages, - memory_size, - ) - .map_err(SystemExecutionError::PrepareMemory)?; + check_memory(static_pages, memory_size).map_err(SystemExecutionError::PrepareMemory)?; // Creating allocations context. let allocations_context = @@ -353,7 +234,6 @@ where prepare_memory::( memory, program_id, - &mut pages_initial_data, static_pages, stack_end, globals_config, @@ -377,12 +257,10 @@ where }; // released pages initial data will be added to `pages_initial_data` after execution. - if E::Ext::LAZY_PAGES_ENABLED { - E::Ext::lazy_pages_post_execution_actions(&mut memory); + E::Ext::lazy_pages_post_execution_actions(&mut memory); - if !E::Ext::lazy_pages_status().is_normal() { - termination = ext.current_counter_type().into() - } + if !E::Ext::lazy_pages_status().is_normal() { + termination = ext.current_counter_type().into() } (termination, memory, ext) @@ -416,11 +294,6 @@ where .into_ext_info(&memory) .map_err(SystemExecutionError::IntoExtInfo)?; - if E::Ext::LAZY_PAGES_ENABLED { - lazy_pages_check_initial_data(&pages_initial_data) - .map_err(SystemExecutionError::PrepareMemory)?; - } - // Parsing outcome. let kind = match termination { ActorTerminationReason::Exit(value_dest) => DispatchResultKind::Exit(value_dest), @@ -437,8 +310,9 @@ where ActorTerminationReason::GasAllowanceExceeded => DispatchResultKind::GasAllowanceExceed, }; - let page_update = - get_pages_to_be_updated::(pages_initial_data, info.pages_data, static_pages); + // With lazy-pages we update some page data in storage, + // when it has been write accessed, so no need to compare old and new page data. + let page_update = info.pages_data; // Getting new programs that are scheduled to be initialized (respected messages are in `generated_dispatches` collection) let program_candidates = info.program_candidates_data; @@ -467,7 +341,6 @@ where pub fn execute_for_reply( function: EP, instrumented_code: InstrumentedCode, - pages_initial_data: Option>, allocations: Option>, program_id: Option, payload: Vec, @@ -481,8 +354,6 @@ where EP: WasmEntryPoint, { let program = Program::new(program_id.unwrap_or_default(), instrumented_code); - let mut pages_initial_data: BTreeMap = - pages_initial_data.unwrap_or_default(); let static_pages = program.static_pages(); let allocations = allocations.unwrap_or_else(|| program.allocations().clone()); @@ -558,7 +429,6 @@ where prepare_memory::( memory, program.id(), - &mut pages_initial_data, static_pages, stack_end, globals_config, @@ -623,18 +493,13 @@ where #[cfg(test)] mod tests { use super::*; - use alloc::vec::Vec; use gear_backend_common::lazy_pages::Status; - use gear_core::{ - memory::PageBufInner, - pages::{PageNumber, WasmPage}, - }; + use gear_core::pages::WasmPage; struct TestExt; struct LazyTestExt; impl ProcessorExternalities for TestExt { - const LAZY_PAGES_ENABLED: bool = false; fn new(_context: ProcessorContext) -> Self { Self } @@ -655,8 +520,6 @@ mod tests { } impl ProcessorExternalities for LazyTestExt { - const LAZY_PAGES_ENABLED: bool = true; - fn new(_context: ProcessorContext) -> Self { Self } @@ -676,118 +539,14 @@ mod tests { } } - fn prepare_pages_and_allocs() -> (Vec, BTreeSet) { - let data = [0u16, 1, 2, 8, 18, 25, 27, 28, 93, 146, 240, 518]; - let pages = data.map(Into::into); - (pages.to_vec(), pages.map(|p| p.to_page()).into()) - } - - fn prepare_pages() -> BTreeMap { - let mut pages = BTreeMap::new(); - for i in 0..=255 { - let buffer = PageBufInner::filled_with(i); - pages.insert((i as u16).into(), PageBuf::from_inner(buffer)); - } - pages - } - #[test] fn check_memory_insufficient() { - let res = check_memory(&[].into(), [].iter(), 8.into(), 4.into()); + let res = check_memory(8.into(), 4.into()); assert_eq!(res, Err(SystemPrepareMemoryError::InsufficientMemorySize)); } - #[test] - fn check_memory_not_allocated() { - let (pages, mut allocs) = prepare_pages_and_allocs(); - let last = *allocs.iter().last().unwrap(); - allocs.remove(&last); - let res = check_memory(&allocs, pages.iter(), 2.into(), 4.into()); - assert_eq!( - res, - Err(SystemPrepareMemoryError::PageIsNotAllocated( - *pages.last().unwrap() - )) - ); - } - #[test] fn check_memory_ok() { - let (pages, allocs) = prepare_pages_and_allocs(); - check_memory(&allocs, pages.iter(), 4.into(), 8.into()).unwrap(); - } - - #[test] - fn lazy_pages_to_update() { - let new_pages = prepare_pages(); - let res = - get_pages_to_be_updated::(Default::default(), new_pages.clone(), 0.into()); - // All touched pages are to be updated in lazy mode - assert_eq!(res, new_pages); - } - - #[test] - fn no_pages_to_update() { - let old_pages = prepare_pages(); - let mut new_pages = old_pages.clone(); - let static_pages = 4; - let res = - get_pages_to_be_updated::(old_pages, new_pages.clone(), static_pages.into()); - assert_eq!(res, Default::default()); - - // Change static pages - for i in 0..static_pages { - let buffer = PageBufInner::filled_with(42); - new_pages.insert(i.into(), PageBuf::from_inner(buffer)); - } - // Do not include non-static pages - let new_pages = new_pages - .into_iter() - .take(WasmPage::from(static_pages).to_page::().raw() as _) - .collect(); - let res = - get_pages_to_be_updated::(Default::default(), new_pages, static_pages.into()); - assert_eq!(res, Default::default()); - } - - #[test] - fn pages_to_update() { - let old_pages = prepare_pages(); - let mut new_pages = old_pages.clone(); - - let page_with_zero_data = WasmPage::from(30).to_page(); - let changes: BTreeMap = [ - ( - WasmPage::from(1).to_page(), - PageBuf::from_inner(PageBufInner::filled_with(42u8)), - ), - ( - WasmPage::from(5).to_page(), - PageBuf::from_inner(PageBufInner::filled_with(84u8)), - ), - (page_with_zero_data, PageBuf::new_zeroed()), - ] - .into_iter() - .collect(); - new_pages.extend(changes.clone().into_iter()); - - // Change pages - let static_pages = 4.into(); - let res = get_pages_to_be_updated::(old_pages, new_pages.clone(), static_pages); - assert_eq!(res, changes); - - // There was no any old page - let res = - get_pages_to_be_updated::(Default::default(), new_pages.clone(), static_pages); - - // The result is all pages except the static ones - for page in static_pages.to_page::().iter_from_zero() { - new_pages.remove(&page); - } - - // Remove page with zero data, because it must not be updated. - new_pages.remove(&page_with_zero_data); - - assert_eq!(res, new_pages); + check_memory(4.into(), 8.into()).unwrap(); } } diff --git a/core-processor/src/ext.rs b/core-processor/src/ext.rs index aa872cd3d9b..7d8098dd92e 100644 --- a/core-processor/src/ext.rs +++ b/core-processor/src/ext.rs @@ -39,20 +39,20 @@ use gear_core::{ }, ids::{CodeId, MessageId, ProgramId, ReservationId}, memory::{ - AllocError, AllocationsContext, GrowHandler, Memory, MemoryError, MemoryInterval, - NoopGrowHandler, PageBuf, + AllocError, AllocationsContext, GrowHandler, Memory, MemoryError, MemoryInterval, PageBuf, }, message::{ ContextOutcomeDrain, GasLimit, HandlePacket, InitPacket, MessageContext, Packet, ReplyPacket, }, - pages::{GearPage, PageU32Size, WasmPage}, + pages::{PageU32Size, WasmPage}, reservation::GasReserver, }; use gear_core_errors::{ ExecutionError as FallibleExecutionError, ExtError as FallibleExtErrorCore, MessageError, ProgramRentError, ReplyCode, ReservationError, SignalCode, }; +use gear_lazy_pages_common as lazy_pages; use gear_wasm_instrument::syscalls::SysCallName; /// Processor context. @@ -155,9 +155,6 @@ impl ProcessorContext { /// Trait to which ext must have to work in processor wasm executor. /// Currently used only for lazy-pages support. pub trait ProcessorExternalities { - /// Whether this extension works with lazy pages. - const LAZY_PAGES_ENABLED: bool; - /// Create new fn new(context: ProcessorContext) -> Self; @@ -286,6 +283,39 @@ impl BackendAllocSyscallError for AllocExtError { } } +struct LazyGrowHandler { + old_mem_addr: Option, + old_mem_size: WasmPage, +} + +impl GrowHandler for LazyGrowHandler { + fn before_grow_action(mem: &mut impl Memory) -> Self { + // New pages allocation may change wasm memory buffer location. + // So we remove protections from lazy-pages + // and then in `after_grow_action` we set protection back for new wasm memory buffer. + let old_mem_addr = mem.get_buffer_host_addr(); + lazy_pages::remove_lazy_pages_prot(mem); + Self { + old_mem_addr, + old_mem_size: mem.size(), + } + } + + fn after_grow_action(self, mem: &mut impl Memory) { + // Add new allocations to lazy pages. + // Protect all lazy pages including new allocations. + let new_mem_addr = mem.get_buffer_host_addr().unwrap_or_else(|| { + unreachable!("Memory size cannot be zero after grow is applied for memory") + }); + lazy_pages::update_lazy_pages_and_protect_again( + mem, + self.old_mem_addr, + self.old_mem_size, + new_mem_addr, + ); + } +} + /// Structure providing externalities for running host functions. pub struct Ext { /// Processor context. @@ -300,8 +330,6 @@ pub struct Ext { /// Empty implementation for non-substrate (and non-lazy-pages) using impl ProcessorExternalities for Ext { - const LAZY_PAGES_ENABLED: bool = false; - fn new(context: ProcessorContext) -> Self { let current_counter = if context.gas_counter.left() <= context.gas_allowance_counter.left() { @@ -318,36 +346,87 @@ impl ProcessorExternalities for Ext { } fn lazy_pages_init_for_program( - _mem: &mut impl Memory, - _prog_id: ProgramId, - _stack_end: Option, - _globals_config: GlobalsAccessConfig, - _lazy_pages_weights: LazyPagesWeights, + mem: &mut impl Memory, + prog_id: ProgramId, + stack_end: Option, + globals_config: GlobalsAccessConfig, + lazy_pages_weights: LazyPagesWeights, ) { - unreachable!("Must not be called: lazy-pages is unsupported by this ext") + lazy_pages::init_for_program(mem, prog_id, stack_end, globals_config, lazy_pages_weights); } - fn lazy_pages_post_execution_actions(_mem: &mut impl Memory) { - unreachable!("Must not be called: lazy-pages is unsupported by this ext") + fn lazy_pages_post_execution_actions(mem: &mut impl Memory) { + lazy_pages::remove_lazy_pages_prot(mem); } fn lazy_pages_status() -> Status { - unreachable!("Must not be called: lazy-pages is unsupported by this ext") + lazy_pages::get_status() } } impl BackendExternalities for Ext { fn into_ext_info(self, memory: &impl Memory) -> Result { - let pages_for_data = - |static_pages: WasmPage, allocations: &BTreeSet| -> Vec { - static_pages - .iter_from_zero() - .chain(allocations.iter().copied()) - .flat_map(|p| p.to_pages_iter()) - .collect() - }; + let ProcessorContext { + allocations_context, + message_context, + gas_counter, + gas_reserver, + system_reservation, + program_candidates_data, + program_rents, + .. + } = self.context; + + let (static_pages, initial_allocations, allocations) = allocations_context.into_parts(); + + // Accessed pages are all pages, that had been released and are in allocations set or static. + let mut accessed_pages = lazy_pages::get_write_accessed_pages(); + accessed_pages.retain(|p| { + let wasm_page = p.to_page(); + wasm_page < static_pages || allocations.contains(&wasm_page) + }); + log::trace!("accessed pages numbers = {:?}", accessed_pages); + + let mut pages_data = BTreeMap::new(); + for page in accessed_pages { + let mut buf = PageBuf::new_zeroed(); + memory.read(page.offset(), &mut buf)?; + pages_data.insert(page, buf); + } + + let (outcome, mut context_store) = message_context.drain(); + let ContextOutcomeDrain { + outgoing_dispatches: generated_dispatches, + awakening, + reply_deposits, + } = outcome.drain(); + + let system_reservation_context = SystemReservationContext { + current_reservation: system_reservation, + previous_reservation: context_store.system_reservation(), + }; - self.into_ext_info_inner(memory, pages_for_data) + context_store.set_reservation_nonce(&gas_reserver); + if let Some(reservation) = system_reservation { + context_store.add_system_reservation(reservation); + } + + let info = ExtInfo { + gas_amount: gas_counter.to_amount(), + gas_reserver, + system_reservation_context, + allocations: (allocations != initial_allocations) + .then_some(allocations) + .unwrap_or_default(), + pages_data, + generated_dispatches, + awakening, + reply_deposits, + context_store, + program_candidates_data, + program_rents, + }; + Ok(info) } fn gas_amount(&self) -> GasAmount { @@ -355,11 +434,11 @@ impl BackendExternalities for Ext { } fn pre_process_memory_accesses( - _reads: &[MemoryInterval], - _writes: &[MemoryInterval], - _gas_counter: &mut u64, + reads: &[MemoryInterval], + writes: &[MemoryInterval], + gas_counter: &mut u64, ) -> Result<(), ProcessAccessError> { - Ok(()) + lazy_pages::pre_process_memory_accesses(reads, writes, gas_counter) } } @@ -591,7 +670,18 @@ impl Externalities for Ext { pages_num: u32, mem: &mut impl Memory, ) -> Result { - self.alloc_inner::(pages_num, mem) + let pages = WasmPage::new(pages_num).map_err(|_| AllocError::ProgramAllocOutOfBounds)?; + + self.context + .allocations_context + .alloc::(pages, mem, |pages| { + Ext::charge_gas_if_enough( + &mut self.context.gas_counter, + &mut self.context.gas_allowance_counter, + self.context.page_costs.mem_grow.calc(pages), + ) + }) + .map_err(Into::into) } fn free(&mut self, page: WasmPage) -> Result<(), Self::AllocError> { @@ -1031,89 +1121,6 @@ impl Externalities for Ext { } } -impl Ext { - /// Inner alloc realization. - pub fn alloc_inner( - &mut self, - pages_num: u32, - mem: &mut impl Memory, - ) -> Result { - let pages = WasmPage::new(pages_num).map_err(|_| AllocError::ProgramAllocOutOfBounds)?; - - self.context - .allocations_context - .alloc::(pages, mem, |pages| { - Ext::charge_gas_if_enough( - &mut self.context.gas_counter, - &mut self.context.gas_allowance_counter, - self.context.page_costs.mem_grow.calc(pages), - ) - }) - .map_err(Into::into) - } - - /// Into ext info inner impl. - /// `pages_for_data` returns vector of pages which data will be stored in info. - pub fn into_ext_info_inner( - self, - memory: &impl Memory, - pages_for_data: impl FnOnce(WasmPage, &BTreeSet) -> Vec, - ) -> Result { - let ProcessorContext { - allocations_context, - message_context, - gas_counter, - gas_reserver, - system_reservation, - program_candidates_data, - program_rents, - .. - } = self.context; - - let (static_pages, initial_allocations, allocations) = allocations_context.into_parts(); - let mut pages_data = BTreeMap::new(); - for page in pages_for_data(static_pages, &allocations) { - let mut buf = PageBuf::new_zeroed(); - memory.read(page.offset(), &mut buf)?; - pages_data.insert(page, buf); - } - - let (outcome, mut context_store) = message_context.drain(); - let ContextOutcomeDrain { - outgoing_dispatches: generated_dispatches, - awakening, - reply_deposits, - } = outcome.drain(); - - let system_reservation_context = SystemReservationContext { - current_reservation: system_reservation, - previous_reservation: context_store.system_reservation(), - }; - - context_store.set_reservation_nonce(&gas_reserver); - if let Some(reservation) = system_reservation { - context_store.add_system_reservation(reservation); - } - - let info = ExtInfo { - gas_amount: gas_counter.to_amount(), - gas_reserver, - system_reservation_context, - allocations: (allocations != initial_allocations) - .then_some(allocations) - .unwrap_or_default(), - pages_data, - generated_dispatches, - awakening, - reply_deposits, - context_store, - program_candidates_data, - program_rents, - }; - Ok(info) - } -} - #[cfg(test)] mod tests { use super::*; @@ -1636,133 +1643,4 @@ mod tests { assert_eq!(dispatch.message().payload_bytes(), &[3, 4, 5]); } - - mod property_tests { - use super::*; - use gear_core::{ - memory::HostPointer, - pages::{PageError, PageNumber}, - }; - use proptest::{ - arbitrary::any, - collection::size_range, - prop_oneof, proptest, - strategy::{Just, Strategy}, - test_runner::Config as ProptestConfig, - }; - - struct TestMemory(WasmPage); - - impl Memory for TestMemory { - type GrowError = PageError; - - fn grow(&mut self, pages: WasmPage) -> Result<(), Self::GrowError> { - self.0 = self.0.add(pages)?; - Ok(()) - } - - fn size(&self) -> WasmPage { - self.0 - } - - fn write(&mut self, _offset: u32, _buffer: &[u8]) -> Result<(), MemoryError> { - unimplemented!() - } - - fn read(&self, _offset: u32, _buffer: &mut [u8]) -> Result<(), MemoryError> { - unimplemented!() - } - - unsafe fn get_buffer_host_addr_unsafe(&mut self) -> HostPointer { - unimplemented!() - } - } - - #[derive(Debug, Clone)] - enum Action { - Alloc { pages: WasmPage }, - Free { page: WasmPage }, - } - - fn actions() -> impl Strategy> { - let action = wasm_page_number().prop_flat_map(|page| { - prop_oneof![ - Just(Action::Alloc { pages: page }), - Just(Action::Free { page }) - ] - }); - proptest::collection::vec(action, 0..1024) - } - - fn allocations() -> impl Strategy> { - proptest::collection::btree_set(wasm_page_number(), size_range(0..1024)) - } - - fn wasm_page_number() -> impl Strategy { - any::().prop_map(WasmPage::from) - } - - fn proptest_config() -> ProptestConfig { - ProptestConfig { - cases: 1024, - ..Default::default() - } - } - - #[track_caller] - fn assert_alloc_error(err: ::AllocError) { - match err { - AllocExtError::Alloc( - AllocError::IncorrectAllocationData(_) | AllocError::ProgramAllocOutOfBounds, - ) => {} - err => Err(err).unwrap(), - } - } - - #[track_caller] - fn assert_free_error(err: ::AllocError) { - match err { - AllocExtError::Alloc(AllocError::InvalidFree(_)) => {} - err => Err(err).unwrap(), - } - } - - proptest! { - #![proptest_config(proptest_config())] - #[test] - fn alloc( - static_pages in wasm_page_number(), - allocations in allocations(), - max_pages in wasm_page_number(), - mem_size in wasm_page_number(), - actions in actions(), - ) { - let _ = env_logger::try_init(); - - let ctx = AllocationsContext::new(allocations, static_pages, max_pages); - let ctx = ProcessorContextBuilder::new() - .with_gas(GasCounter::new(u64::MAX)) - .with_allowance(GasAllowanceCounter::new(u64::MAX)) - .with_allocation_context(ctx) - .build(); - let mut ext = Ext::new(ctx); - let mut mem = TestMemory(mem_size); - - for action in actions { - match action { - Action::Alloc { pages } => { - if let Err(err) = ext.alloc(pages.raw(), &mut mem) { - assert_alloc_error(err); - } - } - Action::Free { page } => { - if let Err(err) = ext.free(page) { - assert_free_error(err); - } - }, - } - } - } - } - } } diff --git a/core-processor/src/processing.rs b/core-processor/src/processing.rs index 69c36f22cb4..094dc7117be 100644 --- a/core-processor/src/processing.rs +++ b/core-processor/src/processing.rs @@ -27,16 +27,14 @@ use crate::{ ext::ProcessorExternalities, precharge::SuccessfulDispatchResultKind, }; -use alloc::{collections::BTreeMap, string::ToString, vec::Vec}; +use alloc::{string::ToString, vec::Vec}; use gear_backend_common::{ BackendExternalities, BackendSyscallError, Environment, SystemReservationContext, }; use gear_core::{ env::Externalities, ids::{MessageId, ProgramId}, - memory::PageBuf, message::{ContextSettings, DispatchKind, IncomingDispatch, ReplyMessage, StoredDispatch}, - pages::GearPage, reservation::GasReservationState, }; use gear_core_errors::{ErrorReplyReason, SignalCode}; @@ -46,7 +44,6 @@ pub fn process( block_config: &BlockConfig, execution_context: ProcessExecutionContext, random_data: (Vec, u32), - memory_pages: BTreeMap, ) -> Result, SystemExecutionError> where E: Environment, @@ -97,7 +94,6 @@ where gas_allowance_counter: execution_context.gas_allowance_counter, gas_reserver: execution_context.gas_reserver, program: execution_context.program, - pages_initial_data: memory_pages, memory_size: execution_context.memory_size, }; diff --git a/core/Cargo.toml b/core/Cargo.toml index 2b5cb2e556e..666e400433f 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -29,6 +29,7 @@ byteorder.workspace = true [dev-dependencies] wabt.workspace = true env_logger.workspace = true +proptest.workspace = true [features] strict = [] diff --git a/core/src/memory.rs b/core/src/memory.rs index 3d676e09fee..6b429b78dd7 100644 --- a/core/src/memory.rs +++ b/core/src/memory.rs @@ -497,4 +497,122 @@ mod tests { test(1238, 3498); test(0, 64444); } + + mod property_tests { + use super::*; + use crate::{memory::HostPointer, pages::PageError}; + use proptest::{ + arbitrary::any, + collection::size_range, + prop_oneof, proptest, + strategy::{Just, Strategy}, + test_runner::Config as ProptestConfig, + }; + + struct TestMemory(WasmPage); + + impl Memory for TestMemory { + type GrowError = PageError; + + fn grow(&mut self, pages: WasmPage) -> Result<(), Self::GrowError> { + self.0 = self.0.add(pages)?; + Ok(()) + } + + fn size(&self) -> WasmPage { + self.0 + } + + fn write(&mut self, _offset: u32, _buffer: &[u8]) -> Result<(), MemoryError> { + unimplemented!() + } + + fn read(&self, _offset: u32, _buffer: &mut [u8]) -> Result<(), MemoryError> { + unimplemented!() + } + + unsafe fn get_buffer_host_addr_unsafe(&mut self) -> HostPointer { + unimplemented!() + } + } + + #[derive(Debug, Clone)] + enum Action { + Alloc { pages: WasmPage }, + Free { page: WasmPage }, + } + + fn actions() -> impl Strategy> { + let action = wasm_page_number().prop_flat_map(|page| { + prop_oneof![ + Just(Action::Alloc { pages: page }), + Just(Action::Free { page }) + ] + }); + proptest::collection::vec(action, 0..1024) + } + + fn allocations() -> impl Strategy> { + proptest::collection::btree_set(wasm_page_number(), size_range(0..1024)) + } + + fn wasm_page_number() -> impl Strategy { + any::().prop_map(WasmPage::from) + } + + fn proptest_config() -> ProptestConfig { + ProptestConfig { + cases: 1024, + ..Default::default() + } + } + + #[track_caller] + fn assert_alloc_error(err: AllocError) { + match err { + AllocError::IncorrectAllocationData(_) | AllocError::ProgramAllocOutOfBounds => {} + err => Err(err).unwrap(), + } + } + + #[track_caller] + fn assert_free_error(err: AllocError) { + match err { + AllocError::InvalidFree(_) => {} + err => Err(err).unwrap(), + } + } + + proptest! { + #![proptest_config(proptest_config())] + #[test] + fn alloc( + static_pages in wasm_page_number(), + allocations in allocations(), + max_pages in wasm_page_number(), + mem_size in wasm_page_number(), + actions in actions(), + ) { + let _ = env_logger::try_init(); + + let mut ctx = AllocationsContext::new(allocations, static_pages, max_pages); + let mut mem = TestMemory(mem_size); + + for action in actions { + match action { + Action::Alloc { pages } => { + if let Err(err) = ctx.alloc::(pages, &mut mem, |_| Ok(())) { + assert_alloc_error(err); + } + } + Action::Free { page } => { + if let Err(err) = ctx.free(page) { + assert_free_error(err); + } + } + } + } + } + } + } } diff --git a/docker/Vara-Dockerfile b/docker/Vara-Dockerfile index 0744a6a0cb2..4abe70f29fc 100644 --- a/docker/Vara-Dockerfile +++ b/docker/Vara-Dockerfile @@ -33,7 +33,7 @@ RUN rustc --version RUN rustup update nightly && rustup target add wasm32-unknown-unknown --toolchain nightly # Build -RUN cargo build -p gear-cli --no-default-features --features=vara-native,lazy-pages --profile $PROFILE +RUN cargo build -p gear-cli --no-default-features --features=vara-native --profile $PROFILE # ===== SECOND STAGE ====== diff --git a/examples/new-meta/tests/read_state.rs b/examples/new-meta/tests/read_state.rs index d285ac014f8..7ee30cc09bb 100644 --- a/examples/new-meta/tests/read_state.rs +++ b/examples/new-meta/tests/read_state.rs @@ -106,7 +106,7 @@ fn read_state_with_wasm_func_returns_transformed_state() { const FUNC_NAME: &str = "first_wallet"; assert!(META_EXPORTS_V1.contains(&FUNC_NAME)); - let actual_state = program + let actual_state: Option = program .read_state_using_wasm(FUNC_NAME, META_WASM_V1.to_vec(), state_args!()) .expect("Unable to read program state"); @@ -126,7 +126,7 @@ fn read_state_with_parameterized_wasm_func_returns_transformed_state() { name: "OtherName".into(), }; - let actual_state = program + let actual_state: Option = program .read_state_using_wasm( FUNC_NAME, META_WASM_V2.to_vec(), @@ -151,7 +151,7 @@ fn read_state_with_two_args_wasm_func_returns_transformed_state() { let name = "OtherName".to_string(); let surname = "OtherSurname".to_string(); - let actual_state = program + let actual_state: Option = program .read_state_using_wasm( FUNC_NAME, META_WASM_V2.to_vec(), diff --git a/gcli/Cargo.toml b/gcli/Cargo.toml index f676cbac66d..9d9821b9bf3 100644 --- a/gcli/Cargo.toml +++ b/gcli/Cargo.toml @@ -40,10 +40,12 @@ clap = { workspace = true, features = ["derive"] } thiserror.workspace = true tokio = { workspace = true, features = [ "full" ] } whoami.workspace = true -core-processor.workspace = true +core-processor = { workspace = true, features = [ "std" ] } gear-backend-sandbox = { workspace = true, features = [ "std" ] } +gear-lazy-pages-common = { workspace = true, features = [ "std" ] } reqwest = { workspace = true, default-features = false, features = [ "json", "rustls-tls" ] } etc.workspace = true +sp-io = { workspace = true, features = [ "std" ] } [dev-dependencies] rand.workspace = true diff --git a/gcli/src/meta/mod.rs b/gcli/src/meta/mod.rs index fe8b3772c83..059d0fac8bc 100644 --- a/gcli/src/meta/mod.rs +++ b/gcli/src/meta/mod.rs @@ -73,6 +73,8 @@ pub enum Meta { } impl Meta { + const PAGE_STORAGE_PREFIX: [u8; 32] = *b"gcligcligcligcligcligcligcligcli"; + fn format_metadata(meta: &MetadataRepr, fmt: &mut fmt::Formatter) -> fmt::Result { let registry = PortableRegistry::decode(&mut meta.registry.as_ref()).map_err(|_| fmt::Error)?; @@ -107,20 +109,25 @@ impl Meta { /// Execute meta method. fn execute(wasm: InstrumentedCode, method: &str) -> Result> { - core_processor::informational::execute_for_reply::< - gear_backend_sandbox::SandboxEnvironment, - String, - >( - method.into(), - wasm, - None, - None, - None, - Default::default(), - u64::MAX, - BlockInfo::default(), - ) - .map_err(Error::WasmExecution) + assert!(gear_lazy_pages_common::try_to_enable_lazy_pages( + Self::PAGE_STORAGE_PREFIX + )); + + sp_io::TestExternalities::default().execute_with(|| { + core_processor::informational::execute_for_reply::< + gear_backend_sandbox::SandboxEnvironment, + String, + >( + method.into(), + wasm, + None, + None, + Default::default(), + u64::MAX, + BlockInfo::default(), + ) + .map_err(Error::WasmExecution) + }) } /// Decode metawasm from wasm binary. diff --git a/gtest/Cargo.toml b/gtest/Cargo.toml index 55886642194..fc1ab748a54 100644 --- a/gtest/Cargo.toml +++ b/gtest/Cargo.toml @@ -10,10 +10,13 @@ gear-core.workspace = true gear-core-errors.workspace = true gear-backend-common.workspace = true gear-backend-sandbox = { workspace = true, features = ["std"] } -core-processor.workspace = true +core-processor = { workspace = true, features = ["std"] } +gear-lazy-pages-common = { workspace = true, features = ["std"] } gear-wasm-builder.workspace = true gear-utils.workspace = true +sp-io = { workspace = true, features = ["std"] } + anyhow.workspace = true codec = { workspace = true, features = ["derive"] } hex.workspace = true diff --git a/gtest/src/manager.rs b/gtest/src/manager.rs index 23a5d0cb964..54a41e9bd16 100644 --- a/gtest/src/manager.rs +++ b/gtest/src/manager.rs @@ -19,7 +19,7 @@ use crate::{ log::{CoreLog, RunResult}, program::{Gas, WasmProgram}, - Result, TestError, DISPATCH_HOLD_COST, EPOCH_DURATION_IN_BLOCKS, EXISTENTIAL_DEPOSIT, + Result, System, TestError, DISPATCH_HOLD_COST, EPOCH_DURATION_IN_BLOCKS, EXISTENTIAL_DEPOSIT, INITIAL_RANDOM_SEED, MAILBOX_THRESHOLD, MAX_RESERVATIONS, MODULE_INSTANTIATION_BYTE_COST, MODULE_INSTRUMENTATION_BYTE_COST, MODULE_INSTRUMENTATION_COST, READ_COST, READ_PER_BYTE_COST, RENT_COST, RESERVATION_COST, RESERVE_FOR, WAITLIST_COST, WRITE_COST, WRITE_PER_BYTE_COST, @@ -45,9 +45,12 @@ use gear_core::{ use gear_core_errors::{ErrorReplyReason, SignalCode, SimpleExecutionError}; use gear_wasm_instrument::wasm_instrument::gas_metering::ConstantCostRules; use rand::{rngs::StdRng, RngCore, SeedableRng}; +use sp_io::TestExternalities; use std::{ + cell::RefCell, collections::{BTreeMap, BTreeSet, HashMap, VecDeque}, convert::TryInto, + rc::Rc, time::{SystemTime, UNIX_EPOCH}, }; @@ -117,13 +120,7 @@ impl TestActor { } // Gets a new executable actor derived from the inner program. - fn get_executable_actor_data( - &self, - ) -> Option<( - ExecutableActorData, - CoreProgram, - BTreeMap, - )> { + fn get_executable_actor_data(&self) -> Option<(ExecutableActorData, CoreProgram)> { let (program, pages_data, code_id, gas_reservation_map) = match self { TestActor::Initialized(Program::Genuine { program, @@ -161,7 +158,6 @@ impl TestActor { gas_reservation_map, }, program, - pages_data, )) } } @@ -219,6 +215,8 @@ pub(crate) struct ExtManager { pub(crate) gas_limits: BTreeMap, pub(crate) delayed_dispatches: HashMap>, + pub(crate) externalities: Rc>, + // Last run info pub(crate) origin: ProgramId, pub(crate) msg_id: MessageId, @@ -325,6 +323,29 @@ impl ExtManager { } } + pub(crate) fn with_externalities(&mut self, f: F) -> R + where + F: FnOnce(&mut Self) -> R, + { + let externalities = self.externalities.clone(); + let mut externalities = externalities.borrow_mut(); + externalities.execute_with(|| f(self)) + } + + fn update_storage_pages(program_id: ProgramId, memory_pages: &BTreeMap) { + // write pages into storage so lazy-pages can access them + for (page, buf) in memory_pages { + let page_no: u32 = (*page).into(); + let prefix = [ + System::PAGE_STORAGE_PREFIX.as_slice(), + program_id.into_bytes().as_slice(), + page_no.to_le_bytes().as_slice(), + ] + .concat(); + sp_io::storage::set(&prefix, buf); + } + } + #[track_caller] fn validate_dispatch(&mut self, dispatch: &Dispatch) { if 0 < dispatch.value() && dispatch.value() < crate::EXISTENTIAL_DEPOSIT { @@ -362,7 +383,7 @@ impl ExtManager { pub(crate) fn validate_and_run_dispatch(&mut self, dispatch: Dispatch) -> RunResult { self.validate_dispatch(&dispatch); - self.run_dispatch(dispatch) + self.with_externalities(|this| this.run_dispatch(dispatch)) } #[track_caller] @@ -409,14 +430,8 @@ impl ExtManager { if actor.is_dormant() { self.process_dormant(balance, dispatch); - } else if let Some((data, program, memory_pages)) = actor.get_executable_actor_data() { - self.process_normal( - balance, - data, - program.code().clone(), - memory_pages, - dispatch, - ); + } else if let Some((data, program)) = actor.get_executable_actor_data() { + self.process_normal(balance, data, program.code().clone(), dispatch); } else if let Some(mock) = actor.take_mock() { self.process_mock(mock, dispatch); } else { @@ -447,11 +462,10 @@ impl ExtManager { .get_mut(program_id) .ok_or_else(|| TestError::ActorNotFound(*program_id))?; - if let Some((_, program, memory_pages)) = actor.get_executable_actor_data() { + if let Some((_, program)) = actor.get_executable_actor_data() { core_processor::informational::execute_for_reply::, _>( String::from("state"), program.code().clone(), - Some(memory_pages), Some(program.allocations().clone()), Some(*program_id), Default::default(), @@ -494,7 +508,6 @@ impl ExtManager { mapping_code, None, None, - None, mapping_code_payload, u64::MAX, self.block_info, @@ -592,9 +605,11 @@ impl ExtManager { }; match program { - Program::Genuine { pages_data, .. } => *pages_data = memory_pages, + Program::Genuine { pages_data, .. } => *pages_data = memory_pages.clone(), Program::Mock(_) => panic!("Can't read memory of mock program"), } + + self.with_externalities(|_this| Self::update_storage_pages(*program_id, &memory_pages)) } #[track_caller] @@ -775,14 +790,13 @@ impl ExtManager { balance: u128, data: ExecutableActorData, code: InstrumentedCode, - memory_pages: BTreeMap, dispatch: StoredDispatch, ) { - self.process_dispatch(balance, Some((data, code)), memory_pages, dispatch); + self.process_dispatch(balance, Some((data, code)), dispatch); } fn process_dormant(&mut self, balance: u128, dispatch: StoredDispatch) { - self.process_dispatch(balance, None, Default::default(), dispatch); + self.process_dispatch(balance, None, dispatch); } #[track_caller] @@ -790,7 +804,6 @@ impl ExtManager { &mut self, balance: u128, data: Option<(ExecutableActorData, InstrumentedCode)>, - memory_pages: BTreeMap, dispatch: StoredDispatch, ) { let dest = dispatch.destination(); @@ -868,7 +881,6 @@ impl ExtManager { &block_config, (context, code, balance).into(), self.random_data.clone(), - memory_pages, ) .unwrap_or_else(|e| unreachable!("core-processor logic violated: {}", e)); @@ -1001,6 +1013,8 @@ impl JournalHandler for ExtManager { .expect("Can't find existing program"); if let Some(actor_pages_data) = actor.get_pages_data_mut() { + Self::update_storage_pages(program_id, &pages_data); + actor_pages_data.append(&mut pages_data); } else { unreachable!("No pages data found for program") diff --git a/gtest/src/program.rs b/gtest/src/program.rs index cc0c4e5b426..dca23cfb66a 100644 --- a/gtest/src/program.rs +++ b/gtest/src/program.rs @@ -447,7 +447,9 @@ impl<'a> Program<'a> { /// Reads the program’s state as a byte vector. pub fn read_state_bytes(&self) -> Result> { - self.manager.borrow_mut().read_state_bytes(&self.id) + self.manager + .borrow_mut() + .with_externalities(|this| this.read_state_bytes(&self.id)) } /// Reads the program’s transformed state as a byte vector. The transformed @@ -502,9 +504,9 @@ impl<'a> Program<'a> { wasm: Vec, args: Option>, ) -> Result> { - self.manager - .borrow_mut() - .read_state_bytes_using_wasm(&self.id, fn_name, wasm, args) + self.manager.borrow_mut().with_externalities(|this| { + this.read_state_bytes_using_wasm(&self.id, fn_name, wasm, args) + }) } /// Reads and decodes the program's state . diff --git a/gtest/src/system.rs b/gtest/src/system.rs index 81462312b43..b4e3c3a70b1 100644 --- a/gtest/src/system.rs +++ b/gtest/src/system.rs @@ -37,8 +37,13 @@ impl Default for System { } impl System { + pub(crate) const PAGE_STORAGE_PREFIX: [u8; 32] = *b"gtestgtestgtestgtestgtestgtest00"; + /// Create a new system. pub fn new() -> Self { + assert!(gear_lazy_pages_common::try_to_enable_lazy_pages( + Self::PAGE_STORAGE_PREFIX + )); Default::default() } diff --git a/node/cli/Cargo.toml b/node/cli/Cargo.toml index 02fe1c8c9d2..5a52ca5e042 100644 --- a/node/cli/Cargo.toml +++ b/node/cli/Cargo.toml @@ -63,7 +63,7 @@ gcli = { workspace = true, optional = true } substrate-build-script-utils.workspace = true [features] -default = ["gear-native", "vara-native", "lazy-pages"] +default = ["gear-native", "vara-native"] gear-native = [ "service/gear-native", "gear-runtime", @@ -73,11 +73,6 @@ vara-native = [ "vara-runtime", "pallet-gear-staking-rewards", ] -lazy-pages = [ - "service/lazy-pages", - "vara-runtime?/lazy-pages", - "gear-runtime?/lazy-pages", -] runtime-benchmarks = [ "service/runtime-benchmarks", "frame-benchmarking", diff --git a/node/service/Cargo.toml b/node/service/Cargo.toml index 707bd61836a..c78f087ddbf 100644 --- a/node/service/Cargo.toml +++ b/node/service/Cargo.toml @@ -111,10 +111,6 @@ vara-native = [ "pallet-im-online", "sp-authority-discovery" ] -lazy-pages = [ - "gear-runtime?/lazy-pages", - "vara-runtime?/lazy-pages", -] runtime-benchmarks = [ "frame-benchmarking/runtime-benchmarks", "frame-benchmarking-cli/runtime-benchmarks", diff --git a/pallets/gear-debug/Cargo.toml b/pallets/gear-debug/Cargo.toml index af5b894aecf..f139f859414 100644 --- a/pallets/gear-debug/Cargo.toml +++ b/pallets/gear-debug/Cargo.toml @@ -75,5 +75,4 @@ runtime-benchmarks = [ "frame-system/runtime-benchmarks", "frame-support/runtime-benchmarks", ] -lazy-pages = ["pallet-gear/lazy-pages"] try-runtime = ["frame-support/try-runtime"] diff --git a/pallets/gear-debug/src/tests/mod.rs b/pallets/gear-debug/src/tests/mod.rs index 2008ae84895..683853ff36c 100644 --- a/pallets/gear-debug/src/tests/mod.rs +++ b/pallets/gear-debug/src/tests/mod.rs @@ -25,13 +25,11 @@ use common::{ ActiveProgram, CodeStorage, Origin as _, PausedProgramStorage, ProgramStorage, }; use frame_support::{assert_err, assert_ok}; -#[cfg(feature = "lazy-pages")] -use gear_core::pages::GearPage; use gear_core::{ ids::{CodeId, MessageId, ProgramId}, memory::PageBuf, message::{DispatchKind, StoredDispatch, StoredMessage, UserMessage}, - pages::{PageNumber, PageU32Size, WasmPage}, + pages::{GearPage, PageNumber, PageU32Size, WasmPage}, }; use gear_wasm_instrument::STACK_END_EXPORT_NAME; use pallet_gear::{ @@ -393,7 +391,6 @@ fn get_last_snapshot() -> DebugData { } } -#[cfg(feature = "lazy-pages")] #[test] fn check_not_allocated_pages() { // Currently we has no mechanism to restrict not allocated pages access during wasm execution @@ -595,7 +592,6 @@ fn check_not_allocated_pages() { }) } -#[cfg(feature = "lazy-pages")] #[test] fn check_changed_pages_in_storage() { // This test checks that only pages, which has been write accessed, @@ -903,12 +899,6 @@ fn check_gear_stack_end() { persistent_pages.insert(gear_page2, page_data.clone()); persistent_pages.insert(gear_page3, page_data); - #[cfg(feature = "lazy-pages")] - log::debug!("LAZY-PAGES IS ON"); - - #[cfg(not(feature = "lazy-pages"))] - log::debug!("LAZY-PAGES IS OFF"); - System::assert_last_event( crate::Event::DebugDataSnapshot(DebugData { dispatch_queue: vec![], diff --git a/pallets/gear-scheduler/Cargo.toml b/pallets/gear-scheduler/Cargo.toml index b8d9a29ccb6..d85e5827e3b 100644 --- a/pallets/gear-scheduler/Cargo.toml +++ b/pallets/gear-scheduler/Cargo.toml @@ -31,7 +31,7 @@ sp-std.workspace = true sp-io.workspace = true [dev-dependencies] -core-processor.workspace = true +core-processor = { workspace = true, features = ["std"] } pallet-gear-bank = { workspace = true, features = ["std"] } pallet-gear = { workspace = true, features = ["std"] } pallet-gear-messenger = { workspace = true, features = ["std"] } diff --git a/pallets/gear/Cargo.toml b/pallets/gear/Cargo.toml index ac6f96b0a64..cfb8ed21892 100644 --- a/pallets/gear/Cargo.toml +++ b/pallets/gear/Cargo.toml @@ -26,7 +26,7 @@ static_assertions.workspace = true # Internal deps common.workspace = true gear-runtime-interface = { workspace = true } -gear-lazy-pages-common = { workspace = true, optional = true } +gear-lazy-pages-common.workspace = true core-processor.workspace = true gear-core.workspace = true gear-core-errors.workspace = true @@ -136,7 +136,9 @@ std = [ "frame-system/std", "gear-wasm-instrument/std", "scopeguard/use_std", + "core-processor/std", "gear-backend-sandbox/std", + "gear-lazy-pages-common/std", "scale-info/std", "sp-io/std", "sp-std/std", @@ -154,7 +156,6 @@ std = [ "pallet-gear-proc-macro/full", "primitive-types/std", "serde/std", - "gear-lazy-pages-common?/std", "sp-consensus-babe/std", "test-syscalls?/std", "demo-read-big-state?/std", @@ -190,5 +191,4 @@ runtime-benchmarks = [ ] runtime-benchmarks-checkers = [] try-runtime = ["frame-support/try-runtime"] -lazy-pages = ["gear-lazy-pages-common"] fuzz = ["pallet-gear-gas/fuzz", "common/fuzz"] diff --git a/pallets/gear/src/benchmarking/mod.rs b/pallets/gear/src/benchmarking/mod.rs index 354379bfe16..d41682ab355 100644 --- a/pallets/gear/src/benchmarking/mod.rs +++ b/pallets/gear/src/benchmarking/mod.rs @@ -238,7 +238,6 @@ where &exec.block_config, exec.context, exec.random_data, - exec.memory_pages, ) .unwrap_or_else(|e| unreachable!("core-processor logic invalidated: {}", e)) } @@ -369,7 +368,6 @@ pub struct Exec { block_config: BlockConfig, context: ProcessExecutionContext, random_data: (Vec, u32), - memory_pages: BTreeMap, } benchmarks! { @@ -388,12 +386,10 @@ benchmarks! { check_all { syscalls_integrity::main_test::(); tests::check_stack_overflow::(); - #[cfg(feature = "lazy-pages")] - { - tests::lazy_pages::lazy_pages_charging::(); - tests::lazy_pages::lazy_pages_charging_special::(); - tests::lazy_pages::lazy_pages_gas_exceed::(); - } + + tests::lazy_pages::lazy_pages_charging::(); + tests::lazy_pages::lazy_pages_charging_special::(); + tests::lazy_pages::lazy_pages_gas_exceed::(); } : {} #[extra] @@ -403,12 +399,9 @@ benchmarks! { #[extra] check_lazy_pages_all { - #[cfg(feature = "lazy-pages")] - { - tests::lazy_pages::lazy_pages_charging::(); - tests::lazy_pages::lazy_pages_charging_special::(); - tests::lazy_pages::lazy_pages_gas_exceed::(); - } + tests::lazy_pages::lazy_pages_charging::(); + tests::lazy_pages::lazy_pages_charging_special::(); + tests::lazy_pages::lazy_pages_gas_exceed::(); } : {} #[extra] @@ -418,19 +411,16 @@ benchmarks! { #[extra] check_lazy_pages_charging { - #[cfg(feature = "lazy-pages")] tests::lazy_pages::lazy_pages_charging::(); }: {} #[extra] check_lazy_pages_charging_special { - #[cfg(feature = "lazy-pages")] tests::lazy_pages::lazy_pages_charging_special::(); }: {} #[extra] check_lazy_pages_gas_exceed { - #[cfg(feature = "lazy-pages")] tests::lazy_pages::lazy_pages_gas_exceed::(); }: {} diff --git a/pallets/gear/src/benchmarking/tests/lazy_pages.rs b/pallets/gear/src/benchmarking/tests/lazy_pages.rs index 10e3513d270..94a92d7e6df 100644 --- a/pallets/gear/src/benchmarking/tests/lazy_pages.rs +++ b/pallets/gear/src/benchmarking/tests/lazy_pages.rs @@ -307,7 +307,6 @@ where &exec.block_config, exec.context, exec.random_data, - exec.memory_pages, ) .unwrap_or_else(|e| unreachable!("core-processor logic invalidated: {}", e)); @@ -384,7 +383,6 @@ where &exec.block_config, exec.context, exec.random_data, - exec.memory_pages, ) .unwrap_or_else(|e| unreachable!("core-processor logic invalidated: {}", e)); @@ -544,7 +542,6 @@ where &exec.block_config, exec.context, exec.random_data, - exec.memory_pages, ) .unwrap_or_else(|e| unreachable!("core-processor logic invalidated: {}", e)); @@ -588,7 +585,6 @@ where &exec.block_config, exec.context, exec.random_data, - exec.memory_pages, ) .unwrap_or_else(|e| unreachable!("core-processor logic invalidated: {}", e)); @@ -630,7 +626,6 @@ where &exec.block_config, exec.context, exec.random_data, - exec.memory_pages, ) .unwrap_or_else(|e| unreachable!("core-processor logic invalidated: {}", e)); diff --git a/pallets/gear/src/benchmarking/tests/mod.rs b/pallets/gear/src/benchmarking/tests/mod.rs index d163bcf2baf..e07981baff9 100644 --- a/pallets/gear/src/benchmarking/tests/mod.rs +++ b/pallets/gear/src/benchmarking/tests/mod.rs @@ -23,7 +23,6 @@ use super::*; -#[cfg(feature = "lazy-pages")] pub mod lazy_pages; pub mod syscalls_integrity; mod utils; @@ -76,7 +75,6 @@ where &exec.block_config, exec.context, exec.random_data, - exec.memory_pages, ) .unwrap() .into_iter() diff --git a/pallets/gear/src/benchmarking/utils.rs b/pallets/gear/src/benchmarking/utils.rs index 60992c73675..d04a116c50a 100644 --- a/pallets/gear/src/benchmarking/utils.rs +++ b/pallets/gear/src/benchmarking/utils.rs @@ -21,10 +21,10 @@ use super::Exec; use crate::{ manager::{CodeInfo, ExtManager, HandleKind}, - Config, CostsPerBlockOf, CurrencyOf, DbWeightOf, MailboxOf, Pallet as Gear, QueueOf, - RentCostPerBlockOf, + Config, CostsPerBlockOf, CurrencyOf, DbWeightOf, MailboxOf, Pallet as Gear, ProgramStorageOf, + QueueOf, RentCostPerBlockOf, }; -use common::{scheduler::SchedulingCostsPerBlock, storage::*, CodeStorage, Origin}; +use common::{scheduler::SchedulingCostsPerBlock, storage::*, CodeStorage, Origin, ProgramStorage}; use core_processor::{ configs::{BlockConfig, BlockInfo}, ContextChargedForCode, ContextChargedForInstrumentation, @@ -40,11 +40,6 @@ use sp_core::H256; use sp_runtime::traits::UniqueSaturatedInto; use sp_std::{convert::TryInto, prelude::*}; -#[cfg(feature = "lazy-pages")] -use crate::ProgramStorageOf; -#[cfg(feature = "lazy-pages")] -use common::ProgramStorage; - const DEFAULT_BLOCK_NUMBER: u32 = 0; const DEFAULT_INTERVAL: u32 = 1_000; @@ -119,7 +114,6 @@ where T: Config, T::AccountId: Origin, { - #[cfg(feature = "lazy-pages")] assert!(gear_lazy_pages_common::try_to_enable_lazy_pages( ProgramStorageOf::::pages_final_prefix() )); @@ -295,6 +289,5 @@ where block_config, context: (context, code, balance).into(), random_data: (vec![0u8; 32], 0), - memory_pages: Default::default(), }) } diff --git a/pallets/gear/src/ext.rs b/pallets/gear/src/ext.rs deleted file mode 100644 index a278c23b06e..00000000000 --- a/pallets/gear/src/ext.rs +++ /dev/null @@ -1,367 +0,0 @@ -// This file is part of Gear. - -// Copyright (C) 2022-2023 Gear Technologies Inc. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -use alloc::{collections::BTreeSet, vec::Vec}; -use core_processor::{ - AllocExtError, Ext, FallibleExtError, ProcessorContext, ProcessorExternalities, - UnrecoverableExtError, -}; -use gear_backend_common::{ - lazy_pages::{GlobalsAccessConfig, LazyPagesWeights, Status}, - memory::ProcessAccessError, - BackendExternalities, ExtInfo, -}; -use gear_core::{ - costs::RuntimeCosts, - env::{Externalities, PayloadSliceLock, UnlockPayloadBound}, - gas::{ChargeError, CounterType, CountersOwner, GasAmount, GasLeft}, - ids::{MessageId, ProgramId, ReservationId}, - memory::{GrowHandler, Memory, MemoryError, MemoryInterval}, - message::{HandlePacket, InitPacket, ReplyPacket}, - pages::{GearPage, PageU32Size, WasmPage}, -}; -use gear_core_errors::{ReplyCode, SignalCode}; -use gear_lazy_pages_common as lazy_pages; -use gear_wasm_instrument::syscalls::SysCallName; - -/// Ext with lazy pages support. -pub struct LazyPagesExt { - inner: Ext, -} - -impl BackendExternalities for LazyPagesExt { - fn into_ext_info(self, memory: &impl Memory) -> Result { - let pages_for_data = - |static_pages: WasmPage, allocations: &BTreeSet| -> Vec { - // Accessed pages are all pages, that had been released and are in allocations set or static. - let mut accessed_pages = lazy_pages::get_write_accessed_pages(); - accessed_pages.retain(|p| { - let wasm_page = p.to_page(); - wasm_page < static_pages || allocations.contains(&wasm_page) - }); - log::trace!("accessed pages numbers = {:?}", accessed_pages); - accessed_pages - }; - self.inner.into_ext_info_inner(memory, pages_for_data) - } - - fn gas_amount(&self) -> GasAmount { - self.inner.context.gas_counter.to_amount() - } - - fn pre_process_memory_accesses( - reads: &[MemoryInterval], - writes: &[MemoryInterval], - gas_counter: &mut u64, - ) -> Result<(), ProcessAccessError> { - lazy_pages::pre_process_memory_accesses(reads, writes, gas_counter) - } -} - -impl ProcessorExternalities for LazyPagesExt { - const LAZY_PAGES_ENABLED: bool = true; - - fn new(context: ProcessorContext) -> Self { - Self { - inner: Ext::new(context), - } - } - - fn lazy_pages_init_for_program( - mem: &mut impl Memory, - prog_id: ProgramId, - stack_end: Option, - globals_config: GlobalsAccessConfig, - lazy_pages_weights: LazyPagesWeights, - ) { - lazy_pages::init_for_program(mem, prog_id, stack_end, globals_config, lazy_pages_weights); - } - - fn lazy_pages_post_execution_actions(mem: &mut impl Memory) { - lazy_pages::remove_lazy_pages_prot(mem); - } - - fn lazy_pages_status() -> Status { - lazy_pages::get_status() - } -} - -struct LazyGrowHandler { - old_mem_addr: Option, - old_mem_size: WasmPage, -} - -impl GrowHandler for LazyGrowHandler { - fn before_grow_action(mem: &mut impl Memory) -> Self { - // New pages allocation may change wasm memory buffer location. - // So we remove protections from lazy-pages - // and then in `after_grow_action` we set protection back for new wasm memory buffer. - let old_mem_addr = mem.get_buffer_host_addr(); - lazy_pages::remove_lazy_pages_prot(mem); - Self { - old_mem_addr, - old_mem_size: mem.size(), - } - } - - fn after_grow_action(self, mem: &mut impl Memory) { - // Add new allocations to lazy pages. - // Protect all lazy pages including new allocations. - let new_mem_addr = mem.get_buffer_host_addr().unwrap_or_else(|| { - unreachable!("Memory size cannot be zero after grow is applied for memory") - }); - lazy_pages::update_lazy_pages_and_protect_again( - mem, - self.old_mem_addr, - self.old_mem_size, - new_mem_addr, - ); - } -} - -impl CountersOwner for LazyPagesExt { - fn charge_gas_runtime(&mut self, cost: RuntimeCosts) -> Result<(), ChargeError> { - self.inner.charge_gas_runtime(cost) - } - - fn charge_gas_runtime_if_enough(&mut self, cost: RuntimeCosts) -> Result<(), ChargeError> { - self.inner.charge_gas_runtime_if_enough(cost) - } - - fn charge_gas_if_enough(&mut self, amount: u64) -> Result<(), ChargeError> { - self.inner.charge_gas_if_enough(amount) - } - - fn gas_left(&self) -> GasLeft { - self.inner.gas_left() - } - - fn current_counter_type(&self) -> CounterType { - self.inner.current_counter_type() - } - - fn decrease_current_counter_to(&mut self, amount: u64) { - self.inner.decrease_current_counter_to(amount) - } - - fn define_current_counter(&mut self) -> u64 { - self.inner.define_current_counter() - } -} - -impl Externalities for LazyPagesExt { - type UnrecoverableError = UnrecoverableExtError; - type FallibleError = FallibleExtError; - type AllocError = AllocExtError; - - fn alloc( - &mut self, - pages_num: u32, - mem: &mut impl Memory, - ) -> Result { - self.inner.alloc_inner::(pages_num, mem) - } - - fn free(&mut self, page: WasmPage) -> Result<(), Self::AllocError> { - self.inner.free(page) - } - - fn block_height(&self) -> Result { - self.inner.block_height() - } - - fn block_timestamp(&self) -> Result { - self.inner.block_timestamp() - } - - fn send_init(&mut self) -> Result { - self.inner.send_init() - } - - fn send_push(&mut self, handle: u32, buffer: &[u8]) -> Result<(), Self::FallibleError> { - self.inner.send_push(handle, buffer) - } - - fn send_push_input( - &mut self, - handle: u32, - offset: u32, - len: u32, - ) -> Result<(), Self::FallibleError> { - self.inner.send_push_input(handle, offset, len) - } - - fn reply_push(&mut self, buffer: &[u8]) -> Result<(), Self::FallibleError> { - self.inner.reply_push(buffer) - } - - fn send_commit( - &mut self, - handle: u32, - msg: HandlePacket, - delay: u32, - ) -> Result { - self.inner.send_commit(handle, msg, delay) - } - - fn reservation_send_commit( - &mut self, - id: ReservationId, - handle: u32, - msg: HandlePacket, - delay: u32, - ) -> Result { - self.inner.reservation_send_commit(id, handle, msg, delay) - } - - fn reply_commit(&mut self, msg: ReplyPacket) -> Result { - self.inner.reply_commit(msg) - } - - fn reservation_reply_commit( - &mut self, - id: ReservationId, - msg: ReplyPacket, - ) -> Result { - self.inner.reservation_reply_commit(id, msg) - } - - fn reply_to(&self) -> Result { - self.inner.reply_to() - } - - fn signal_from(&self) -> Result { - self.inner.signal_from() - } - - fn reply_push_input(&mut self, offset: u32, len: u32) -> Result<(), Self::FallibleError> { - self.inner.reply_push_input(offset, len) - } - - fn source(&self) -> Result { - self.inner.source() - } - - fn reply_code(&self) -> Result { - self.inner.reply_code() - } - - fn signal_code(&self) -> Result { - self.inner.signal_code() - } - - fn message_id(&self) -> Result { - self.inner.message_id() - } - - fn pay_program_rent( - &mut self, - program_id: ProgramId, - rent: u128, - ) -> Result<(u128, u32), Self::FallibleError> { - self.inner.pay_program_rent(program_id, rent) - } - - fn program_id(&self) -> Result { - self.inner.program_id() - } - - fn debug(&self, data: &str) -> Result<(), Self::UnrecoverableError> { - self.inner.debug(data) - } - - fn size(&self) -> Result { - self.inner.size() - } - - fn random(&self) -> Result<(&[u8], u32), Self::UnrecoverableError> { - self.inner.random() - } - - fn reserve_gas( - &mut self, - amount: u64, - blocks: u32, - ) -> Result { - self.inner.reserve_gas(amount, blocks) - } - - fn unreserve_gas(&mut self, id: ReservationId) -> Result { - self.inner.unreserve_gas(id) - } - - fn system_reserve_gas(&mut self, amount: u64) -> Result<(), Self::FallibleError> { - self.inner.system_reserve_gas(amount) - } - - fn gas_available(&self) -> Result { - self.inner.gas_available() - } - - fn value(&self) -> Result { - self.inner.value() - } - - fn wait(&mut self) -> Result<(), Self::UnrecoverableError> { - self.inner.wait() - } - - fn wait_for(&mut self, duration: u32) -> Result<(), Self::UnrecoverableError> { - self.inner.wait_for(duration) - } - - fn wait_up_to(&mut self, duration: u32) -> Result { - self.inner.wait_up_to(duration) - } - - fn wake(&mut self, waker_id: MessageId, delay: u32) -> Result<(), Self::FallibleError> { - self.inner.wake(waker_id, delay) - } - - fn value_available(&self) -> Result { - self.inner.value_available() - } - - fn create_program( - &mut self, - packet: InitPacket, - delay: u32, - ) -> Result<(MessageId, ProgramId), Self::FallibleError> { - self.inner.create_program(packet, delay) - } - - fn reply_deposit( - &mut self, - message_id: MessageId, - amount: u64, - ) -> Result<(), Self::FallibleError> { - self.inner.reply_deposit(message_id, amount) - } - - fn forbidden_funcs(&self) -> &BTreeSet { - &self.inner.context.forbidden_funcs - } - - fn lock_payload(&mut self, at: u32, len: u32) -> Result { - self.inner.lock_payload(at, len) - } - - fn unlock_payload(&mut self, payload_holder: &mut PayloadSliceLock) -> UnlockPayloadBound { - self.inner.unlock_payload(payload_holder) - } -} diff --git a/pallets/gear/src/lib.rs b/pallets/gear/src/lib.rs index 0db25c86d60..1363b7166a2 100644 --- a/pallets/gear/src/lib.rs +++ b/pallets/gear/src/lib.rs @@ -24,9 +24,6 @@ extern crate alloc; #[cfg(feature = "runtime-benchmarks")] mod benchmarking; -#[cfg(feature = "lazy-pages")] -mod ext; - mod internal; mod queue; mod runtime_api; @@ -58,6 +55,7 @@ use core::marker::PhantomData; use core_processor::{ common::{DispatchOutcome as CoreDispatchOutcome, ExecutableActorData, JournalNote}, configs::{BlockConfig, BlockInfo}, + Ext, }; use frame_support::{ dispatch::{DispatchError, DispatchResultWithPostInfo, PostDispatchInfo}, @@ -74,6 +72,7 @@ use gear_core::{ message::*, pages::{GearPage, WasmPage}, }; +use gear_lazy_pages_common as lazy_pages; use manager::{CodeInfo, QueuePostProcessingData}; use primitive_types::H256; use sp_runtime::{ @@ -86,15 +85,6 @@ use sp_std::{ prelude::*, }; -#[cfg(feature = "lazy-pages")] -use gear_lazy_pages_common as lazy_pages; - -#[cfg(feature = "lazy-pages")] -use ext::LazyPagesExt as Ext; - -#[cfg(not(feature = "lazy-pages"))] -use core_processor::Ext; - type ExecutionEnvironment = gear_backend_sandbox::SandboxEnvironment; pub(crate) type AccountIdOf = ::AccountId; @@ -1023,48 +1013,13 @@ pub mod pallet { } } - pub(crate) fn enable_lazy_pages() -> bool { - #[cfg(feature = "lazy-pages")] - { - let prefix = ProgramStorageOf::::pages_final_prefix(); - if !lazy_pages::try_to_enable_lazy_pages(prefix) { - unreachable!("By some reasons we cannot run lazy-pages on this machine"); - } - true - } - - #[cfg(not(feature = "lazy-pages"))] - { - false + pub(crate) fn enable_lazy_pages() { + let prefix = ProgramStorageOf::::pages_final_prefix(); + if !lazy_pages::try_to_enable_lazy_pages(prefix) { + unreachable!("By some reasons we cannot run lazy-pages on this machine"); } } - pub(crate) fn get_and_track_memory_pages( - manager: &mut ExtManager, - program_id: ProgramId, - pages_with_data: &BTreeSet, - lazy_pages_enabled: bool, - ) -> Option> { - let pages = if lazy_pages_enabled { - Default::default() - } else { - match ProgramStorageOf::::get_program_data_for_pages( - program_id, - pages_with_data.iter(), - ) { - Ok(data) => data, - Err(err) => { - log::error!("Cannot get data for program pages: {err:?}"); - return None; - } - } - }; - - manager.insert_program_id_loaded_pages(program_id); - - Some(pages) - } - pub(crate) fn block_config() -> BlockConfig { let block_info = BlockInfo { height: Self::block_number().unique_saturated_into(), diff --git a/pallets/gear/src/manager/journal.rs b/pallets/gear/src/manager/journal.rs index b60e65d147f..f5c4deed77d 100644 --- a/pallets/gear/src/manager/journal.rs +++ b/pallets/gear/src/manager/journal.rs @@ -333,6 +333,8 @@ where ProgramStorageOf::::update_active_program(program_id, |p| { for (page, data) in pages_data { + log::trace!("{:?} has been write accessed, update it in storage", page); + ProgramStorageOf::::set_program_page_data(program_id, page, data); p.pages_with_data.insert(page); } diff --git a/pallets/gear/src/queue.rs b/pallets/gear/src/queue.rs index c4381b91543..7bc4280f9a3 100644 --- a/pallets/gear/src/queue.rs +++ b/pallets/gear/src/queue.rs @@ -21,7 +21,6 @@ use core_processor::{common::PrechargedDispatch, ContextChargedForInstrumentatio pub(crate) struct QueueStep<'a, T: Config, F> { pub block_config: &'a BlockConfig, - pub lazy_pages_enabled: bool, pub ext_manager: &'a mut ExtManager, pub gas_limit: GasBalanceOf, pub dispatch: StoredDispatch, @@ -31,7 +30,6 @@ pub(crate) struct QueueStep<'a, T: Config, F> { #[derive(Debug)] pub(crate) enum QueueStepError { - NoMemoryPages, ActorData(PrechargedDispatch), } @@ -46,7 +44,6 @@ where pub(crate) fn execute(self) -> Result, QueueStepError> { let Self { block_config, - lazy_pages_enabled, ext_manager, gas_limit, dispatch, @@ -136,13 +133,7 @@ where }; // Load program memory pages. - let memory_pages = Pallet::::get_and_track_memory_pages( - ext_manager, - program_id, - &context.actor_data().pages_with_data, - lazy_pages_enabled, - ) - .ok_or(QueueStepError::NoMemoryPages)?; + ext_manager.insert_program_id_loaded_pages(program_id); let (random, bn) = T::Randomness::random(dispatch_id.as_ref()); @@ -150,7 +141,6 @@ where block_config, (context, code, balance).into(), (random.encode(), bn.unique_saturated_into()), - memory_pages, ) .unwrap_or_else(|e| unreachable!("core-processor logic invalidated: {}", e)); @@ -169,14 +159,14 @@ where { /// Message Queue processing. pub(crate) fn process_queue(mut ext_manager: ExtManager) { + Self::enable_lazy_pages(); + let block_config = Self::block_config(); if T::DebugInfo::is_remap_id_enabled() { T::DebugInfo::remap_id(); } - let lazy_pages_enabled = Self::enable_lazy_pages(); - while QueueProcessingOf::::allowed() { let dispatch = match QueueOf::::dequeue() .unwrap_or_else(|e| unreachable!("Message queue corrupted! {:?}", e)) @@ -226,7 +216,6 @@ where let step = QueueStep { block_config: &block_config, - lazy_pages_enabled, ext_manager: &mut ext_manager, gas_limit, dispatch, @@ -257,7 +246,6 @@ where MessageWaitedSystemReason::ProgramIsNotInitialized.into_reason(), ); } - Err(QueueStepError::NoMemoryPages) => continue, } } diff --git a/pallets/gear/src/runtime_api.rs b/pallets/gear/src/runtime_api.rs index a37fea57381..d3dc1d94a9a 100644 --- a/pallets/gear/src/runtime_api.rs +++ b/pallets/gear/src/runtime_api.rs @@ -30,7 +30,6 @@ pub(crate) const RUNTIME_API_BLOCK_LIMITS_COUNT: u64 = 6; pub(crate) struct CodeWithMemoryData { pub instrumented_code: InstrumentedCode, pub allocations: BTreeSet, - pub program_pages: Option>, } impl Pallet @@ -46,6 +45,8 @@ where allow_other_panics: bool, allow_skip_zero_replies: bool, ) -> Result> { + Self::enable_lazy_pages(); + let account = ::from_origin(source); let balance = CurrencyOf::::free_balance(&account); @@ -102,8 +103,6 @@ where let mut block_config = Self::block_config(); block_config.forbidden_funcs = [SysCallName::GasAvailable].into(); - let lazy_pages_enabled = Self::enable_lazy_pages(); - let mut min_limit = 0; let mut reserved = 0; let mut burned = 0; @@ -144,7 +143,6 @@ where let step = QueueStep { block_config: &block_config, - lazy_pages_enabled, ext_manager: &mut ext_manager, gas_limit, dispatch: queued_dispatch, @@ -250,24 +248,11 @@ where let instrumented_code = T::CodeStorage::get_code(code_id) .ok_or_else(|| String::from("Failed to get code for given program id"))?; - #[cfg(not(feature = "lazy-pages"))] - let program_pages = Some( - ProgramStorageOf::::get_program_data_for_pages( - program_id, - program.pages_with_data.iter(), - ) - .map_err(|e| format!("Get program pages data error: {e:?}"))?, - ); - - #[cfg(feature = "lazy-pages")] - let program_pages = None; - let allocations = program.allocations; Ok(CodeWithMemoryData { instrumented_code, allocations, - program_pages, }) } @@ -278,13 +263,7 @@ where wasm: Vec, argument: Option>, ) -> Result, String> { - #[cfg(feature = "lazy-pages")] - { - let prefix = ProgramStorageOf::::pages_final_prefix(); - if !lazy_pages::try_to_enable_lazy_pages(prefix) { - unreachable!("By some reasons we cannot run lazy-pages on this machine"); - } - } + Self::enable_lazy_pages(); let schedule = T::Schedule::get(); @@ -322,7 +301,6 @@ where instrumented_code, None, None, - None, payload, BlockGasLimitOf::::get() * RUNTIME_API_BLOCK_LIMITS_COUNT, block_info, @@ -333,20 +311,13 @@ where program_id: ProgramId, payload: Vec, ) -> Result, String> { - #[cfg(feature = "lazy-pages")] - { - let prefix = ProgramStorageOf::::pages_final_prefix(); - if !lazy_pages::try_to_enable_lazy_pages(prefix) { - unreachable!("By some reasons we cannot run lazy-pages on this machine"); - } - } + Self::enable_lazy_pages(); log::debug!("Reading state of {program_id:?}"); let CodeWithMemoryData { instrumented_code, allocations, - program_pages, } = Self::code_with_memory(program_id)?; let block_info = BlockInfo { @@ -357,7 +328,6 @@ where core_processor::informational::execute_for_reply::, String>( String::from("state"), instrumented_code, - program_pages, Some(allocations), Some(program_id), payload, @@ -367,20 +337,13 @@ where } pub(crate) fn read_metahash_impl(program_id: ProgramId) -> Result { - #[cfg(feature = "lazy-pages")] - { - let prefix = ProgramStorageOf::::pages_final_prefix(); - if !lazy_pages::try_to_enable_lazy_pages(prefix) { - unreachable!("By some reasons we cannot run lazy-pages on this machine"); - } - } + Self::enable_lazy_pages(); log::debug!("Reading metahash of {program_id:?}"); let CodeWithMemoryData { instrumented_code, allocations, - program_pages, } = Self::code_with_memory(program_id)?; let block_info = BlockInfo { @@ -391,7 +354,6 @@ where core_processor::informational::execute_for_reply::, String>( String::from("metahash"), instrumented_code, - program_pages, Some(allocations), Some(program_id), Default::default(), diff --git a/pallets/gear/src/tests.rs b/pallets/gear/src/tests.rs index 019d2ac293b..fef0874afa1 100644 --- a/pallets/gear/src/tests.rs +++ b/pallets/gear/src/tests.rs @@ -2989,7 +2989,6 @@ fn restrict_start_section() { }); } -#[cfg(feature = "lazy-pages")] #[test] fn memory_access_cases() { // This test access different pages in wasm linear memory. @@ -3231,7 +3230,6 @@ fn memory_access_cases() { }); } -#[cfg(feature = "lazy-pages")] #[test] fn lazy_pages() { use gear_core::pages::{GearPage, PageU32Size}; @@ -4170,16 +4168,12 @@ fn claim_value_works() { // In `calculate_gas_info` program start to work with page data in storage, // so need to take in account gas, which spent for data loading. - let charged_for_page_load = if cfg!(feature = "lazy-pages") { - gas_price( - ::Schedule::get() - .memory_weights - .load_page_data - .ref_time(), - ) - } else { - 0 - }; + let charged_for_page_load = gas_price( + ::Schedule::get() + .memory_weights + .load_page_data + .ref_time(), + ); // Gas left returns to sender from consuming of value tree while claiming. let expected_sender_balance = diff --git a/pallets/payment/Cargo.toml b/pallets/payment/Cargo.toml index 93c809367f0..84d09e5244c 100644 --- a/pallets/payment/Cargo.toml +++ b/pallets/payment/Cargo.toml @@ -75,5 +75,4 @@ runtime-benchmarks = [ "frame-support/runtime-benchmarks", "parity-wasm", ] -lazy-pages = ["pallet-gear/lazy-pages"] try-runtime = ["frame-support/try-runtime"] diff --git a/runtime/common/Cargo.toml b/runtime/common/Cargo.toml index b673f851b3d..a35574095b4 100644 --- a/runtime/common/Cargo.toml +++ b/runtime/common/Cargo.toml @@ -53,6 +53,7 @@ std = [ "pallet-gear-bank/std", "pallet-gear-messenger/std", "runtime-primitives/std", + "gear-core-processor/std", "sp-runtime/std", "sp-std/std", "validator-set/std", diff --git a/runtime/gear/Cargo.toml b/runtime/gear/Cargo.toml index c68acce6ee8..77751e6991e 100644 --- a/runtime/gear/Cargo.toml +++ b/runtime/gear/Cargo.toml @@ -181,8 +181,3 @@ try-runtime = [ "runtime-common/try-runtime", ] dev = ["pallet-gear-debug", "pallet-gear-program/dev"] -lazy-pages = [ - "pallet-gear/lazy-pages", - "pallet-gear-payment/lazy-pages", - "pallet-gear-debug?/lazy-pages", -] diff --git a/runtime/vara/Cargo.toml b/runtime/vara/Cargo.toml index 40e450428e2..1640bc001fb 100644 --- a/runtime/vara/Cargo.toml +++ b/runtime/vara/Cargo.toml @@ -262,8 +262,3 @@ dev = [ "pallet-gear-program/dev", "pallet-sudo", ] -lazy-pages = [ - "pallet-gear/lazy-pages", - "pallet-gear-payment/lazy-pages", - "pallet-gear-debug?/lazy-pages", -] diff --git a/scripts/ci_build.sh b/scripts/ci_build.sh index 628a9490a6e..e7c24ae2bc1 100755 --- a/scripts/ci_build.sh +++ b/scripts/ci_build.sh @@ -24,13 +24,8 @@ echo "Check: Gear runtime imports" echo "Check: Vara runtime imports" ./target/release/wasm-proc --check-runtime-imports target/release/wbuild/vara-runtime/vara_runtime.compact.wasm -echo "Test: Gear pallet tests with lazy pages" - cargo test -p pallet-gear --features=lazy-pages --release --locked - cargo test -p pallet-gear-debug --features=lazy-pages --release --locked - cargo test -p pallet-gear-payment --features=lazy-pages --release --locked - echo "Test: Gear workspace" - ./scripts/gear.sh test gear --exclude gclient --exclude gcli --features pallet-gear-debug/lazy-pages --release --locked + ./scripts/gear.sh test gear --exclude gclient --exclude gcli --release --locked echo "Test: `gcli`" ./scripts/gear.sh test gcli --release --locked --retries 3 diff --git a/utils/runtime-fuzzer/Cargo.toml b/utils/runtime-fuzzer/Cargo.toml index 410ab54b0f9..e78ce560ea4 100644 --- a/utils/runtime-fuzzer/Cargo.toml +++ b/utils/runtime-fuzzer/Cargo.toml @@ -26,7 +26,7 @@ runtime-primitives.workspace = true gear-common.workspace = true gear-core.workspace = true gear-utils.workspace = true -gear-runtime = { workspace = true, features = ["std", "fuzz", "lazy-pages"] } +gear-runtime = { workspace = true, features = ["std", "fuzz"] } pallet-gear.workspace = true pallet-gear-bank.workspace = true diff --git a/utils/wasm-gen/Cargo.toml b/utils/wasm-gen/Cargo.toml index 9b9c6464ea9..ea4e5c01fbf 100644 --- a/utils/wasm-gen/Cargo.toml +++ b/utils/wasm-gen/Cargo.toml @@ -26,4 +26,5 @@ proptest.workspace = true gear-backend-sandbox = { workspace = true, features = ["std"] } gear-backend-common = { workspace = true, features = ["mock"] } -gear-core-processor = { workspace = true, features = ["mock"] } +gear-core-processor = { workspace = true, features = ["std", "mock"] } +gear-lazy-pages-common = { workspace = true, features = ["std"] } diff --git a/utils/wasm-gen/src/tests.rs b/utils/wasm-gen/src/tests.rs index 57019510d32..ab09d5081e8 100644 --- a/utils/wasm-gen/src/tests.rs +++ b/utils/wasm-gen/src/tests.rs @@ -22,6 +22,7 @@ use gear_backend_common::{BackendReport, Environment, TerminationReason, TrapExp use gear_backend_sandbox::SandboxEnvironment; use gear_core::{ code::Code, + ids::{CodeId, ProgramId}, memory::Memory, message::{ ContextSettings, DispatchKind, IncomingDispatch, IncomingMessage, MessageContext, @@ -242,6 +243,12 @@ fn execute_wasm_with_syscall_injected( const INITIAL_PAGES: u16 = 1; const INJECTED_SYSCALLS: u32 = 8; + const PROGRAM_STORAGE_PREFIX: [u8; 32] = *b"execute_wasm_with_syscall_inject"; + + assert!(gear_lazy_pages_common::try_to_enable_lazy_pages( + PROGRAM_STORAGE_PREFIX + )); + // We create Unstructured from zeroes here as we just need any let buf = vec![0; UNSTRUCTURED_SIZE]; let mut unstructured = Unstructured::new(&buf); @@ -295,10 +302,14 @@ fn execute_wasm_with_syscall_injected( // Imitate that reply was already sent. let _ = message_context.reply_commit(ReplyPacket::auto(), None); + let code_id = CodeId::generate(code.original_code()); + let program_id = ProgramId::generate(code_id, b""); + let processor_context = ProcessorContext { message_context, max_pages: INITIAL_PAGES.into(), rent_cost: 10, + program_id, ..ProcessorContext::new_mock() }; @@ -313,7 +324,15 @@ fn execute_wasm_with_syscall_injected( .expect("Failed to create environment"); let report = env - .execute(|mem, _, _| -> Result<(), u32> { + .execute(|mem, _stack_end, globals_config| -> Result<(), u32> { + gear_core_processor::Ext::lazy_pages_init_for_program( + mem, + program_id, + Some(mem.size()), + globals_config, + Default::default(), + ); + if let Some(mem_write) = initial_memory_write { return mem .write(mem_write.offset, &mem_write.content) From 51669483c6a7db2559f640b9e9e49b706c9fb5d0 Mon Sep 17 00:00:00 2001 From: mqxf Date: Mon, 18 Sep 2023 22:57:46 +0200 Subject: [PATCH 21/21] refactor(pallet-gear): Allow `calculate_gas_info` on terminated program. (#3278) --- pallets/gear/src/runtime_api.rs | 23 ++++++++++++++----- pallets/gear/src/tests.rs | 39 +++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 6 deletions(-) diff --git a/pallets/gear/src/runtime_api.rs b/pallets/gear/src/runtime_api.rs index d3dc1d94a9a..f2f09ac4bc6 100644 --- a/pallets/gear/src/runtime_api.rs +++ b/pallets/gear/src/runtime_api.rs @@ -17,9 +17,10 @@ // along with this program. If not, see . use super::*; -use crate::queue::QueueStep; +use crate::queue::{ActorResult, QueueStep}; use common::ActiveProgram; use core::convert::TryFrom; +use core_processor::common::PrechargedDispatch; use gear_core::{code::TryNewCodeConfig, pages::WasmPage}; use gear_wasm_instrument::syscalls::SysCallName; @@ -126,10 +127,20 @@ where }; let actor_id = queued_dispatch.destination(); + let dispatch_id = queued_dispatch.id(); + let dispatch_reply = queued_dispatch.reply_details().is_some(); + + let balance = CurrencyOf::::free_balance(&::from_origin( + actor_id.into_origin(), + )); - let actor = ext_manager - .get_actor(actor_id) - .ok_or_else(|| b"Program not found in the storage".to_vec())?; + let get_actor_data = |precharged_dispatch: PrechargedDispatch| { + // At this point gas counters should be changed accordingly so fetch the program data. + match Self::get_active_actor_data(actor_id, dispatch_id, dispatch_reply) { + ActorResult::Data(data) => Ok((precharged_dispatch, data)), + ActorResult::Continue => Err(precharged_dispatch), + } + }; let dispatch_id = queued_dispatch.id(); let success_reply = queued_dispatch @@ -146,8 +157,8 @@ where ext_manager: &mut ext_manager, gas_limit, dispatch: queued_dispatch, - balance: actor.balance, - get_actor_data: |dispatch| Ok((dispatch, actor.executable_data)), + balance: balance.unique_saturated_into(), + get_actor_data, }; let journal = step.execute().unwrap_or_else(|e| unreachable!("{e:?}")); diff --git a/pallets/gear/src/tests.rs b/pallets/gear/src/tests.rs index fef0874afa1..1a234ddff62 100644 --- a/pallets/gear/src/tests.rs +++ b/pallets/gear/src/tests.rs @@ -14317,6 +14317,45 @@ fn gear_block_number_math_adds_up() { }) } +#[test] +fn test_gas_info_of_terminated_program() { + use demo_constructor::{Calls, Scheme}; + + init_logger(); + new_test_ext().execute_with(|| { + // Dies in init + let init_dead = Calls::builder().panic("Die in init"); + let handle_dead = Calls::builder().panic("Called after being terminated!"); + let (_, pid_dead) = utils::submit_constructor_with_args( + USER_1, + b"salt1", + Scheme::predefined(init_dead, handle_dead, Calls::default()), + 0, + ); + + // Sends in handle message do dead program + let handle_proxy = Calls::builder().send(pid_dead.into_bytes(), []); + let (_, proxy_pid) = utils::submit_constructor_with_args( + USER_1, + b"salt2", + Scheme::predefined(Calls::default(), handle_proxy, Calls::default()), + 0, + ); + + run_to_next_block(None); + + let _gas_info = Gear::calculate_gas_info( + USER_1.into_origin(), + HandleKind::Handle(proxy_pid), + EMPTY_PAYLOAD.to_vec(), + 0, + true, + true, + ) + .expect("failed getting gas info"); + }) +} + mod utils { #![allow(unused)]