git.delta.rocks / unique-network / refs/commits / 93f54527db20

difftreelog

Merge pull request #360 from UniqueNetwork/feature/upgrade-polkadot-v0.9.22

kozyrevdev2022-06-03parents: #f52170c #96fd9c5.patch.diff
in: master
Upgrade polkadot to v0.9.22

52 files changed

modified.envdiffbeforeafterboth
--- a/.env
+++ b/.env
@@ -1,6 +1,6 @@
-RUST_TOOLCHAIN=nightly-2022-04-07
+RUST_TOOLCHAIN=nightly-2022-05-11
 RUST_C=1.62.0-nightly
-POLKA_VERSION=release-v0.9.21
+POLKA_VERSION=release-v0.9.22
 UNIQUE_BRANCH=develop
 USER=***
 PASS=***
modifiedCargo.lockdiffbeforeafterboth
before · Cargo.lock
1015 packageslockfile v3
modifiedDockerfile-parachaindiffbeforeafterboth
--- a/Dockerfile-parachain
+++ b/Dockerfile-parachain
@@ -4,7 +4,7 @@
 
 ARG RUST_TOOLCHAIN=nightly-2022-04-07
 #ARG RUST_C=1.62.0-nightly
-ARG POLKA_VERSION=release-v0.9.21
+ARG POLKA_VERSION=release-v0.9.22
 ARG UNIQUE_BRANCH=develop
 
 #ARG USER=***
modifiedREADME.mddiffbeforeafterboth
--- a/README.md
+++ b/README.md
@@ -51,14 +51,14 @@
 3. Install install nightly 2021-11-11 and make it default:
 
 ```bash
-rustup toolchain install nightly-2022-04-07
-rustup default nightly-2022-04-07
+rustup toolchain install nightly-2022-05-11
+rustup default nightly-2022-05-11
 ```
 
 4. Add wasm target for nightly toolchain:
 
 ```bash
-rustup target add wasm32-unknown-unknown --toolchain nightly-2022-04-07
+rustup target add wasm32-unknown-unknown --toolchain nightly-2022-05-11
 ```
 
 5. Build:
@@ -81,7 +81,7 @@
 ```
 git clone https://github.com/paritytech/polkadot.git
 cd polkadot
-git checkout release-v0.9.21
+git checkout release-v0.9.22
 cargo build --release
 ```
 
modifiedclient/rpc/Cargo.tomldiffbeforeafterboth
--- a/client/rpc/Cargo.toml
+++ b/client/rpc/Cargo.toml
@@ -11,13 +11,12 @@
 up-rpc = { path = "../../primitives/rpc" }
 rmrk-rpc = { path = "../../primitives/rmrk-rpc" }
 codec = { package = "parity-scale-codec", version = "3.1.2" }
-jsonrpc-core = "18.0.0"
-jsonrpc-core-client = "18.0.0"
-jsonrpc-derive = "18.0.0"
+jsonrpsee = { version = "0.13.0", features = ["server", "macros"] }
+anyhow = "1.0.57"
 
-sp-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-blockchain = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-rpc = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+sp-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-blockchain = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-rpc = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
modifiedclient/rpc/src/lib.rsdiffbeforeafterboth
--- a/client/rpc/src/lib.rs
+++ b/client/rpc/src/lib.rs
@@ -17,8 +17,11 @@
 use std::sync::Arc;
 
 use codec::{Decode, Encode};
-use jsonrpc_core::{Error as RpcError, ErrorCode, Result};
-use jsonrpc_derive::rpc;
+use jsonrpsee::{
+	core::{RpcResult as Result},
+	proc_macros::rpc,
+};
+use anyhow::anyhow;
 use up_data_structs::{
 	RpcCollection, CollectionId, CollectionStats, CollectionLimits, TokenId, Property,
 	PropertyKeyPermission, TokenData,
@@ -33,24 +36,25 @@
 	RmrkCollectionId, RmrkNftId, RmrkBaseId, RmrkNftChild, RmrkThemeName, RmrkResourceId,
 };
 
-pub use rmrk_unique_rpc::RmrkApi;
+pub use rmrk_unique_rpc::RmrkApiServer;
 
-#[rpc]
+#[rpc(server)]
+#[async_trait]
 pub trait UniqueApi<BlockHash, CrossAccountId, AccountId> {
-	#[rpc(name = "unique_accountTokens")]
+	#[method(name = "unique_accountTokens")]
 	fn account_tokens(
 		&self,
 		collection: CollectionId,
 		account: CrossAccountId,
 		at: Option<BlockHash>,
 	) -> Result<Vec<TokenId>>;
-	#[rpc(name = "unique_collectionTokens")]
+	#[method(name = "unique_collectionTokens")]
 	fn collection_tokens(
 		&self,
 		collection: CollectionId,
 		at: Option<BlockHash>,
 	) -> Result<Vec<TokenId>>;
-	#[rpc(name = "unique_tokenExists")]
+	#[method(name = "unique_tokenExists")]
 	fn token_exists(
 		&self,
 		collection: CollectionId,
@@ -58,14 +62,14 @@
 		at: Option<BlockHash>,
 	) -> Result<bool>;
 
-	#[rpc(name = "unique_tokenOwner")]
+	#[method(name = "unique_tokenOwner")]
 	fn token_owner(
 		&self,
 		collection: CollectionId,
 		token: TokenId,
 		at: Option<BlockHash>,
 	) -> Result<Option<CrossAccountId>>;
-	#[rpc(name = "unique_topmostTokenOwner")]
+	#[method(name = "unique_topmostTokenOwner")]
 	fn topmost_token_owner(
 		&self,
 		collection: CollectionId,
@@ -73,7 +77,7 @@
 		at: Option<BlockHash>,
 	) -> Result<Option<CrossAccountId>>;
 
-	#[rpc(name = "unique_collectionProperties")]
+	#[method(name = "unique_collectionProperties")]
 	fn collection_properties(
 		&self,
 		collection: CollectionId,
@@ -81,7 +85,7 @@
 		at: Option<BlockHash>,
 	) -> Result<Vec<Property>>;
 
-	#[rpc(name = "unique_tokenProperties")]
+	#[method(name = "unique_tokenProperties")]
 	fn token_properties(
 		&self,
 		collection: CollectionId,
@@ -90,7 +94,7 @@
 		at: Option<BlockHash>,
 	) -> Result<Vec<Property>>;
 
-	#[rpc(name = "unique_propertyPermissions")]
+	#[method(name = "unique_propertyPermissions")]
 	fn property_permissions(
 		&self,
 		collection: CollectionId,
@@ -98,7 +102,7 @@
 		at: Option<BlockHash>,
 	) -> Result<Vec<PropertyKeyPermission>>;
 
-	#[rpc(name = "unique_tokenData")]
+	#[method(name = "unique_tokenData")]
 	fn token_data(
 		&self,
 		collection: CollectionId,
@@ -107,16 +111,16 @@
 		at: Option<BlockHash>,
 	) -> Result<TokenData<CrossAccountId>>;
 
-	#[rpc(name = "unique_totalSupply")]
+	#[method(name = "unique_totalSupply")]
 	fn total_supply(&self, collection: CollectionId, at: Option<BlockHash>) -> Result<u32>;
-	#[rpc(name = "unique_accountBalance")]
+	#[method(name = "unique_accountBalance")]
 	fn account_balance(
 		&self,
 		collection: CollectionId,
 		account: CrossAccountId,
 		at: Option<BlockHash>,
 	) -> Result<u32>;
-	#[rpc(name = "unique_balance")]
+	#[method(name = "unique_balance")]
 	fn balance(
 		&self,
 		collection: CollectionId,
@@ -124,7 +128,7 @@
 		token: TokenId,
 		at: Option<BlockHash>,
 	) -> Result<String>;
-	#[rpc(name = "unique_allowance")]
+	#[method(name = "unique_allowance")]
 	fn allowance(
 		&self,
 		collection: CollectionId,
@@ -134,37 +138,37 @@
 		at: Option<BlockHash>,
 	) -> Result<String>;
 
-	#[rpc(name = "unique_adminlist")]
+	#[method(name = "unique_adminlist")]
 	fn adminlist(
 		&self,
 		collection: CollectionId,
 		at: Option<BlockHash>,
 	) -> Result<Vec<CrossAccountId>>;
-	#[rpc(name = "unique_allowlist")]
+	#[method(name = "unique_allowlist")]
 	fn allowlist(
 		&self,
 		collection: CollectionId,
 		at: Option<BlockHash>,
 	) -> Result<Vec<CrossAccountId>>;
-	#[rpc(name = "unique_allowed")]
+	#[method(name = "unique_allowed")]
 	fn allowed(
 		&self,
 		collection: CollectionId,
 		user: CrossAccountId,
 		at: Option<BlockHash>,
 	) -> Result<bool>;
-	#[rpc(name = "unique_lastTokenId")]
+	#[method(name = "unique_lastTokenId")]
 	fn last_token_id(&self, collection: CollectionId, at: Option<BlockHash>) -> Result<TokenId>;
-	#[rpc(name = "unique_collectionById")]
+	#[method(name = "unique_collectionById")]
 	fn collection_by_id(
 		&self,
 		collection: CollectionId,
 		at: Option<BlockHash>,
 	) -> Result<Option<RpcCollection<AccountId>>>;
-	#[rpc(name = "unique_collectionStats")]
+	#[method(name = "unique_collectionStats")]
 	fn collection_stats(&self, at: Option<BlockHash>) -> Result<CollectionStats>;
 
-	#[rpc(name = "unique_nextSponsored")]
+	#[method(name = "unique_nextSponsored")]
 	fn next_sponsored(
 		&self,
 		collection: CollectionId,
@@ -172,7 +176,7 @@
 		token: TokenId,
 		at: Option<BlockHash>,
 	) -> Result<Option<u64>>;
-	#[rpc(name = "unique_effectiveCollectionLimits")]
+	#[method(name = "unique_effectiveCollectionLimits")]
 	fn effective_collection_limits(
 		&self,
 		collection_id: CollectionId,
@@ -184,6 +188,7 @@
 	use super::*;
 
 	#[rpc(server)]
+	#[async_trait]
 	pub trait RmrkApi<
 		BlockHash,
 		AccountId,
@@ -196,11 +201,11 @@
 		Theme,
 	>
 	{
-		#[rpc(name = "rmrk_lastCollectionIdx")]
+		#[method(name = "rmrk_lastCollectionIdx")]
 		/// Get the latest created collection id
 		fn last_collection_idx(&self, at: Option<BlockHash>) -> Result<RmrkCollectionId>;
 
-		#[rpc(name = "rmrk_collectionById")]
+		#[method(name = "rmrk_collectionById")]
 		/// Get collection by id
 		fn collection_by_id(
 			&self,
@@ -208,7 +213,7 @@
 			at: Option<BlockHash>,
 		) -> Result<Option<CollectionInfo>>;
 
-		#[rpc(name = "rmrk_nftById")]
+		#[method(name = "rmrk_nftById")]
 		/// Get NFT by collection id and NFT id
 		fn nft_by_id(
 			&self,
@@ -217,7 +222,7 @@
 			at: Option<BlockHash>,
 		) -> Result<Option<NftInfo>>;
 
-		#[rpc(name = "rmrk_accountTokens")]
+		#[method(name = "rmrk_accountTokens")]
 		/// Get tokens owned by an account in a collection
 		fn account_tokens(
 			&self,
@@ -226,7 +231,7 @@
 			at: Option<BlockHash>,
 		) -> Result<Vec<RmrkNftId>>;
 
-		#[rpc(name = "rmrk_nftChildren")]
+		#[method(name = "rmrk_nftChildren")]
 		/// Get NFT children
 		fn nft_children(
 			&self,
@@ -235,7 +240,7 @@
 			at: Option<BlockHash>,
 		) -> Result<Vec<RmrkNftChild>>;
 
-		#[rpc(name = "rmrk_collectionProperties")]
+		#[method(name = "rmrk_collectionProperties")]
 		/// Get collection properties
 		fn collection_properties(
 			&self,
@@ -244,7 +249,7 @@
 			at: Option<BlockHash>,
 		) -> Result<Vec<PropertyInfo>>;
 
-		#[rpc(name = "rmrk_nftProperties")]
+		#[method(name = "rmrk_nftProperties")]
 		/// Get NFT properties
 		fn nft_properties(
 			&self,
@@ -254,7 +259,7 @@
 			at: Option<BlockHash>,
 		) -> Result<Vec<PropertyInfo>>;
 
-		#[rpc(name = "rmrk_nftResources")]
+		#[method(name = "rmrk_nftResources")]
 		/// Get NFT resources
 		fn nft_resources(
 			&self,
@@ -263,7 +268,7 @@
 			at: Option<BlockHash>,
 		) -> Result<Vec<ResourceInfo>>;
 
-		#[rpc(name = "rmrk_nftResourcePriorities")]
+		#[method(name = "rmrk_nftResourcePriorities")]
 		/// Get NFT resource priorities
 		fn nft_resource_priorities(
 			&self,
@@ -272,22 +277,22 @@
 			at: Option<BlockHash>,
 		) -> Result<Vec<RmrkResourceId>>;
 
-		#[rpc(name = "rmrk_base")]
+		#[method(name = "rmrk_base")]
 		/// Get base info
 		fn base(&self, base_id: RmrkBaseId, at: Option<BlockHash>) -> Result<Option<BaseInfo>>;
 
-		#[rpc(name = "rmrk_baseParts")]
+		#[method(name = "rmrk_baseParts")]
 		/// Get all Base's parts
 		fn base_parts(&self, base_id: RmrkBaseId, at: Option<BlockHash>) -> Result<Vec<PartType>>;
 
-		#[rpc(name = "rmrk_themeNames")]
+		#[method(name = "rmrk_themeNames")]
 		fn theme_names(
 			&self,
 			base_id: RmrkBaseId,
 			at: Option<BlockHash>,
 		) -> Result<Vec<RmrkThemeName>>;
 
-		#[rpc(name = "rmrk_themes")]
+		#[method(name = "rmrk_themes")]
 		fn theme(
 			&self,
 			base_id: RmrkBaseId,
@@ -308,18 +313,6 @@
 		Self {
 			client,
 			_marker: Default::default(),
-		}
-	}
-}
-
-pub enum Error {
-	RuntimeError,
-}
-
-impl From<Error> for i64 {
-	fn from(e: Error) -> i64 {
-		match e {
-			Error::RuntimeError => 1,
 		}
 	}
 }
@@ -348,11 +341,7 @@
 				api_version
 			} else {
 				// unreachable for our runtime
-				return Err(RpcError {
-					code: ErrorCode::InvalidParams,
-					message: "Api is not available".into(),
-					data: None,
-				})
+				return Err(anyhow!("api is not available").into())
 			};
 
 			let result = $(if _api_version < $ver {
@@ -360,16 +349,9 @@
 			} else)*
 			{ api.$method_name(&at, $($((|$map_arg: $ty| $map))? ($name)),*) };
 
-			let result = result.map_err(|e| RpcError {
-				code: ErrorCode::ServerError(Error::RuntimeError.into()),
-				message: "Unable to query".into(),
-				data: Some(format!("{:?}", e).into()),
-			})?;
-			result.map_err(|e| RpcError {
-				code: ErrorCode::InvalidParams,
-				message: "Runtime returned error".into(),
-				data: Some(format!("{:?}", e).into()),
-			})$(.map($mapper))?
+			Ok(result
+				.map_err(|e| anyhow!("unable to query: {e}"))?
+				.map_err(|e| anyhow!("runtime error: {e:?}"))$(.map($mapper))??)
 		}
 	};
 }
