diff --git a/substrate/frame/contracts/src/benchmarking/mod.rs b/substrate/frame/contracts/src/benchmarking/mod.rs
index 01e62e07e1ce0d502ef5b5d173e96bcfc15f387e..57a330ae275f241768d800a48a55e1644f1b7ebf 100644
--- a/substrate/frame/contracts/src/benchmarking/mod.rs
+++ b/substrate/frame/contracts/src/benchmarking/mod.rs
@@ -391,6 +391,20 @@ benchmarks! {
 		assert!(<Contract<T>>::code_removed(&hash));
 	}
 
+	set_code {
+		let instance = <Contract<T>>::with_caller(
+			whitelisted_caller(), WasmModule::dummy(), vec![],
+		)?;
+		// we just add some bytes so that the code hash is different
+		let WasmModule { code, hash, .. } = <WasmModule<T>>::dummy_with_bytes(128);
+		<Contracts<T>>::store_code_raw(code, instance.caller.clone())?;
+		let callee = instance.addr.clone();
+		assert_ne!(instance.info()?.code_hash, hash);
+	}: _(RawOrigin::Root, callee, hash)
+	verify {
+		assert_eq!(instance.info()?.code_hash, hash);
+	}
+
 	seal_caller {
 		let r in 0 .. API_BENCHMARK_BATCHES;
 		let instance = Contract::<T>::new(WasmModule::getter(
diff --git a/substrate/frame/contracts/src/lib.rs b/substrate/frame/contracts/src/lib.rs
index ffac3e222bbcedff397e59a7cfcb55d6fb549579..a8d1e18efd2ccd932a0e34a143e4f477f6ea41c1 100644
--- a/substrate/frame/contracts/src/lib.rs
+++ b/substrate/frame/contracts/src/lib.rs
@@ -586,6 +586,42 @@ pub mod pallet {
 			// we waive the fee because removing unused code is beneficial
 			Ok(Pays::No.into())
 		}
+
+		/// Privileged function that changes the code of an existing contract.
+		///
+		/// This takes care of updating refcounts and all other necessary operations. Returns
+		/// an error if either the `code_hash` or `dest` do not exist.
+		///
+		/// # Note
+		///
+		/// This does **not** change the address of the contract in question. This means
+		/// that the contract address is no longer derived from its code hash after calling
+		/// this dispatchable.
+		#[pallet::weight(T::WeightInfo::set_code())]
+		pub fn set_code(
+			origin: OriginFor<T>,
+			dest: <T::Lookup as StaticLookup>::Source,
+			code_hash: CodeHash<T>,
+		) -> DispatchResult {
+			ensure_root(origin)?;
+			let dest = T::Lookup::lookup(dest)?;
+			<ContractInfoOf<T>>::try_mutate(&dest, |contract| {
+				let contract = if let Some(contract) = contract {
+					contract
+				} else {
+					return Err(<Error<T>>::ContractNotFound.into())
+				};
+				<PrefabWasmModule<T>>::add_user(code_hash)?;
+				<PrefabWasmModule<T>>::remove_user(contract.code_hash);
+				Self::deposit_event(Event::ContractCodeUpdated {
+					contract: dest.clone(),
+					new_code_hash: code_hash,
+					old_code_hash: contract.code_hash,
+				});
+				contract.code_hash = code_hash;
+				Ok(())
+			})
+		}
 	}
 
 	#[pallet::event]
diff --git a/substrate/frame/contracts/src/tests.rs b/substrate/frame/contracts/src/tests.rs
index e52ce5ca0e15672412ca793f34c2c318694c3fea..2125fe24d1a07edd1cca33b0582027783f4bb2bb 100644
--- a/substrate/frame/contracts/src/tests.rs
+++ b/substrate/frame/contracts/src/tests.rs
@@ -40,7 +40,7 @@ use frame_support::{
 	weights::{constants::WEIGHT_PER_SECOND, DispatchClass, PostDispatchInfo, Weight},
 };
 use frame_system::{self as system, EventRecord, Phase};
-use pretty_assertions::assert_eq;
+use pretty_assertions::{assert_eq, assert_ne};
 use sp_core::Bytes;
 use sp_io::hashing::blake2_256;
 use sp_keystore::{testing::KeyStore, KeystoreExt};
@@ -2862,6 +2862,86 @@ fn storage_deposit_works() {
 	});
 }
 