@@ -388,7 +370,7 @@
 
 #[allow(deprecated)]
 impl<C, Block, CrossAccountId, AccountId>
-	UniqueApi<<Block as BlockT>::Hash, CrossAccountId, AccountId> for Unique<C, Block>
+	UniqueApiServer<<Block as BlockT>::Hash, CrossAccountId, AccountId> for Unique<C, Block>
 where
 	Block: BlockT,
 	AccountId: Decode,
@@ -472,7 +454,7 @@
 		PartType,
 		Theme,
 	>
-	rmrk_unique_rpc::RmrkApi<
+	rmrk_unique_rpc::RmrkApiServer<
 		<Block as BlockT>::Hash,
 		AccountId,
 		CollectionInfo,
modifiedcrates/evm-coder/Cargo.tomldiffbeforeafterboth
--- a/crates/evm-coder/Cargo.toml
+++ b/crates/evm-coder/Cargo.toml
@@ -9,7 +9,7 @@
 primitive-types = { version = "0.11.1", default-features = false }
 hex-literal = "0.3.3"
 ethereum = { version = "0.12.0", default-features = false }
-evm-core = { default-features = false , git = "https://github.com/uniquenetwork/evm", branch = "unique-polkadot-v0.9.19" }
+evm-core = { default-features = false , git = "https://github.com/uniquenetwork/evm", branch = "unique-polkadot-v0.9.22" }
 impl-trait-for-tuples = "0.2.1"
 
 [dev-dependencies]
modifiedcrates/evm-coder/tests/generics.rsdiffbeforeafterboth
--- a/crates/evm-coder/tests/generics.rs
+++ b/crates/evm-coder/tests/generics.rs
@@ -22,14 +22,14 @@
 #[solidity_interface(name = "GenericIs")]
 impl<T> Generic<T> {
 	fn test_1(&self) -> Result<uint256> {
-		todo!()
+		unreachable!()
 	}
 }
 
 #[solidity_interface(name = "Generic", is(GenericIs))]
 impl<T: Into<u32>> Generic<T> {
 	fn test_2(&self) -> Result<uint256> {
-		todo!()
+		unreachable!()
 	}
 }
 
modifiedcrates/evm-coder/tests/random.rsdiffbeforeafterboth
--- a/crates/evm-coder/tests/random.rs
+++ b/crates/evm-coder/tests/random.rs
@@ -24,14 +24,14 @@
 #[solidity_interface(name = "OurInterface")]
 impl Impls {
 	fn fn_a(&self, _input: uint256) -> Result<bool> {
-		todo!()
+		unreachable!()
 	}
 }
 
 #[solidity_interface(name = "OurInterface1")]
 impl Impls {
 	fn fn_b(&self, _input: uint128) -> Result<uint32> {
-		todo!()
+		unreachable!()
 	}
 }
 
@@ -56,26 +56,26 @@
 impl Impls {
 	#[solidity(rename_selector = "fnK")]
 	fn fn_c(&self, _input: uint32) -> Result<uint8> {
-		todo!()
+		unreachable!()
 	}
 	fn fn_d(&self, _value: uint32) -> Result<uint32> {
-		todo!()
+		unreachable!()
 	}
 
 	fn caller_sensitive(&self, _caller: caller) -> Result<uint8> {
-		todo!()
+		unreachable!()
 	}
 	fn payable(&mut self, _value: value) -> Result<uint8> {
-		todo!()
+		unreachable!()
 	}
 
 	#[weight(*_weight)]
 	fn with_weight(&self, _weight: uint64) -> Result<void> {
-		todo!()
+		unreachable!()
 	}
 
 	/// Doccoment example
 	fn with_doc(&self) -> Result<void> {
-		todo!()
+		unreachable!()
 	}
 }
modifiedcrates/evm-coder/tests/solidity_generation.rsdiffbeforeafterboth
--- a/crates/evm-coder/tests/solidity_generation.rs
+++ b/crates/evm-coder/tests/solidity_generation.rs
@@ -21,14 +21,14 @@
 #[solidity_interface(name = "ERC20")]
 impl ERC20 {
 	fn decimals(&self) -> Result<uint8> {
-		todo!()
+		unreachable!()
 	}
 	/// Get balance of specified owner
 	fn balance_of(&self, _owner: address) -> Result<uint256> {
-		todo!()
+		unreachable!()
 	}
 	fn transfer(&mut self, _caller: caller, _to: address, _value: uint256) -> Result<bool> {
-		todo!()
+		unreachable!()
 	}
 	fn transfer_from(
 		&mut self,
@@ -37,13 +37,13 @@
 		_to: address,
 		_value: uint256,
 	) -> Result<bool> {
-		todo!()
+		unreachable!()
 	}
 	fn approve(&mut self, _caller: caller, _spender: address, _value: uint256) -> Result<bool> {
-		todo!()
+		unreachable!()
 	}
 	fn allowance(&self, _owner: address, _spender: address) -> Result<uint256> {
-		todo!()
+		unreachable!()
 	}
 }
 
modifiednode/cli/Cargo.tomldiffbeforeafterboth
--- a/node/cli/Cargo.toml
+++ b/node/cli/Cargo.toml
@@ -3,7 +3,7 @@
 
 [build-dependencies.substrate-build-script-utils]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 ################################################################################
 # Substrate Dependecies
@@ -16,154 +16,158 @@
 
 [dependencies.frame-benchmarking]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.frame-benchmarking-cli]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.try-runtime-cli]
 git = 'https://github.com/paritytech/substrate'
-branch = 'polkadot-v0.9.21'
+branch = 'polkadot-v0.9.22'
 
 [dependencies.pallet-transaction-payment-rpc]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.substrate-prometheus-endpoint]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sc-basic-authorship]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sc-chain-spec]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sc-cli]
 features = ['wasmtime']
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sc-client-api]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sc-consensus]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sc-consensus-aura]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sc-executor]
 features = ['wasmtime']
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sc-finality-grandpa]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sc-keystore]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sc-rpc]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sc-rpc-api]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sc-service]
 features = ['wasmtime']
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sc-telemetry]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sc-transaction-pool]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sc-tracing]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
+
+[dependencies.sc-sysinfo]
+git = "https://github.com/paritytech/substrate"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-block-builder]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-api]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-blockchain]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-consensus]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-consensus-aura]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-core]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-finality-grandpa]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-inherents]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-keystore]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-offchain]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-runtime]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-session]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-timestamp]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-transaction-pool]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-trie]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.substrate-frame-rpc-system]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sc-network]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.serde]
 features = ['derive']
@@ -174,76 +178,76 @@
 
 [dependencies.sc-consensus-manual-seal]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 ################################################################################
 # Cumulus dependencies
 
 [dependencies.cumulus-client-consensus-aura]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 
 [dependencies.cumulus-client-consensus-common]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 
 [dependencies.cumulus-client-collator]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 
 [dependencies.cumulus-client-cli]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 
 [dependencies.cumulus-client-network]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 
 [dependencies.cumulus-primitives-core]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 
 [dependencies.cumulus-primitives-parachain-inherent]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 
 [dependencies.cumulus-client-service]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 
 [dependencies.cumulus-relay-chain-interface]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 
 [dependencies.cumulus-relay-chain-inprocess-interface]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 
 [dependencies.cumulus-relay-chain-rpc-interface]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 
 ################################################################################
 # Polkadot dependencies
 [dependencies.polkadot-primitives]
 git = "https://github.com/paritytech/polkadot"
-branch = "release-v0.9.21"
+branch = "release-v0.9.22"
 
 [dependencies.polkadot-service]
 git = "https://github.com/paritytech/polkadot"
-branch = "release-v0.9.21"
+branch = "release-v0.9.22"
 
 [dependencies.polkadot-cli]
 git = "https://github.com/paritytech/polkadot"
-branch = "release-v0.9.21"
+branch = "release-v0.9.22"
 
 [dependencies.polkadot-test-service]
 git = "https://github.com/paritytech/polkadot"
-branch = "release-v0.9.21"
+branch = "release-v0.9.22"
 
 [dependencies.polkadot-parachain]
 git = "https://github.com/paritytech/polkadot"
-branch = "release-v0.9.21"
+branch = "release-v0.9.22"
 
 
 ################################################################################
@@ -273,7 +277,7 @@
 
 [dependencies.pallet-transaction-payment-rpc-runtime-api]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 ################################################################################
 # Package
@@ -287,7 +291,7 @@
 license = 'GPLv3'
 name = 'unique-node'
 repository = 'https://github.com/UniqueNetwork/unique-chain'
-version = '0.9.21'
+version = '0.9.22'
 
 [[bin]]
 name = 'unique-collator'
@@ -302,17 +306,16 @@
 flexi_logger = "0.15.7"
 parking_lot = '0.11.2'
 clap = "3.1.2"
-jsonrpc-core = '18.0.0'
-jsonrpc-pubsub = "18.0.0"
+jsonrpsee = { version = "0.13.0", features = ["server", "macros"] }
 tokio = { version = "1.17.0", features = ["time"] }
 
-fc-rpc-core = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-fc-consensus = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-fc-mapping-sync = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-fc-rpc = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-fc-db = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-fp-rpc = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-pallet-ethereum = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+fc-rpc-core = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+fc-consensus = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+fc-mapping-sync = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+fc-rpc = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+fc-db = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+fp-rpc = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+pallet-ethereum = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
 
 unique-rpc = { default-features = false, path = "../rpc" }
 rmrk-rpc = { path = "../../primitives/rmrk-rpc" }
modifiednode/cli/src/cli.rsdiffbeforeafterboth
--- a/node/cli/src/cli.rs
+++ b/node/cli/src/cli.rs
@@ -116,6 +116,16 @@
 	#[structopt(default_value = "500", long)]
 	pub idle_autoseal_interval: u64,
 
+	/// Disable automatic hardware benchmarks.
+	///
+	/// By default these benchmarks are automatically ran at startup and measure
+	/// the CPU speed, the memory bandwidth and the disk speed.
+	///
+	/// The results are then printed out in the logs, and also sent as part of
+	/// telemetry, if telemetry is enabled.
+	#[clap(long)]
+	pub no_hardware_benchmarks: bool,
+
 	/// Relaychain arguments
 	#[structopt(raw = true)]
 	pub relaychain_args: Vec<String>,
modifiednode/cli/src/command.rsdiffbeforeafterboth
--- a/node/cli/src/command.rs
+++ b/node/cli/src/command.rs
@@ -454,6 +454,15 @@
 			let collator_options = cli.run.collator_options();
 
 			runner.run_node_until_exit(|config| async move {
+				let hwbench = if !cli.no_hardware_benchmarks {
+					config.database.path().map(|database_path| {
+						let _ = std::fs::create_dir_all(&database_path);
+						sc_sysinfo::gather_hwbench(Some(database_path))
+					})
+				} else {
+					None
+				};
+
 				let extensions = chain_spec::Extensions::try_get(&*config.chain_spec);
 
 				let service_id = config.chain_spec.service_id();
@@ -517,7 +526,7 @@
 				);
 
 				start_node_using_chain_runtime! {
-					start_node(config, polkadot_config, collator_options, para_id)
+					start_node(config, polkadot_config, collator_options, para_id, hwbench)
 						.await
 						.map(|r| r.0)
 						.map_err(Into::into)
modifiednode/cli/src/service.rsdiffbeforeafterboth
--- a/node/cli/src/service.rs
+++ b/node/cli/src/service.rs
@@ -156,7 +156,7 @@
 
 	Ok(Arc::new(fc_db::Backend::<Block>::new(
 		&fc_db::DatabaseSettings {
-			source: fc_db::DatabaseSettingsSrc::RocksDb {
+			source: fc_db::DatabaseSource::RocksDb {
 				path: database_dir,
 				cache_size: 0,
 			},
@@ -306,6 +306,7 @@
 	telemetry_worker_handle: Option<TelemetryWorkerHandle>,
 	task_manager: &mut TaskManager,
 	collator_options: CollatorOptions,
+	hwbench: Option<sc_sysinfo::HwBench>,
 ) -> RelayChainResult<(
 	Arc<(dyn RelayChainInterface + 'static)>,
 	Option<CollatorPair>,
@@ -320,6 +321,7 @@
 			parachain_config,
 			telemetry_worker_handle,
 			task_manager,
+			hwbench,
 		),
 	}
 }
@@ -335,6 +337,7 @@
 	id: ParaId,
 	build_import_queue: BIQ,
 	build_consensus: BIC,
+	hwbench: Option<sc_sysinfo::HwBench>,
 ) -> sc_service::error::Result<(TaskManager, Arc<FullClient<RuntimeApi, ExecutorDispatch>>)>
 where
 	sc_client_api::StateBackendFor<FullBackend, Block>: sp_api::StateBackend<BlakeTwo256>,
@@ -412,6 +415,7 @@
 		telemetry_worker_handle,
 		&mut task_manager,
 		collator_options.clone(),
+		hwbench.clone(),
 	)
 	.await
 	.map_err(|e| match e {
@@ -440,7 +444,6 @@
 			warp_sync: None,
 		})?;
 
-	let subscription_executor = sc_rpc::SubscriptionTaskExecutor::new(task_manager.spawn_handle());
 	let rpc_client = client.clone();
 	let rpc_pool = transaction_pool.clone();
 	let select_chain = params.select_chain.clone();
@@ -448,14 +451,31 @@
 
 	let rpc_frontier_backend = frontier_backend.clone();
 
-	let block_data_cache = Arc::new(fc_rpc::EthBlockDataCache::new(
+	let block_data_cache = Arc::new(fc_rpc::EthBlockDataCacheTask::new(
 		task_manager.spawn_handle(),
 		overrides_handle::<_, _, Runtime>(client.clone()),
 		50,
 		50,
+		prometheus_registry.clone(),
 	));
 
-	let rpc_extensions_builder = Box::new(move |deny_unsafe, _| {
+	task_manager.spawn_essential_handle().spawn(
+		"frontier-mapping-sync-worker",
+		None,
+		MappingSyncWorker::new(
+			client.import_notification_stream(),
+			Duration::new(6, 0),
+			client.clone(),
+			backend.clone(),
+			frontier_backend.clone(),
+			3,
+			0,
+			SyncStrategy::Normal,
+		)
+		.for_each(|()| futures::future::ready(())),
+	);
+
+	let rpc_builder = Box::new(move |deny_unsafe, subscription_task_executor| {
 		let full_deps = unique_rpc::FullDeps {
 			backend: rpc_frontier_backend.clone(),
 			deny_unsafe,
@@ -476,32 +496,15 @@
 			fee_history_limit: 2048,
 		};
 
-		Ok(
-			unique_rpc::create_full::<_, _, _, _, Runtime, RuntimeApi, _>(
-				full_deps,
-				subscription_executor.clone(),
-			),
+		unique_rpc::create_full::<_, _, _, _, Runtime, RuntimeApi, _>(
+			full_deps,
+			subscription_task_executor,
 		)
+		.map_err(Into::into)
 	});
 
-	task_manager.spawn_essential_handle().spawn(
-		"frontier-mapping-sync-worker",
-		None,
-		MappingSyncWorker::new(
-			client.import_notification_stream(),
-			Duration::new(6, 0),
-			client.clone(),
-			backend.clone(),
-			frontier_backend.clone(),
-			3,
-			0,
-			SyncStrategy::Normal,
-		)
-		.for_each(|()| futures::future::ready(())),
-	);
-
 	sc_service::spawn_tasks(sc_service::SpawnTasksParams {
-		rpc_extensions_builder,
+		rpc_builder,
 		client: client.clone(),
 		transaction_pool: transaction_pool.clone(),
 		task_manager: &mut task_manager,
@@ -513,6 +516,19 @@
 		telemetry: telemetry.as_mut(),
 	})?;
 
+	if let Some(hwbench) = hwbench {
+		sc_sysinfo::print_hwbench(&hwbench);
+
+		if let Some(ref mut telemetry) = telemetry {
+			let telemetry_handle = telemetry.handle();
+			task_manager.spawn_handle().spawn(
+				"telemetry_hwbench",
+				None,
+				sc_sysinfo::initialize_hwbench_telemetry(telemetry_handle, hwbench),
+			);
+		}
+	}
+
 	let announce_block = {
 		let network = network.clone();
 		Arc::new(move |hash, data| network.announce_block(hash, data))
@@ -629,6 +645,7 @@
 	polkadot_config: Configuration,
 	collator_options: CollatorOptions,
 	id: ParaId,
+	hwbench: Option<sc_sysinfo::HwBench>,
 ) -> sc_service::error::Result<(TaskManager, Arc<FullClient<RuntimeApi, ExecutorDispatch>>)>
 where
 	Runtime: RuntimeInstance + Send + Sync + 'static,
@@ -740,6 +757,7 @@
 				max_block_proposal_slot_portion: None,
 			}))
 		},
+		hwbench,
 	)
 	.await
 }
@@ -828,12 +846,14 @@
 		&config,
 		dev_build_import_queue::<RuntimeApi, ExecutorDispatch>,
 	)?;
+	let prometheus_registry = config.prometheus_registry().cloned();
 
-	let block_data_cache = Arc::new(fc_rpc::EthBlockDataCache::new(
+	let block_data_cache = Arc::new(fc_rpc::EthBlockDataCacheTask::new(
 		task_manager.spawn_handle(),
 		overrides_handle::<_, _, Runtime>(client.clone()),
 		50,
 		50,
+		prometheus_registry.clone(),
 	));
 
 	let (network, system_rpc_tx, network_starter) =
@@ -856,7 +876,6 @@
 		);
 	}
 
-	let prometheus_registry = config.prometheus_registry().cloned();
 	let collator = config.role.is_authority();
 
 	let select_chain = maybe_select_chain.clone();
@@ -967,12 +986,11 @@
 		.for_each(|()| futures::future::ready(())),
 	);
 
-	let subscription_executor = sc_rpc::SubscriptionTaskExecutor::new(task_manager.spawn_handle());
 	let rpc_client = client.clone();
 	let rpc_pool = transaction_pool.clone();
 	let rpc_network = network.clone();
 	let rpc_frontier_backend = frontier_backend.clone();