+#[test]
+fn set_code_extrinsic() {
+	let (wasm, code_hash) = compile_module::<Test>("dummy").unwrap();
+	let (new_wasm, new_code_hash) = compile_module::<Test>("crypto_hashes").unwrap();
+
+	assert_ne!(code_hash, new_code_hash);
+
+	ExtBuilder::default().existential_deposit(100).build().execute_with(|| {
+		let _ = Balances::deposit_creating(&ALICE, 1_000_000);
+
+		assert_ok!(Contracts::instantiate_with_code(
+			Origin::signed(ALICE),
+			0,
+			GAS_LIMIT,
+			None,
+			wasm,
+			vec![],
+			vec![],
+		));
+		let addr = Contracts::contract_address(&ALICE, &code_hash, &[]);
+
+		assert_ok!(Contracts::upload_code(Origin::signed(ALICE), new_wasm, None,));
+
+		// Drop previous events
+		initialize_block(2);
+
+		assert_eq!(<ContractInfoOf<Test>>::get(&addr).unwrap().code_hash, code_hash);
+		assert_refcount!(&code_hash, 1);
+		assert_refcount!(&new_code_hash, 0);
+
+		// only root can execute this extrinsic
+		assert_noop!(
+			Contracts::set_code(Origin::signed(ALICE), addr.clone(), new_code_hash),
+			sp_runtime::traits::BadOrigin,
+		);
+		assert_eq!(<ContractInfoOf<Test>>::get(&addr).unwrap().code_hash, code_hash);
+		assert_refcount!(&code_hash, 1);
+		assert_refcount!(&new_code_hash, 0);
+		assert_eq!(System::events(), vec![],);
+
+		// contract must exist
+		assert_noop!(
+			Contracts::set_code(Origin::root(), BOB, new_code_hash),
+			<Error<Test>>::ContractNotFound,
+		);
+		assert_eq!(<ContractInfoOf<Test>>::get(&addr).unwrap().code_hash, code_hash);
+		assert_refcount!(&code_hash, 1);
+		assert_refcount!(&new_code_hash, 0);
+		assert_eq!(System::events(), vec![],);
+
+		// new code hash must exist
+		assert_noop!(
+			Contracts::set_code(Origin::root(), addr.clone(), Default::default()),
+			<Error<Test>>::CodeNotFound,
+		);
+		assert_eq!(<ContractInfoOf<Test>>::get(&addr).unwrap().code_hash, code_hash);
+		assert_refcount!(&code_hash, 1);
+		assert_refcount!(&new_code_hash, 0);
+		assert_eq!(System::events(), vec![],);
+
+		// successful call
+		assert_ok!(Contracts::set_code(Origin::root(), addr.clone(), new_code_hash));
+		assert_eq!(<ContractInfoOf<Test>>::get(&addr).unwrap().code_hash, new_code_hash);
+		assert_refcount!(&code_hash, 0);
+		assert_refcount!(&new_code_hash, 1);
+		assert_eq!(
+			System::events(),
+			vec![EventRecord {
+				phase: Phase::Initialization,
+				event: Event::Contracts(pallet_contracts::Event::ContractCodeUpdated {
+					contract: addr,
+					new_code_hash,
+					old_code_hash: code_hash,
+				}),
+				topics: vec![],
+			},]
+		);
+	});
+}
+
 #[test]
 fn call_after_killed_account_needs_funding() {
 	let (wasm, code_hash) = compile_module::<Test>("dummy").unwrap();
diff --git a/substrate/frame/contracts/src/weights.rs b/substrate/frame/contracts/src/weights.rs
index 85ff2548ca6987f4c430d4ecca59738457154485..256e0ffc9d80857de9f801b5f37662d1ead5d735 100644
--- a/substrate/frame/contracts/src/weights.rs
+++ b/substrate/frame/contracts/src/weights.rs
@@ -18,12 +18,13 @@
 //! Autogenerated weights for pallet_contracts
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2022-03-21, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2022-05-18, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
 // target/production/substrate
 // benchmark
+// pallet
 // --chain=dev
 // --steps=50
 // --repeat=20
@@ -54,6 +55,7 @@ pub trait WeightInfo {
 	fn call() -> Weight;
 	fn upload_code(c: u32, ) -> Weight;
 	fn remove_code() -> Weight;
+	fn set_code() -> Weight;
 	fn seal_caller(r: u32, ) -> Weight;
 	fn seal_is_contract(r: u32, ) -> Weight;
 	fn seal_code_hash(r: u32, ) -> Weight;
@@ -163,14 +165,14 @@ pub struct SubstrateWeight<T>(PhantomData<T>);
 impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts DeletionQueue (r:1 w:0)
 	fn on_initialize() -> Weight {
-		(1_569_000 as Weight)
+		(1_641_000 as Weight)
 			.saturating_add(T::DbWeight::get().reads(1 as Weight))
 	}
 	// Storage: Skipped Metadata (r:0 w:0)
 	fn on_initialize_per_trie_key(k: u32, ) -> Weight {
-		(9_620_000 as Weight)
+		(11_282_000 as Weight)
 			// Standard Error: 0
-			.saturating_add((748_000 as Weight).saturating_mul(k as Weight))
+			.saturating_add((758_000 as Weight).saturating_mul(k as Weight))
 			.saturating_add(T::DbWeight::get().reads(1 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 			.saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(k as Weight)))
@@ -178,17 +180,17 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts DeletionQueue (r:1 w:0)
 	fn on_initialize_per_queue_item(q: u32, ) -> Weight {
 		(0 as Weight)
-			// Standard Error: 4_000
-			.saturating_add((1_795_000 as Weight).saturating_mul(q as Weight))
+			// Standard Error: 5_000
+			.saturating_add((1_892_000 as Weight).saturating_mul(q as Weight))
 			.saturating_add(T::DbWeight::get().reads(1 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
 	// Storage: Contracts PristineCode (r:1 w:0)
 	// Storage: Contracts CodeStorage (r:0 w:1)
 	fn reinstrument(c: u32, ) -> Weight {
-		(12_256_000 as Weight)
+		(19_908_000 as Weight)
 			// Standard Error: 0
-			.saturating_add((49_000 as Weight).saturating_mul(c as Weight))
+			.saturating_add((48_000 as Weight).saturating_mul(c as Weight))
 			.saturating_add(T::DbWeight::get().reads(1 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -197,9 +199,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Timestamp Now (r:1 w:0)
 	// Storage: System Account (r:1 w:1)
 	fn call_with_code_per_byte(c: u32, ) -> Weight {
-		(213_494_000 as Weight)
+		(200_315_000 as Weight)
 			// Standard Error: 0
-			.saturating_add((53_000 as Weight).saturating_mul(c as Weight))
+			.saturating_add((51_000 as Weight).saturating_mul(c as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(2 as Weight))
 	}
@@ -211,9 +213,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts PristineCode (r:0 w:1)
 	// Storage: Contracts OwnerInfoOf (r:0 w:1)
 	fn instantiate_with_code(c: u32, s: u32, ) -> Weight {
-		(231_180_000 as Weight)
+		(252_036_000 as Weight)
 			// Standard Error: 0
-			.saturating_add((125_000 as Weight).saturating_mul(c as Weight))
+			.saturating_add((121_000 as Weight).saturating_mul(c as Weight))
 			// Standard Error: 0
 			.saturating_add((2_000 as Weight).saturating_mul(s as Weight))
 			.saturating_add(T::DbWeight::get().reads(5 as Weight))
@@ -226,7 +228,7 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: System Account (r:1 w:1)
 	// Storage: Contracts OwnerInfoOf (r:1 w:1)
 	fn instantiate(s: u32, ) -> Weight {
-		(172_238_000 as Weight)
+		(177_274_000 as Weight)
 			// Standard Error: 0
 			.saturating_add((2_000 as Weight).saturating_mul(s as Weight))
 			.saturating_add(T::DbWeight::get().reads(6 as Weight))
@@ -237,7 +239,7 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Timestamp Now (r:1 w:0)
 	// Storage: System Account (r:1 w:1)
 	fn call() -> Weight {
-		(140_912_000 as Weight)
+		(146_086_000 as Weight)
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(2 as Weight))
 	}
@@ -245,7 +247,7 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts PristineCode (r:0 w:1)
 	// Storage: Contracts OwnerInfoOf (r:0 w:1)
 	fn upload_code(c: u32, ) -> Weight {
-		(42_493_000 as Weight)
+		(43_995_000 as Weight)
 			// Standard Error: 0
 			.saturating_add((49_000 as Weight).saturating_mul(c as Weight))
 			.saturating_add(T::DbWeight::get().reads(1 as Weight))
@@ -255,18 +257,25 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:0 w:1)
 	// Storage: Contracts PristineCode (r:0 w:1)
 	fn remove_code() -> Weight {
-		(24_533_000 as Weight)
+		(25_007_000 as Weight)
 			.saturating_add(T::DbWeight::get().reads(1 as Weight))
 			.saturating_add(T::DbWeight::get().writes(3 as Weight))
 	}
+	// Storage: Contracts ContractInfoOf (r:1 w:1)
+	// Storage: Contracts OwnerInfoOf (r:2 w:2)
+	fn set_code() -> Weight {
+		(22_940_000 as Weight)
+			.saturating_add(T::DbWeight::get().reads(3 as Weight))
+			.saturating_add(T::DbWeight::get().writes(3 as Weight))
+	}
 	// Storage: System Account (r:1 w:0)
 	// Storage: Contracts ContractInfoOf (r:1 w:1)
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_caller(r: u32, ) -> Weight {
-		(220_009_000 as Weight)
-			// Standard Error: 80_000
-			.saturating_add((47_887_000 as Weight).saturating_mul(r as Weight))
+		(207_387_000 as Weight)
+			// Standard Error: 88_000
+			.saturating_add((40_577_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -275,11 +284,11 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_is_contract(r: u32, ) -> Weight {
-		(71_779_000 as Weight)
-			// Standard Error: 900_000
-			.saturating_add((371_278_000 as Weight).saturating_mul(r as Weight))
+		(96_692_000 as Weight)
+			// Standard Error: 688_000
+			.saturating_add((313_348_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
-			.saturating_add(T::DbWeight::get().reads((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(T::DbWeight::get().reads((80 as Weight).saturating_mul(r as Weight)))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
 	// Storage: System Account (r:1 w:0)
@@ -287,11 +296,11 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_code_hash(r: u32, ) -> Weight {
-		(0 as Weight)
-			// Standard Error: 2_329_000
-			.saturating_add((451_731_000 as Weight).saturating_mul(r as Weight))
+		(107_076_000 as Weight)
+			// Standard Error: 721_000
+			.saturating_add((370_976_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
-			.saturating_add(T::DbWeight::get().reads((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(T::DbWeight::get().reads((80 as Weight).saturating_mul(r as Weight)))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
 	// Storage: System Account (r:1 w:0)
@@ -299,9 +308,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_own_code_hash(r: u32, ) -> Weight {
-		(227_824_000 as Weight)
-			// Standard Error: 128_000
-			.saturating_add((52_843_000 as Weight).saturating_mul(r as Weight))
+		(207_147_000 as Weight)
+			// Standard Error: 112_000
+			.saturating_add((43_974_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -310,9 +319,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_caller_is_origin(r: u32, ) -> Weight {
-		(213_057_000 as Weight)
-			// Standard Error: 43_000
-			.saturating_add((21_023_000 as Weight).saturating_mul(r as Weight))
+		(203_029_000 as Weight)
+			// Standard Error: 31_000
+			.saturating_add((16_811_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -321,9 +330,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_address(r: u32, ) -> Weight {
-		(219_066_000 as Weight)
-			// Standard Error: 117_000
-			.saturating_add((48_056_000 as Weight).saturating_mul(r as Weight))
+		(206_641_000 as Weight)
+			// Standard Error: 86_000
+			.saturating_add((40_239_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -332,9 +341,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_gas_left(r: u32, ) -> Weight {
-		(218_844_000 as Weight)
-			// Standard Error: 101_000
-			.saturating_add((47_325_000 as Weight).saturating_mul(r as Weight))
+		(205_195_000 as Weight)
+			// Standard Error: 85_000
+			.saturating_add((39_915_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -343,9 +352,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_balance(r: u32, ) -> Weight {
-		(219_234_000 as Weight)
-			// Standard Error: 171_000
-			.saturating_add((142_534_000 as Weight).saturating_mul(r as Weight))
+		(213_345_000 as Weight)
+			// Standard Error: 126_000
+			.saturating_add((116_249_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(5 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -354,9 +363,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_value_transferred(r: u32, ) -> Weight {
-		(215_128_000 as Weight)
-			// Standard Error: 119_000
-			.saturating_add((48_392_000 as Weight).saturating_mul(r as Weight))
+		(206_141_000 as Weight)
+			// Standard Error: 96_000
+			.saturating_add((39_999_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -365,9 +374,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_minimum_balance(r: u32, ) -> Weight {
-		(214_603_000 as Weight)
-			// Standard Error: 115_000
-			.saturating_add((48_041_000 as Weight).saturating_mul(r as Weight))
+		(205_569_000 as Weight)
+			// Standard Error: 104_000
+			.saturating_add((40_046_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -376,9 +385,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_block_number(r: u32, ) -> Weight {
-		(214_091_000 as Weight)
-			// Standard Error: 126_000
-			.saturating_add((48_067_000 as Weight).saturating_mul(r as Weight))
+		(205_782_000 as Weight)
+			// Standard Error: 89_000
+			.saturating_add((39_757_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -387,9 +396,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_now(r: u32, ) -> Weight {
-		(214_418_000 as Weight)
-			// Standard Error: 100_000
-			.saturating_add((47_791_000 as Weight).saturating_mul(r as Weight))
+		(205_465_000 as Weight)
+			// Standard Error: 87_000
+			.saturating_add((39_605_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -399,9 +408,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Timestamp Now (r:1 w:0)
 	// Storage: TransactionPayment NextFeeMultiplier (r:1 w:0)
 	fn seal_weight_to_fee(r: u32, ) -> Weight {
-		(229_261_000 as Weight)
-			// Standard Error: 150_000
-			.saturating_add((121_988_000 as Weight).saturating_mul(r as Weight))
+		(208_900_000 as Weight)
+			// Standard Error: 108_000
+			.saturating_add((101_341_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(5 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -410,9 +419,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_gas(r: u32, ) -> Weight {
-		(127_983_000 as Weight)
-			// Standard Error: 56_000
-			.saturating_add((24_016_000 as Weight).saturating_mul(r as Weight))
+		(132_788_000 as Weight)
+			// Standard Error: 22_000
+			.saturating_add((19_129_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -421,9 +430,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_input(r: u32, ) -> Weight {
-		(216_634_000 as Weight)
-			// Standard Error: 114_000
-			.saturating_add((46_864_000 as Weight).saturating_mul(r as Weight))
+		(205_111_000 as Weight)
+			// Standard Error: 96_000
+			.saturating_add((39_317_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -432,9 +441,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_input_per_kb(n: u32, ) -> Weight {
-		(285_180_000 as Weight)
-			// Standard Error: 4_000
-			.saturating_add((11_899_000 as Weight).saturating_mul(n as Weight))
+		(263_644_000 as Weight)
+			// Standard Error: 3_000
+			.saturating_add((9_593_000 as Weight).saturating_mul(n as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -442,8 +451,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts ContractInfoOf (r:1 w:1)
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
-	fn seal_return(_r: u32, ) -> Weight {
-		(215_379_000 as Weight)
+	fn seal_return(r: u32, ) -> Weight {
+		(201_299_000 as Weight)
+			// Standard Error: 903_000
+			.saturating_add((947_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -452,9 +463,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_return_per_kb(n: u32, ) -> Weight {
-		(213_957_000 as Weight)
+		(202_730_000 as Weight)
 			// Standard Error: 0
-			.saturating_add((201_000 as Weight).saturating_mul(n as Weight))
+			.saturating_add((183_000 as Weight).saturating_mul(n as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -465,9 +476,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts DeletionQueue (r:1 w:1)
 	// Storage: Contracts OwnerInfoOf (r:1 w:1)
 	fn seal_terminate(r: u32, ) -> Weight {
-		(215_782_000 as Weight)
-			// Standard Error: 149_000
-			.saturating_add((52_421_000 as Weight).saturating_mul(r as Weight))
+		(203_795_000 as Weight)
+			// Standard Error: 759_000
+			.saturating_add((52_720_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().reads((4 as Weight).saturating_mul(r as Weight)))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
@@ -479,9 +490,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Timestamp Now (r:1 w:0)
 	// Storage: RandomnessCollectiveFlip RandomMaterial (r:1 w:0)
 	fn seal_random(r: u32, ) -> Weight {
-		(217_910_000 as Weight)
-			// Standard Error: 149_000
-			.saturating_add((157_525_000 as Weight).saturating_mul(r as Weight))
+		(215_805_000 as Weight)
+			// Standard Error: 158_000
+			.saturating_add((127_687_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(5 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -490,9 +501,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_deposit_event(r: u32, ) -> Weight {
-		(230_787_000 as Weight)
-			// Standard Error: 210_000
-			.saturating_add((296_973_000 as Weight).saturating_mul(r as Weight))
+		(215_300_000 as Weight)
+			// Standard Error: 143_000
+			.saturating_add((229_183_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -500,137 +511,137 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts ContractInfoOf (r:1 w:1)
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
-	// Storage: System EventTopics (r:100 w:100)
+	// Storage: System EventTopics (r:80 w:80)
 	fn seal_deposit_event_per_topic_and_kb(t: u32, n: u32, ) -> Weight {
-		(539_238_000 as Weight)
-			// Standard Error: 1_701_000
-			.saturating_add((294_348_000 as Weight).saturating_mul(t as Weight))
-			// Standard Error: 335_000
-			.saturating_add((82_116_000 as Weight).saturating_mul(n as Weight))
+		(459_865_000 as Weight)
+			// Standard Error: 1_733_000
+			.saturating_add((235_448_000 as Weight).saturating_mul(t as Weight))
+			// Standard Error: 341_000
+			.saturating_add((66_363_000 as Weight).saturating_mul(n as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
-			.saturating_add(T::DbWeight::get().reads((100 as Weight).saturating_mul(t as Weight)))
+			.saturating_add(T::DbWeight::get().reads((80 as Weight).saturating_mul(t as Weight)))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
-			.saturating_add(T::DbWeight::get().writes((100 as Weight).saturating_mul(t as Weight)))
+			.saturating_add(T::DbWeight::get().writes((80 as Weight).saturating_mul(t as Weight)))
 	}
 	// Storage: System Account (r:1 w:0)
 	// Storage: Contracts ContractInfoOf (r:1 w:1)
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_debug_message(r: u32, ) -> Weight {
-		(135_081_000 as Weight)
-			// Standard Error: 94_000
-			.saturating_add((39_247_000 as Weight).saturating_mul(r as Weight))
+		(137_820_000 as Weight)
+			// Standard Error: 77_000
+			.saturating_add((31_956_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
 	// Storage: Skipped Metadata (r:0 w:0)
 	fn seal_set_storage(r: u32, ) -> Weight {
-		(41_752_000 as Weight)
-			// Standard Error: 1_107_000
-			.saturating_add((403_473_000 as Weight).saturating_mul(r as Weight))
+		(94_007_000 as Weight)
+			// Standard Error: 589_000
+			.saturating_add((328_631_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
-			.saturating_add(T::DbWeight::get().reads((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(T::DbWeight::get().reads((80 as Weight).saturating_mul(r as Weight)))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
-			.saturating_add(T::DbWeight::get().writes((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(T::DbWeight::get().writes((80 as Weight).saturating_mul(r as Weight)))
 	}
 	// Storage: Skipped Metadata (r:0 w:0)
 	fn seal_set_storage_per_new_kb(n: u32, ) -> Weight {
-		(602_028_000 as Weight)
-			// Standard Error: 255_000
-			.saturating_add((28_303_000 as Weight).saturating_mul(n as Weight))
-			.saturating_add(T::DbWeight::get().reads(105 as Weight))
-			.saturating_add(T::DbWeight::get().writes(103 as Weight))
+		(528_794_000 as Weight)
+			// Standard Error: 233_000
+			.saturating_add((21_533_000 as Weight).saturating_mul(n as Weight))
+			.saturating_add(T::DbWeight::get().reads(85 as Weight))
+			.saturating_add(T::DbWeight::get().writes(83 as Weight))
 	}
 	// Storage: Skipped Metadata (r:0 w:0)
 	fn seal_set_storage_per_old_kb(n: u32, ) -> Weight {
-		(620_964_000 as Weight)
-			// Standard Error: 308_000
-			.saturating_add((11_338_000 as Weight).saturating_mul(n as Weight))
-			.saturating_add(T::DbWeight::get().reads(105 as Weight))
-			.saturating_add(T::DbWeight::get().writes(103 as Weight))
+		(543_507_000 as Weight)
+			// Standard Error: 270_000
+			.saturating_add((9_142_000 as Weight).saturating_mul(n as Weight))
+			.saturating_add(T::DbWeight::get().reads(85 as Weight))
+			.saturating_add(T::DbWeight::get().writes(83 as Weight))
 	}
 	// Storage: Skipped Metadata (r:0 w:0)
 	fn seal_clear_storage(r: u32, ) -> Weight {
-		(88_113_000 as Weight)
-			// Standard Error: 851_000
-			.saturating_add((381_671_000 as Weight).saturating_mul(r as Weight))
+		(129_893_000 as Weight)
+			// Standard Error: 471_000
+			.saturating_add((313_807_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(5 as Weight))
-			.saturating_add(T::DbWeight::get().reads((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(T::DbWeight::get().reads((80 as Weight).saturating_mul(r as Weight)))
 			.saturating_add(T::DbWeight::get().writes(3 as Weight))
-			.saturating_add(T::DbWeight::get().writes((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(T::DbWeight::get().writes((80 as Weight).saturating_mul(r as Weight)))
 	}
 	// Storage: Skipped Metadata (r:0 w:0)
 	fn seal_clear_storage_per_kb(n: u32, ) -> Weight {
-		(603_193_000 as Weight)
-			// Standard Error: 262_000
-			.saturating_add((10_286_000 as Weight).saturating_mul(n as Weight))
-			.saturating_add(T::DbWeight::get().reads(105 as Weight))
-			.saturating_add(T::DbWeight::get().writes(103 as Weight))
+		(532_323_000 as Weight)
+			// Standard Error: 204_000
+			.saturating_add((8_729_000 as Weight).saturating_mul(n as Weight))
+			.saturating_add(T::DbWeight::get().reads(85 as Weight))
+			.saturating_add(T::DbWeight::get().writes(83 as Weight))
 	}
 	// Storage: Skipped Metadata (r:0 w:0)
 	fn seal_get_storage(r: u32, ) -> Weight {
-		(112_477_000 as Weight)
-			// Standard Error: 666_000
-			.saturating_add((324_824_000 as Weight).saturating_mul(r as Weight))
+		(131_771_000 as Weight)
+			// Standard Error: 415_000
+			.saturating_add((269_174_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
-			.saturating_add(T::DbWeight::get().reads((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(T::DbWeight::get().reads((80 as Weight).saturating_mul(r as Weight)))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
 	// Storage: Skipped Metadata (r:0 w:0)
 	fn seal_get_storage_per_kb(n: u32, ) -> Weight {
-		(564_781_000 as Weight)
-			// Standard Error: 403_000
-			.saturating_add((63_824_000 as Weight).saturating_mul(n as Weight))
-			.saturating_add(T::DbWeight::get().reads(104 as Weight))
+		(494_409_000 as Weight)
+			// Standard Error: 280_000
+			.saturating_add((50_499_000 as Weight).saturating_mul(n as Weight))
+			.saturating_add(T::DbWeight::get().reads(84 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
 	// Storage: Skipped Metadata (r:0 w:0)
 	fn seal_contains_storage(r: u32, ) -> Weight {
-		(115_207_000 as Weight)
-			// Standard Error: 672_000
-			.saturating_add((290_919_000 as Weight).saturating_mul(r as Weight))
+		(133_366_000 as Weight)
+			// Standard Error: 400_000
+			.saturating_add((235_761_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
-			.saturating_add(T::DbWeight::get().reads((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(T::DbWeight::get().reads((80 as Weight).saturating_mul(r as Weight)))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
 	// Storage: Skipped Metadata (r:0 w:0)
 	fn seal_contains_storage_per_kb(n: u32, ) -> Weight {
-		(511_026_000 as Weight)
-			// Standard Error: 224_000
-			.saturating_add((10_138_000 as Weight).saturating_mul(n as Weight))
-			.saturating_add(T::DbWeight::get().reads(104 as Weight))
+		(447_828_000 as Weight)
+			// Standard Error: 197_000
+			.saturating_add((8_190_000 as Weight).saturating_mul(n as Weight))
+			.saturating_add(T::DbWeight::get().reads(84 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
 	// Storage: Skipped Metadata (r:0 w:0)
 	fn seal_take_storage(r: u32, ) -> Weight {
-		(79_113_000 as Weight)
-			// Standard Error: 904_000
-			.saturating_add((417_022_000 as Weight).saturating_mul(r as Weight))
+		(121_933_000 as Weight)
+			// Standard Error: 509_000
+			.saturating_add((342_550_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(5 as Weight))
-			.saturating_add(T::DbWeight::get().reads((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(T::DbWeight::get().reads((80 as Weight).saturating_mul(r as Weight)))
 			.saturating_add(T::DbWeight::get().writes(3 as Weight))
-			.saturating_add(T::DbWeight::get().writes((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(T::DbWeight::get().writes((80 as Weight).saturating_mul(r as Weight)))
 	}
 	// Storage: Skipped Metadata (r:0 w:0)
 	fn seal_take_storage_per_kb(n: u32, ) -> Weight {
-		(651_769_000 as Weight)
-			// Standard Error: 338_000
-			.saturating_add((65_576_000 as Weight).saturating_mul(n as Weight))
-			.saturating_add(T::DbWeight::get().reads(105 as Weight))
-			.saturating_add(T::DbWeight::get().writes(103 as Weight))
+		(578_648_000 as Weight)
+			// Standard Error: 320_000
+			.saturating_add((51_767_000 as Weight).saturating_mul(n as Weight))
+			.saturating_add(T::DbWeight::get().reads(85 as Weight))
+			.saturating_add(T::DbWeight::get().writes(83 as Weight))
 	}
 	// Storage: System Account (r:1 w:0)
 	// Storage: Contracts ContractInfoOf (r:1 w:1)
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_transfer(r: u32, ) -> Weight {
-		(93_588_000 as Weight)
-			// Standard Error: 1_444_000
-			.saturating_add((1_803_217_000 as Weight).saturating_mul(r as Weight))
+		(146_890_000 as Weight)
+			// Standard Error: 789_000
+			.saturating_add((1_427_230_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(5 as Weight))
-			.saturating_add(T::DbWeight::get().reads((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(T::DbWeight::get().reads((80 as Weight).saturating_mul(r as Weight)))
 			.saturating_add(T::DbWeight::get().writes(2 as Weight))
-			.saturating_add(T::DbWeight::get().writes((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(T::DbWeight::get().writes((80 as Weight).saturating_mul(r as Weight)))
 	}
 	// Storage: System Account (r:1 w:0)
 	// Storage: Contracts ContractInfoOf (r:1 w:1)
@@ -638,12 +649,12 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_call(r: u32, ) -> Weight {
 		(0 as Weight)
-			// Standard Error: 3_050_000
-			.saturating_add((19_925_209_000 as Weight).saturating_mul(r as Weight))
+			// Standard Error: 2_542_000
+			.saturating_add((15_063_367_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(5 as Weight))
-			.saturating_add(T::DbWeight::get().reads((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(T::DbWeight::get().reads((80 as Weight).saturating_mul(r as Weight)))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
-			.saturating_add(T::DbWeight::get().writes((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(T::DbWeight::get().writes((80 as Weight).saturating_mul(r as Weight)))
 	}
 	// Storage: System Account (r:1 w:0)
 	// Storage: Contracts ContractInfoOf (r:1 w:1)
@@ -651,56 +662,56 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_delegate_call(r: u32, ) -> Weight {
 		(0 as Weight)
-			// Standard Error: 7_377_000
-			.saturating_add((19_978_301_000 as Weight).saturating_mul(r as Weight))
-			.saturating_add(T::DbWeight::get().reads((99 as Weight).saturating_mul(r as Weight)))
+			// Standard Error: 3_267_000
+			.saturating_add((15_037_276_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add(T::DbWeight::get().reads((79 as Weight).saturating_mul(r as Weight)))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
 	// Storage: System Account (r:1 w:0)
-	// Storage: Contracts ContractInfoOf (r:101 w:101)
+	// Storage: Contracts ContractInfoOf (r:81 w:81)
 	// Storage: Contracts CodeStorage (r:2 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_call_per_transfer_clone_kb(t: u32, c: u32, ) -> Weight {
-		(11_124_804_000 as Weight)
-			// Standard Error: 21_475_000
-			.saturating_add((1_635_442_000 as Weight).saturating_mul(t as Weight))
-			// Standard Error: 9_000
-			.saturating_add((11_981_000 as Weight).saturating_mul(c as Weight))
-			.saturating_add(T::DbWeight::get().reads(105 as Weight))
-			.saturating_add(T::DbWeight::get().reads((101 as Weight).saturating_mul(t as Weight)))
-			.saturating_add(T::DbWeight::get().writes(101 as Weight))
-			.saturating_add(T::DbWeight::get().writes((101 as Weight).saturating_mul(t as Weight)))
+		(9_081_513_000 as Weight)
+			// Standard Error: 18_081_000
+			.saturating_add((1_388_391_000 as Weight).saturating_mul(t as Weight))
+			// Standard Error: 7_000
+			.saturating_add((9_653_000 as Weight).saturating_mul(c as Weight))
+			.saturating_add(T::DbWeight::get().reads(85 as Weight))
+			.saturating_add(T::DbWeight::get().reads((81 as Weight).saturating_mul(t as Weight)))
+			.saturating_add(T::DbWeight::get().writes(81 as Weight))
+			.saturating_add(T::DbWeight::get().writes((81 as Weight).saturating_mul(t as Weight)))
 	}
 	// Storage: System Account (r:1 w:0)
 	// Storage: Contracts ContractInfoOf (r:1 w:1)
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	// Storage: Contracts Nonce (r:1 w:1)
-	// Storage: Contracts OwnerInfoOf (r:100 w:100)
+	// Storage: Contracts OwnerInfoOf (r:80 w:80)
 	fn seal_instantiate(r: u32, ) -> Weight {
 		(0 as Weight)
-			// Standard Error: 47_682_000
-			.saturating_add((27_883_754_000 as Weight).saturating_mul(r as Weight))
+			// Standard Error: 34_560_000
+			.saturating_add((20_828_575_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(6 as Weight))
-			.saturating_add(T::DbWeight::get().reads((400 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(T::DbWeight::get().reads((320 as Weight).saturating_mul(r as Weight)))
 			.saturating_add(T::DbWeight::get().writes(3 as Weight))
-			.saturating_add(T::DbWeight::get().writes((400 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(T::DbWeight::get().writes((320 as Weight).saturating_mul(r as Weight)))
 	}
-	// Storage: System Account (r:101 w:101)
-	// Storage: Contracts ContractInfoOf (r:101 w:101)
+	// Storage: System Account (r:81 w:81)
+	// Storage: Contracts ContractInfoOf (r:81 w:81)
 	// Storage: Contracts CodeStorage (r:2 w:1)
 	// Storage: Timestamp Now (r:1 w:0)
 	// Storage: Contracts Nonce (r:1 w:1)
 	// Storage: Contracts OwnerInfoOf (r:1 w:1)
 	fn seal_instantiate_per_transfer_salt_kb(t: u32, s: u32, ) -> Weight {
-		(14_824_308_000 as Weight)
-			// Standard Error: 39_823_000
-			.saturating_add((880_630_000 as Weight).saturating_mul(t as Weight))
-			// Standard Error: 18_000
-			.saturating_add((156_232_000 as Weight).saturating_mul(s as Weight))
-			.saturating_add(T::DbWeight::get().reads(207 as Weight))
+		(12_124_898_000 as Weight)
+			// Standard Error: 34_430_000
+			.saturating_add((573_971_000 as Weight).saturating_mul(t as Weight))
+			// Standard Error: 16_000
+			.saturating_add((123_415_000 as Weight).saturating_mul(s as Weight))
+			.saturating_add(T::DbWeight::get().reads(167 as Weight))
 			.saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(t as Weight)))
-			.saturating_add(T::DbWeight::get().writes(205 as Weight))
+			.saturating_add(T::DbWeight::get().writes(165 as Weight))
 			.saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(t as Weight)))
 	}
 	// Storage: System Account (r:1 w:0)
@@ -708,9 +719,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_hash_sha2_256(r: u32, ) -> Weight {
-		(218_378_000 as Weight)
-			// Standard Error: 131_000
-			.saturating_add((78_260_000 as Weight).saturating_mul(r as Weight))
+		(203_422_000 as Weight)
+			// Standard Error: 126_000
+			.saturating_add((65_317_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -719,9 +730,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_hash_sha2_256_per_kb(n: u32, ) -> Weight {
-		(202_849_000 as Weight)
-			// Standard Error: 61_000
-			.saturating_add((466_532_000 as Weight).saturating_mul(n as Weight))
+		(411_079_000 as Weight)
+			// Standard Error: 20_000
+			.saturating_add((354_947_000 as Weight).saturating_mul(n as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -730,9 +741,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_hash_keccak_256(r: u32, ) -> Weight {
-		(220_258_000 as Weight)
-			// Standard Error: 147_000
-			.saturating_add((90_363_000 as Weight).saturating_mul(r as Weight))
+		(203_192_000 as Weight)
+			// Standard Error: 116_000
+			.saturating_add((73_562_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -741,9 +752,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_hash_keccak_256_per_kb(n: u32, ) -> Weight {
-		(232_371_000 as Weight)
-			// Standard Error: 23_000
-			.saturating_add((307_036_000 as Weight).saturating_mul(n as Weight))
+		(227_572_000 as Weight)
+			// Standard Error: 13_000
+			.saturating_add((244_646_000 as Weight).saturating_mul(n as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -752,9 +763,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_hash_blake2_256(r: u32, ) -> Weight {
-		(217_991_000 as Weight)
-			// Standard Error: 124_000
-			.saturating_add((62_273_000 as Weight).saturating_mul(r as Weight))
+		(204_922_000 as Weight)
+			// Standard Error: 112_000
+			.saturating_add((51_349_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -763,9 +774,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_hash_blake2_256_per_kb(n: u32, ) -> Weight {
-		(396_282_000 as Weight)
-			// Standard Error: 13_000
-			.saturating_add((119_575_000 as Weight).saturating_mul(n as Weight))
+		(247_293_000 as Weight)
+			// Standard Error: 17_000
+			.saturating_add((94_654_000 as Weight).saturating_mul(n as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -774,9 +785,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_hash_blake2_128(r: u32, ) -> Weight {
-		(217_578_000 as Weight)
-			// Standard Error: 104_000
-			.saturating_add((62_189_000 as Weight).saturating_mul(r as Weight))
+		(203_511_000 as Weight)
+			// Standard Error: 108_000
+			.saturating_add((50_585_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -785,9 +796,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_hash_blake2_128_per_kb(n: u32, ) -> Weight {
-		(358_167_000 as Weight)
-			// Standard Error: 15_000
-			.saturating_add((119_692_000 as Weight).saturating_mul(n as Weight))
+		(253_133_000 as Weight)
+			// Standard Error: 10_000
+			.saturating_add((94_606_000 as Weight).saturating_mul(n as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -796,9 +807,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_ecdsa_recover(r: u32, ) -> Weight {
-		(292_884_000 as Weight)
-			// Standard Error: 683_000
-			.saturating_add((3_824_902_000 as Weight).saturating_mul(r as Weight))
+		(280_685_000 as Weight)
+			// Standard Error: 627_000
+			.saturating_add((3_062_997_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -807,9 +818,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_ecdsa_to_eth_address(r: u32, ) -> Weight {
-		(272_893_000 as Weight)
-			// Standard Error: 1_438_000
-			.saturating_add((15_412_877_000 as Weight).saturating_mul(r as Weight))
+		(212_204_000 as Weight)
+			// Standard Error: 469_000
+			.saturating_add((2_034_397_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -817,268 +828,268 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// Storage: Contracts ContractInfoOf (r:1 w:1)
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
-	// Storage: Contracts OwnerInfoOf (r:36 w:36)
+	// Storage: Contracts OwnerInfoOf (r:16 w:16)
 	fn seal_set_code_hash(r: u32, ) -> Weight {
 		(0 as Weight)
-			// Standard Error: 2_302_000
-			.saturating_add((922_467_000 as Weight).saturating_mul(r as Weight))
-			.saturating_add(T::DbWeight::get().reads((99 as Weight).saturating_mul(r as Weight)))
-			.saturating_add(T::DbWeight::get().writes((99 as Weight).saturating_mul(r as Weight)))
+			// Standard Error: 1_507_000
+			.saturating_add((747_481_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add(T::DbWeight::get().reads((79 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(T::DbWeight::get().writes((79 as Weight).saturating_mul(r as Weight)))
 	}
 	fn instr_i64const(r: u32, ) -> Weight {
-		(74_516_000 as Weight)
+		(74_627_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((592_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((593_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64load(r: u32, ) -> Weight {
-		(74_430_000 as Weight)
-			// Standard Error: 2_000
-			.saturating_add((1_320_000 as Weight).saturating_mul(r as Weight))
+		(74_587_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((1_294_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64store(r: u32, ) -> Weight {
-		(74_440_000 as Weight)
-			// Standard Error: 2_000
-			.saturating_add((1_428_000 as Weight).saturating_mul(r as Weight))
+		(74_392_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((1_381_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_select(r: u32, ) -> Weight {
-		(74_151_000 as Weight)
-			// Standard Error: 2_000
-			.saturating_add((1_782_000 as Weight).saturating_mul(r as Weight))
+		(73_823_000 as Weight)
+			// Standard Error: 3_000
+			.saturating_add((1_780_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_if(r: u32, ) -> Weight {
-		(74_225_000 as Weight)
-			// Standard Error: 3_000
-			.saturating_add((1_887_000 as Weight).saturating_mul(r as Weight))
+		(74_072_000 as Weight)
+			// Standard Error: 2_000
+			.saturating_add((1_946_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_br(r: u32, ) -> Weight {
-		(73_987_000 as Weight)
+		(73_981_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((898_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((930_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_br_if(r: u32, ) -> Weight {
-		(73_305_000 as Weight)
-			// Standard Error: 4_000
-			.saturating_add((1_465_000 as Weight).saturating_mul(r as Weight))
+		(73_690_000 as Weight)
+			// Standard Error: 3_000
+			.saturating_add((1_433_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_br_table(r: u32, ) -> Weight {
-		(73_037_000 as Weight)
-			// Standard Error: 3_000
-			.saturating_add((1_605_000 as Weight).saturating_mul(r as Weight))
+		(74_317_000 as Weight)
+			// Standard Error: 8_000
+			.saturating_add((1_571_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_br_table_per_entry(e: u32, ) -> Weight {
-		(76_434_000 as Weight)
+		(76_373_000 as Weight)
 			// Standard Error: 0
 			.saturating_add((4_000 as Weight).saturating_mul(e as Weight))
 	}
 	fn instr_call(r: u32, ) -> Weight {
-		(75_461_000 as Weight)
+		(76_013_000 as Weight)
 			// Standard Error: 10_000
-			.saturating_add((7_446_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((6_848_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_call_indirect(r: u32, ) -> Weight {
-		(87_222_000 as Weight)
-			// Standard Error: 15_000
-			.saturating_add((9_406_000 as Weight).saturating_mul(r as Weight))
+		(88_704_000 as Weight)
+			// Standard Error: 16_000
+			.saturating_add((8_824_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_call_indirect_per_param(p: u32, ) -> Weight {
-		(97_204_000 as Weight)
+		(97_846_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((472_000 as Weight).saturating_mul(p as Weight))
+			.saturating_add((471_000 as Weight).saturating_mul(p as Weight))
 	}
 	fn instr_local_get(r: u32, ) -> Weight {
-		(75_299_000 as Weight)
+		(75_010_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((601_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((612_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_local_set(r: u32, ) -> Weight {
-		(74_827_000 as Weight)
-			// Standard Error: 3_000
-			.saturating_add((686_000 as Weight).saturating_mul(r as Weight))
+		(74_636_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((681_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_local_tee(r: u32, ) -> Weight {
-		(74_624_000 as Weight)
-			// Standard Error: 2_000
-			.saturating_add((895_000 as Weight).saturating_mul(r as Weight))
+		(74_196_000 as Weight)
+			// Standard Error: 0
+			.saturating_add((916_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_global_get(r: u32, ) -> Weight {
-		(77_435_000 as Weight)
-			// Standard Error: 3_000
-			.saturating_add((1_201_000 as Weight).saturating_mul(r as Weight))
+		(77_349_000 as Weight)
+			// Standard Error: 2_000
+			.saturating_add((1_176_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_global_set(r: u32, ) -> Weight {
-		(76_693_000 as Weight)
-			// Standard Error: 3_000
-			.saturating_add((1_410_000 as Weight).saturating_mul(r as Weight))
+		(76_861_000 as Weight)
+			// Standard Error: 4_000
+			.saturating_add((1_383_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_memory_current(r: u32, ) -> Weight {
-		(74_244_000 as Weight)
-			// Standard Error: 1_000
-			.saturating_add((660_000 as Weight).saturating_mul(r as Weight))
+		(74_696_000 as Weight)
+			// Standard Error: 2_000
+			.saturating_add((655_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_memory_grow(r: u32, ) -> Weight {
-		(73_527_000 as Weight)
-			// Standard Error: 931_000
-			.saturating_add((184_946_000 as Weight).saturating_mul(r as Weight))
+		(73_522_000 as Weight)
+			// Standard Error: 50_000
+			.saturating_add((179_720_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64clz(r: u32, ) -> Weight {
-		(74_181_000 as Weight)
-			// Standard Error: 6_000
-			.saturating_add((906_000 as Weight).saturating_mul(r as Weight))
+		(74_292_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((884_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64ctz(r: u32, ) -> Weight {
-		(74_339_000 as Weight)
+		(74_299_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((896_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((882_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64popcnt(r: u32, ) -> Weight {
-		(74_444_000 as Weight)
-			// Standard Error: 3_000
-			.saturating_add((889_000 as Weight).saturating_mul(r as Weight))
+		(74_289_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((883_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64eqz(r: u32, ) -> Weight {
-		(74_572_000 as Weight)
-			// Standard Error: 1_000
-			.saturating_add((908_000 as Weight).saturating_mul(r as Weight))
+		(74_120_000 as Weight)
+			// Standard Error: 2_000
+			.saturating_add((899_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64extendsi32(r: u32, ) -> Weight {
-		(74_349_000 as Weight)
-			// Standard Error: 2_000
-			.saturating_add((881_000 as Weight).saturating_mul(r as Weight))
+		(74_599_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((851_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64extendui32(r: u32, ) -> Weight {
-		(74_426_000 as Weight)
-			// Standard Error: 1_000
-			.saturating_add((875_000 as Weight).saturating_mul(r as Weight))
+		(74_622_000 as Weight)
+			// Standard Error: 2_000
+			.saturating_add((854_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i32wrapi64(r: u32, ) -> Weight {
-		(74_172_000 as Weight)
+		(74_504_000 as Weight)
 			// Standard Error: 2_000
-			.saturating_add((906_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((874_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64eq(r: u32, ) -> Weight {
-		(74_169_000 as Weight)
-			// Standard Error: 1_000
-			.saturating_add((1_362_000 as Weight).saturating_mul(r as Weight))
+		(74_532_000 as Weight)
+			// Standard Error: 2_000
+			.saturating_add((1_338_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64ne(r: u32, ) -> Weight {
-		(74_205_000 as Weight)
-			// Standard Error: 4_000
-			.saturating_add((1_360_000 as Weight).saturating_mul(r as Weight))
+		(74_130_000 as Weight)
+			// Standard Error: 2_000
+			.saturating_add((1_347_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64lts(r: u32, ) -> Weight {
-		(74_237_000 as Weight)
-			// Standard Error: 3_000
-			.saturating_add((1_356_000 as Weight).saturating_mul(r as Weight))
+		(74_172_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((1_343_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64ltu(r: u32, ) -> Weight {
-		(74_181_000 as Weight)
+		(74_356_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((1_357_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((1_338_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64gts(r: u32, ) -> Weight {
-		(74_038_000 as Weight)
-			// Standard Error: 2_000
-			.saturating_add((1_360_000 as Weight).saturating_mul(r as Weight))
+		(74_181_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((1_343_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64gtu(r: u32, ) -> Weight {
-		(73_881_000 as Weight)
-			// Standard Error: 2_000
-			.saturating_add((1_372_000 as Weight).saturating_mul(r as Weight))
+		(74_045_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((1_358_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64les(r: u32, ) -> Weight {
-		(73_969_000 as Weight)
-			// Standard Error: 0
-			.saturating_add((1_361_000 as Weight).saturating_mul(r as Weight))
+		(74_246_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((1_341_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64leu(r: u32, ) -> Weight {
-		(74_497_000 as Weight)
-			// Standard Error: 3_000
-			.saturating_add((1_359_000 as Weight).saturating_mul(r as Weight))
+		(73_998_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((1_363_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64ges(r: u32, ) -> Weight {
-		(74_275_000 as Weight)
+		(74_035_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((1_354_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((1_348_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64geu(r: u32, ) -> Weight {
-		(74_349_000 as Weight)
-			// Standard Error: 3_000
-			.saturating_add((1_357_000 as Weight).saturating_mul(r as Weight))
+		(74_511_000 as Weight)
+			// Standard Error: 2_000
+			.saturating_add((1_335_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64add(r: u32, ) -> Weight {
-		(74_192_000 as Weight)
+		(74_305_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((1_333_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((1_319_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64sub(r: u32, ) -> Weight {
-		(74_271_000 as Weight)
+		(74_214_000 as Weight)
 			// Standard Error: 2_000
-			.saturating_add((1_340_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((1_321_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64mul(r: u32, ) -> Weight {
-		(73_971_000 as Weight)
+		(74_073_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((1_340_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((1_323_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64divs(r: u32, ) -> Weight {
-		(74_546_000 as Weight)
+		(74_295_000 as Weight)
 			// Standard Error: 2_000
-			.saturating_add((1_995_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((1_986_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64divu(r: u32, ) -> Weight {
-		(74_194_000 as Weight)
+		(74_109_000 as Weight)
 			// Standard Error: 2_000
-			.saturating_add((2_050_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((2_023_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64rems(r: u32, ) -> Weight {
-		(74_106_000 as Weight)
+		(73_990_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((1_997_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((1_993_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64remu(r: u32, ) -> Weight {
-		(74_219_000 as Weight)
-			// Standard Error: 5_000
-			.saturating_add((2_061_000 as Weight).saturating_mul(r as Weight))
+		(73_940_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((2_056_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64and(r: u32, ) -> Weight {
-		(74_157_000 as Weight)
-			// Standard Error: 2_000
-			.saturating_add((1_338_000 as Weight).saturating_mul(r as Weight))
+		(74_261_000 as Weight)
+			// Standard Error: 5_000
+			.saturating_add((1_326_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64or(r: u32, ) -> Weight {
-		(74_135_000 as Weight)
+		(74_014_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((1_336_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((1_324_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64xor(r: u32, ) -> Weight {
-		(74_038_000 as Weight)
-			// Standard Error: 3_000
-			.saturating_add((1_345_000 as Weight).saturating_mul(r as Weight))
+		(74_220_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((1_323_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64shl(r: u32, ) -> Weight {
-		(74_011_000 as Weight)
-			// Standard Error: 3_000
-			.saturating_add((1_362_000 as Weight).saturating_mul(r as Weight))
+		(74_139_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((1_343_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64shrs(r: u32, ) -> Weight {
-		(74_054_000 as Weight)
+		(73_923_000 as Weight)
 			// Standard Error: 2_000
 			.saturating_add((1_356_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64shru(r: u32, ) -> Weight {
-		(73_900_000 as Weight)
+		(73_999_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((1_358_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((1_352_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64rotl(r: u32, ) -> Weight {
-		(73_948_000 as Weight)
-			// Standard Error: 0
-			.saturating_add((1_357_000 as Weight).saturating_mul(r as Weight))
+		(74_312_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((1_340_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64rotr(r: u32, ) -> Weight {
-		(73_972_000 as Weight)
+		(73_988_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((1_358_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((1_349_000 as Weight).saturating_mul(r as Weight))
 	}
 }
 
@@ -1086,14 +1097,14 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 impl WeightInfo for () {
 	// Storage: Contracts DeletionQueue (r:1 w:0)
 	fn on_initialize() -> Weight {
-		(1_569_000 as Weight)
+		(1_641_000 as Weight)
 			.saturating_add(RocksDbWeight::get().reads(1 as Weight))
 	}
 	// Storage: Skipped Metadata (r:0 w:0)
 	fn on_initialize_per_trie_key(k: u32, ) -> Weight {
-		(9_620_000 as Weight)
+		(11_282_000 as Weight)
 			// Standard Error: 0
-			.saturating_add((748_000 as Weight).saturating_mul(k as Weight))
+			.saturating_add((758_000 as Weight).saturating_mul(k as Weight))
 			.saturating_add(RocksDbWeight::get().reads(1 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 			.saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(k as Weight)))
@@ -1101,17 +1112,17 @@ impl WeightInfo for () {
 	// Storage: Contracts DeletionQueue (r:1 w:0)
 	fn on_initialize_per_queue_item(q: u32, ) -> Weight {
 		(0 as Weight)
-			// Standard Error: 4_000
-			.saturating_add((1_795_000 as Weight).saturating_mul(q as Weight))
+			// Standard Error: 5_000
+			.saturating_add((1_892_000 as Weight).saturating_mul(q as Weight))
 			.saturating_add(RocksDbWeight::get().reads(1 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
 	// Storage: Contracts PristineCode (r:1 w:0)
 	// Storage: Contracts CodeStorage (r:0 w:1)
 	fn reinstrument(c: u32, ) -> Weight {
-		(12_256_000 as Weight)
+		(19_908_000 as Weight)
 			// Standard Error: 0
-			.saturating_add((49_000 as Weight).saturating_mul(c as Weight))
+			.saturating_add((48_000 as Weight).saturating_mul(c as Weight))
 			.saturating_add(RocksDbWeight::get().reads(1 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1120,9 +1131,9 @@ impl WeightInfo for () {
 	// Storage: Timestamp Now (r:1 w:0)
 	// Storage: System Account (r:1 w:1)
 	fn call_with_code_per_byte(c: u32, ) -> Weight {
-		(213_494_000 as Weight)
+		(200_315_000 as Weight)
 			// Standard Error: 0
-			.saturating_add((53_000 as Weight).saturating_mul(c as Weight))
+			.saturating_add((51_000 as Weight).saturating_mul(c as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(2 as Weight))
 	}
@@ -1134,9 +1145,9 @@ impl WeightInfo for () {
 	// Storage: Contracts PristineCode (r:0 w:1)
 	// Storage: Contracts OwnerInfoOf (r:0 w:1)
 	fn instantiate_with_code(c: u32, s: u32, ) -> Weight {
-		(231_180_000 as Weight)
+		(252_036_000 as Weight)
 			// Standard Error: 0
-			.saturating_add((125_000 as Weight).saturating_mul(c as Weight))
+			.saturating_add((121_000 as Weight).saturating_mul(c as Weight))
 			// Standard Error: 0
 			.saturating_add((2_000 as Weight).saturating_mul(s as Weight))
 			.saturating_add(RocksDbWeight::get().reads(5 as Weight))
@@ -1149,7 +1160,7 @@ impl WeightInfo for () {
 	// Storage: System Account (r:1 w:1)
 	// Storage: Contracts OwnerInfoOf (r:1 w:1)
 	fn instantiate(s: u32, ) -> Weight {
-		(172_238_000 as Weight)
+		(177_274_000 as Weight)
 			// Standard Error: 0
 			.saturating_add((2_000 as Weight).saturating_mul(s as Weight))
 			.saturating_add(RocksDbWeight::get().reads(6 as Weight))
@@ -1160,7 +1171,7 @@ impl WeightInfo for () {
 	// Storage: Timestamp Now (r:1 w:0)
 	// Storage: System Account (r:1 w:1)
 	fn call() -> Weight {
-		(140_912_000 as Weight)
+		(146_086_000 as Weight)
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(2 as Weight))
 	}
@@ -1168,7 +1179,7 @@ impl WeightInfo for () {
 	// Storage: Contracts PristineCode (r:0 w:1)
 	// Storage: Contracts OwnerInfoOf (r:0 w:1)
 	fn upload_code(c: u32, ) -> Weight {
-		(42_493_000 as Weight)
+		(43_995_000 as Weight)
 			// Standard Error: 0
 			.saturating_add((49_000 as Weight).saturating_mul(c as Weight))
 			.saturating_add(RocksDbWeight::get().reads(1 as Weight))
@@ -1178,18 +1189,25 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:0 w:1)
 	// Storage: Contracts PristineCode (r:0 w:1)
 	fn remove_code() -> Weight {
-		(24_533_000 as Weight)
+		(25_007_000 as Weight)
 			.saturating_add(RocksDbWeight::get().reads(1 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(3 as Weight))
 	}
+	// Storage: Contracts ContractInfoOf (r:1 w:1)
+	// Storage: Contracts OwnerInfoOf (r:2 w:2)
+	fn set_code() -> Weight {
+		(22_940_000 as Weight)
+			.saturating_add(RocksDbWeight::get().reads(3 as Weight))
+			.saturating_add(RocksDbWeight::get().writes(3 as Weight))
+	}
 	// Storage: System Account (r:1 w:0)
 	// Storage: Contracts ContractInfoOf (r:1 w:1)
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_caller(r: u32, ) -> Weight {
-		(220_009_000 as Weight)
-			// Standard Error: 80_000
-			.saturating_add((47_887_000 as Weight).saturating_mul(r as Weight))
+		(207_387_000 as Weight)
+			// Standard Error: 88_000
+			.saturating_add((40_577_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1198,11 +1216,11 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_is_contract(r: u32, ) -> Weight {
-		(71_779_000 as Weight)
-			// Standard Error: 900_000
-			.saturating_add((371_278_000 as Weight).saturating_mul(r as Weight))
+		(96_692_000 as Weight)
+			// Standard Error: 688_000
+			.saturating_add((313_348_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
-			.saturating_add(RocksDbWeight::get().reads((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(RocksDbWeight::get().reads((80 as Weight).saturating_mul(r as Weight)))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
 	// Storage: System Account (r:1 w:0)
@@ -1210,11 +1228,11 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_code_hash(r: u32, ) -> Weight {
-		(0 as Weight)
-			// Standard Error: 2_329_000
-			.saturating_add((451_731_000 as Weight).saturating_mul(r as Weight))
+		(107_076_000 as Weight)
+			// Standard Error: 721_000
+			.saturating_add((370_976_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
-			.saturating_add(RocksDbWeight::get().reads((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(RocksDbWeight::get().reads((80 as Weight).saturating_mul(r as Weight)))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
 	// Storage: System Account (r:1 w:0)
@@ -1222,9 +1240,9 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_own_code_hash(r: u32, ) -> Weight {
-		(227_824_000 as Weight)
-			// Standard Error: 128_000
-			.saturating_add((52_843_000 as Weight).saturating_mul(r as Weight))
+		(207_147_000 as Weight)
+			// Standard Error: 112_000
+			.saturating_add((43_974_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1233,9 +1251,9 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_caller_is_origin(r: u32, ) -> Weight {
-		(213_057_000 as Weight)
-			// Standard Error: 43_000
-			.saturating_add((21_023_000 as Weight).saturating_mul(r as Weight))
+		(203_029_000 as Weight)
+			// Standard Error: 31_000
+			.saturating_add((16_811_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1244,9 +1262,9 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_address(r: u32, ) -> Weight {
-		(219_066_000 as Weight)
-			// Standard Error: 117_000
-			.saturating_add((48_056_000 as Weight).saturating_mul(r as Weight))
+		(206_641_000 as Weight)
+			// Standard Error: 86_000
+			.saturating_add((40_239_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1255,9 +1273,9 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_gas_left(r: u32, ) -> Weight {
-		(218_844_000 as Weight)
-			// Standard Error: 101_000
-			.saturating_add((47_325_000 as Weight).saturating_mul(r as Weight))
+		(205_195_000 as Weight)
+			// Standard Error: 85_000
+			.saturating_add((39_915_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1266,9 +1284,9 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_balance(r: u32, ) -> Weight {
-		(219_234_000 as Weight)
-			// Standard Error: 171_000
-			.saturating_add((142_534_000 as Weight).saturating_mul(r as Weight))
+		(213_345_000 as Weight)
+			// Standard Error: 126_000
+			.saturating_add((116_249_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(5 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1277,9 +1295,9 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_value_transferred(r: u32, ) -> Weight {
-		(215_128_000 as Weight)
-			// Standard Error: 119_000
-			.saturating_add((48_392_000 as Weight).saturating_mul(r as Weight))
+		(206_141_000 as Weight)
+			// Standard Error: 96_000
+			.saturating_add((39_999_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1288,9 +1306,9 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_minimum_balance(r: u32, ) -> Weight {
-		(214_603_000 as Weight)
-			// Standard Error: 115_000
-			.saturating_add((48_041_000 as Weight).saturating_mul(r as Weight))
+		(205_569_000 as Weight)
+			// Standard Error: 104_000
+			.saturating_add((40_046_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1299,9 +1317,9 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_block_number(r: u32, ) -> Weight {
-		(214_091_000 as Weight)
-			// Standard Error: 126_000
-			.saturating_add((48_067_000 as Weight).saturating_mul(r as Weight))
+		(205_782_000 as Weight)
+			// Standard Error: 89_000
+			.saturating_add((39_757_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1310,9 +1328,9 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_now(r: u32, ) -> Weight {
-		(214_418_000 as Weight)
-			// Standard Error: 100_000
-			.saturating_add((47_791_000 as Weight).saturating_mul(r as Weight))
+		(205_465_000 as Weight)
+			// Standard Error: 87_000
+			.saturating_add((39_605_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1322,9 +1340,9 @@ impl WeightInfo for () {
 	// Storage: Timestamp Now (r:1 w:0)
 	// Storage: TransactionPayment NextFeeMultiplier (r:1 w:0)
 	fn seal_weight_to_fee(r: u32, ) -> Weight {
-		(229_261_000 as Weight)
-			// Standard Error: 150_000
-			.saturating_add((121_988_000 as Weight).saturating_mul(r as Weight))
+		(208_900_000 as Weight)
+			// Standard Error: 108_000
+			.saturating_add((101_341_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(5 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1333,9 +1351,9 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_gas(r: u32, ) -> Weight {
-		(127_983_000 as Weight)
-			// Standard Error: 56_000
-			.saturating_add((24_016_000 as Weight).saturating_mul(r as Weight))
+		(132_788_000 as Weight)
+			// Standard Error: 22_000
+			.saturating_add((19_129_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1344,9 +1362,9 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_input(r: u32, ) -> Weight {
-		(216_634_000 as Weight)
-			// Standard Error: 114_000
-			.saturating_add((46_864_000 as Weight).saturating_mul(r as Weight))
+		(205_111_000 as Weight)
+			// Standard Error: 96_000
+			.saturating_add((39_317_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1355,9 +1373,9 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_input_per_kb(n: u32, ) -> Weight {
-		(285_180_000 as Weight)
-			// Standard Error: 4_000
-			.saturating_add((11_899_000 as Weight).saturating_mul(n as Weight))
+		(263_644_000 as Weight)
+			// Standard Error: 3_000
+			.saturating_add((9_593_000 as Weight).saturating_mul(n as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1365,8 +1383,10 @@ impl WeightInfo for () {
 	// Storage: Contracts ContractInfoOf (r:1 w:1)
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
-	fn seal_return(_r: u32, ) -> Weight {
-		(215_379_000 as Weight)
+	fn seal_return(r: u32, ) -> Weight {
+		(201_299_000 as Weight)
+			// Standard Error: 903_000
+			.saturating_add((947_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1375,9 +1395,9 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_return_per_kb(n: u32, ) -> Weight {
-		(213_957_000 as Weight)
+		(202_730_000 as Weight)
 			// Standard Error: 0
-			.saturating_add((201_000 as Weight).saturating_mul(n as Weight))
+			.saturating_add((183_000 as Weight).saturating_mul(n as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1388,9 +1408,9 @@ impl WeightInfo for () {
 	// Storage: Contracts DeletionQueue (r:1 w:1)
 	// Storage: Contracts OwnerInfoOf (r:1 w:1)
 	fn seal_terminate(r: u32, ) -> Weight {
-		(215_782_000 as Weight)
-			// Standard Error: 149_000
-			.saturating_add((52_421_000 as Weight).saturating_mul(r as Weight))
+		(203_795_000 as Weight)
+			// Standard Error: 759_000
+			.saturating_add((52_720_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().reads((4 as Weight).saturating_mul(r as Weight)))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
@@ -1402,9 +1422,9 @@ impl WeightInfo for () {
 	// Storage: Timestamp Now (r:1 w:0)
 	// Storage: RandomnessCollectiveFlip RandomMaterial (r:1 w:0)
 	fn seal_random(r: u32, ) -> Weight {
-		(217_910_000 as Weight)
-			// Standard Error: 149_000
-			.saturating_add((157_525_000 as Weight).saturating_mul(r as Weight))
+		(215_805_000 as Weight)
+			// Standard Error: 158_000
+			.saturating_add((127_687_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(5 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1413,9 +1433,9 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_deposit_event(r: u32, ) -> Weight {
-		(230_787_000 as Weight)
-			// Standard Error: 210_000
-			.saturating_add((296_973_000 as Weight).saturating_mul(r as Weight))
+		(215_300_000 as Weight)
+			// Standard Error: 143_000
+			.saturating_add((229_183_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1423,137 +1443,137 @@ impl WeightInfo for () {
 	// Storage: Contracts ContractInfoOf (r:1 w:1)
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
-	// Storage: System EventTopics (r:100 w:100)
+	// Storage: System EventTopics (r:80 w:80)
 	fn seal_deposit_event_per_topic_and_kb(t: u32, n: u32, ) -> Weight {
-		(539_238_000 as Weight)
-			// Standard Error: 1_701_000
-			.saturating_add((294_348_000 as Weight).saturating_mul(t as Weight))
-			// Standard Error: 335_000
-			.saturating_add((82_116_000 as Weight).saturating_mul(n as Weight))
+		(459_865_000 as Weight)
+			// Standard Error: 1_733_000
+			.saturating_add((235_448_000 as Weight).saturating_mul(t as Weight))
+			// Standard Error: 341_000
+			.saturating_add((66_363_000 as Weight).saturating_mul(n as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
-			.saturating_add(RocksDbWeight::get().reads((100 as Weight).saturating_mul(t as Weight)))
+			.saturating_add(RocksDbWeight::get().reads((80 as Weight).saturating_mul(t as Weight)))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
-			.saturating_add(RocksDbWeight::get().writes((100 as Weight).saturating_mul(t as Weight)))
+			.saturating_add(RocksDbWeight::get().writes((80 as Weight).saturating_mul(t as Weight)))
 	}
 	// Storage: System Account (r:1 w:0)
 	// Storage: Contracts ContractInfoOf (r:1 w:1)
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_debug_message(r: u32, ) -> Weight {
-		(135_081_000 as Weight)
-			// Standard Error: 94_000
-			.saturating_add((39_247_000 as Weight).saturating_mul(r as Weight))
+		(137_820_000 as Weight)
+			// Standard Error: 77_000
+			.saturating_add((31_956_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
 	// Storage: Skipped Metadata (r:0 w:0)
 	fn seal_set_storage(r: u32, ) -> Weight {
-		(41_752_000 as Weight)
-			// Standard Error: 1_107_000
-			.saturating_add((403_473_000 as Weight).saturating_mul(r as Weight))
+		(94_007_000 as Weight)
+			// Standard Error: 589_000
+			.saturating_add((328_631_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
-			.saturating_add(RocksDbWeight::get().reads((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(RocksDbWeight::get().reads((80 as Weight).saturating_mul(r as Weight)))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
-			.saturating_add(RocksDbWeight::get().writes((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(RocksDbWeight::get().writes((80 as Weight).saturating_mul(r as Weight)))
 	}
 	// Storage: Skipped Metadata (r:0 w:0)
 	fn seal_set_storage_per_new_kb(n: u32, ) -> Weight {
-		(602_028_000 as Weight)
-			// Standard Error: 255_000
-			.saturating_add((28_303_000 as Weight).saturating_mul(n as Weight))
-			.saturating_add(RocksDbWeight::get().reads(105 as Weight))
-			.saturating_add(RocksDbWeight::get().writes(103 as Weight))
+		(528_794_000 as Weight)
+			// Standard Error: 233_000
+			.saturating_add((21_533_000 as Weight).saturating_mul(n as Weight))
+			.saturating_add(RocksDbWeight::get().reads(85 as Weight))
+			.saturating_add(RocksDbWeight::get().writes(83 as Weight))
 	}
 	// Storage: Skipped Metadata (r:0 w:0)
 	fn seal_set_storage_per_old_kb(n: u32, ) -> Weight {
-		(620_964_000 as Weight)
-			// Standard Error: 308_000
-			.saturating_add((11_338_000 as Weight).saturating_mul(n as Weight))
-			.saturating_add(RocksDbWeight::get().reads(105 as Weight))
-			.saturating_add(RocksDbWeight::get().writes(103 as Weight))
+		(543_507_000 as Weight)
+			// Standard Error: 270_000
+			.saturating_add((9_142_000 as Weight).saturating_mul(n as Weight))
+			.saturating_add(RocksDbWeight::get().reads(85 as Weight))
+			.saturating_add(RocksDbWeight::get().writes(83 as Weight))
 	}
 	// Storage: Skipped Metadata (r:0 w:0)
 	fn seal_clear_storage(r: u32, ) -> Weight {
-		(88_113_000 as Weight)
-			// Standard Error: 851_000
-			.saturating_add((381_671_000 as Weight).saturating_mul(r as Weight))
+		(129_893_000 as Weight)
+			// Standard Error: 471_000
+			.saturating_add((313_807_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(5 as Weight))
-			.saturating_add(RocksDbWeight::get().reads((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(RocksDbWeight::get().reads((80 as Weight).saturating_mul(r as Weight)))
 			.saturating_add(RocksDbWeight::get().writes(3 as Weight))
-			.saturating_add(RocksDbWeight::get().writes((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(RocksDbWeight::get().writes((80 as Weight).saturating_mul(r as Weight)))
 	}
 	// Storage: Skipped Metadata (r:0 w:0)
 	fn seal_clear_storage_per_kb(n: u32, ) -> Weight {
-		(603_193_000 as Weight)
-			// Standard Error: 262_000
-			.saturating_add((10_286_000 as Weight).saturating_mul(n as Weight))
-			.saturating_add(RocksDbWeight::get().reads(105 as Weight))
-			.saturating_add(RocksDbWeight::get().writes(103 as Weight))
+		(532_323_000 as Weight)
+			// Standard Error: 204_000
+			.saturating_add((8_729_000 as Weight).saturating_mul(n as Weight))
+			.saturating_add(RocksDbWeight::get().reads(85 as Weight))
+			.saturating_add(RocksDbWeight::get().writes(83 as Weight))
 	}
 	// Storage: Skipped Metadata (r:0 w:0)
 	fn seal_get_storage(r: u32, ) -> Weight {
-		(112_477_000 as Weight)
-			// Standard Error: 666_000
-			.saturating_add((324_824_000 as Weight).saturating_mul(r as Weight))
+		(131_771_000 as Weight)
+			// Standard Error: 415_000
+			.saturating_add((269_174_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
-			.saturating_add(RocksDbWeight::get().reads((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(RocksDbWeight::get().reads((80 as Weight).saturating_mul(r as Weight)))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
 	// Storage: Skipped Metadata (r:0 w:0)
 	fn seal_get_storage_per_kb(n: u32, ) -> Weight {
-		(564_781_000 as Weight)
-			// Standard Error: 403_000
-			.saturating_add((63_824_000 as Weight).saturating_mul(n as Weight))
-			.saturating_add(RocksDbWeight::get().reads(104 as Weight))
+		(494_409_000 as Weight)
+			// Standard Error: 280_000
+			.saturating_add((50_499_000 as Weight).saturating_mul(n as Weight))
+			.saturating_add(RocksDbWeight::get().reads(84 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
 	// Storage: Skipped Metadata (r:0 w:0)
 	fn seal_contains_storage(r: u32, ) -> Weight {
-		(115_207_000 as Weight)
-			// Standard Error: 672_000
-			.saturating_add((290_919_000 as Weight).saturating_mul(r as Weight))
+		(133_366_000 as Weight)
+			// Standard Error: 400_000
+			.saturating_add((235_761_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
-			.saturating_add(RocksDbWeight::get().reads((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(RocksDbWeight::get().reads((80 as Weight).saturating_mul(r as Weight)))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
 	// Storage: Skipped Metadata (r:0 w:0)
 	fn seal_contains_storage_per_kb(n: u32, ) -> Weight {
-		(511_026_000 as Weight)
-			// Standard Error: 224_000
-			.saturating_add((10_138_000 as Weight).saturating_mul(n as Weight))
-			.saturating_add(RocksDbWeight::get().reads(104 as Weight))
+		(447_828_000 as Weight)
+			// Standard Error: 197_000
+			.saturating_add((8_190_000 as Weight).saturating_mul(n as Weight))
+			.saturating_add(RocksDbWeight::get().reads(84 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
 	// Storage: Skipped Metadata (r:0 w:0)
 	fn seal_take_storage(r: u32, ) -> Weight {
-		(79_113_000 as Weight)
-			// Standard Error: 904_000
-			.saturating_add((417_022_000 as Weight).saturating_mul(r as Weight))
+		(121_933_000 as Weight)
+			// Standard Error: 509_000
+			.saturating_add((342_550_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(5 as Weight))
-			.saturating_add(RocksDbWeight::get().reads((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(RocksDbWeight::get().reads((80 as Weight).saturating_mul(r as Weight)))
 			.saturating_add(RocksDbWeight::get().writes(3 as Weight))
-			.saturating_add(RocksDbWeight::get().writes((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(RocksDbWeight::get().writes((80 as Weight).saturating_mul(r as Weight)))
 	}
 	// Storage: Skipped Metadata (r:0 w:0)
 	fn seal_take_storage_per_kb(n: u32, ) -> Weight {
-		(651_769_000 as Weight)
-			// Standard Error: 338_000
-			.saturating_add((65_576_000 as Weight).saturating_mul(n as Weight))
-			.saturating_add(RocksDbWeight::get().reads(105 as Weight))
-			.saturating_add(RocksDbWeight::get().writes(103 as Weight))
+		(578_648_000 as Weight)
+			// Standard Error: 320_000
+			.saturating_add((51_767_000 as Weight).saturating_mul(n as Weight))
+			.saturating_add(RocksDbWeight::get().reads(85 as Weight))
+			.saturating_add(RocksDbWeight::get().writes(83 as Weight))
 	}
 	// Storage: System Account (r:1 w:0)
 	// Storage: Contracts ContractInfoOf (r:1 w:1)
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_transfer(r: u32, ) -> Weight {
-		(93_588_000 as Weight)
-			// Standard Error: 1_444_000
-			.saturating_add((1_803_217_000 as Weight).saturating_mul(r as Weight))
+		(146_890_000 as Weight)
+			// Standard Error: 789_000
+			.saturating_add((1_427_230_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(5 as Weight))
-			.saturating_add(RocksDbWeight::get().reads((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(RocksDbWeight::get().reads((80 as Weight).saturating_mul(r as Weight)))
 			.saturating_add(RocksDbWeight::get().writes(2 as Weight))
-			.saturating_add(RocksDbWeight::get().writes((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(RocksDbWeight::get().writes((80 as Weight).saturating_mul(r as Weight)))
 	}
 	// Storage: System Account (r:1 w:0)
 	// Storage: Contracts ContractInfoOf (r:1 w:1)
@@ -1561,12 +1581,12 @@ impl WeightInfo for () {
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_call(r: u32, ) -> Weight {
 		(0 as Weight)
-			// Standard Error: 3_050_000
-			.saturating_add((19_925_209_000 as Weight).saturating_mul(r as Weight))
+			// Standard Error: 2_542_000
+			.saturating_add((15_063_367_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(5 as Weight))
-			.saturating_add(RocksDbWeight::get().reads((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(RocksDbWeight::get().reads((80 as Weight).saturating_mul(r as Weight)))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
-			.saturating_add(RocksDbWeight::get().writes((100 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(RocksDbWeight::get().writes((80 as Weight).saturating_mul(r as Weight)))
 	}
 	// Storage: System Account (r:1 w:0)
 	// Storage: Contracts ContractInfoOf (r:1 w:1)
@@ -1574,56 +1594,56 @@ impl WeightInfo for () {
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_delegate_call(r: u32, ) -> Weight {
 		(0 as Weight)
-			// Standard Error: 7_377_000
-			.saturating_add((19_978_301_000 as Weight).saturating_mul(r as Weight))
-			.saturating_add(RocksDbWeight::get().reads((99 as Weight).saturating_mul(r as Weight)))
+			// Standard Error: 3_267_000
+			.saturating_add((15_037_276_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add(RocksDbWeight::get().reads((79 as Weight).saturating_mul(r as Weight)))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
 	// Storage: System Account (r:1 w:0)
-	// Storage: Contracts ContractInfoOf (r:101 w:101)
+	// Storage: Contracts ContractInfoOf (r:81 w:81)
 	// Storage: Contracts CodeStorage (r:2 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_call_per_transfer_clone_kb(t: u32, c: u32, ) -> Weight {
-		(11_124_804_000 as Weight)
-			// Standard Error: 21_475_000
-			.saturating_add((1_635_442_000 as Weight).saturating_mul(t as Weight))
-			// Standard Error: 9_000
-			.saturating_add((11_981_000 as Weight).saturating_mul(c as Weight))
-			.saturating_add(RocksDbWeight::get().reads(105 as Weight))
-			.saturating_add(RocksDbWeight::get().reads((101 as Weight).saturating_mul(t as Weight)))
-			.saturating_add(RocksDbWeight::get().writes(101 as Weight))
-			.saturating_add(RocksDbWeight::get().writes((101 as Weight).saturating_mul(t as Weight)))
+		(9_081_513_000 as Weight)
+			// Standard Error: 18_081_000
+			.saturating_add((1_388_391_000 as Weight).saturating_mul(t as Weight))
+			// Standard Error: 7_000
+			.saturating_add((9_653_000 as Weight).saturating_mul(c as Weight))
+			.saturating_add(RocksDbWeight::get().reads(85 as Weight))
+			.saturating_add(RocksDbWeight::get().reads((81 as Weight).saturating_mul(t as Weight)))
+			.saturating_add(RocksDbWeight::get().writes(81 as Weight))
+			.saturating_add(RocksDbWeight::get().writes((81 as Weight).saturating_mul(t as Weight)))
 	}
 	// Storage: System Account (r:1 w:0)
 	// Storage: Contracts ContractInfoOf (r:1 w:1)
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	// Storage: Contracts Nonce (r:1 w:1)
-	// Storage: Contracts OwnerInfoOf (r:100 w:100)
+	// Storage: Contracts OwnerInfoOf (r:80 w:80)
 	fn seal_instantiate(r: u32, ) -> Weight {
 		(0 as Weight)
-			// Standard Error: 47_682_000
-			.saturating_add((27_883_754_000 as Weight).saturating_mul(r as Weight))
+			// Standard Error: 34_560_000
+			.saturating_add((20_828_575_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(6 as Weight))
-			.saturating_add(RocksDbWeight::get().reads((400 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(RocksDbWeight::get().reads((320 as Weight).saturating_mul(r as Weight)))
 			.saturating_add(RocksDbWeight::get().writes(3 as Weight))
-			.saturating_add(RocksDbWeight::get().writes((400 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(RocksDbWeight::get().writes((320 as Weight).saturating_mul(r as Weight)))
 	}
-	// Storage: System Account (r:101 w:101)
-	// Storage: Contracts ContractInfoOf (r:101 w:101)
+	// Storage: System Account (r:81 w:81)
+	// Storage: Contracts ContractInfoOf (r:81 w:81)
 	// Storage: Contracts CodeStorage (r:2 w:1)
 	// Storage: Timestamp Now (r:1 w:0)
 	// Storage: Contracts Nonce (r:1 w:1)
 	// Storage: Contracts OwnerInfoOf (r:1 w:1)
 	fn seal_instantiate_per_transfer_salt_kb(t: u32, s: u32, ) -> Weight {
-		(14_824_308_000 as Weight)
-			// Standard Error: 39_823_000
-			.saturating_add((880_630_000 as Weight).saturating_mul(t as Weight))
-			// Standard Error: 18_000
-			.saturating_add((156_232_000 as Weight).saturating_mul(s as Weight))
-			.saturating_add(RocksDbWeight::get().reads(207 as Weight))
+		(12_124_898_000 as Weight)
+			// Standard Error: 34_430_000
+			.saturating_add((573_971_000 as Weight).saturating_mul(t as Weight))
+			// Standard Error: 16_000
+			.saturating_add((123_415_000 as Weight).saturating_mul(s as Weight))
+			.saturating_add(RocksDbWeight::get().reads(167 as Weight))
 			.saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(t as Weight)))
-			.saturating_add(RocksDbWeight::get().writes(205 as Weight))
+			.saturating_add(RocksDbWeight::get().writes(165 as Weight))
 			.saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(t as Weight)))
 	}
 	// Storage: System Account (r:1 w:0)
@@ -1631,9 +1651,9 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_hash_sha2_256(r: u32, ) -> Weight {
-		(218_378_000 as Weight)
-			// Standard Error: 131_000
-			.saturating_add((78_260_000 as Weight).saturating_mul(r as Weight))
+		(203_422_000 as Weight)
+			// Standard Error: 126_000
+			.saturating_add((65_317_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1642,9 +1662,9 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_hash_sha2_256_per_kb(n: u32, ) -> Weight {
-		(202_849_000 as Weight)
-			// Standard Error: 61_000
-			.saturating_add((466_532_000 as Weight).saturating_mul(n as Weight))
+		(411_079_000 as Weight)
+			// Standard Error: 20_000
+			.saturating_add((354_947_000 as Weight).saturating_mul(n as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1653,9 +1673,9 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_hash_keccak_256(r: u32, ) -> Weight {
-		(220_258_000 as Weight)
-			// Standard Error: 147_000
-			.saturating_add((90_363_000 as Weight).saturating_mul(r as Weight))
+		(203_192_000 as Weight)
+			// Standard Error: 116_000
+			.saturating_add((73_562_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1664,9 +1684,9 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_hash_keccak_256_per_kb(n: u32, ) -> Weight {
-		(232_371_000 as Weight)
-			// Standard Error: 23_000
-			.saturating_add((307_036_000 as Weight).saturating_mul(n as Weight))
+		(227_572_000 as Weight)
+			// Standard Error: 13_000
+			.saturating_add((244_646_000 as Weight).saturating_mul(n as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1675,9 +1695,9 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_hash_blake2_256(r: u32, ) -> Weight {
-		(217_991_000 as Weight)
-			// Standard Error: 124_000
-			.saturating_add((62_273_000 as Weight).saturating_mul(r as Weight))
+		(204_922_000 as Weight)
+			// Standard Error: 112_000
+			.saturating_add((51_349_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1686,9 +1706,9 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_hash_blake2_256_per_kb(n: u32, ) -> Weight {
-		(396_282_000 as Weight)
-			// Standard Error: 13_000
-			.saturating_add((119_575_000 as Weight).saturating_mul(n as Weight))
+		(247_293_000 as Weight)
+			// Standard Error: 17_000
+			.saturating_add((94_654_000 as Weight).saturating_mul(n as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1697,9 +1717,9 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_hash_blake2_128(r: u32, ) -> Weight {
-		(217_578_000 as Weight)
-			// Standard Error: 104_000
-			.saturating_add((62_189_000 as Weight).saturating_mul(r as Weight))
+		(203_511_000 as Weight)
+			// Standard Error: 108_000
+			.saturating_add((50_585_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1708,9 +1728,9 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_hash_blake2_128_per_kb(n: u32, ) -> Weight {
-		(358_167_000 as Weight)
-			// Standard Error: 15_000
-			.saturating_add((119_692_000 as Weight).saturating_mul(n as Weight))
+		(253_133_000 as Weight)
+			// Standard Error: 10_000
+			.saturating_add((94_606_000 as Weight).saturating_mul(n as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1719,9 +1739,9 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_ecdsa_recover(r: u32, ) -> Weight {
-		(292_884_000 as Weight)
-			// Standard Error: 683_000
-			.saturating_add((3_824_902_000 as Weight).saturating_mul(r as Weight))
+		(280_685_000 as Weight)
+			// Standard Error: 627_000
+			.saturating_add((3_062_997_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1730,9 +1750,9 @@ impl WeightInfo for () {
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
 	fn seal_ecdsa_to_eth_address(r: u32, ) -> Weight {
-		(272_893_000 as Weight)
-			// Standard Error: 1_438_000
-			.saturating_add((15_412_877_000 as Weight).saturating_mul(r as Weight))
+		(212_204_000 as Weight)
+			// Standard Error: 469_000
+			.saturating_add((2_034_397_000 as Weight).saturating_mul(r as Weight))
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -1740,267 +1760,267 @@ impl WeightInfo for () {
 	// Storage: Contracts ContractInfoOf (r:1 w:1)
 	// Storage: Contracts CodeStorage (r:1 w:0)
 	// Storage: Timestamp Now (r:1 w:0)
-	// Storage: Contracts OwnerInfoOf (r:36 w:36)
+	// Storage: Contracts OwnerInfoOf (r:16 w:16)
 	fn seal_set_code_hash(r: u32, ) -> Weight {
 		(0 as Weight)
-			// Standard Error: 2_302_000
-			.saturating_add((922_467_000 as Weight).saturating_mul(r as Weight))
-			.saturating_add(RocksDbWeight::get().reads((99 as Weight).saturating_mul(r as Weight)))
-			.saturating_add(RocksDbWeight::get().writes((99 as Weight).saturating_mul(r as Weight)))
+			// Standard Error: 1_507_000
+			.saturating_add((747_481_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add(RocksDbWeight::get().reads((79 as Weight).saturating_mul(r as Weight)))
+			.saturating_add(RocksDbWeight::get().writes((79 as Weight).saturating_mul(r as Weight)))
 	}
 	fn instr_i64const(r: u32, ) -> Weight {
-		(74_516_000 as Weight)
+		(74_627_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((592_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((593_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64load(r: u32, ) -> Weight {
-		(74_430_000 as Weight)
-			// Standard Error: 2_000
-			.saturating_add((1_320_000 as Weight).saturating_mul(r as Weight))
+		(74_587_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((1_294_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64store(r: u32, ) -> Weight {
-		(74_440_000 as Weight)
-			// Standard Error: 2_000
-			.saturating_add((1_428_000 as Weight).saturating_mul(r as Weight))
+		(74_392_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((1_381_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_select(r: u32, ) -> Weight {
-		(74_151_000 as Weight)
-			// Standard Error: 2_000
-			.saturating_add((1_782_000 as Weight).saturating_mul(r as Weight))
+		(73_823_000 as Weight)
+			// Standard Error: 3_000
+			.saturating_add((1_780_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_if(r: u32, ) -> Weight {
-		(74_225_000 as Weight)
-			// Standard Error: 3_000
-			.saturating_add((1_887_000 as Weight).saturating_mul(r as Weight))
+		(74_072_000 as Weight)
+			// Standard Error: 2_000
+			.saturating_add((1_946_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_br(r: u32, ) -> Weight {
-		(73_987_000 as Weight)
+		(73_981_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((898_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((930_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_br_if(r: u32, ) -> Weight {
-		(73_305_000 as Weight)
-			// Standard Error: 4_000
-			.saturating_add((1_465_000 as Weight).saturating_mul(r as Weight))
+		(73_690_000 as Weight)
+			// Standard Error: 3_000
+			.saturating_add((1_433_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_br_table(r: u32, ) -> Weight {
-		(73_037_000 as Weight)
-			// Standard Error: 3_000
-			.saturating_add((1_605_000 as Weight).saturating_mul(r as Weight))
+		(74_317_000 as Weight)
+			// Standard Error: 8_000
+			.saturating_add((1_571_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_br_table_per_entry(e: u32, ) -> Weight {
-		(76_434_000 as Weight)
+		(76_373_000 as Weight)
 			// Standard Error: 0
 			.saturating_add((4_000 as Weight).saturating_mul(e as Weight))
 	}
 	fn instr_call(r: u32, ) -> Weight {
-		(75_461_000 as Weight)
+		(76_013_000 as Weight)
 			// Standard Error: 10_000
-			.saturating_add((7_446_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((6_848_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_call_indirect(r: u32, ) -> Weight {
-		(87_222_000 as Weight)
-			// Standard Error: 15_000
-			.saturating_add((9_406_000 as Weight).saturating_mul(r as Weight))
+		(88_704_000 as Weight)
+			// Standard Error: 16_000
+			.saturating_add((8_824_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_call_indirect_per_param(p: u32, ) -> Weight {
-		(97_204_000 as Weight)
+		(97_846_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((472_000 as Weight).saturating_mul(p as Weight))
+			.saturating_add((471_000 as Weight).saturating_mul(p as Weight))
 	}
 	fn instr_local_get(r: u32, ) -> Weight {
-		(75_299_000 as Weight)
+		(75_010_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((601_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((612_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_local_set(r: u32, ) -> Weight {
-		(74_827_000 as Weight)
-			// Standard Error: 3_000
-			.saturating_add((686_000 as Weight).saturating_mul(r as Weight))
+		(74_636_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((681_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_local_tee(r: u32, ) -> Weight {
-		(74_624_000 as Weight)
-			// Standard Error: 2_000
-			.saturating_add((895_000 as Weight).saturating_mul(r as Weight))
+		(74_196_000 as Weight)
+			// Standard Error: 0
+			.saturating_add((916_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_global_get(r: u32, ) -> Weight {
-		(77_435_000 as Weight)
-			// Standard Error: 3_000
-			.saturating_add((1_201_000 as Weight).saturating_mul(r as Weight))
+		(77_349_000 as Weight)
+			// Standard Error: 2_000
+			.saturating_add((1_176_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_global_set(r: u32, ) -> Weight {
-		(76_693_000 as Weight)
-			// Standard Error: 3_000
-			.saturating_add((1_410_000 as Weight).saturating_mul(r as Weight))
+		(76_861_000 as Weight)
+			// Standard Error: 4_000
+			.saturating_add((1_383_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_memory_current(r: u32, ) -> Weight {
-		(74_244_000 as Weight)
-			// Standard Error: 1_000
-			.saturating_add((660_000 as Weight).saturating_mul(r as Weight))
+		(74_696_000 as Weight)
+			// Standard Error: 2_000
+			.saturating_add((655_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_memory_grow(r: u32, ) -> Weight {
-		(73_527_000 as Weight)
-			// Standard Error: 931_000
-			.saturating_add((184_946_000 as Weight).saturating_mul(r as Weight))
+		(73_522_000 as Weight)
+			// Standard Error: 50_000
+			.saturating_add((179_720_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64clz(r: u32, ) -> Weight {
-		(74_181_000 as Weight)
-			// Standard Error: 6_000
-			.saturating_add((906_000 as Weight).saturating_mul(r as Weight))
+		(74_292_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((884_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64ctz(r: u32, ) -> Weight {
-		(74_339_000 as Weight)
+		(74_299_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((896_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((882_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64popcnt(r: u32, ) -> Weight {
-		(74_444_000 as Weight)
-			// Standard Error: 3_000
-			.saturating_add((889_000 as Weight).saturating_mul(r as Weight))
+		(74_289_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((883_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64eqz(r: u32, ) -> Weight {
-		(74_572_000 as Weight)
-			// Standard Error: 1_000
-			.saturating_add((908_000 as Weight).saturating_mul(r as Weight))
+		(74_120_000 as Weight)
+			// Standard Error: 2_000
+			.saturating_add((899_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64extendsi32(r: u32, ) -> Weight {
-		(74_349_000 as Weight)
-			// Standard Error: 2_000
-			.saturating_add((881_000 as Weight).saturating_mul(r as Weight))
+		(74_599_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((851_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64extendui32(r: u32, ) -> Weight {
-		(74_426_000 as Weight)
-			// Standard Error: 1_000
-			.saturating_add((875_000 as Weight).saturating_mul(r as Weight))
+		(74_622_000 as Weight)
+			// Standard Error: 2_000
+			.saturating_add((854_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i32wrapi64(r: u32, ) -> Weight {
-		(74_172_000 as Weight)
+		(74_504_000 as Weight)
 			// Standard Error: 2_000
-			.saturating_add((906_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((874_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64eq(r: u32, ) -> Weight {
-		(74_169_000 as Weight)
-			// Standard Error: 1_000
-			.saturating_add((1_362_000 as Weight).saturating_mul(r as Weight))
+		(74_532_000 as Weight)
+			// Standard Error: 2_000
+			.saturating_add((1_338_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64ne(r: u32, ) -> Weight {
-		(74_205_000 as Weight)
-			// Standard Error: 4_000
-			.saturating_add((1_360_000 as Weight).saturating_mul(r as Weight))
+		(74_130_000 as Weight)
+			// Standard Error: 2_000
+			.saturating_add((1_347_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64lts(r: u32, ) -> Weight {
-		(74_237_000 as Weight)
-			// Standard Error: 3_000
-			.saturating_add((1_356_000 as Weight).saturating_mul(r as Weight))
+		(74_172_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((1_343_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64ltu(r: u32, ) -> Weight {
-		(74_181_000 as Weight)
+		(74_356_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((1_357_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((1_338_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64gts(r: u32, ) -> Weight {
-		(74_038_000 as Weight)
-			// Standard Error: 2_000
-			.saturating_add((1_360_000 as Weight).saturating_mul(r as Weight))
+		(74_181_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((1_343_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64gtu(r: u32, ) -> Weight {
-		(73_881_000 as Weight)
-			// Standard Error: 2_000
-			.saturating_add((1_372_000 as Weight).saturating_mul(r as Weight))
+		(74_045_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((1_358_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64les(r: u32, ) -> Weight {
-		(73_969_000 as Weight)
-			// Standard Error: 0
-			.saturating_add((1_361_000 as Weight).saturating_mul(r as Weight))
+		(74_246_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((1_341_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64leu(r: u32, ) -> Weight {
-		(74_497_000 as Weight)
-			// Standard Error: 3_000
-			.saturating_add((1_359_000 as Weight).saturating_mul(r as Weight))
+		(73_998_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((1_363_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64ges(r: u32, ) -> Weight {
-		(74_275_000 as Weight)
+		(74_035_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((1_354_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((1_348_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64geu(r: u32, ) -> Weight {
-		(74_349_000 as Weight)
-			// Standard Error: 3_000
-			.saturating_add((1_357_000 as Weight).saturating_mul(r as Weight))
+		(74_511_000 as Weight)
+			// Standard Error: 2_000
+			.saturating_add((1_335_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64add(r: u32, ) -> Weight {
-		(74_192_000 as Weight)
+		(74_305_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((1_333_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((1_319_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64sub(r: u32, ) -> Weight {
-		(74_271_000 as Weight)
+		(74_214_000 as Weight)
 			// Standard Error: 2_000
-			.saturating_add((1_340_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((1_321_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64mul(r: u32, ) -> Weight {
-		(73_971_000 as Weight)
+		(74_073_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((1_340_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((1_323_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64divs(r: u32, ) -> Weight {
-		(74_546_000 as Weight)
+		(74_295_000 as Weight)
 			// Standard Error: 2_000
-			.saturating_add((1_995_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((1_986_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64divu(r: u32, ) -> Weight {
-		(74_194_000 as Weight)
+		(74_109_000 as Weight)
 			// Standard Error: 2_000
-			.saturating_add((2_050_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((2_023_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64rems(r: u32, ) -> Weight {
-		(74_106_000 as Weight)
+		(73_990_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((1_997_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((1_993_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64remu(r: u32, ) -> Weight {
-		(74_219_000 as Weight)
-			// Standard Error: 5_000
-			.saturating_add((2_061_000 as Weight).saturating_mul(r as Weight))
+		(73_940_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((2_056_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64and(r: u32, ) -> Weight {
-		(74_157_000 as Weight)
-			// Standard Error: 2_000
-			.saturating_add((1_338_000 as Weight).saturating_mul(r as Weight))
+		(74_261_000 as Weight)
+			// Standard Error: 5_000
+			.saturating_add((1_326_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64or(r: u32, ) -> Weight {
-		(74_135_000 as Weight)
+		(74_014_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((1_336_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((1_324_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64xor(r: u32, ) -> Weight {
-		(74_038_000 as Weight)
-			// Standard Error: 3_000
-			.saturating_add((1_345_000 as Weight).saturating_mul(r as Weight))
+		(74_220_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((1_323_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64shl(r: u32, ) -> Weight {
-		(74_011_000 as Weight)
-			// Standard Error: 3_000
-			.saturating_add((1_362_000 as Weight).saturating_mul(r as Weight))
+		(74_139_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((1_343_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64shrs(r: u32, ) -> Weight {
-		(74_054_000 as Weight)
+		(73_923_000 as Weight)
 			// Standard Error: 2_000
 			.saturating_add((1_356_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64shru(r: u32, ) -> Weight {
-		(73_900_000 as Weight)
+		(73_999_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((1_358_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((1_352_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64rotl(r: u32, ) -> Weight {
-		(73_948_000 as Weight)
-			// Standard Error: 0
-			.saturating_add((1_357_000 as Weight).saturating_mul(r as Weight))
+		(74_312_000 as Weight)
+			// Standard Error: 1_000
+			.saturating_add((1_340_000 as Weight).saturating_mul(r as Weight))
 	}
 	fn instr_i64rotr(r: u32, ) -> Weight {
-		(73_972_000 as Weight)
+		(73_988_000 as Weight)
 			// Standard Error: 1_000
-			.saturating_add((1_358_000 as Weight).saturating_mul(r as Weight))
+			.saturating_add((1_349_000 as Weight).saturating_mul(r as Weight))
 	}
 }