-	let rpc_extensions_builder = Box::new(move |deny_unsafe, _| {
+	let rpc_builder = Box::new(move |deny_unsafe, subscription_executor| {
 		let full_deps = unique_rpc::FullDeps {
 			backend: rpc_frontier_backend.clone(),
 			deny_unsafe,
@@ -993,12 +1011,11 @@
 			fee_history_limit: 2048,
 		};
 
-		Ok(
-			unique_rpc::create_full::<_, _, _, _, Runtime, RuntimeApi, _>(
-				full_deps,
-				subscription_executor.clone(),
-			),
+		unique_rpc::create_full::<_, _, _, _, Runtime, RuntimeApi, _>(
+			full_deps,
+			subscription_executor,
 		)
+		.map_err(Into::into)
 	});
 
 	sc_service::spawn_tasks(sc_service::SpawnTasksParams {
@@ -1007,7 +1024,7 @@
 		keystore: keystore_container.sync_keystore(),
 		task_manager: &mut task_manager,
 		transaction_pool,
-		rpc_extensions_builder,
+		rpc_builder,
 		backend,
 		system_rpc_tx,
 		config,
modifiednode/rpc/Cargo.tomldiffbeforeafterboth
--- a/node/rpc/Cargo.toml
+++ b/node/rpc/Cargo.toml
@@ -11,43 +11,42 @@
 
 [dependencies]
 futures = { version = "0.3.17", features = ["compat"] }
-jsonrpc-core = "18.0.0"
-jsonrpc-pubsub = "18.0.0"
+jsonrpsee = { version = "0.13.0", features = ["server", "macros"] }
 # pallet-contracts-rpc = { git = 'https://github.com/paritytech/substrate', branch = 'master' }
-pallet-transaction-payment-rpc = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sc-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sc-consensus-epochs = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sc-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sc-finality-grandpa-rpc = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sc-keystore = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sc-network = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sc-rpc-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sc-rpc = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sc-service = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-block-builder = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-consensus = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-core = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-offchain = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-storage = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-session = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sc-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-substrate-frame-rpc-system = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
+pallet-transaction-payment-rpc = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sc-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sc-consensus-epochs = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sc-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sc-finality-grandpa-rpc = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sc-keystore = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sc-network = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sc-rpc-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sc-rpc = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sc-service = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-block-builder = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-consensus = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-core = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-offchain = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-storage = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-session = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sc-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+substrate-frame-rpc-system = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
 tokio = { version = "0.2.25", features = ["macros", "sync"] }
 
-pallet-ethereum = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-fc-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-fp-storage = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-fc-rpc-core = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-fc-db = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-fc-mapping-sync = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+pallet-ethereum = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+fc-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+fp-storage = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+fc-rpc-core = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+fc-db = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+fc-mapping-sync = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
 
 pallet-common = { default-features = false, path = "../../pallets/common" }
 unique-runtime-common = { default-features = false, path = "../../runtime/common" }
modifiednode/rpc/src/lib.rsdiffbeforeafterboth
--- a/node/rpc/src/lib.rs
+++ b/node/rpc/src/lib.rs
@@ -16,11 +16,11 @@
 
 use sp_runtime::traits::BlakeTwo256;
 use fc_rpc::{
-	EthBlockDataCache, OverrideHandle, RuntimeApiStorageOverride, SchemaV1Override,
+	EthBlockDataCacheTask, OverrideHandle, RuntimeApiStorageOverride, SchemaV1Override,
 	StorageOverride, SchemaV2Override, SchemaV3Override,
 };
+use jsonrpsee::RpcModule;
 use fc_rpc_core::types::{FilterPool, FeeHistoryCache};
-use jsonrpc_pubsub::manager::SubscriptionManager;
 use fp_storage::EthereumStorageSchema;
 use sc_client_api::{
 	backend::{AuxStore, StorageProvider},
@@ -49,9 +49,6 @@
 	RmrkPartType, RmrkTheme,
 };*/
 
-/// Public io handler for exporting into other modules
-pub type IoHandler = jsonrpc_core::IoHandler<sc_rpc::Metadata>;
-
 /// Extra dependencies for GRANDPA
 pub struct GrandpaDeps<B> {
 	/// Voting round info.
@@ -95,7 +92,7 @@
 	/// Fee history cache.
 	pub fee_history_cache: FeeHistoryCache,
 	/// Cache for Ethereum block data.
-	pub block_data_cache: Arc<EthBlockDataCache<Block>>,
+	pub block_data_cache: Arc<EthBlockDataCacheTask<Block>>,
 }
 
 pub fn overrides_handle<C, BE, R>(client: Arc<C>) -> Arc<OverrideHandle<Block>>
@@ -136,7 +133,7 @@
 pub fn create_full<C, P, SC, CA, R, A, B>(
 	deps: FullDeps<C, P, SC, CA>,
 	subscription_task_executor: SubscriptionTaskExecutor,
-) -> jsonrpc_core::IoHandler<sc_rpc_api::Metadata>
+) -> Result<RpcModule<()>, Box<dyn std::error::Error + Send + Sync>>
 where
 	C: ProvideRuntimeApi<Block> + StorageProvider<Block, B> + AuxStore,
 	C: HeaderBackend<Block> + HeaderMetadata<Block, Error = BlockChainError> + 'static,
@@ -170,16 +167,15 @@
 	for<'de> <R as RuntimeInstance>::CrossAccountId: serde::Deserialize<'de>,
 {
 	use fc_rpc::{
-		EthApi, EthApiServer, EthDevSigner, EthFilterApi, EthFilterApiServer, EthPubSubApi,
-		EthPubSubApiServer, EthSigner, HexEncodedIdProvider, NetApi, NetApiServer, Web3Api,
-		Web3ApiServer,
+		Eth, EthApiServer, EthDevSigner, EthFilter, EthFilterApiServer, EthPubSub,
+		EthPubSubApiServer, EthSigner, Net, NetApiServer, Web3, Web3ApiServer,
 	};
-	use uc_rpc::{UniqueApi, RmrkApi, Unique};
+	use uc_rpc::{UniqueApiServer, Unique};
 	// use pallet_contracts_rpc::{Contracts, ContractsApi};
-	use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApi};
-	use substrate_frame_rpc_system::{FullSystem, SystemApi};
+	use pallet_transaction_payment_rpc::{TransactionPaymentRpc, TransactionPaymentApiServer};
+	use substrate_frame_rpc_system::{SystemRpc, SystemApiServer};
 
-	let mut io = jsonrpc_core::IoHandler::default();
+	let mut io = RpcModule::new(());
 	let FullDeps {
 		client,
 		pool,
@@ -197,15 +193,8 @@
 		max_past_logs,
 	} = deps;
 
-	io.extend_with(SystemApi::to_delegate(FullSystem::new(
-		client.clone(),
-		pool.clone(),
-		deny_unsafe,
-	)));
-
-	io.extend_with(TransactionPaymentApi::to_delegate(TransactionPayment::new(
-		client.clone(),
-	)));
+	io.merge(SystemRpc::new(Arc::clone(&client), Arc::clone(&pool), deny_unsafe).into_rpc())?;
+	io.merge(TransactionPaymentRpc::new(Arc::clone(&client)).into_rpc())?;
 
 	// io.extend_with(ContractsApi::to_delegate(Contracts::new(client.clone())));
 
@@ -216,56 +205,58 @@
 
 	let overrides = overrides_handle::<_, _, R>(client.clone());
 
-	io.extend_with(EthApiServer::to_delegate(EthApi::new(
-		client.clone(),
-		pool.clone(),
-		graph,
-		Some(<R as RuntimeInstance>::get_transaction_converter()),
-		network.clone(),
-		signers,
-		overrides.clone(),
-		backend.clone(),
-		is_authority,
-		block_data_cache.clone(),
-		fee_history_limit,
-		fee_history_cache,
-	)));
+	io.merge(
+		Eth::new(
+			client.clone(),
+			pool.clone(),
+			graph,
+			Some(<R as RuntimeInstance>::get_transaction_converter()),
+			network.clone(),
+			signers,
+			overrides.clone(),
+			backend.clone(),
+			is_authority,
+			block_data_cache.clone(),
+			fee_history_cache,
+			fee_history_limit,
+		)
+		.into_rpc(),
+	)?;
 
 	// todo look into
 	//let unique = Unique::new(client.clone());
-	io.extend_with(UniqueApi::to_delegate(Unique::new(client.clone())));
+	io.merge(Unique::new(client.clone()).into_rpc())?;
 	// TODO free RMRK! io.extend_with(RmrkApi::to_delegate(Unique::new(client.clone())));
 
 	if let Some(filter_pool) = filter_pool {
-		io.extend_with(EthFilterApiServer::to_delegate(EthFilterApi::new(
-			client.clone(),
-			backend,
-			filter_pool,
-			500_usize, // max stored filters
-			max_past_logs,
-			block_data_cache,
-		)));
+		io.merge(
+			EthFilter::new(
+				client.clone(),
+				backend,
+				filter_pool,
+				500_usize, // max stored filters
+				max_past_logs,
+				block_data_cache,
+			)
+			.into_rpc(),
+		)?;
 	}
 
-	io.extend_with(NetApiServer::to_delegate(NetApi::new(
-		client.clone(),
-		network.clone(),
-		// Whether to format the `peer_count` response as Hex (default) or not.
-		true,
-	)));
+	io.merge(
+		Net::new(
+			client.clone(),
+			network.clone(),
+			// Whether to format the `peer_count` response as Hex (default) or not.
+			true,
+		)
+		.into_rpc(),
+	)?;
 
-	io.extend_with(Web3ApiServer::to_delegate(Web3Api::new(client.clone())));
+	io.merge(Web3::new(client.clone()).into_rpc())?;
 
-	io.extend_with(EthPubSubApiServer::to_delegate(EthPubSubApi::new(
-		pool,
-		client,
-		network,
-		SubscriptionManager::<HexEncodedIdProvider>::with_id_provider(
-			HexEncodedIdProvider::default(),
-			Arc::new(subscription_task_executor),
-		),
-		overrides,
-	)));
+	io.merge(
+		EthPubSub::new(pool, client, network, subscription_task_executor, overrides).into_rpc(),
+	)?;
 
-	io
+	Ok(io)
 }
modifiedpallets/common/Cargo.tomldiffbeforeafterboth
--- a/pallets/common/Cargo.toml
+++ b/pallets/common/Cargo.toml
@@ -11,18 +11,18 @@
 version = '3.1.2'
 
 [dependencies]
-frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
 up-data-structs = { default-features = false, path = '../../primitives/data-structs' }
 pallet-evm-coder-substrate = { default-features = false, path = '../../pallets/evm-coder-substrate' }
 evm-coder = { default-features = false, path = '../../crates/evm-coder' }
 ethereum = { version = "0.12.0", default-features = false }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
 
 serde = { version = "1.0.130", default-features = false }
 scale-info = { version = "2.0.1", default-features = false, features = [
modifiedpallets/common/src/erc.rsdiffbeforeafterboth
--- a/pallets/common/src/erc.rs
+++ b/pallets/common/src/erc.rs
@@ -19,9 +19,8 @@
 	types::*,
 	execution::{Result, Error},
 };
-pub use pallet_evm::{PrecompileOutput, PrecompileResult, account::CrossAccountId};
+pub use pallet_evm::{PrecompileOutput, PrecompileResult, PrecompileHandle, account::CrossAccountId};
 use pallet_evm_coder_substrate::dispatch_to_evm;
-use sp_core::{H160, U256};
 use sp_std::vec::Vec;
 use up_data_structs::{Property, SponsoringRateLimit};
 use alloc::format;
@@ -43,7 +42,7 @@
 pub trait CommonEvmHandler {
 	const CODE: &'static [u8];
 
-	fn call(self, source: &H160, input: &[u8], value: U256) -> Option<PrecompileResult>;
+	fn call(self, handle: &mut impl PrecompileHandle) -> Option<PrecompileResult>;
 }
 
 #[solidity_interface(name = "Collection")]
modifiedpallets/evm-coder-substrate/Cargo.tomldiffbeforeafterboth
--- a/pallets/evm-coder-substrate/Cargo.toml
+++ b/pallets/evm-coder-substrate/Cargo.toml
@@ -8,15 +8,15 @@
 scale-info = { version = "2.0.1", default-features = false, features = [
     "derive",
 ] }
-sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
+sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
 ethereum = { version = "0.12.0", default-features = false }
 evm-coder = { default-features = false, path = "../../crates/evm-coder" }
-pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
+pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
 up-data-structs = { default-features = false, path = "../../primitives/data-structs" }
 
 [dependencies.codec]
modifiedpallets/evm-coder-substrate/src/lib.rsdiffbeforeafterboth
--- a/pallets/evm-coder-substrate/src/lib.rs
+++ b/pallets/evm-coder-substrate/src/lib.rs
@@ -32,7 +32,7 @@
 use up_data_structs::budget;
 use pallet_evm::{
 	ExitError, ExitRevert, ExitSucceed, GasWeightMapping, PrecompileFailure, PrecompileOutput,
-	PrecompileResult,
+	PrecompileResult, PrecompileHandle,
 };
 use sp_core::H160;
 // #[cfg(feature = "runtime-benchmarks")]
@@ -171,15 +171,15 @@
 
 	pub fn evm_to_precompile_output(
 		self,
+		handle: &mut impl PrecompileHandle,
 		result: evm_coder::execution::Result<Option<AbiWriter>>,
 	) -> Option<PrecompileResult> {
 		use evm_coder::execution::Error;
+		// We ignore error here, as it should not occur, as we have our own bookkeeping of gas
+		let _ = handle.record_cost(self.initial_gas - self.gas_left());
 		Some(match result {
 			Ok(Some(v)) => Ok(PrecompileOutput {
 				exit_status: ExitSucceed::Returned,
-				cost: self.initial_gas - self.gas_left(),
-				// We don't use this interface
-				logs: sp_std::vec![],
 				output: v.finish(),
 			}),
 			Ok(None) => return None,
@@ -189,7 +189,6 @@
 
 				Err(PrecompileFailure::Revert {
 					exit_status: ExitRevert::Reverted,
-					cost: self.initial_gas - self.gas_left(),
 					output: writer.finish(),
 				})
 			}
@@ -235,14 +234,18 @@
 	T: Config,
 	C: evm_coder::Call + evm_coder::Weighted,
 	E: evm_coder::Callable<C> + WithRecorder<T>,
+	H: PrecompileHandle,
 >(
-	caller: H160,
+	handle: &mut H,
 	mut e: E,
-	value: value,
-	input: &[u8],
 ) -> Option<PrecompileResult> {
-	let result = call_internal(caller, &mut e, value, input);
-	e.into_recorder().evm_to_precompile_output(result)
+	let result = call_internal(
+		handle.context().caller,
+		&mut e,
+		handle.context().apparent_value,
+		handle.input(),
+	);
+	e.into_recorder().evm_to_precompile_output(handle, result)
 }
 
 fn call_internal<
modifiedpallets/evm-contract-helpers/Cargo.tomldiffbeforeafterboth
--- a/pallets/evm-contract-helpers/Cargo.toml
+++ b/pallets/evm-contract-helpers/Cargo.toml
@@ -11,16 +11,16 @@
 log = { default-features = false, version = "0.4.14" }
 
 # Substrate
-frame-support = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.21' }
-frame-system = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.21' }
-sp-runtime = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.21' }
-sp-std = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.21' }
-sp-core = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.21' }
+frame-support = { default-features = false, git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }
+frame-system = { default-features = false, git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }
+sp-runtime = { default-features = false, git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }
+sp-std = { default-features = false, git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }
+sp-core = { default-features = false, git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }
 
 # Unique
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-up-sponsorship = { version = "0.1.0", default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.21" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+up-sponsorship = { version = "0.1.0", default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.22" }
 
 # Locals
 evm-coder = { default-features = false, path = '../../crates/evm-coder' }
modifiedpallets/evm-contract-helpers/src/eth.rsdiffbeforeafterboth
--- a/pallets/evm-contract-helpers/src/eth.rs
+++ b/pallets/evm-contract-helpers/src/eth.rs
@@ -18,7 +18,7 @@
 use evm_coder::{abi::AbiWriter, execution::Result, generate_stubgen, solidity_interface, types::*};
 use pallet_evm_coder_substrate::{SubstrateRecorder, WithRecorder};
 use pallet_evm::{
-	ExitRevert, OnCreate, OnMethodCall, PrecompileResult, PrecompileFailure,
+	ExitRevert, OnCreate, OnMethodCall, PrecompileResult, PrecompileFailure, PrecompileHandle,
 	account::CrossAccountId,
 };
 use sp_core::H160;
@@ -138,18 +138,13 @@
 		contract == &T::ContractAddress::get()
 	}
 
-	fn call(
-		source: &sp_core::H160,
-		target: &sp_core::H160,
-		gas_left: u64,
-		input: &[u8],
-		value: sp_core::U256,
-	) -> Option<PrecompileResult> {
+	fn call(handle: &mut impl PrecompileHandle) -> Option<PrecompileResult> {
 		// TODO: Extract to another OnMethodCall handler
-		if <AllowlistEnabled<T>>::get(target) && !<Pallet<T>>::allowed(*target, *source) {
+		if <AllowlistEnabled<T>>::get(handle.code_address())
+			&& !<Pallet<T>>::allowed(handle.code_address(), handle.context().caller)
+		{
 			return Some(Err(PrecompileFailure::Revert {
 				exit_status: ExitRevert::Reverted,
-				cost: 0,
 				output: {
 					let mut writer = AbiWriter::new_call(evm_coder::fn_selector!(Error(string)));
 					writer.string("Target contract is allowlisted");
@@ -158,12 +153,12 @@
 			}));
 		}
 
-		if target != &T::ContractAddress::get() {
+		if handle.code_address() != T::ContractAddress::get() {
 			return None;
 		}
 
-		let helpers = ContractHelpers::<T>(SubstrateRecorder::<T>::new(gas_left));
-		pallet_evm_coder_substrate::call(*source, helpers, value, input)
+		let helpers = ContractHelpers::<T>(SubstrateRecorder::<T>::new(handle.remaining_gas()));
+		pallet_evm_coder_substrate::call(handle, helpers)
 	}
 
 	fn get_code(contract: &sp_core::H160) -> Option<Vec<u8>> {
modifiedpallets/evm-migration/Cargo.tomldiffbeforeafterboth
--- a/pallets/evm-migration/Cargo.toml
+++ b/pallets/evm-migration/Cargo.toml
@@ -8,15 +8,15 @@
 scale-info = { version = "2.0.1", default-features = false, features = [
     "derive",
 ] }
-frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-io = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-io = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
 
 [dependencies.codec]
 default-features = false
modifiedpallets/evm-migration/src/lib.rsdiffbeforeafterboth
--- a/pallets/evm-migration/src/lib.rs
+++ b/pallets/evm-migration/src/lib.rs
@@ -28,7 +28,7 @@
 	use sp_core::{H160, H256};
 	use sp_std::vec::Vec;
 	use super::weights::WeightInfo;
-	use pallet_evm::Pallet as PalletEvm;
+	use pallet_evm::{PrecompileHandle, Pallet as PalletEvm};
 
 	#[pallet::config]
 	pub trait Config: frame_system::Config + pallet_evm::Config {
@@ -108,13 +108,7 @@
 			false
 		}
 
-		fn call(
-			_source: &H160,
-			_arget: &H160,
-			_gas_left: u64,
-			_input: &[u8],
-			_value: sp_core::U256,
-		) -> Option<pallet_evm::PrecompileResult> {
+		fn call(_handle: &mut impl PrecompileHandle) -> Option<pallet_evm::PrecompileResult> {
 			None
 		}
 
modifiedpallets/evm-transaction-payment/Cargo.tomldiffbeforeafterboth
--- a/pallets/evm-transaction-payment/Cargo.toml
+++ b/pallets/evm-transaction-payment/Cargo.toml
@@ -8,17 +8,17 @@
 scale-info = { version = "2.0.1", default-features = false, features = [
     "derive",
 ] }
-frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-io = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-up-sponsorship = { version = "0.1.0", default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.21" }
-fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-io = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+up-sponsorship = { version = "0.1.0", default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.22" }
+fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
 
 [dependencies.codec]
 default-features = false
modifiedpallets/fungible/Cargo.tomldiffbeforeafterboth
--- a/pallets/fungible/Cargo.toml
+++ b/pallets/fungible/Cargo.toml
@@ -11,19 +11,19 @@
 version = '3.1.2'
 
 [dependencies]
-frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
+frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
 pallet-common = { default-features = false, path = '../common' }
 pallet-structure = { default-features = false, path = '../structure' }
 up-data-structs = { default-features = false, path = '../../primitives/data-structs' }
 evm-coder = { default-features = false, path = '../../crates/evm-coder' }
 pallet-evm-coder-substrate = { default-features = false, path = '../evm-coder-substrate' }
 ethereum = { version = "0.12.0", default-features = false }
-frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
 scale-info = { version = "2.0.1", default-features = false, features = [
     "derive",
 ] }
modifiedpallets/fungible/src/erc.rsdiffbeforeafterboth
--- a/pallets/fungible/src/erc.rs
+++ b/pallets/fungible/src/erc.rs
@@ -19,9 +19,8 @@
 use evm_coder::{ToLog, execution::*, generate_stubgen, solidity_interface, types::*, weight};
 use up_data_structs::CollectionMode;
 use pallet_common::erc::{CommonEvmHandler, PrecompileResult};
-use sp_core::{H160, U256};
 use sp_std::vec::Vec;
-use pallet_evm::account::CrossAccountId;
+use pallet_evm::{account::CrossAccountId, PrecompileHandle};
 use pallet_evm_coder_substrate::{call, dispatch_to_evm};
 use pallet_structure::{SelfWeightOf as StructureWeight, weights::WeightInfo as _};
 use pallet_common::{CollectionHandle, erc::CollectionCall};
@@ -161,7 +160,7 @@
 impl<T: Config> CommonEvmHandler for FungibleHandle<T> {
 	const CODE: &'static [u8] = include_bytes!("./stubs/UniqueFungible.raw");
 
-	fn call(self, source: &H160, input: &[u8], value: U256) -> Option<PrecompileResult> {
-		call::<T, UniqueFungibleCall<T>, _>(*source, self, value, input)
+	fn call(self, handle: &mut impl PrecompileHandle) -> Option<PrecompileResult> {
+		call::<T, UniqueFungibleCall<T>, _, _>(handle, self)
 	}
 }
modifiedpallets/inflation/Cargo.tomldiffbeforeafterboth
--- a/pallets/inflation/Cargo.toml
+++ b/pallets/inflation/Cargo.toml
@@ -43,37 +43,37 @@
 default-features = false
 optional = true
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.frame-support]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.frame-system]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.pallet-balances]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.pallet-timestamp]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.pallet-randomness-collective-flip]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-std]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.serde]
 default-features = false
@@ -83,17 +83,17 @@
 [dependencies.sp-runtime]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-core]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-io]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies]
 scale-info = { version = "2.0.1", default-features = false, features = [
modifiedpallets/nonfungible/Cargo.tomldiffbeforeafterboth
--- a/pallets/nonfungible/Cargo.toml
+++ b/pallets/nonfungible/Cargo.toml
@@ -11,19 +11,19 @@
 version = '3.1.2'
 
 [dependencies]
-frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
 pallet-common = { default-features = false, path = '../common' }
 pallet-structure = { default-features = false, path = '../structure' }
 up-data-structs = { default-features = false, path = '../../primitives/data-structs' }
 evm-coder = { default-features = false, path = '../../crates/evm-coder' }
 pallet-evm-coder-substrate = { default-features = false, path = '../evm-coder-substrate' }
 ethereum = { version = "0.12.0", default-features = false }
-frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
+frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
 scale-info = { version = "2.0.1", default-features = false, features = [
     "derive",
 ] }
modifiedpallets/nonfungible/src/erc.rsdiffbeforeafterboth
--- a/pallets/nonfungible/src/erc.rs
+++ b/pallets/nonfungible/src/erc.rs
@@ -26,13 +26,12 @@
 	CollectionPropertiesVec,
 };
 use pallet_evm_coder_substrate::dispatch_to_evm;
-use sp_core::{H160, U256};
 use sp_std::vec::Vec;
 use pallet_common::{
 	erc::{CommonEvmHandler, PrecompileResult, CollectionCall, token_uri_key},
 	CollectionHandle, CollectionPropertyPermissions,
 };
-use pallet_evm::account::CrossAccountId;
+use pallet_evm::{account::CrossAccountId, PrecompileHandle};
 use pallet_evm_coder_substrate::call;
 use pallet_structure::{SelfWeightOf as StructureWeight, weights::WeightInfo as _};
 
@@ -587,7 +586,7 @@
 impl<T: Config> CommonEvmHandler for NonfungibleHandle<T> {
 	const CODE: &'static [u8] = include_bytes!("./stubs/UniqueNFT.raw");
 
-	fn call(self, source: &H160, input: &[u8], value: U256) -> Option<PrecompileResult> {
-		call::<T, UniqueNFTCall<T>, _>(*source, self, value, input)
+	fn call(self, handle: &mut impl PrecompileHandle) -> Option<PrecompileResult> {
+		call::<T, UniqueNFTCall<T>, _, _>(handle, self)
 	}
 }
modifiedpallets/proxy-rmrk-core/Cargo.tomldiffbeforeafterboth
--- a/pallets/proxy-rmrk-core/Cargo.toml
+++ b/pallets/proxy-rmrk-core/Cargo.toml
@@ -11,16 +11,16 @@
 version = '3.1.2'
 
 [dependencies]
-frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
+frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
 pallet-common = { default-features = false, path = '../common' }
 pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }
 up-data-structs = { default-features = false, path = '../../primitives/data-structs' }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
 scale-info = { version = "2.0.1", default-features = false, features = ["derive"] }
 
 [features]
modifiedpallets/proxy-rmrk-equip/Cargo.tomldiffbeforeafterboth
--- a/pallets/proxy-rmrk-equip/Cargo.toml
+++ b/pallets/proxy-rmrk-equip/Cargo.toml
@@ -11,16 +11,16 @@
 version = '3.1.2'
 
 [dependencies]
-frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
+frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
 pallet-common = { default-features = false, path = '../common' }
 pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }
 up-data-structs = { default-features = false, path = '../../primitives/data-structs' }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
 scale-info = { version = "2.0.1", default-features = false, features = ["derive"] }
 pallet-rmrk-core = { default-features = false, path = "../proxy-rmrk-core" }
 
modifiedpallets/refungible/Cargo.tomldiffbeforeafterboth
--- a/pallets/refungible/Cargo.toml
+++ b/pallets/refungible/Cargo.toml
@@ -11,16 +11,16 @@
 version = '3.1.2'
 
 [dependencies]
-frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
 pallet-common = { default-features = false, path = '../common' }
 pallet-structure = { default-features = false, path = '../structure' }
 up-data-structs = { default-features = false, path = '../../primitives/data-structs' }
-frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
+frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
 scale-info = { version = "2.0.1", default-features = false, features = [
     "derive",
 ] }
modifiedpallets/refungible/src/erc.rsdiffbeforeafterboth
--- a/pallets/refungible/src/erc.rs
+++ b/pallets/refungible/src/erc.rs
@@ -16,6 +16,7 @@
 
 use up_data_structs::TokenId;
 use pallet_common::erc::CommonEvmHandler;
+use pallet_evm::PrecompileHandle;
 
 use crate::{Config, RefungibleHandle};
 
@@ -24,9 +25,7 @@
 
 	fn call(
 		self,
-		_source: &sp_core::H160,
-		_input: &[u8],
-		_value: sp_core::U256,
+		_handle: &mut impl PrecompileHandle,
 	) -> Option<pallet_common::erc::PrecompileResult> {
 		// TODO: Implement RFT variant of ERC721
 		None
@@ -40,9 +39,7 @@
 
 	fn call(
 		self,
-		_source: &sp_core::H160,
-		_input: &[u8],
-		_value: sp_core::U256,
+		_handle: &mut impl PrecompileHandle,
 	) -> Option<pallet_common::erc::PrecompileResult> {
 		// TODO: Implement RFT variant of ERC20
 		None
modifiedpallets/scheduler/Cargo.tomldiffbeforeafterboth
--- a/pallets/scheduler/Cargo.toml
+++ b/pallets/scheduler/Cargo.toml
@@ -15,19 +15,19 @@
 scale-info = { version = "2.0.1", default-features = false, features = [
 	"derive",
 ] }
-frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-io = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
+frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-io = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
 
-up-sponsorship = { version = "0.1.0", default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.21" }
+up-sponsorship = { version = "0.1.0", default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.22" }
 log = { version = "0.4.14", default-features = false }
 
 [dev-dependencies]
-sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-substrate-test-utils = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
+sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+substrate-test-utils = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
 
 [features]
 default = ["std"]
modifiedpallets/structure/Cargo.tomldiffbeforeafterboth
--- a/pallets/structure/Cargo.toml
+++ b/pallets/structure/Cargo.toml
@@ -4,10 +4,10 @@
 edition = "2021"
 
 [dependencies]
-frame-support = { default-features = false, git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.21' }
-frame-system = { default-features = false, git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.21' }
-frame-benchmarking = { default-features = false, optional = true, git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.21' }
-sp-std = { default-features = false, git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.21' }
+frame-support = { default-features = false, git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }
+frame-system = { default-features = false, git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }
+frame-benchmarking = { default-features = false, optional = true, git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }
+sp-std = { default-features = false, git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }
 pallet-common = { path = "../common", default-features = false }
 parity-scale-codec = { version = "3.1.2", default-features = false, features = [
 	"derive",
@@ -16,7 +16,7 @@
 	"derive",
 ] }
 up-data-structs = { path = "../../primitives/data-structs", default-features = false }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
 
 [features]
 default = ["std"]
modifiedpallets/unique/Cargo.tomldiffbeforeafterboth
--- a/pallets/unique/Cargo.toml
+++ b/pallets/unique/Cargo.toml
@@ -59,37 +59,37 @@
 default-features = false
 optional = true
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.frame-support]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.frame-system]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-std]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-runtime]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-core]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-io]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 ################################################################################
 # Local Dependencies
@@ -98,7 +98,7 @@
 scale-info = { version = "2.0.1", default-features = false, features = [
     "derive",
 ] }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
 pallet-common = { default-features = false, path = "../common" }
 evm-coder = { default-features = false, path = '../../crates/evm-coder' }
 pallet-evm-coder-substrate = { default-features = false, path = '../../pallets/evm-coder-substrate' }
modifiedpallets/unique/src/eth/mod.rsdiffbeforeafterboth
--- a/pallets/unique/src/eth/mod.rs
+++ b/pallets/unique/src/eth/mod.rs
@@ -18,7 +18,7 @@
 use evm_coder::{execution::*, generate_stubgen, solidity_interface, weight, types::*};
 use ethereum as _;
 use pallet_evm_coder_substrate::{SubstrateRecorder, WithRecorder};
-use pallet_evm::{OnMethodCall, PrecompileResult, account::CrossAccountId};
+use pallet_evm::{OnMethodCall, PrecompileResult, account::CrossAccountId, PrecompileHandle};
 use up_data_structs::{
 	CreateCollectionData, MAX_COLLECTION_DESCRIPTION_LENGTH, MAX_TOKEN_PREFIX_LENGTH,
 	MAX_COLLECTION_NAME_LENGTH,
@@ -119,19 +119,14 @@
 		contract == &T::ContractAddress::get()
 	}
 
-	fn call(
-		source: &sp_core::H160,
-		target: &sp_core::H160,
-		gas_left: u64,
-		input: &[u8],
-		value: sp_core::U256,
-	) -> Option<PrecompileResult> {
-		if target != &T::ContractAddress::get() {
+	fn call(handle: &mut impl PrecompileHandle) -> Option<PrecompileResult> {
+		if handle.code_address() != T::ContractAddress::get() {
 			return None;
 		}
 
-		let helpers = EvmCollectionHelpers::<T>(SubstrateRecorder::<T>::new(gas_left));
-		pallet_evm_coder_substrate::call(*source, helpers, value, input)
+		let helpers =
+			EvmCollectionHelpers::<T>(SubstrateRecorder::<T>::new(handle.remaining_gas()));
+		pallet_evm_coder_substrate::call(handle, helpers)
 	}
 
 	fn get_code(contract: &sp_core::H160) -> Option<Vec<u8>> {
modifiedprimitives/data-structs/Cargo.tomldiffbeforeafterboth
--- a/primitives/data-structs/Cargo.toml
+++ b/primitives/data-structs/Cargo.toml
@@ -18,14 +18,14 @@
 serde = { version = "1.0.130", features = [
   'derive',
 ], default-features = false, optional = true }
-frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
+frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
 derivative = { version = "2.2.0", features = ["use_core"] }
 struct-versioning = { path = "../../crates/struct-versioning" }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
 
 [features]
 default = ["std"]
modifiedprimitives/rmrk-rpc/Cargo.tomldiffbeforeafterboth
--- a/primitives/rmrk-rpc/Cargo.toml
+++ b/primitives/rmrk-rpc/Cargo.toml
@@ -6,10 +6,10 @@
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] }
-sp-core = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.21' }
-sp-std = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.21' }
-sp-api = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.21' }
-sp-runtime = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.21' }
+sp-core = { default-features = false, git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }
+sp-std = { default-features = false, git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }
+sp-api = { default-features = false, git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }
+sp-runtime = { default-features = false, git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }
 serde = { version = "1.0.130", default-features = false, features = ["derive"] }
 up-data-structs = { default-features = false, path = '../data-structs' }
 
modifiedprimitives/rpc/Cargo.tomldiffbeforeafterboth
--- a/primitives/rpc/Cargo.toml
+++ b/primitives/rpc/Cargo.toml
@@ -10,11 +10,11 @@
 codec = { package = "parity-scale-codec", version = "3.1.2", default-features = false, features = [
 	"derive",
 ] }
-sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
 
 [features]
 default = ["std"]
modifiedruntime/common/Cargo.tomldiffbeforeafterboth
--- a/runtime/common/Cargo.toml
+++ b/runtime/common/Cargo.toml
@@ -6,7 +6,7 @@
 license = 'All Rights Reserved'
 name = 'unique-runtime-common'
 repository = 'https://github.com/UniqueNetwork/unique-chain'
-version = '0.9.21'
+version = '0.9.22'
 
 [features]
 default = ['std']
@@ -36,17 +36,17 @@
 [dependencies.sp-core]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-std]
 default-features = false
 git = 'https://github.com/paritytech/substrate'
-branch = 'polkadot-v0.9.21'
+branch = 'polkadot-v0.9.22'
 
 [dependencies.sp-runtime]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.codec]
 default-features = false
@@ -62,12 +62,12 @@
 [dependencies.frame-support]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.frame-system]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.pallet-common]
 default-features = false
@@ -96,16 +96,16 @@
 [dependencies.sp-consensus-aura]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.fp-rpc]
 default-features = false
 git = "https://github.com/uniquenetwork/frontier"
-branch = "unique-polkadot-v0.9.21-logs"
+branch = "unique-polkadot-v0.9.22"
 
 [dependencies]
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
 evm-coder = { default-features = false, path = '../../crates/evm-coder' }
-up-sponsorship = { default-features = false, git = "https://github.com/UniqueNetwork/pallet-sponsoring", branch = 'polkadot-v0.9.21' }
+up-sponsorship = { default-features = false, git = "https://github.com/UniqueNetwork/pallet-sponsoring", branch = 'polkadot-v0.9.22' }
 
 rmrk-rpc = { default-features = false, path = "../../primitives/rmrk-rpc" }
modifiedruntime/common/src/dispatch.rsdiffbeforeafterboth
--- a/runtime/common/src/dispatch.rs
+++ b/runtime/common/src/dispatch.rs
@@ -1,6 +1,6 @@
 use frame_support::{dispatch::DispatchResult, ensure};
-use pallet_evm::PrecompileResult;
-use sp_core::{H160, U256};
+use pallet_evm::{PrecompileHandle, PrecompileResult};
+use sp_core::H160;
 use sp_std::{borrow::ToOwned, vec::Vec};
 use pallet_common::{
 	CollectionById, CollectionHandle, CommonCollectionOperations, erc::CommonEvmHandler,
@@ -129,33 +129,30 @@
 			None
 		}
 	}
-	fn call(
-		source: &H160,
-		target: &H160,
-		gas_limit: u64,
-		input: &[u8],
-		value: U256,
-	) -> Option<PrecompileResult> {
-		if let Some(collection_id) = map_eth_to_id(target) {
-			let collection = <CollectionHandle<T>>::new_with_gas_limit(collection_id, gas_limit)?;
+	fn call(handle: &mut impl PrecompileHandle) -> Option<PrecompileResult> {
+		if let Some(collection_id) = map_eth_to_id(&handle.code_address()) {
+			let collection =
+				<CollectionHandle<T>>::new_with_gas_limit(collection_id, handle.remaining_gas())?;
 			let dispatched = Self::dispatch(collection);
 
 			match dispatched {
-				Self::Fungible(h) => h.call(source, input, value),
-				Self::Nonfungible(h) => h.call(source, input, value),
-				Self::Refungible(h) => h.call(source, input, value),
+				Self::Fungible(h) => h.call(handle),
+				Self::Nonfungible(h) => h.call(handle),
+				Self::Refungible(h) => h.call(handle),
 			}
 		} else if let Some((collection_id, token_id)) =
-			<T as pallet_common::Config>::EvmTokenAddressMapping::address_to_token(target)
-		{
-			let collection = <CollectionHandle<T>>::new_with_gas_limit(collection_id, gas_limit)?;
+			<T as pallet_common::Config>::EvmTokenAddressMapping::address_to_token(
+				&handle.code_address(),
+			) {
+			let collection =
+				<CollectionHandle<T>>::new_with_gas_limit(collection_id, handle.remaining_gas())?;
 			if collection.mode != CollectionMode::ReFungible {
 				return None;
 			}
 
-			let handle = RefungibleHandle::cast(collection);
+			let h = RefungibleHandle::cast(collection);
 			// TODO: check token existence
-			RefungibleTokenHandle(handle, token_id).call(source, input, value)
+			RefungibleTokenHandle(h, token_id).call(handle)
 		} else {
 			None
 		}
modifiedruntime/common/src/runtime_apis.rsdiffbeforeafterboth
--- a/runtime/common/src/runtime_apis.rs
+++ b/runtime/common/src/runtime_apis.rs
@@ -530,11 +530,13 @@
                 }
 
                 fn account_basic(address: H160) -> EVMAccount {
-                    EVM::account_basic(&address)
+                    let (account, _) = EVM::account_basic(&address);
+                    account
                 }
 
                 fn gas_price() -> U256 {
-                    <Runtime as pallet_evm::Config>::FeeCalculator::min_gas_price()
+                    let (price, _) = <Runtime as pallet_evm::Config>::FeeCalculator::min_gas_price();
+                    price
                 }
 
                 fn account_code_at(address: H160) -> Vec<u8> {
@@ -585,7 +587,7 @@
                         access_list.unwrap_or_default(),
                         is_transactional,
                         config.as_ref().unwrap_or_else(|| <Runtime as pallet_evm::Config>::config()),
-                    ).map_err(|err| err.into())
+                    ).map_err(|err| err.error.into())
                 }
 
                 #[allow(clippy::redundant_closure)]
@@ -620,7 +622,7 @@
                         access_list.unwrap_or_default(),
                         is_transactional,
                         config.as_ref().unwrap_or_else(|| <Runtime as pallet_evm::Config>::config()),
-                    ).map_err(|err| err.into())
+                    ).map_err(|err| err.error.into())
                 }
 
                 fn current_transaction_statuses() -> Option<Vec<TransactionStatus>> {
modifiedruntime/opal/Cargo.tomldiffbeforeafterboth
--- a/runtime/opal/Cargo.toml
+++ b/runtime/opal/Cargo.toml
@@ -10,7 +10,7 @@
 license = 'GPLv3'
 name = 'opal-runtime'
 repository = 'https://github.com/UniqueNetwork/unique-chain'
-version = '0.9.21'
+version = '0.9.22'
 
 [package.metadata.docs.rs]
 targets = ['x86_64-unknown-linux-gnu']
@@ -131,39 +131,39 @@
 default-features = false
 git = "https://github.com/paritytech/substrate"
 optional = true
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.frame-try-runtime]
 default-features = false
 git = 'https://github.com/paritytech/substrate'
 optional = true
-branch = 'polkadot-v0.9.21'
+branch = 'polkadot-v0.9.22'
 
 [dependencies.frame-executive]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.frame-support]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.frame-system]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.frame-system-benchmarking]
 default-features = false
 git = "https://github.com/paritytech/substrate"
 optional = true
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.frame-system-rpc-runtime-api]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.hex-literal]
 optional = true
@@ -178,12 +178,12 @@
 [dependencies.pallet-aura]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.pallet-balances]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 # Contracts specific packages
 # [dependencies.pallet-contracts]
@@ -207,32 +207,32 @@
 [dependencies.pallet-randomness-collective-flip]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.pallet-sudo]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.pallet-timestamp]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.pallet-transaction-payment]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.pallet-transaction-payment-rpc-runtime-api]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.pallet-treasury]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 # [dependencies.pallet-vesting]
 # default-features = false
@@ -242,67 +242,67 @@
 [dependencies.sp-arithmetic]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-api]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-block-builder]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-core]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-consensus-aura]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-inherents]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-io]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-offchain]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-runtime]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-session]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-std]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-transaction-pool]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-version]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.smallvec]
 version = '1.6.1'
@@ -312,47 +312,47 @@
 
 [dependencies.parachain-info]
 default-features = false
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 
 [dependencies.cumulus-pallet-aura-ext]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 default-features = false
 
 [dependencies.cumulus-pallet-parachain-system]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 default-features = false
 
 [dependencies.cumulus-primitives-core]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 default-features = false
 
 [dependencies.cumulus-pallet-xcm]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 default-features = false
 
 [dependencies.cumulus-pallet-dmp-queue]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 default-features = false
 
 [dependencies.cumulus-pallet-xcmp-queue]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 default-features = false
 
 [dependencies.cumulus-primitives-utility]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 default-features = false
 
 [dependencies.cumulus-primitives-timestamp]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 default-features = false
 
 ################################################################################
@@ -360,32 +360,32 @@
 
 [dependencies.polkadot-parachain]
 git = "https://github.com/paritytech/polkadot"
-branch = "release-v0.9.21"
+branch = "release-v0.9.22"
 default-features = false
 
 [dependencies.xcm]
 git = "https://github.com/paritytech/polkadot"
-branch = "release-v0.9.21"
+branch = "release-v0.9.22"
 default-features = false
 
 [dependencies.xcm-builder]
 git = "https://github.com/paritytech/polkadot"
-branch = "release-v0.9.21"
+branch = "release-v0.9.22"
 default-features = false
 
 [dependencies.xcm-executor]
 git = "https://github.com/paritytech/polkadot"
-branch = "release-v0.9.21"
+branch = "release-v0.9.22"
 default-features = false
 
 [dependencies.pallet-xcm]
 git = "https://github.com/paritytech/polkadot"
-branch = "release-v0.9.21"
+branch = "release-v0.9.22"
 default-features = false
 
 [dependencies.orml-vesting]
 git = "https://github.com/uniquenetwork/open-runtime-module-library"
-branch = "unique-polkadot-v0.9.21"
+branch = "unique-polkadot-v0.9.22"
 version = "0.4.1-dev"
 default-features = false
 
@@ -402,7 +402,7 @@
 pallet-unique = { path = '../../pallets/unique', default-features = false }
 up-rpc = { path = "../../primitives/rpc", default-features = false }
 rmrk-rpc = { path = "../../primitives/rmrk-rpc", default-features = false }
-fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
 pallet-inflation = { path = '../../pallets/inflation', default-features = false }
 up-data-structs = { path = '../../primitives/data-structs', default-features = false }
 pallet-common = { default-features = false, path = "../../pallets/common" }
@@ -414,20 +414,20 @@
 pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" }
 pallet-unq-scheduler = { path = '../../pallets/scheduler', default-features = false }
 # pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' }
-pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.21", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }
+pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.22", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }
 pallet-evm-migration = { path = '../../pallets/evm-migration', default-features = false }
 pallet-evm-contract-helpers = { path = '../../pallets/evm-contract-helpers', default-features = false }
 pallet-evm-transaction-payment = { path = '../../pallets/evm-transaction-payment', default-features = false }
 pallet-evm-coder-substrate = { default-features = false, path = "../../pallets/evm-coder-substrate" }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-pallet-base-fee = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+pallet-base-fee = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
 
 ################################################################################
 # Build Dependencies
 
 [build-dependencies.substrate-wasm-builder]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
modifiedruntime/opal/src/lib.rsdiffbeforeafterboth
--- a/runtime/opal/src/lib.rs
+++ b/runtime/opal/src/lib.rs
@@ -82,7 +82,7 @@
 use codec::{Encode, Decode};
 use fp_rpc::TransactionStatus;
 use sp_runtime::{
-	traits::{BlockNumberProvider, Dispatchable, PostDispatchInfoOf, Saturating},
+	traits::{BlockNumberProvider, Dispatchable, PostDispatchInfoOf, DispatchInfoOf, Saturating},
 	transaction_validity::TransactionValidityError,
 	SaturatedConversion,
 };
@@ -178,7 +178,7 @@
 	spec_name: create_runtime_str!(RUNTIME_NAME),
 	impl_name: create_runtime_str!(RUNTIME_NAME),
 	authoring_version: 1,
-	spec_version: 921080,
+	spec_version: 922000,
 	impl_version: 0,
 	apis: RUNTIME_API_VERSIONS,
 	transaction_version: 1,
@@ -252,8 +252,8 @@
 
 pub struct FixedFee;
 impl FeeCalculator for FixedFee {
-	fn min_gas_price() -> U256 {
-		MIN_GAS_PRICE.into()
+	fn min_gas_price() -> (U256, u64) {
+		(MIN_GAS_PRICE.into(), 0)
 	}
 }
 
@@ -1128,9 +1128,14 @@
 		}
 	}
 
-	fn validate_self_contained(&self, info: &Self::SignedInfo) -> Option<TransactionValidity> {
+	fn validate_self_contained(
+		&self,
+		info: &Self::SignedInfo,
+		dispatch_info: &DispatchInfoOf<Call>,
+		len: usize,
+	) -> Option<TransactionValidity> {
 		match self {
-			Call::Ethereum(call) => call.validate_self_contained(info),
+			Call::Ethereum(call) => call.validate_self_contained(info, dispatch_info, len),
 			_ => None,
 		}
 	}
modifiedruntime/quartz/Cargo.tomldiffbeforeafterboth
--- a/runtime/quartz/Cargo.toml
+++ b/runtime/quartz/Cargo.toml
@@ -10,7 +10,7 @@
 license = 'GPLv3'
 name = 'quartz-runtime'
 repository = 'https://github.com/UniqueNetwork/unique-chain'
-version = '0.9.21'
+version = '0.9.22'
 
 [package.metadata.docs.rs]
 targets = ['x86_64-unknown-linux-gnu']
@@ -129,39 +129,39 @@
 default-features = false
 git = "https://github.com/paritytech/substrate"
 optional = true
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.frame-try-runtime]
 default-features = false
 git = 'https://github.com/paritytech/substrate'
 optional = true
-branch = 'polkadot-v0.9.21'
+branch = 'polkadot-v0.9.22'
 
 [dependencies.frame-executive]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.frame-support]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.frame-system]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.frame-system-benchmarking]
 default-features = false
 git = "https://github.com/paritytech/substrate"
 optional = true
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.frame-system-rpc-runtime-api]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.hex-literal]
 optional = true
@@ -176,12 +176,12 @@
 [dependencies.pallet-aura]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.pallet-balances]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 # Contracts specific packages
 # [dependencies.pallet-contracts]
@@ -205,32 +205,32 @@
 [dependencies.pallet-randomness-collective-flip]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.pallet-sudo]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.pallet-timestamp]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.pallet-transaction-payment]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.pallet-transaction-payment-rpc-runtime-api]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.pallet-treasury]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 # [dependencies.pallet-vesting]
 # default-features = false
@@ -240,67 +240,67 @@
 [dependencies.sp-arithmetic]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-api]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-block-builder]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-core]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-consensus-aura]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-inherents]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-io]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-offchain]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-runtime]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-session]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-std]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-transaction-pool]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-version]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.smallvec]
 version = '1.6.1'
@@ -310,47 +310,47 @@
 
 [dependencies.parachain-info]
 default-features = false
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 
 [dependencies.cumulus-pallet-aura-ext]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 default-features = false
 
 [dependencies.cumulus-pallet-parachain-system]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 default-features = false
 
 [dependencies.cumulus-primitives-core]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 default-features = false
 
 [dependencies.cumulus-pallet-xcm]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 default-features = false
 
 [dependencies.cumulus-pallet-dmp-queue]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 default-features = false
 
 [dependencies.cumulus-pallet-xcmp-queue]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 default-features = false
 
 [dependencies.cumulus-primitives-utility]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 default-features = false
 
 [dependencies.cumulus-primitives-timestamp]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 default-features = false
 
 ################################################################################
@@ -358,32 +358,32 @@
 
 [dependencies.polkadot-parachain]
 git = "https://github.com/paritytech/polkadot"
-branch = "release-v0.9.21"
+branch = "release-v0.9.22"
 default-features = false
 
 [dependencies.xcm]
 git = "https://github.com/paritytech/polkadot"
-branch = "release-v0.9.21"
+branch = "release-v0.9.22"
 default-features = false
 
 [dependencies.xcm-builder]
 git = "https://github.com/paritytech/polkadot"
-branch = "release-v0.9.21"
+branch = "release-v0.9.22"
 default-features = false
 
 [dependencies.xcm-executor]
 git = "https://github.com/paritytech/polkadot"
-branch = "release-v0.9.21"
+branch = "release-v0.9.22"
 default-features = false
 
 [dependencies.pallet-xcm]
 git = "https://github.com/paritytech/polkadot"
-branch = "release-v0.9.21"
+branch = "release-v0.9.22"
 default-features = false
 
 [dependencies.orml-vesting]
 git = "https://github.com/uniquenetwork/open-runtime-module-library"
-branch = "unique-polkadot-v0.9.21"
+branch = "unique-polkadot-v0.9.22"
 version = "0.4.1-dev"
 default-features = false
 
@@ -393,8 +393,7 @@
 # todo git
 [dependencies.rmrk-rpc]
 default-features = false
-git = "https://github.com/UniqueNetwork/rmrk-substrate.git"
-branch = "feature/separate-types-and-traits"
+path = "../../primitives/rmrk-rpc"
 
 ################################################################################
 # local dependencies
@@ -408,7 +407,7 @@
 derivative = "2.2.0"
 pallet-unique = { path = '../../pallets/unique', default-features = false }
 up-rpc = { path = "../../primitives/rpc", default-features = false }
-fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
 pallet-inflation = { path = '../../pallets/inflation', default-features = false }
 up-data-structs = { path = '../../primitives/data-structs', default-features = false }
 pallet-common = { default-features = false, path = "../../pallets/common" }
@@ -419,20 +418,20 @@
 pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" }
 pallet-unq-scheduler = { path = '../../pallets/scheduler', default-features = false }
 # pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' }
-pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.21", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }
+pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.22", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }
 pallet-evm-migration = { path = '../../pallets/evm-migration', default-features = false }
 pallet-evm-contract-helpers = { path = '../../pallets/evm-contract-helpers', default-features = false }
 pallet-evm-transaction-payment = { path = '../../pallets/evm-transaction-payment', default-features = false }
 pallet-evm-coder-substrate = { default-features = false, path = "../../pallets/evm-coder-substrate" }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-pallet-base-fee = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+pallet-base-fee = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
 
 ################################################################################
 # Build Dependencies
 
 [build-dependencies.substrate-wasm-builder]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
modifiedruntime/quartz/src/lib.rsdiffbeforeafterboth
--- a/runtime/quartz/src/lib.rs
+++ b/runtime/quartz/src/lib.rs
@@ -163,7 +163,7 @@
 	spec_name: create_runtime_str!(RUNTIME_NAME),
 	impl_name: create_runtime_str!(RUNTIME_NAME),
 	authoring_version: 1,
-	spec_version: 921080,
+	spec_version: 922000,
 	impl_version: 0,
 	apis: RUNTIME_API_VERSIONS,
 	transaction_version: 1,
modifiedruntime/tests/Cargo.tomldiffbeforeafterboth
--- a/runtime/tests/Cargo.toml
+++ b/runtime/tests/Cargo.toml
@@ -7,22 +7,22 @@
 unique-runtime-common = { path = '../common' }
 up-data-structs = { default-features = false, path = '../../primitives/data-structs' }
 
-sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.21' }
-sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.21' }
-sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.21' }
-sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.21' }
+sp-core = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }
+sp-std = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }
+sp-io = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }
+sp-runtime = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }
 
-fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
 
-frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.21' }
-frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.21' }
+frame-support = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }
+frame-system = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }
 
-pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.21' }
-pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.21' }
-pallet-timestamp = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.21' }
+pallet-balances = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }
+pallet-transaction-payment = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }
+pallet-timestamp = { git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }
 
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
 
 pallet-common = { path = '../../pallets/common' }
 pallet-structure = { path = '../../pallets/structure' }
modifiedruntime/unique/Cargo.tomldiffbeforeafterboth
--- a/runtime/unique/Cargo.toml
+++ b/runtime/unique/Cargo.toml
@@ -10,7 +10,7 @@
 license = 'GPLv3'
 name = 'unique-runtime'
 repository = 'https://github.com/UniqueNetwork/unique-chain'
-version = '0.9.21'
+version = '0.9.22'
 
 [package.metadata.docs.rs]
 targets = ['x86_64-unknown-linux-gnu']
@@ -130,39 +130,39 @@
 default-features = false
 git = "https://github.com/paritytech/substrate"
 optional = true
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.frame-try-runtime]
 default-features = false
 git = 'https://github.com/paritytech/substrate'
 optional = true
-branch = 'polkadot-v0.9.21'
+branch = 'polkadot-v0.9.22'
 
 [dependencies.frame-executive]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.frame-support]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.frame-system]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.frame-system-benchmarking]
 default-features = false
 git = "https://github.com/paritytech/substrate"
 optional = true
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.frame-system-rpc-runtime-api]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.hex-literal]
 optional = true
@@ -177,12 +177,12 @@
 [dependencies.pallet-aura]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.pallet-balances]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 # Contracts specific packages
 # [dependencies.pallet-contracts]
@@ -206,32 +206,32 @@
 [dependencies.pallet-randomness-collective-flip]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.pallet-sudo]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.pallet-timestamp]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.pallet-transaction-payment]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.pallet-transaction-payment-rpc-runtime-api]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.pallet-treasury]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 # [dependencies.pallet-vesting]
 # default-features = false
@@ -241,67 +241,67 @@
 [dependencies.sp-arithmetic]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-api]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-block-builder]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-core]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-consensus-aura]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-inherents]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-io]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-offchain]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-runtime]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-session]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-std]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-transaction-pool]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.sp-version]
 default-features = false
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
 
 [dependencies.smallvec]
 version = '1.6.1'
@@ -311,47 +311,47 @@
 
 [dependencies.parachain-info]
 default-features = false
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 
 [dependencies.cumulus-pallet-aura-ext]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 default-features = false
 
 [dependencies.cumulus-pallet-parachain-system]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 default-features = false
 
 [dependencies.cumulus-primitives-core]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 default-features = false
 
 [dependencies.cumulus-pallet-xcm]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 default-features = false
 
 [dependencies.cumulus-pallet-dmp-queue]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 default-features = false
 
 [dependencies.cumulus-pallet-xcmp-queue]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 default-features = false
 
 [dependencies.cumulus-primitives-utility]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 default-features = false
 
 [dependencies.cumulus-primitives-timestamp]
-git = "https://github.com/uniquenetwork/cumulus"
-branch = "polkadot-v0.9.21"
+git = "https://github.com/paritytech/cumulus"
+branch = "polkadot-v0.9.22"
 default-features = false
 
 ################################################################################
@@ -359,32 +359,32 @@
 
 [dependencies.polkadot-parachain]
 git = "https://github.com/paritytech/polkadot"
-branch = "release-v0.9.21"
+branch = "release-v0.9.22"
 default-features = false
 
 [dependencies.xcm]
 git = "https://github.com/paritytech/polkadot"
-branch = "release-v0.9.21"
+branch = "release-v0.9.22"
 default-features = false
 
 [dependencies.xcm-builder]
 git = "https://github.com/paritytech/polkadot"
-branch = "release-v0.9.21"
+branch = "release-v0.9.22"
 default-features = false
 
 [dependencies.xcm-executor]
 git = "https://github.com/paritytech/polkadot"
-branch = "release-v0.9.21"
+branch = "release-v0.9.22"
 default-features = false
 
 [dependencies.pallet-xcm]
 git = "https://github.com/paritytech/polkadot"
-branch = "release-v0.9.21"
+branch = "release-v0.9.22"
 default-features = false
 
 [dependencies.orml-vesting]
 git = "https://github.com/uniquenetwork/open-runtime-module-library"
-branch = "unique-polkadot-v0.9.21"
+branch = "unique-polkadot-v0.9.22"
 version = "0.4.1-dev"
 default-features = false
 
@@ -411,21 +411,21 @@
 pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" }
 pallet-unq-scheduler = { path = '../../pallets/scheduler', default-features = false }
 # pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' }
-pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.21", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }
+pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.22", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }
 pallet-evm-migration = { path = '../../pallets/evm-migration', default-features = false }
 pallet-evm-contract-helpers = { path = '../../pallets/evm-contract-helpers', default-features = false }
 pallet-evm-transaction-payment = { path = '../../pallets/evm-transaction-payment', default-features = false }
 pallet-evm-coder-substrate = { default-features = false, path = "../../pallets/evm-coder-substrate" }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-pallet-base-fee = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
-fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+pallet-base-fee = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
+fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
 
 ################################################################################
 # Build Dependencies
 
 [build-dependencies.substrate-wasm-builder]
 git = "https://github.com/paritytech/substrate"
-branch = "polkadot-v0.9.21"
+branch = "polkadot-v0.9.22"
modifiedruntime/unique/src/lib.rsdiffbeforeafterboth
--- a/runtime/unique/src/lib.rs
+++ b/runtime/unique/src/lib.rs
@@ -168,7 +168,7 @@
 	spec_name: create_runtime_str!(RUNTIME_NAME),
 	impl_name: create_runtime_str!(RUNTIME_NAME),
 	authoring_version: 1,
-	spec_version: 921080,
+	spec_version: 922000,
 	impl_version: 0,
 	apis: RUNTIME_API_VERSIONS,
 	transaction_version: 1,
modifiedtests/README.mddiffbeforeafterboth
--- a/tests/README.md
+++ b/tests/README.md
@@ -5,7 +5,7 @@
 1. Checkout polkadot in sibling folder with this project
 ```bash
 git clone https://github.com/paritytech/polkadot.git && cd polkadot
-git checkout release-v0.9.21
+git checkout release-v0.9.22
 ```
 
 2. Build with nightly-2021-11-11