git.delta.rocks / unique-network / refs/commits / e0a717015a56

difftreelog

chore fix code review requests

Grigoriy Simonov2022-12-06parent: #cd0ba0d.patch.diff
in: master

36 files changed

modifiedclient/rpc/src/lib.rsdiffbeforeafterboth
--- a/client/rpc/src/lib.rs
+++ b/client/rpc/src/lib.rs
@@ -248,8 +248,8 @@
 	) -> Result<Option<String>>;
 
 	/// Get whether an operator is approved by a given owner.
-	#[method(name = "unique_isApprovedForAll")]
-	fn is_approved_for_all(
+	#[method(name = "unique_allowanceForAll")]
+	fn allowance_for_all(
 		&self,
 		collection: CollectionId,
 		owner: CrossAccountId,
@@ -579,7 +579,7 @@
 	pass_method!(effective_collection_limits(collection_id: CollectionId) -> Option<CollectionLimits>, unique_api);
 	pass_method!(total_pieces(collection_id: CollectionId, token_id: TokenId) -> Option<String> => |o| o.map(|number| number.to_string()) , unique_api);
 	pass_method!(token_owners(collection: CollectionId, token: TokenId) -> Vec<CrossAccountId>, unique_api);
-	pass_method!(is_approved_for_all(collection: CollectionId, owner: CrossAccountId, operator: CrossAccountId) -> bool, unique_api);
+	pass_method!(allowance_for_all(collection: CollectionId, owner: CrossAccountId, operator: CrossAccountId) -> bool, unique_api);
 }
 
 impl<C, Block, BlockNumber, CrossAccountId, AccountId>
modifiedpallets/common/src/lib.rsdiffbeforeafterboth
--- a/pallets/common/src/lib.rs
+++ b/pallets/common/src/lib.rs
@@ -1535,7 +1535,7 @@
 	fn token_owner() -> Weight;
 
 	/// The price of setting approval for all
-	fn set_approval_for_all() -> Weight;
+	fn set_allowance_for_all() -> Weight;
 }
 
 /// Weight info extension trait for refungible pallet.
@@ -1844,11 +1844,11 @@
 	/// Get extension for RFT collection.
 	fn refungible_extensions(&self) -> Option<&dyn RefungibleExtensions<T>>;
 
-	/// An operator is allowed to transfer all tokens of the sender on their behalf.
+	/// The `operator` is allowed to transfer all tokens of the `owner` on their behalf.
 	/// * `owner` - Token owner
 	/// * `operator` - Operator
 	/// * `approve` - Should operator status be granted or revoked?
-	fn set_approval_for_all(
+	fn set_allowance_for_all(
 		&self,
 		owner: T::CrossAccountId,
 		operator: T::CrossAccountId,
@@ -1856,7 +1856,7 @@
 	) -> DispatchResultWithPostInfo;
 
 	/// Tells whether the given `owner` approves the `operator`.
-	fn is_approved_for_all(&self, owner: T::CrossAccountId, operator: T::CrossAccountId) -> bool;
+	fn allowance_for_all(&self, owner: T::CrossAccountId, operator: T::CrossAccountId) -> bool;
 }
 
 /// Extension for RFT collection.
modifiedpallets/fungible/src/common.rsdiffbeforeafterboth
--- a/pallets/fungible/src/common.rs
+++ b/pallets/fungible/src/common.rs
@@ -108,7 +108,7 @@
 		Weight::zero()
 	}
 
-	fn set_approval_for_all() -> Weight {
+	fn set_allowance_for_all() -> Weight {
 		Weight::zero()
 	}
 }
@@ -429,7 +429,7 @@
 		<TotalSupply<T>>::try_get(self.id).ok()
 	}
 
-	fn set_approval_for_all(
+	fn set_allowance_for_all(
 		&self,
 		_owner: T::CrossAccountId,
 		_operator: T::CrossAccountId,
@@ -438,7 +438,7 @@
 		fail!(<Error<T>>::SettingApprovalForAllNotAllowed)
 	}
 
-	fn is_approved_for_all(&self, _owner: T::CrossAccountId, _operator: T::CrossAccountId) -> bool {
+	fn allowance_for_all(&self, _owner: T::CrossAccountId, _operator: T::CrossAccountId) -> bool {
 		false
 	}
 }
modifiedpallets/nonfungible/src/benchmarking.rsdiffbeforeafterboth
--- a/pallets/nonfungible/src/benchmarking.rs
+++ b/pallets/nonfungible/src/benchmarking.rs
@@ -223,17 +223,17 @@
 
 	}: {collection.token_owner(item)}
 
-	set_approval_for_all {
+	set_allowance_for_all {
 		bench_init!{
 			owner: sub; collection: collection(owner);
 			operator: cross_from_sub(owner); owner: cross_sub;
 		};
-	}: {<Pallet<T>>::set_approval_for_all(&collection, &owner, &operator, true)}
+	}: {<Pallet<T>>::set_allowance_for_all(&collection, &owner, &operator, true)}
 
-	is_approved_for_all {
+	allowance_for_all {
 		bench_init!{
 			owner: sub; collection: collection(owner);
 			operator: cross_from_sub(owner); owner: cross_sub;
 		};
-	}: {<Pallet<T>>::is_approved_for_all(&collection, &owner, &operator)}
+	}: {<Pallet<T>>::allowance_for_all(&collection, &owner, &operator)}
 }
modifiedpallets/nonfungible/src/common.rsdiffbeforeafterboth
--- a/pallets/nonfungible/src/common.rs
+++ b/pallets/nonfungible/src/common.rs
@@ -123,8 +123,8 @@
 		<SelfWeightOf<T>>::token_owner()
 	}
 
-	fn set_approval_for_all() -> Weight {
-		<SelfWeightOf<T>>::set_approval_for_all()
+	fn set_allowance_for_all() -> Weight {
+		<SelfWeightOf<T>>::set_allowance_for_all()
 	}
 }
 
@@ -517,19 +517,19 @@
 		}
 	}
 
-	fn set_approval_for_all(
+	fn set_allowance_for_all(
 		&self,
 		owner: T::CrossAccountId,
 		operator: T::CrossAccountId,
 		approve: bool,
 	) -> DispatchResultWithPostInfo {
 		with_weight(
-			<Pallet<T>>::set_approval_for_all(self, &owner, &operator, approve),
-			<CommonWeights<T>>::set_approval_for_all(),
+			<Pallet<T>>::set_allowance_for_all(self, &owner, &operator, approve),
+			<CommonWeights<T>>::set_allowance_for_all(),
 		)
 	}
 
-	fn is_approved_for_all(&self, owner: T::CrossAccountId, operator: T::CrossAccountId) -> bool {
-		<Pallet<T>>::is_approved_for_all(self, &owner, &operator)
+	fn allowance_for_all(&self, owner: T::CrossAccountId, operator: T::CrossAccountId) -> bool {
+		<Pallet<T>>::allowance_for_all(self, &owner, &operator)
 	}
 }
modifiedpallets/nonfungible/src/erc.rsdiffbeforeafterboth
--- a/pallets/nonfungible/src/erc.rs
+++ b/pallets/nonfungible/src/erc.rs
@@ -472,8 +472,8 @@
 	/// @notice Sets or unsets the approval of a given operator.
 	/// The `operator` is allowed to transfer all tokens of the `caller` on their behalf.
 	/// @param operator Operator
-	/// @param approved Is operator enabled or disabled
-	#[weight(<SelfWeightOf<T>>::set_approval_for_all())]
+	/// @param approved Should operator status be granted or revoked?
+	#[weight(<SelfWeightOf<T>>::set_allowance_for_all())]
 	fn set_approval_for_all(
 		&mut self,
 		caller: caller,
@@ -483,7 +483,7 @@
 		let caller = T::CrossAccountId::from_eth(caller);
 		let operator = T::CrossAccountId::from_eth(operator);
 
-		<Pallet<T>>::set_approval_for_all(self, &caller, &operator, approved)
+		<Pallet<T>>::set_allowance_for_all(self, &caller, &operator, approved)
 			.map_err(dispatch_to_evm::<T>)?;
 		Ok(())
 	}
@@ -494,13 +494,13 @@
 		Err("not implemented".into())
 	}
 
-	/// @notice Tells whether an operator is approved by a given owner.
-	#[weight(<SelfWeightOf<T>>::is_approved_for_all())]
+	/// @notice Tells whether the given `owner` approves the `operator`.
+	#[weight(<SelfWeightOf<T>>::allowance_for_all())]
 	fn is_approved_for_all(&self, owner: address, operator: address) -> Result<bool> {
 		let owner = T::CrossAccountId::from_eth(owner);
 		let operator = T::CrossAccountId::from_eth(operator);
 
-		Ok(<Pallet<T>>::is_approved_for_all(self, &owner, &operator))
+		Ok(<Pallet<T>>::allowance_for_all(self, &owner, &operator))
 	}
 
 	/// @notice Returns collection helper contract address
modifiedpallets/nonfungible/src/lib.rsdiffbeforeafterboth
--- a/pallets/nonfungible/src/lib.rs
+++ b/pallets/nonfungible/src/lib.rs
@@ -274,7 +274,7 @@
 
 	/// Operator set by a wallet owner that could perform certain transactions on all tokens in the wallet.
 	#[pallet::storage]
-	pub type WalletOperator<T: Config> = StorageNMap<
+	pub type CollectionAllowance<T: Config> = StorageNMap<
 		Key = (
 			Key<Twox64Concat, CollectionId>,
 			Key<Blake2_128Concat, T::CrossAccountId>,
@@ -450,7 +450,7 @@
 		<TokensBurnt<T>>::remove(id);
 		let _ = <Allowance<T>>::clear_prefix((id,), u32::MAX, None);
 		let _ = <AccountBalance<T>>::clear_prefix((id,), u32::MAX, None);
-		let _ = <WalletOperator<T>>::clear_prefix((id,), u32::MAX, None);
+		let _ = <CollectionAllowance<T>>::clear_prefix((id,), u32::MAX, None);
 		Ok(())
 	}
 
@@ -1206,7 +1206,7 @@
 		if <Allowance<T>>::get((collection.id, token)).as_ref() == Some(spender) {
 			return Ok(());
 		}
-		if <WalletOperator<T>>::get((collection.id, from, spender)) == Some(true) {
+		if <CollectionAllowance<T>>::get((collection.id, from, spender)) {
 			return Ok(());
 		}
 		ensure!(
@@ -1345,11 +1345,11 @@
 
 	/// Sets or unsets the approval of a given operator.
 	///
-	/// An operator is allowed to transfer all token pieces of the sender on their behalf.
+	/// The `operator` is allowed to transfer all token pieces of the `owner` on their behalf.
 	/// - `owner`: Token owner
 	/// - `operator`: Operator
-	/// - `approve`: Is operator enabled or disabled
-	pub fn set_approval_for_all(
+	/// - `approve`: Should operator status be granted or revoked?
+	pub fn set_allowance_for_all(
 		collection: &NonfungibleHandle<T>,
 		owner: &T::CrossAccountId,
 		operator: &T::CrossAccountId,
@@ -1364,7 +1364,7 @@
 
 		// =========
 
-		<WalletOperator<T>>::insert((collection.id, owner, operator), approve);
+		<CollectionAllowance<T>>::insert((collection.id, owner, operator), approve);
 		<PalletEvm<T>>::deposit_log(
 			ERC721Events::ApprovalForAll {
 				owner: *owner.as_eth(),
@@ -1382,12 +1382,12 @@
 		Ok(())
 	}
 
-	/// Tells whether an operator is approved by a given owner.
-	pub fn is_approved_for_all(
+	/// Tells whether the given `owner` approves the `operator`.
+	pub fn allowance_for_all(
 		collection: &NonfungibleHandle<T>,
 		owner: &T::CrossAccountId,
 		operator: &T::CrossAccountId,
 	) -> bool {
-		<WalletOperator<T>>::get((collection.id, owner, operator)).unwrap_or(false)
+		<CollectionAllowance<T>>::get((collection.id, owner, operator))
 	}
 }
modifiedpallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth
--- a/pallets/nonfungible/src/stubs/UniqueNFT.sol
+++ b/pallets/nonfungible/src/stubs/UniqueNFT.sol
@@ -1021,9 +1021,9 @@
 	}
 
 	/// @notice Sets or unsets the approval of a given operator.
-	///  An operator is allowed to transfer all tokens of the sender on their behalf.
+	/// The `operator` is allowed to transfer all tokens of the `caller` on their behalf.
 	/// @param operator Operator
-	/// @param approved Is operator enabled or disabled
+	/// @param approved Should operator status be granted or revoked?
 	/// @dev EVM selector for this function is: 0xa22cb465,
 	///  or in textual repr: setApprovalForAll(address,bool)
 	function setApprovalForAll(address operator, bool approved) public {
@@ -1043,7 +1043,7 @@
 		return 0x0000000000000000000000000000000000000000;
 	}
 
-	/// @notice Tells whether an operator is approved by a given owner.
+	/// @notice Tells whether the given `owner` approves the `operator`.
 	/// @dev EVM selector for this function is: 0xe985e9c5,
 	///  or in textual repr: isApprovedForAll(address,address)
 	function isApprovedForAll(address owner, address operator) public view returns (bool) {
modifiedpallets/nonfungible/src/weights.rsdiffbeforeafterboth
--- a/pallets/nonfungible/src/weights.rs
+++ b/pallets/nonfungible/src/weights.rs
@@ -48,8 +48,8 @@
 	fn set_token_properties(b: u32, ) -> Weight;
 	fn delete_token_properties(b: u32, ) -> Weight;
 	fn token_owner() -> Weight;
-	fn set_approval_for_all() -> Weight;
-	fn is_approved_for_all() -> Weight;
+	fn set_allowance_for_all() -> Weight;
+	fn allowance_for_all() -> Weight;
 }
 
 /// Weights for pallet_nonfungible using the Substrate node and recommended hardware.
@@ -199,12 +199,12 @@
 			.saturating_add(T::DbWeight::get().reads(1 as u64))
 	}
 	// Storage: Nonfungible WalletOperator (r:0 w:1)
-	fn set_approval_for_all() -> Weight {
+	fn set_allowance_for_all() -> Weight {
 		Weight::from_ref_time(16_231_000 as u64)
 			.saturating_add(T::DbWeight::get().writes(1 as u64))
 	}
 	// Storage: Nonfungible WalletOperator (r:1 w:0)
-	fn is_approved_for_all() -> Weight {
+	fn allowance_for_all() -> Weight {
 		Weight::from_ref_time(6_161_000 as u64)
 			.saturating_add(T::DbWeight::get().reads(1 as u64))
 	}
@@ -356,12 +356,12 @@
 			.saturating_add(RocksDbWeight::get().reads(1 as u64))
 	}
 	// Storage: Nonfungible WalletOperator (r:0 w:1)
-	fn set_approval_for_all() -> Weight {
+	fn set_allowance_for_all() -> Weight {
 		Weight::from_ref_time(16_231_000 as u64)
 			.saturating_add(RocksDbWeight::get().writes(1 as u64))
 	}
 	// Storage: Nonfungible WalletOperator (r:1 w:0)
-	fn is_approved_for_all() -> Weight {
+	fn allowance_for_all() -> Weight {
 		Weight::from_ref_time(6_161_000 as u64)
 			.saturating_add(RocksDbWeight::get().reads(1 as u64))
 	}
modifiedpallets/refungible/src/benchmarking.rsdiffbeforeafterboth
--- a/pallets/refungible/src/benchmarking.rs
+++ b/pallets/refungible/src/benchmarking.rs
@@ -291,17 +291,17 @@
 		let item = create_max_item(&collection, &sender, [(owner.clone(), 100)])?;
 	}: {<Pallet<T>>::token_owner(collection.id, item)}
 
-	set_approval_for_all {
+	set_allowance_for_all {
 		bench_init!{
 			owner: sub; collection: collection(owner);
 			operator: cross_from_sub(owner); owner: cross_sub;
 		};
-	}: {<Pallet<T>>::set_approval_for_all(&collection, &owner, &operator, true)}
+	}: {<Pallet<T>>::set_allowance_for_all(&collection, &owner, &operator, true)}
 
-	is_approved_for_all {
+	allowance_for_all {
 		bench_init!{
 			owner: sub; collection: collection(owner);
 			operator: cross_from_sub(owner); owner: cross_sub;
 		};
-	}: {<Pallet<T>>::is_approved_for_all(&collection, &owner, &operator)}
+	}: {<Pallet<T>>::allowance_for_all(&collection, &owner, &operator)}
 }
modifiedpallets/refungible/src/common.rsdiffbeforeafterboth
--- a/pallets/refungible/src/common.rs
+++ b/pallets/refungible/src/common.rs
@@ -153,8 +153,8 @@
 		<SelfWeightOf<T>>::token_owner()
 	}
 
-	fn set_approval_for_all() -> Weight {
-		<SelfWeightOf<T>>::set_approval_for_all()
+	fn set_allowance_for_all() -> Weight {
+		<SelfWeightOf<T>>::set_allowance_for_all()
 	}
 }
 
@@ -521,20 +521,20 @@
 		<Pallet<T>>::total_pieces(self.id, token)
 	}
 
-	fn set_approval_for_all(
+	fn set_allowance_for_all(
 		&self,
 		owner: T::CrossAccountId,
 		operator: T::CrossAccountId,
 		approve: bool,
 	) -> DispatchResultWithPostInfo {
 		with_weight(
-			<Pallet<T>>::set_approval_for_all(self, &owner, &operator, approve),
-			<CommonWeights<T>>::set_approval_for_all(),
+			<Pallet<T>>::set_allowance_for_all(self, &owner, &operator, approve),
+			<CommonWeights<T>>::set_allowance_for_all(),
 		)
 	}
 
-	fn is_approved_for_all(&self, owner: T::CrossAccountId, operator: T::CrossAccountId) -> bool {
-		<Pallet<T>>::is_approved_for_all(self, &owner, &operator)
+	fn allowance_for_all(&self, owner: T::CrossAccountId, operator: T::CrossAccountId) -> bool {
+		<Pallet<T>>::allowance_for_all(self, &owner, &operator)
 	}
 }
 
modifiedpallets/refungible/src/erc.rsdiffbeforeafterboth
--- a/pallets/refungible/src/erc.rs
+++ b/pallets/refungible/src/erc.rs
@@ -462,10 +462,10 @@
 	}
 
 	/// @notice Sets or unsets the approval of a given operator.
-	///  An operator is allowed to transfer all tokens of the sender on their behalf.
+	///  The `operator` is allowed to transfer all token pieces of the `caller` on their behalf.
 	/// @param operator Operator
-	/// @param approved Is operator enabled or disabled
-	#[weight(<SelfWeightOf<T>>::set_approval_for_all())]
+	/// @param approved Should operator status be granted or revoked?
+	#[weight(<SelfWeightOf<T>>::set_allowance_for_all())]
 	fn set_approval_for_all(
 		&mut self,
 		caller: caller,
@@ -475,7 +475,7 @@
 		let caller = T::CrossAccountId::from_eth(caller);
 		let operator = T::CrossAccountId::from_eth(operator);
 
-		<Pallet<T>>::set_approval_for_all(self, &caller, &operator, approved)
+		<Pallet<T>>::set_allowance_for_all(self, &caller, &operator, approved)
 			.map_err(dispatch_to_evm::<T>)?;
 		Ok(())
 	}
@@ -486,13 +486,13 @@
 		Err("not implemented".into())
 	}
 
-	/// @notice Tells whether an operator is approved by a given owner.
-	#[weight(<SelfWeightOf<T>>::is_approved_for_all())]
+	/// @notice Tells whether the given `owner` approves the `operator`.
+	#[weight(<SelfWeightOf<T>>::allowance_for_all())]
 	fn is_approved_for_all(&self, owner: address, operator: address) -> Result<bool> {
 		let owner = T::CrossAccountId::from_eth(owner);
 		let operator = T::CrossAccountId::from_eth(operator);
 
-		Ok(<Pallet<T>>::is_approved_for_all(self, &owner, &operator))
+		Ok(<Pallet<T>>::allowance_for_all(self, &owner, &operator))
 	}
 
 	/// @notice Returns collection helper contract address
modifiedpallets/refungible/src/lib.rsdiffbeforeafterboth
--- a/pallets/refungible/src/lib.rs
+++ b/pallets/refungible/src/lib.rs
@@ -275,14 +275,14 @@
 
 	/// Operator set by a wallet owner that could perform certain transactions on all tokens in the wallet.
 	#[pallet::storage]
-	pub type WalletOperator<T: Config> = StorageNMap<
+	pub type CollectionAllowance<T: Config> = StorageNMap<
 		Key = (
 			Key<Twox64Concat, CollectionId>,
 			Key<Blake2_128Concat, T::CrossAccountId>,
 			Key<Blake2_128Concat, T::CrossAccountId>,
 		),
 		Value = bool,
-		QueryKind = OptionQuery,
+		QueryKind = ValueQuery,
 	>;
 
 	#[pallet::hooks]
@@ -1174,8 +1174,8 @@
 		let allowance =
 			<Allowance<T>>::get((collection.id, token, from, &spender)).checked_sub(amount);
 
-		// Allowance if any would be reduced if spender is also wallet operator
-		if <WalletOperator<T>>::get((collection.id, from, spender)) == Some(true) {
+		// Allowance (if any) would be reduced if spender is also wallet operator
+		if <CollectionAllowance<T>>::get((collection.id, from, spender)) {
 			return Ok(allowance);
 		}
 
@@ -1408,11 +1408,11 @@
 
 	/// Sets or unsets the approval of a given operator.
 	///
-	/// An operator is allowed to transfer all tokens of the sender on their behalf.
+	/// The `operator` is allowed to transfer all token pieces of the `owner` on their behalf.
 	/// - `owner`: Token owner
 	/// - `operator`: Operator
-	/// - `approve`: Is operator enabled or disabled
-	pub fn set_approval_for_all(
+	/// - `approve`: Should operator status be granted or revoked?
+	pub fn set_allowance_for_all(
 		collection: &RefungibleHandle<T>,
 		owner: &T::CrossAccountId,
 		operator: &T::CrossAccountId,
@@ -1427,7 +1427,7 @@
 
 		// =========
 
-		<WalletOperator<T>>::insert((collection.id, owner, operator), approve);
+		<CollectionAllowance<T>>::insert((collection.id, owner, operator), approve);
 		<PalletEvm<T>>::deposit_log(
 			ERC721Events::ApprovalForAll {
 				owner: *owner.as_eth(),
@@ -1445,12 +1445,12 @@
 		Ok(())
 	}
 
-	/// Tells whether an operator is approved by a given owner.
-	pub fn is_approved_for_all(
+	/// Tells whether the given `owner` approves the `operator`.
+	pub fn allowance_for_all(
 		collection: &RefungibleHandle<T>,
 		owner: &T::CrossAccountId,
 		operator: &T::CrossAccountId,
 	) -> bool {
-		<WalletOperator<T>>::get((collection.id, owner, operator)).unwrap_or(false)
+		<CollectionAllowance<T>>::get((collection.id, owner, operator))
 	}
 }
modifiedpallets/refungible/src/stubs/UniqueRefungible.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/refungible/src/stubs/UniqueRefungible.soldiffbeforeafterboth
--- a/pallets/refungible/src/stubs/UniqueRefungible.sol
+++ b/pallets/refungible/src/stubs/UniqueRefungible.sol
@@ -1018,9 +1018,9 @@
 	}
 
 	/// @notice Sets or unsets the approval of a given operator.
-	///  An operator is allowed to transfer all tokens of the sender on their behalf.
+	///  The `operator` is allowed to transfer all token pieces of the `caller` on their behalf.
 	/// @param operator Operator
-	/// @param approved Is operator enabled or disabled
+	/// @param approved Should operator status be granted or revoked?
 	/// @dev EVM selector for this function is: 0xa22cb465,
 	///  or in textual repr: setApprovalForAll(address,bool)
 	function setApprovalForAll(address operator, bool approved) public {
@@ -1040,7 +1040,7 @@
 		return 0x0000000000000000000000000000000000000000;
 	}
 
-	/// @notice Tells whether an operator is approved by a given owner.
+	/// @notice Tells whether the given `owner` approves the `operator`.
 	/// @dev EVM selector for this function is: 0xe985e9c5,
 	///  or in textual repr: isApprovedForAll(address,address)
 	function isApprovedForAll(address owner, address operator) public view returns (bool) {
modifiedpallets/refungible/src/weights.rsdiffbeforeafterboth
--- a/pallets/refungible/src/weights.rs
+++ b/pallets/refungible/src/weights.rs
@@ -55,8 +55,8 @@
 	fn delete_token_properties(b: u32, ) -> Weight;
 	fn repartition_item() -> Weight;
 	fn token_owner() -> Weight;
-	fn set_approval_for_all() -> Weight;
-	fn is_approved_for_all() -> Weight;
+	fn set_allowance_for_all() -> Weight;
+	fn allowance_for_all() -> Weight;
 }
 
 /// Weights for pallet_refungible using the Substrate node and recommended hardware.
@@ -263,12 +263,12 @@
 			.saturating_add(T::DbWeight::get().reads(2 as u64))
 	}
 	// Storage: Refungible WalletOperator (r:0 w:1)
-	fn set_approval_for_all() -> Weight {
+	fn set_allowance_for_all() -> Weight {
 		Weight::from_ref_time(16_150_000 as u64)
 			.saturating_add(T::DbWeight::get().writes(1 as u64))
 	}
 	// Storage: Refungible WalletOperator (r:1 w:0)
-	fn is_approved_for_all() -> Weight {
+	fn allowance_for_all() -> Weight {
 		Weight::from_ref_time(5_901_000 as u64)
 			.saturating_add(T::DbWeight::get().reads(1 as u64))
 	}
@@ -477,12 +477,12 @@
 			.saturating_add(RocksDbWeight::get().reads(2 as u64))
 	}
 	// Storage: Refungible WalletOperator (r:0 w:1)
-	fn set_approval_for_all() -> Weight {
+	fn set_allowance_for_all() -> Weight {
 		Weight::from_ref_time(16_150_000 as u64)
 			.saturating_add(RocksDbWeight::get().writes(1 as u64))
 	}
 	// Storage: Refungible WalletOperator (r:1 w:0)
-	fn is_approved_for_all() -> Weight {
+	fn allowance_for_all() -> Weight {
 		Weight::from_ref_time(5_901_000 as u64)
 			.saturating_add(RocksDbWeight::get().reads(1 as u64))
 	}
modifiedpallets/unique/src/eth/mod.rsdiffbeforeafterboth
--- a/pallets/unique/src/eth/mod.rs
+++ b/pallets/unique/src/eth/mod.rs
@@ -36,7 +36,7 @@
 use sp_std::vec;
 use up_data_structs::{
 	CollectionDescription, CollectionMode, CollectionName, CollectionTokenPrefix,
-	CreateCollectionData, CollectionId,
+	CreateCollectionData,
 };
 
 use crate::{weights::WeightInfo, Config, SelfWeightOf};
modifiedpallets/unique/src/lib.rsdiffbeforeafterboth
--- a/pallets/unique/src/lib.rs
+++ b/pallets/unique/src/lib.rs
@@ -1129,15 +1129,15 @@
 
 		/// Sets or unsets the approval of a given operator.
 		///
-		/// An operator is allowed to transfer all tokens of the sender on their behalf.
+		/// The `operator` is allowed to transfer all tokens of the `owner` on their behalf.
 		///
 		/// # Arguments
 		///
 		/// * `owner`: Token owner
 		/// * `operator`: Operator
-		/// * `approve`: Is operator enabled or disabled
-		#[weight = T::CommonWeightInfo::set_approval_for_all()]
-		pub fn set_approval_for_all(
+		/// * `approve`: Should operator status be granted or revoked?
+		#[weight = T::CommonWeightInfo::set_allowance_for_all()]
+		pub fn set_allowance_for_all(
 			origin,
 			collection_id: CollectionId,
 			operator: T::CrossAccountId,
@@ -1145,7 +1145,7 @@
 		) -> DispatchResultWithPostInfo {
 			let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
 			dispatch_tx::<T, _>(collection_id, |d| {
-				d.set_approval_for_all(sender, operator, approve)
+				d.set_allowance_for_all(sender, operator, approve)
 			})
 		}
 	}
modifiedprimitives/rpc/src/lib.rsdiffbeforeafterboth
--- a/primitives/rpc/src/lib.rs
+++ b/primitives/rpc/src/lib.rs
@@ -134,6 +134,6 @@
 		fn token_owners(collection: CollectionId, token: TokenId) -> Result<Vec<CrossAccountId>>;
 
 		/// Get whether an operator is approved by a given owner.
-		fn is_approved_for_all(collection: CollectionId, owner: CrossAccountId, operator: CrossAccountId) -> Result<bool>;
+		fn allowance_for_all(collection: CollectionId, owner: CrossAccountId, operator: CrossAccountId) -> Result<bool>;
 	}
 }
modifiedruntime/common/runtime_apis.rsdiffbeforeafterboth
before · runtime/common/runtime_apis.rs
1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617#[macro_export]18macro_rules! dispatch_unique_runtime {19	($collection:ident.$method:ident($($name:ident),*)) => {{20		let collection = <Runtime as pallet_common::Config>::CollectionDispatch::dispatch(<pallet_common::CollectionHandle<Runtime>>::try_get($collection)?);21		let dispatch = collection.as_dyn();2223		Ok::<_, DispatchError>(dispatch.$method($($name),*))24	}};25}2627#[macro_export]28macro_rules! impl_common_runtime_apis {29    (30        $(31            #![custom_apis]3233            $($custom_apis:tt)+34        )?35    ) => {36        use sp_std::prelude::*;37        use sp_api::impl_runtime_apis;38        use sp_core::{crypto::KeyTypeId, OpaqueMetadata, H256, U256, H160};39        use sp_runtime::{40            Permill,41            traits::Block as BlockT,42            transaction_validity::{TransactionSource, TransactionValidity},43            ApplyExtrinsicResult, DispatchError,44        };45        use fp_rpc::TransactionStatus;46        use pallet_transaction_payment::{47            FeeDetails, RuntimeDispatchInfo,48        };49        use pallet_evm::{50            Runner, account::CrossAccountId as _,51            Account as EVMAccount, FeeCalculator,52        };53        use runtime_common::{54            sponsoring::{SponsorshipPredict, UniqueSponsorshipPredict},55            dispatch::CollectionDispatch,56            config::ethereum::CrossAccountId,57        };58        use up_data_structs::*;596061        impl_runtime_apis! {62            $($($custom_apis)+)?6364            impl up_rpc::UniqueApi<Block, CrossAccountId, AccountId> for Runtime {65                fn account_tokens(collection: CollectionId, account: CrossAccountId) -> Result<Vec<TokenId>, DispatchError> {66                    dispatch_unique_runtime!(collection.account_tokens(account))67                }68                fn collection_tokens(collection: CollectionId) -> Result<Vec<TokenId>, DispatchError> {69                    dispatch_unique_runtime!(collection.collection_tokens())70                }71                fn token_exists(collection: CollectionId, token: TokenId) -> Result<bool, DispatchError> {72                    dispatch_unique_runtime!(collection.token_exists(token))73                }7475                fn token_owner(collection: CollectionId, token: TokenId) -> Result<Option<CrossAccountId>, DispatchError> {76                    dispatch_unique_runtime!(collection.token_owner(token))77                }7879                fn token_owners(collection: CollectionId, token: TokenId) -> Result<Vec::<CrossAccountId>, DispatchError>  {80                   dispatch_unique_runtime!(collection.token_owners(token))81                }8283                fn topmost_token_owner(collection: CollectionId, token: TokenId) -> Result<Option<CrossAccountId>, DispatchError> {84                    let budget = up_data_structs::budget::Value::new(10);8586                    Ok(Some(<pallet_structure::Pallet<Runtime>>::find_topmost_owner(collection, token, &budget)?))87                }88                fn token_children(collection: CollectionId, token: TokenId) -> Result<Vec<TokenChild>, DispatchError> {89                    Ok(<pallet_nonfungible::Pallet<Runtime>>::token_children_ids(collection, token))90                }91                fn collection_properties(92                    collection: CollectionId,93                    keys: Option<Vec<Vec<u8>>>94                ) -> Result<Vec<Property>, DispatchError> {95                    let keys = keys.map(96                        |keys| Common::bytes_keys_to_property_keys(keys)97                    ).transpose()?;9899                    Common::filter_collection_properties(collection, keys)100                }101102                fn token_properties(103                    collection: CollectionId,104                    token_id: TokenId,105                    keys: Option<Vec<Vec<u8>>>106                ) -> Result<Vec<Property>, DispatchError> {107                    let keys = keys.map(108                        |keys| Common::bytes_keys_to_property_keys(keys)109                    ).transpose()?;110111                    dispatch_unique_runtime!(collection.token_properties(token_id, keys))112                }113114                fn property_permissions(115                    collection: CollectionId,116                    keys: Option<Vec<Vec<u8>>>117                ) -> Result<Vec<PropertyKeyPermission>, DispatchError> {118                    let keys = keys.map(119                        |keys| Common::bytes_keys_to_property_keys(keys)120                    ).transpose()?;121122                    Common::filter_property_permissions(collection, keys)123                }124125                fn token_data(126                    collection: CollectionId,127                    token_id: TokenId,128                    keys: Option<Vec<Vec<u8>>>129                ) -> Result<TokenData<CrossAccountId>, DispatchError> {130                    let token_data = TokenData {131                        properties: Self::token_properties(collection, token_id, keys)?,132                        owner: Self::token_owner(collection, token_id)?,133                        pieces: Self::total_pieces(collection, token_id)?.unwrap_or(0),134                    };135136                    Ok(token_data)137                }138139                fn total_supply(collection: CollectionId) -> Result<u32, DispatchError> {140                    dispatch_unique_runtime!(collection.total_supply())141                }142                fn account_balance(collection: CollectionId, account: CrossAccountId) -> Result<u32, DispatchError> {143                    dispatch_unique_runtime!(collection.account_balance(account))144                }145                fn balance(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Result<u128, DispatchError> {146                    dispatch_unique_runtime!(collection.balance(account, token))147                }148                fn allowance(149                    collection: CollectionId,150                    sender: CrossAccountId,151                    spender: CrossAccountId,152                    token: TokenId,153                ) -> Result<u128, DispatchError> {154                    dispatch_unique_runtime!(collection.allowance(sender, spender, token))155                }156157                fn adminlist(collection: CollectionId) -> Result<Vec<CrossAccountId>, DispatchError> {158                    Ok(<pallet_common::Pallet<Runtime>>::adminlist(collection))159                }160                fn allowlist(collection: CollectionId) -> Result<Vec<CrossAccountId>, DispatchError> {161                    Ok(<pallet_common::Pallet<Runtime>>::allowlist(collection))162                }163                fn allowed(collection: CollectionId, user: CrossAccountId) -> Result<bool, DispatchError> {164                    Ok(<pallet_common::Pallet<Runtime>>::allowed(collection, user))165                }166                fn last_token_id(collection: CollectionId) -> Result<TokenId, DispatchError> {167                    dispatch_unique_runtime!(collection.last_token_id())168                }169                fn collection_by_id(collection: CollectionId) -> Result<Option<RpcCollection<AccountId>>, DispatchError> {170                    Ok(<pallet_common::Pallet<Runtime>>::rpc_collection(collection))171                }172                fn collection_stats() -> Result<CollectionStats, DispatchError> {173                    Ok(<pallet_common::Pallet<Runtime>>::collection_stats())174                }175                fn next_sponsored(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Result<Option<u64>, DispatchError> {176                    Ok(<UniqueSponsorshipPredict<Runtime> as SponsorshipPredict<Runtime>>::predict(177                        collection,178                        account,179                        token180                    ))181                }182183                fn effective_collection_limits(collection: CollectionId) -> Result<Option<CollectionLimits>, DispatchError> {184                    Ok(<pallet_common::Pallet<Runtime>>::effective_collection_limits(collection))185                }186187                fn total_pieces(collection: CollectionId, token_id: TokenId) -> Result<Option<u128>, DispatchError> {188                    dispatch_unique_runtime!(collection.total_pieces(token_id))189                }190191		        fn is_approved_for_all(collection: CollectionId, owner: CrossAccountId, operator: CrossAccountId) -> Result<bool, DispatchError> {192                    dispatch_unique_runtime!(collection.is_approved_for_all(owner, operator))193                }194            }195196            impl app_promotion_rpc::AppPromotionApi<Block, BlockNumber, CrossAccountId, AccountId> for Runtime {197                #[allow(unused_variables)]198                fn total_staked(staker: Option<CrossAccountId>) -> Result<u128, DispatchError> {199                    #[cfg(not(feature = "app-promotion"))]200                    return unsupported!();201202                    #[cfg(feature = "app-promotion")]203                    return Ok(<pallet_app_promotion::Pallet<Runtime>>::cross_id_total_staked(staker).unwrap_or_default());204                }205206                #[allow(unused_variables)]207                fn total_staked_per_block(staker: CrossAccountId) -> Result<Vec<(BlockNumber, u128)>, DispatchError> {208                    #[cfg(not(feature = "app-promotion"))]209                    return unsupported!();210211                    #[cfg(feature = "app-promotion")]212                    return Ok(<pallet_app_promotion::Pallet<Runtime>>::cross_id_total_staked_per_block(staker));213                }214215                #[allow(unused_variables)]216                fn pending_unstake(staker: Option<CrossAccountId>) -> Result<u128, DispatchError> {217                    #[cfg(not(feature = "app-promotion"))]218                    return unsupported!();219220                    #[cfg(feature = "app-promotion")]221                    return Ok(<pallet_app_promotion::Pallet<Runtime>>::cross_id_pending_unstake(staker));222                }223224                #[allow(unused_variables)]225                fn pending_unstake_per_block(staker: CrossAccountId) -> Result<Vec<(BlockNumber, u128)>, DispatchError> {226                    #[cfg(not(feature = "app-promotion"))]227                    return unsupported!();228229                    #[cfg(feature = "app-promotion")]230                    return Ok(<pallet_app_promotion::Pallet<Runtime>>::cross_id_pending_unstake_per_block(staker))231                }232            }233234            impl rmrk_rpc::RmrkApi<235                Block,236                AccountId,237                RmrkCollectionInfo<AccountId>,238                RmrkInstanceInfo<AccountId>,239                RmrkResourceInfo,240                RmrkPropertyInfo,241                RmrkBaseInfo<AccountId>,242                RmrkPartType,243                RmrkTheme244            > for Runtime {245                fn last_collection_idx() -> Result<RmrkCollectionId, DispatchError> {246                    #[cfg(feature = "rmrk")]247                    return pallet_proxy_rmrk_core::rpc::last_collection_idx::<Runtime>();248249                    #[cfg(not(feature = "rmrk"))]250                    return unsupported!();251                }252253                #[allow(unused_variables)]254                fn collection_by_id(collection_id: RmrkCollectionId) -> Result<Option<RmrkCollectionInfo<AccountId>>, DispatchError> {255                    #[cfg(feature = "rmrk")]256                    return pallet_proxy_rmrk_core::rpc::collection_by_id::<Runtime>(collection_id);257258                    #[cfg(not(feature = "rmrk"))]259                    return unsupported!();260                }261262                #[allow(unused_variables)]263                fn nft_by_id(collection_id: RmrkCollectionId, nft_by_id: RmrkNftId) -> Result<Option<RmrkInstanceInfo<AccountId>>, DispatchError> {264                    #[cfg(feature = "rmrk")]265                    return pallet_proxy_rmrk_core::rpc::nft_by_id::<Runtime>(collection_id, nft_by_id);266267                    #[cfg(not(feature = "rmrk"))]268                    return unsupported!();269                }270271                #[allow(unused_variables)]272                fn account_tokens(account_id: AccountId, collection_id: RmrkCollectionId) -> Result<Vec<RmrkNftId>, DispatchError> {273                    #[cfg(feature = "rmrk")]274                    return pallet_proxy_rmrk_core::rpc::account_tokens::<Runtime>(account_id, collection_id);275276                    #[cfg(not(feature = "rmrk"))]277                    return unsupported!();278                }279280                #[allow(unused_variables)]281                fn nft_children(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkNftChild>, DispatchError> {282                    #[cfg(feature = "rmrk")]283                    return pallet_proxy_rmrk_core::rpc::nft_children::<Runtime>(collection_id, nft_id);284285                    #[cfg(not(feature = "rmrk"))]286                    return unsupported!();287                }288289                #[allow(unused_variables)]290                fn collection_properties(291                    collection_id: RmrkCollectionId,292                    filter_keys: Option<Vec<RmrkPropertyKey>>293                ) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {294                    #[cfg(feature = "rmrk")]295                    return pallet_proxy_rmrk_core::rpc::collection_properties::<Runtime>(collection_id, filter_keys);296297                    #[cfg(not(feature = "rmrk"))]298                    return unsupported!();299                }300301                #[allow(unused_variables)]302                fn nft_properties(303                    collection_id: RmrkCollectionId,304                    nft_id: RmrkNftId,305                    filter_keys: Option<Vec<RmrkPropertyKey>>306                ) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {307                    #[cfg(feature = "rmrk")]308                    return pallet_proxy_rmrk_core::rpc::nft_properties::<Runtime>(collection_id, nft_id, filter_keys);309310                    #[cfg(not(feature = "rmrk"))]311                    return unsupported!();312                }313314                #[allow(unused_variables)]315                fn nft_resources(collection_id: RmrkCollectionId,nft_id: RmrkNftId) -> Result<Vec<RmrkResourceInfo>, DispatchError> {316                    #[cfg(feature = "rmrk")]317                    return pallet_proxy_rmrk_core::rpc::nft_resources::<Runtime>(collection_id, nft_id);318319                    #[cfg(not(feature = "rmrk"))]320                    return unsupported!();321                }322323                #[allow(unused_variables)]324                fn nft_resource_priority(325                    collection_id: RmrkCollectionId,326                    nft_id: RmrkNftId,327                    resource_id: RmrkResourceId328                ) -> Result<Option<u32>, DispatchError> {329                    #[cfg(feature = "rmrk")]330                    return pallet_proxy_rmrk_core::rpc::nft_resource_priority::<Runtime>(collection_id, nft_id, resource_id);331332                    #[cfg(not(feature = "rmrk"))]333                    return unsupported!();334                }335336                #[allow(unused_variables)]337                fn base(base_id: RmrkBaseId) -> Result<Option<RmrkBaseInfo<AccountId>>, DispatchError> {338                    #[cfg(feature = "rmrk")]339                    return pallet_proxy_rmrk_equip::rpc::base::<Runtime>(base_id);340341                    #[cfg(not(feature = "rmrk"))]342                    return unsupported!();343                }344345                #[allow(unused_variables)]346                fn base_parts(base_id: RmrkBaseId) -> Result<Vec<RmrkPartType>, DispatchError> {347                    #[cfg(feature = "rmrk")]348                    return pallet_proxy_rmrk_equip::rpc::base_parts::<Runtime>(base_id);349350                    #[cfg(not(feature = "rmrk"))]351                    return unsupported!();352                }353354                #[allow(unused_variables)]355                fn theme_names(base_id: RmrkBaseId) -> Result<Vec<RmrkThemeName>, DispatchError> {356                    #[cfg(feature = "rmrk")]357                    return pallet_proxy_rmrk_equip::rpc::theme_names::<Runtime>(base_id);358359                    #[cfg(not(feature = "rmrk"))]360                    return unsupported!();361                }362363                #[allow(unused_variables)]364                fn theme(365                    base_id: RmrkBaseId,366                    theme_name: RmrkThemeName,367                    filter_keys: Option<Vec<RmrkPropertyKey>>368                ) -> Result<Option<RmrkTheme>, DispatchError> {369                    #[cfg(feature = "rmrk")]370                    return pallet_proxy_rmrk_equip::rpc::theme::<Runtime>(base_id, theme_name, filter_keys);371372                    #[cfg(not(feature = "rmrk"))]373                    return unsupported!();374                }375            }376377            impl sp_api::Core<Block> for Runtime {378                fn version() -> RuntimeVersion {379                    VERSION380                }381382                fn execute_block(block: Block) {383                    Executive::execute_block(block)384                }385386                fn initialize_block(header: &<Block as BlockT>::Header) {387                    Executive::initialize_block(header)388                }389            }390391            impl sp_api::Metadata<Block> for Runtime {392                fn metadata() -> OpaqueMetadata {393                    OpaqueMetadata::new(Runtime::metadata().into())394                }395            }396397            impl sp_block_builder::BlockBuilder<Block> for Runtime {398                fn apply_extrinsic(extrinsic: <Block as BlockT>::Extrinsic) -> ApplyExtrinsicResult {399                    Executive::apply_extrinsic(extrinsic)400                }401402                fn finalize_block() -> <Block as BlockT>::Header {403                    Executive::finalize_block()404                }405406                fn inherent_extrinsics(data: sp_inherents::InherentData) -> Vec<<Block as BlockT>::Extrinsic> {407                    data.create_extrinsics()408                }409410                fn check_inherents(411                    block: Block,412                    data: sp_inherents::InherentData,413                ) -> sp_inherents::CheckInherentsResult {414                    data.check_extrinsics(&block)415                }416417                // fn random_seed() -> <Block as BlockT>::Hash {418                //     RandomnessCollectiveFlip::random_seed().0419                // }420            }421422            impl sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block> for Runtime {423                fn validate_transaction(424                    source: TransactionSource,425                    tx: <Block as BlockT>::Extrinsic,426                    hash: <Block as BlockT>::Hash,427                ) -> TransactionValidity {428                    Executive::validate_transaction(source, tx, hash)429                }430            }431432            impl sp_offchain::OffchainWorkerApi<Block> for Runtime {433                fn offchain_worker(header: &<Block as BlockT>::Header) {434                    Executive::offchain_worker(header)435                }436            }437438            impl fp_rpc::EthereumRuntimeRPCApi<Block> for Runtime {439                fn chain_id() -> u64 {440                    <Runtime as pallet_evm::Config>::ChainId::get()441                }442443                fn account_basic(address: H160) -> EVMAccount {444                    let (account, _) = EVM::account_basic(&address);445                    account446                }447448                fn gas_price() -> U256 {449                    let (price, _) = <Runtime as pallet_evm::Config>::FeeCalculator::min_gas_price();450                    price451                }452453                fn account_code_at(address: H160) -> Vec<u8> {454                    EVM::account_codes(address)455                }456457                fn author() -> H160 {458                    <pallet_evm::Pallet<Runtime>>::find_author()459                }460461                fn storage_at(address: H160, index: U256) -> H256 {462                    let mut tmp = [0u8; 32];463                    index.to_big_endian(&mut tmp);464                    EVM::account_storages(address, H256::from_slice(&tmp[..]))465                }466467                #[allow(clippy::redundant_closure)]468                fn call(469                    from: H160,470                    to: H160,471                    data: Vec<u8>,472                    value: U256,473                    gas_limit: U256,474                    max_fee_per_gas: Option<U256>,475                    max_priority_fee_per_gas: Option<U256>,476                    nonce: Option<U256>,477                    estimate: bool,478                    access_list: Option<Vec<(H160, Vec<H256>)>>,479                ) -> Result<pallet_evm::CallInfo, sp_runtime::DispatchError> {480                    let config = if estimate {481                        let mut config = <Runtime as pallet_evm::Config>::config().clone();482                        config.estimate = true;483                        Some(config)484                    } else {485                        None486                    };487488                    let is_transactional = false;489                    let validate = false;490                    <Runtime as pallet_evm::Config>::Runner::call(491                        CrossAccountId::from_eth(from),492                        to,493                        data,494                        value,495                        gas_limit.low_u64(),496                        max_fee_per_gas,497                        max_priority_fee_per_gas,498                        nonce,499                        access_list.unwrap_or_default(),500                        is_transactional,501                        validate,502                        config.as_ref().unwrap_or_else(|| <Runtime as pallet_evm::Config>::config()),503                    ).map_err(|err| err.error.into())504                }505506                #[allow(clippy::redundant_closure)]507                fn create(508                    from: H160,509                    data: Vec<u8>,510                    value: U256,511                    gas_limit: U256,512                    max_fee_per_gas: Option<U256>,513                    max_priority_fee_per_gas: Option<U256>,514                    nonce: Option<U256>,515                    estimate: bool,516                    access_list: Option<Vec<(H160, Vec<H256>)>>,517                ) -> Result<pallet_evm::CreateInfo, sp_runtime::DispatchError> {518                    let config = if estimate {519                        let mut config = <Runtime as pallet_evm::Config>::config().clone();520                        config.estimate = true;521                        Some(config)522                    } else {523                        None524                    };525526                    let is_transactional = false;527                    let validate = false;528                    <Runtime as pallet_evm::Config>::Runner::create(529                        CrossAccountId::from_eth(from),530                        data,531                        value,532                        gas_limit.low_u64(),533                        max_fee_per_gas,534                        max_priority_fee_per_gas,535                        nonce,536                        access_list.unwrap_or_default(),537                        is_transactional,538                        validate,539                        config.as_ref().unwrap_or_else(|| <Runtime as pallet_evm::Config>::config()),540                    ).map_err(|err| err.error.into())541                }542543                fn current_transaction_statuses() -> Option<Vec<TransactionStatus>> {544                    Ethereum::current_transaction_statuses()545                }546547                fn current_block() -> Option<pallet_ethereum::Block> {548                    Ethereum::current_block()549                }550551                fn current_receipts() -> Option<Vec<pallet_ethereum::Receipt>> {552                    Ethereum::current_receipts()553                }554555                fn current_all() -> (556                    Option<pallet_ethereum::Block>,557                    Option<Vec<pallet_ethereum::Receipt>>,558                    Option<Vec<TransactionStatus>>559                ) {560                    (561                        Ethereum::current_block(),562                        Ethereum::current_receipts(),563                        Ethereum::current_transaction_statuses()564                    )565                }566567                fn extrinsic_filter(xts: Vec<<Block as sp_api::BlockT>::Extrinsic>) -> Vec<pallet_ethereum::Transaction> {568                    xts.into_iter().filter_map(|xt| match xt.0.function {569                        RuntimeCall::Ethereum(pallet_ethereum::Call::transact { transaction }) => Some(transaction),570                        _ => None571                    }).collect()572                }573574                fn elasticity() -> Option<Permill> {575                    None576                }577            }578579            impl fp_rpc::ConvertTransactionRuntimeApi<Block> for Runtime {580                fn convert_transaction(transaction: pallet_ethereum::Transaction) -> <Block as BlockT>::Extrinsic  {581                    UncheckedExtrinsic::new_unsigned(582                        pallet_ethereum::Call::<Runtime>::transact { transaction }.into(),583                    )584                }585            }586587            impl sp_session::SessionKeys<Block> for Runtime {588                fn decode_session_keys(589                    encoded: Vec<u8>,590                ) -> Option<Vec<(Vec<u8>, KeyTypeId)>> {591                    SessionKeys::decode_into_raw_public_keys(&encoded)592                }593594                fn generate_session_keys(seed: Option<Vec<u8>>) -> Vec<u8> {595                    SessionKeys::generate(seed)596                }597            }598599            impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime {600                fn slot_duration() -> sp_consensus_aura::SlotDuration {601                    sp_consensus_aura::SlotDuration::from_millis(Aura::slot_duration())602                }603604                fn authorities() -> Vec<AuraId> {605                    Aura::authorities().to_vec()606                }607            }608609            impl cumulus_primitives_core::CollectCollationInfo<Block> for Runtime {610                fn collect_collation_info(header: &<Block as BlockT>::Header) -> cumulus_primitives_core::CollationInfo {611                    ParachainSystem::collect_collation_info(header)612                }613            }614615            impl frame_system_rpc_runtime_api::AccountNonceApi<Block, AccountId, Index> for Runtime {616                fn account_nonce(account: AccountId) -> Index {617                    System::account_nonce(account)618                }619            }620621            impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance> for Runtime {622                fn query_info(uxt: <Block as BlockT>::Extrinsic, len: u32) -> RuntimeDispatchInfo<Balance> {623                    TransactionPayment::query_info(uxt, len)624                }625                fn query_fee_details(uxt: <Block as BlockT>::Extrinsic, len: u32) -> FeeDetails<Balance> {626                    TransactionPayment::query_fee_details(uxt, len)627                }628            }629630            /*631            impl pallet_contracts_rpc_runtime_api::ContractsApi<Block, AccountId, Balance, BlockNumber, Hash>632                for Runtime633            {634                fn call(635                    origin: AccountId,636                    dest: AccountId,637                    value: Balance,638                    gas_limit: u64,639                    input_data: Vec<u8>,640                ) -> pallet_contracts_primitives::ContractExecResult {641                    Contracts::bare_call(origin, dest, value, gas_limit, input_data, false)642                }643644                fn instantiate(645                    origin: AccountId,646                    endowment: Balance,647                    gas_limit: u64,648                    code: pallet_contracts_primitives::Code<Hash>,649                    data: Vec<u8>,650                    salt: Vec<u8>,651                ) -> pallet_contracts_primitives::ContractInstantiateResult<AccountId, BlockNumber>652                {653                    Contracts::bare_instantiate(origin, endowment, gas_limit, code, data, salt, true, false)654                }655656                fn get_storage(657                    address: AccountId,658                    key: [u8; 32],659                ) -> pallet_contracts_primitives::GetStorageResult {660                    Contracts::get_storage(address, key)661                }662663                fn rent_projection(664                    address: AccountId,665                ) -> pallet_contracts_primitives::RentProjectionResult<BlockNumber> {666                    Contracts::rent_projection(address)667                }668            }669            */670671            #[cfg(feature = "runtime-benchmarks")]672            impl frame_benchmarking::Benchmark<Block> for Runtime {673                fn benchmark_metadata(extra: bool) -> (674                    Vec<frame_benchmarking::BenchmarkList>,675                    Vec<frame_support::traits::StorageInfo>,676                ) {677                    use frame_benchmarking::{list_benchmark, Benchmarking, BenchmarkList};678                    use frame_support::traits::StorageInfoTrait;679680                    let mut list = Vec::<BenchmarkList>::new();681682                    list_benchmark!(list, extra, pallet_evm_migration, EvmMigration);683                    list_benchmark!(list, extra, pallet_common, Common);684                    list_benchmark!(list, extra, pallet_unique, Unique);685                    list_benchmark!(list, extra, pallet_structure, Structure);686                    list_benchmark!(list, extra, pallet_inflation, Inflation);687                    list_benchmark!(list, extra, pallet_app_promotion, AppPromotion);688                    list_benchmark!(list, extra, pallet_fungible, Fungible);689                    list_benchmark!(list, extra, pallet_nonfungible, Nonfungible);690691                    #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]692                    list_benchmark!(list, extra, pallet_refungible, Refungible);693694                    #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]695                    list_benchmark!(list, extra, pallet_unique_scheduler_v2, Scheduler);696697                    #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]698                    list_benchmark!(list, extra, pallet_proxy_rmrk_core, RmrkCore);699700                    #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]701                    list_benchmark!(list, extra, pallet_proxy_rmrk_equip, RmrkEquip);702703                    #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]704                    list_benchmark!(list, extra, pallet_foreign_assets, ForeignAssets);705706707                    // list_benchmark!(list, extra, pallet_evm_coder_substrate, EvmCoderSubstrate);708709                    let storage_info = AllPalletsReversedWithSystemFirst::storage_info();710711                    return (list, storage_info)712                }713714                fn dispatch_benchmark(715                    config: frame_benchmarking::BenchmarkConfig716                ) -> Result<Vec<frame_benchmarking::BenchmarkBatch>, sp_runtime::RuntimeString> {717                    use frame_benchmarking::{Benchmarking, BenchmarkBatch, add_benchmark, TrackedStorageKey};718719                    let allowlist: Vec<TrackedStorageKey> = vec![720                        // Total Issuance721                        hex_literal::hex!("c2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80").to_vec().into(),722723                        // Block Number724                        hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef702a5c1b19ab7a04f536c519aca4983ac").to_vec().into(),725                        // Execution Phase726                        hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7ff553b5a9862a516939d82b3d3d8661a").to_vec().into(),727                        // Event Count728                        hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef70a98fdbe9ce6c55837576c60c7af3850").to_vec().into(),729                        // System Events730                        hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef780d41e5e16056765bc8461851072c9d7").to_vec().into(),731732                        // Evm CurrentLogs733                        hex_literal::hex!("1da53b775b270400e7e61ed5cbc5a146547f210cec367e9af919603343b9cb56").to_vec().into(),734735                        // Transactional depth736                        hex_literal::hex!("3a7472616e73616374696f6e5f6c6576656c3a").to_vec().into(),737                    ];738739                    let mut batches = Vec::<BenchmarkBatch>::new();740                    let params = (&config, &allowlist);741742                    add_benchmark!(params, batches, pallet_evm_migration, EvmMigration);743                    add_benchmark!(params, batches, pallet_common, Common);744                    add_benchmark!(params, batches, pallet_unique, Unique);745                    add_benchmark!(params, batches, pallet_structure, Structure);746                    add_benchmark!(params, batches, pallet_inflation, Inflation);747                    add_benchmark!(params, batches, pallet_app_promotion, AppPromotion);748                    add_benchmark!(params, batches, pallet_fungible, Fungible);749                    add_benchmark!(params, batches, pallet_nonfungible, Nonfungible);750751                    #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]752                    add_benchmark!(params, batches, pallet_refungible, Refungible);753754                    #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]755                    add_benchmark!(params, batches, pallet_unique_scheduler_v2, Scheduler);756757                    #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]758                    add_benchmark!(params, batches, pallet_proxy_rmrk_core, RmrkCore);759760                    #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]761                    add_benchmark!(params, batches, pallet_proxy_rmrk_equip, RmrkEquip);762763                    #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]764                    add_benchmark!(params, batches, pallet_foreign_assets, ForeignAssets);765766                    // add_benchmark!(params, batches, pallet_evm_coder_substrate, EvmCoderSubstrate);767768                    if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) }769                    Ok(batches)770                }771            }772773            #[cfg(feature = "try-runtime")]774            impl frame_try_runtime::TryRuntime<Block> for Runtime {775                fn on_runtime_upgrade() -> (frame_support::pallet_prelude::Weight, frame_support::pallet_prelude::Weight) {776                    log::info!("try-runtime::on_runtime_upgrade unique-chain.");777                    let weight = Executive::try_runtime_upgrade().unwrap();778                    (weight, crate::config::substrate::RuntimeBlockWeights::get().max_block)779                }780781                fn execute_block(782                    block: Block,783                    state_root_check: bool,784                    select: frame_try_runtime::TryStateSelect785                ) -> frame_support::pallet_prelude::Weight {786                    log::info!(787                        target: "node-runtime",788                        "try-runtime: executing block {:?} / root checks: {:?} / try-state-select: {:?}",789                        block.header.hash(),790                        state_root_check,791                        select,792                    );793794                    Executive::try_execute_block(block, state_root_check, select).unwrap()795                }796            }797        }798    }799}
after · runtime/common/runtime_apis.rs
1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617#[macro_export]18macro_rules! dispatch_unique_runtime {19	($collection:ident.$method:ident($($name:ident),*)) => {{20		let collection = <Runtime as pallet_common::Config>::CollectionDispatch::dispatch(<pallet_common::CollectionHandle<Runtime>>::try_get($collection)?);21		let dispatch = collection.as_dyn();2223		Ok::<_, DispatchError>(dispatch.$method($($name),*))24	}};25}2627#[macro_export]28macro_rules! impl_common_runtime_apis {29    (30        $(31            #![custom_apis]3233            $($custom_apis:tt)+34        )?35    ) => {36        use sp_std::prelude::*;37        use sp_api::impl_runtime_apis;38        use sp_core::{crypto::KeyTypeId, OpaqueMetadata, H256, U256, H160};39        use sp_runtime::{40            Permill,41            traits::Block as BlockT,42            transaction_validity::{TransactionSource, TransactionValidity},43            ApplyExtrinsicResult, DispatchError,44        };45        use fp_rpc::TransactionStatus;46        use pallet_transaction_payment::{47            FeeDetails, RuntimeDispatchInfo,48        };49        use pallet_evm::{50            Runner, account::CrossAccountId as _,51            Account as EVMAccount, FeeCalculator,52        };53        use runtime_common::{54            sponsoring::{SponsorshipPredict, UniqueSponsorshipPredict},55            dispatch::CollectionDispatch,56            config::ethereum::CrossAccountId,57        };58        use up_data_structs::*;596061        impl_runtime_apis! {62            $($($custom_apis)+)?6364            impl up_rpc::UniqueApi<Block, CrossAccountId, AccountId> for Runtime {65                fn account_tokens(collection: CollectionId, account: CrossAccountId) -> Result<Vec<TokenId>, DispatchError> {66                    dispatch_unique_runtime!(collection.account_tokens(account))67                }68                fn collection_tokens(collection: CollectionId) -> Result<Vec<TokenId>, DispatchError> {69                    dispatch_unique_runtime!(collection.collection_tokens())70                }71                fn token_exists(collection: CollectionId, token: TokenId) -> Result<bool, DispatchError> {72                    dispatch_unique_runtime!(collection.token_exists(token))73                }7475                fn token_owner(collection: CollectionId, token: TokenId) -> Result<Option<CrossAccountId>, DispatchError> {76                    dispatch_unique_runtime!(collection.token_owner(token))77                }7879                fn token_owners(collection: CollectionId, token: TokenId) -> Result<Vec::<CrossAccountId>, DispatchError>  {80                   dispatch_unique_runtime!(collection.token_owners(token))81                }8283                fn topmost_token_owner(collection: CollectionId, token: TokenId) -> Result<Option<CrossAccountId>, DispatchError> {84                    let budget = up_data_structs::budget::Value::new(10);8586                    Ok(Some(<pallet_structure::Pallet<Runtime>>::find_topmost_owner(collection, token, &budget)?))87                }88                fn token_children(collection: CollectionId, token: TokenId) -> Result<Vec<TokenChild>, DispatchError> {89                    Ok(<pallet_nonfungible::Pallet<Runtime>>::token_children_ids(collection, token))90                }91                fn collection_properties(92                    collection: CollectionId,93                    keys: Option<Vec<Vec<u8>>>94                ) -> Result<Vec<Property>, DispatchError> {95                    let keys = keys.map(96                        |keys| Common::bytes_keys_to_property_keys(keys)97                    ).transpose()?;9899                    Common::filter_collection_properties(collection, keys)100                }101102                fn token_properties(103                    collection: CollectionId,104                    token_id: TokenId,105                    keys: Option<Vec<Vec<u8>>>106                ) -> Result<Vec<Property>, DispatchError> {107                    let keys = keys.map(108                        |keys| Common::bytes_keys_to_property_keys(keys)109                    ).transpose()?;110111                    dispatch_unique_runtime!(collection.token_properties(token_id, keys))112                }113114                fn property_permissions(115                    collection: CollectionId,116                    keys: Option<Vec<Vec<u8>>>117                ) -> Result<Vec<PropertyKeyPermission>, DispatchError> {118                    let keys = keys.map(119                        |keys| Common::bytes_keys_to_property_keys(keys)120                    ).transpose()?;121122                    Common::filter_property_permissions(collection, keys)123                }124125                fn token_data(126                    collection: CollectionId,127                    token_id: TokenId,128                    keys: Option<Vec<Vec<u8>>>129                ) -> Result<TokenData<CrossAccountId>, DispatchError> {130                    let token_data = TokenData {131                        properties: Self::token_properties(collection, token_id, keys)?,132                        owner: Self::token_owner(collection, token_id)?,133                        pieces: Self::total_pieces(collection, token_id)?.unwrap_or(0),134                    };135136                    Ok(token_data)137                }138139                fn total_supply(collection: CollectionId) -> Result<u32, DispatchError> {140                    dispatch_unique_runtime!(collection.total_supply())141                }142                fn account_balance(collection: CollectionId, account: CrossAccountId) -> Result<u32, DispatchError> {143                    dispatch_unique_runtime!(collection.account_balance(account))144                }145                fn balance(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Result<u128, DispatchError> {146                    dispatch_unique_runtime!(collection.balance(account, token))147                }148                fn allowance(149                    collection: CollectionId,150                    sender: CrossAccountId,151                    spender: CrossAccountId,152                    token: TokenId,153                ) -> Result<u128, DispatchError> {154                    dispatch_unique_runtime!(collection.allowance(sender, spender, token))155                }156157                fn adminlist(collection: CollectionId) -> Result<Vec<CrossAccountId>, DispatchError> {158                    Ok(<pallet_common::Pallet<Runtime>>::adminlist(collection))159                }160                fn allowlist(collection: CollectionId) -> Result<Vec<CrossAccountId>, DispatchError> {161                    Ok(<pallet_common::Pallet<Runtime>>::allowlist(collection))162                }163                fn allowed(collection: CollectionId, user: CrossAccountId) -> Result<bool, DispatchError> {164                    Ok(<pallet_common::Pallet<Runtime>>::allowed(collection, user))165                }166                fn last_token_id(collection: CollectionId) -> Result<TokenId, DispatchError> {167                    dispatch_unique_runtime!(collection.last_token_id())168                }169                fn collection_by_id(collection: CollectionId) -> Result<Option<RpcCollection<AccountId>>, DispatchError> {170                    Ok(<pallet_common::Pallet<Runtime>>::rpc_collection(collection))171                }172                fn collection_stats() -> Result<CollectionStats, DispatchError> {173                    Ok(<pallet_common::Pallet<Runtime>>::collection_stats())174                }175                fn next_sponsored(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Result<Option<u64>, DispatchError> {176                    Ok(<UniqueSponsorshipPredict<Runtime> as SponsorshipPredict<Runtime>>::predict(177                        collection,178                        account,179                        token180                    ))181                }182183                fn effective_collection_limits(collection: CollectionId) -> Result<Option<CollectionLimits>, DispatchError> {184                    Ok(<pallet_common::Pallet<Runtime>>::effective_collection_limits(collection))185                }186187                fn total_pieces(collection: CollectionId, token_id: TokenId) -> Result<Option<u128>, DispatchError> {188                    dispatch_unique_runtime!(collection.total_pieces(token_id))189                }190191		        fn allowance_for_all(collection: CollectionId, owner: CrossAccountId, operator: CrossAccountId) -> Result<bool, DispatchError> {192                    dispatch_unique_runtime!(collection.allowance_for_all(owner, operator))193                }194            }195196            impl app_promotion_rpc::AppPromotionApi<Block, BlockNumber, CrossAccountId, AccountId> for Runtime {197                #[allow(unused_variables)]198                fn total_staked(staker: Option<CrossAccountId>) -> Result<u128, DispatchError> {199                    #[cfg(not(feature = "app-promotion"))]200                    return unsupported!();201202                    #[cfg(feature = "app-promotion")]203                    return Ok(<pallet_app_promotion::Pallet<Runtime>>::cross_id_total_staked(staker).unwrap_or_default());204                }205206                #[allow(unused_variables)]207                fn total_staked_per_block(staker: CrossAccountId) -> Result<Vec<(BlockNumber, u128)>, DispatchError> {208                    #[cfg(not(feature = "app-promotion"))]209                    return unsupported!();210211                    #[cfg(feature = "app-promotion")]212                    return Ok(<pallet_app_promotion::Pallet<Runtime>>::cross_id_total_staked_per_block(staker));213                }214215                #[allow(unused_variables)]216                fn pending_unstake(staker: Option<CrossAccountId>) -> Result<u128, DispatchError> {217                    #[cfg(not(feature = "app-promotion"))]218                    return unsupported!();219220                    #[cfg(feature = "app-promotion")]221                    return Ok(<pallet_app_promotion::Pallet<Runtime>>::cross_id_pending_unstake(staker));222                }223224                #[allow(unused_variables)]225                fn pending_unstake_per_block(staker: CrossAccountId) -> Result<Vec<(BlockNumber, u128)>, DispatchError> {226                    #[cfg(not(feature = "app-promotion"))]227                    return unsupported!();228229                    #[cfg(feature = "app-promotion")]230                    return Ok(<pallet_app_promotion::Pallet<Runtime>>::cross_id_pending_unstake_per_block(staker))231                }232            }233234            impl rmrk_rpc::RmrkApi<235                Block,236                AccountId,237                RmrkCollectionInfo<AccountId>,238                RmrkInstanceInfo<AccountId>,239                RmrkResourceInfo,240                RmrkPropertyInfo,241                RmrkBaseInfo<AccountId>,242                RmrkPartType,243                RmrkTheme244            > for Runtime {245                fn last_collection_idx() -> Result<RmrkCollectionId, DispatchError> {246                    #[cfg(feature = "rmrk")]247                    return pallet_proxy_rmrk_core::rpc::last_collection_idx::<Runtime>();248249                    #[cfg(not(feature = "rmrk"))]250                    return unsupported!();251                }252253                #[allow(unused_variables)]254                fn collection_by_id(collection_id: RmrkCollectionId) -> Result<Option<RmrkCollectionInfo<AccountId>>, DispatchError> {255                    #[cfg(feature = "rmrk")]256                    return pallet_proxy_rmrk_core::rpc::collection_by_id::<Runtime>(collection_id);257258                    #[cfg(not(feature = "rmrk"))]259                    return unsupported!();260                }261262                #[allow(unused_variables)]263                fn nft_by_id(collection_id: RmrkCollectionId, nft_by_id: RmrkNftId) -> Result<Option<RmrkInstanceInfo<AccountId>>, DispatchError> {264                    #[cfg(feature = "rmrk")]265                    return pallet_proxy_rmrk_core::rpc::nft_by_id::<Runtime>(collection_id, nft_by_id);266267                    #[cfg(not(feature = "rmrk"))]268                    return unsupported!();269                }270271                #[allow(unused_variables)]272                fn account_tokens(account_id: AccountId, collection_id: RmrkCollectionId) -> Result<Vec<RmrkNftId>, DispatchError> {273                    #[cfg(feature = "rmrk")]274                    return pallet_proxy_rmrk_core::rpc::account_tokens::<Runtime>(account_id, collection_id);275276                    #[cfg(not(feature = "rmrk"))]277                    return unsupported!();278                }279280                #[allow(unused_variables)]281                fn nft_children(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkNftChild>, DispatchError> {282                    #[cfg(feature = "rmrk")]283                    return pallet_proxy_rmrk_core::rpc::nft_children::<Runtime>(collection_id, nft_id);284285                    #[cfg(not(feature = "rmrk"))]286                    return unsupported!();287                }288289                #[allow(unused_variables)]290                fn collection_properties(291                    collection_id: RmrkCollectionId,292                    filter_keys: Option<Vec<RmrkPropertyKey>>293                ) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {294                    #[cfg(feature = "rmrk")]295                    return pallet_proxy_rmrk_core::rpc::collection_properties::<Runtime>(collection_id, filter_keys);296297                    #[cfg(not(feature = "rmrk"))]298                    return unsupported!();299                }300301                #[allow(unused_variables)]302                fn nft_properties(303                    collection_id: RmrkCollectionId,304                    nft_id: RmrkNftId,305                    filter_keys: Option<Vec<RmrkPropertyKey>>306                ) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {307                    #[cfg(feature = "rmrk")]308                    return pallet_proxy_rmrk_core::rpc::nft_properties::<Runtime>(collection_id, nft_id, filter_keys);309310                    #[cfg(not(feature = "rmrk"))]311                    return unsupported!();312                }313314                #[allow(unused_variables)]315                fn nft_resources(collection_id: RmrkCollectionId,nft_id: RmrkNftId) -> Result<Vec<RmrkResourceInfo>, DispatchError> {316                    #[cfg(feature = "rmrk")]317                    return pallet_proxy_rmrk_core::rpc::nft_resources::<Runtime>(collection_id, nft_id);318319                    #[cfg(not(feature = "rmrk"))]320                    return unsupported!();321                }322323                #[allow(unused_variables)]324                fn nft_resource_priority(325                    collection_id: RmrkCollectionId,326                    nft_id: RmrkNftId,327                    resource_id: RmrkResourceId328                ) -> Result<Option<u32>, DispatchError> {329                    #[cfg(feature = "rmrk")]330                    return pallet_proxy_rmrk_core::rpc::nft_resource_priority::<Runtime>(collection_id, nft_id, resource_id);331332                    #[cfg(not(feature = "rmrk"))]333                    return unsupported!();334                }335336                #[allow(unused_variables)]337                fn base(base_id: RmrkBaseId) -> Result<Option<RmrkBaseInfo<AccountId>>, DispatchError> {338                    #[cfg(feature = "rmrk")]339                    return pallet_proxy_rmrk_equip::rpc::base::<Runtime>(base_id);340341                    #[cfg(not(feature = "rmrk"))]342                    return unsupported!();343                }344345                #[allow(unused_variables)]346                fn base_parts(base_id: RmrkBaseId) -> Result<Vec<RmrkPartType>, DispatchError> {347                    #[cfg(feature = "rmrk")]348                    return pallet_proxy_rmrk_equip::rpc::base_parts::<Runtime>(base_id);349350                    #[cfg(not(feature = "rmrk"))]351                    return unsupported!();352                }353354                #[allow(unused_variables)]355                fn theme_names(base_id: RmrkBaseId) -> Result<Vec<RmrkThemeName>, DispatchError> {356                    #[cfg(feature = "rmrk")]357                    return pallet_proxy_rmrk_equip::rpc::theme_names::<Runtime>(base_id);358359                    #[cfg(not(feature = "rmrk"))]360                    return unsupported!();361                }362363                #[allow(unused_variables)]364                fn theme(365                    base_id: RmrkBaseId,366                    theme_name: RmrkThemeName,367                    filter_keys: Option<Vec<RmrkPropertyKey>>368                ) -> Result<Option<RmrkTheme>, DispatchError> {369                    #[cfg(feature = "rmrk")]370                    return pallet_proxy_rmrk_equip::rpc::theme::<Runtime>(base_id, theme_name, filter_keys);371372                    #[cfg(not(feature = "rmrk"))]373                    return unsupported!();374                }375            }376377            impl sp_api::Core<Block> for Runtime {378                fn version() -> RuntimeVersion {379                    VERSION380                }381382                fn execute_block(block: Block) {383                    Executive::execute_block(block)384                }385386                fn initialize_block(header: &<Block as BlockT>::Header) {387                    Executive::initialize_block(header)388                }389            }390391            impl sp_api::Metadata<Block> for Runtime {392                fn metadata() -> OpaqueMetadata {393                    OpaqueMetadata::new(Runtime::metadata().into())394                }395            }396397            impl sp_block_builder::BlockBuilder<Block> for Runtime {398                fn apply_extrinsic(extrinsic: <Block as BlockT>::Extrinsic) -> ApplyExtrinsicResult {399                    Executive::apply_extrinsic(extrinsic)400                }401402                fn finalize_block() -> <Block as BlockT>::Header {403                    Executive::finalize_block()404                }405406                fn inherent_extrinsics(data: sp_inherents::InherentData) -> Vec<<Block as BlockT>::Extrinsic> {407                    data.create_extrinsics()408                }409410                fn check_inherents(411                    block: Block,412                    data: sp_inherents::InherentData,413                ) -> sp_inherents::CheckInherentsResult {414                    data.check_extrinsics(&block)415                }416417                // fn random_seed() -> <Block as BlockT>::Hash {418                //     RandomnessCollectiveFlip::random_seed().0419                // }420            }421422            impl sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block> for Runtime {423                fn validate_transaction(424                    source: TransactionSource,425                    tx: <Block as BlockT>::Extrinsic,426                    hash: <Block as BlockT>::Hash,427                ) -> TransactionValidity {428                    Executive::validate_transaction(source, tx, hash)429                }430            }431432            impl sp_offchain::OffchainWorkerApi<Block> for Runtime {433                fn offchain_worker(header: &<Block as BlockT>::Header) {434                    Executive::offchain_worker(header)435                }436            }437438            impl fp_rpc::EthereumRuntimeRPCApi<Block> for Runtime {439                fn chain_id() -> u64 {440                    <Runtime as pallet_evm::Config>::ChainId::get()441                }442443                fn account_basic(address: H160) -> EVMAccount {444                    let (account, _) = EVM::account_basic(&address);445                    account446                }447448                fn gas_price() -> U256 {449                    let (price, _) = <Runtime as pallet_evm::Config>::FeeCalculator::min_gas_price();450                    price451                }452453                fn account_code_at(address: H160) -> Vec<u8> {454                    EVM::account_codes(address)455                }456457                fn author() -> H160 {458                    <pallet_evm::Pallet<Runtime>>::find_author()459                }460461                fn storage_at(address: H160, index: U256) -> H256 {462                    let mut tmp = [0u8; 32];463                    index.to_big_endian(&mut tmp);464                    EVM::account_storages(address, H256::from_slice(&tmp[..]))465                }466467                #[allow(clippy::redundant_closure)]468                fn call(469                    from: H160,470                    to: H160,471                    data: Vec<u8>,472                    value: U256,473                    gas_limit: U256,474                    max_fee_per_gas: Option<U256>,475                    max_priority_fee_per_gas: Option<U256>,476                    nonce: Option<U256>,477                    estimate: bool,478                    access_list: Option<Vec<(H160, Vec<H256>)>>,479                ) -> Result<pallet_evm::CallInfo, sp_runtime::DispatchError> {480                    let config = if estimate {481                        let mut config = <Runtime as pallet_evm::Config>::config().clone();482                        config.estimate = true;483                        Some(config)484                    } else {485                        None486                    };487488                    let is_transactional = false;489                    let validate = false;490                    <Runtime as pallet_evm::Config>::Runner::call(491                        CrossAccountId::from_eth(from),492                        to,493                        data,494                        value,495                        gas_limit.low_u64(),496                        max_fee_per_gas,497                        max_priority_fee_per_gas,498                        nonce,499                        access_list.unwrap_or_default(),500                        is_transactional,501                        validate,502                        config.as_ref().unwrap_or_else(|| <Runtime as pallet_evm::Config>::config()),503                    ).map_err(|err| err.error.into())504                }505506                #[allow(clippy::redundant_closure)]507                fn create(508                    from: H160,509                    data: Vec<u8>,510                    value: U256,511                    gas_limit: U256,512                    max_fee_per_gas: Option<U256>,513                    max_priority_fee_per_gas: Option<U256>,514                    nonce: Option<U256>,515                    estimate: bool,516                    access_list: Option<Vec<(H160, Vec<H256>)>>,517                ) -> Result<pallet_evm::CreateInfo, sp_runtime::DispatchError> {518                    let config = if estimate {519                        let mut config = <Runtime as pallet_evm::Config>::config().clone();520                        config.estimate = true;521                        Some(config)522                    } else {523                        None524                    };525526                    let is_transactional = false;527                    let validate = false;528                    <Runtime as pallet_evm::Config>::Runner::create(529                        CrossAccountId::from_eth(from),530                        data,531                        value,532                        gas_limit.low_u64(),533                        max_fee_per_gas,534                        max_priority_fee_per_gas,535                        nonce,536                        access_list.unwrap_or_default(),537                        is_transactional,538                        validate,539                        config.as_ref().unwrap_or_else(|| <Runtime as pallet_evm::Config>::config()),540                    ).map_err(|err| err.error.into())541                }542543                fn current_transaction_statuses() -> Option<Vec<TransactionStatus>> {544                    Ethereum::current_transaction_statuses()545                }546547                fn current_block() -> Option<pallet_ethereum::Block> {548                    Ethereum::current_block()549                }550551                fn current_receipts() -> Option<Vec<pallet_ethereum::Receipt>> {552                    Ethereum::current_receipts()553                }554555                fn current_all() -> (556                    Option<pallet_ethereum::Block>,557                    Option<Vec<pallet_ethereum::Receipt>>,558                    Option<Vec<TransactionStatus>>559                ) {560                    (561                        Ethereum::current_block(),562                        Ethereum::current_receipts(),563                        Ethereum::current_transaction_statuses()564                    )565                }566567                fn extrinsic_filter(xts: Vec<<Block as sp_api::BlockT>::Extrinsic>) -> Vec<pallet_ethereum::Transaction> {568                    xts.into_iter().filter_map(|xt| match xt.0.function {569                        RuntimeCall::Ethereum(pallet_ethereum::Call::transact { transaction }) => Some(transaction),570                        _ => None571                    }).collect()572                }573574                fn elasticity() -> Option<Permill> {575                    None576                }577            }578579            impl fp_rpc::ConvertTransactionRuntimeApi<Block> for Runtime {580                fn convert_transaction(transaction: pallet_ethereum::Transaction) -> <Block as BlockT>::Extrinsic  {581                    UncheckedExtrinsic::new_unsigned(582                        pallet_ethereum::Call::<Runtime>::transact { transaction }.into(),583                    )584                }585            }586587            impl sp_session::SessionKeys<Block> for Runtime {588                fn decode_session_keys(589                    encoded: Vec<u8>,590                ) -> Option<Vec<(Vec<u8>, KeyTypeId)>> {591                    SessionKeys::decode_into_raw_public_keys(&encoded)592                }593594                fn generate_session_keys(seed: Option<Vec<u8>>) -> Vec<u8> {595                    SessionKeys::generate(seed)596                }597            }598599            impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime {600                fn slot_duration() -> sp_consensus_aura::SlotDuration {601                    sp_consensus_aura::SlotDuration::from_millis(Aura::slot_duration())602                }603604                fn authorities() -> Vec<AuraId> {605                    Aura::authorities().to_vec()606                }607            }608609            impl cumulus_primitives_core::CollectCollationInfo<Block> for Runtime {610                fn collect_collation_info(header: &<Block as BlockT>::Header) -> cumulus_primitives_core::CollationInfo {611                    ParachainSystem::collect_collation_info(header)612                }613            }614615            impl frame_system_rpc_runtime_api::AccountNonceApi<Block, AccountId, Index> for Runtime {616                fn account_nonce(account: AccountId) -> Index {617                    System::account_nonce(account)618                }619            }620621            impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance> for Runtime {622                fn query_info(uxt: <Block as BlockT>::Extrinsic, len: u32) -> RuntimeDispatchInfo<Balance> {623                    TransactionPayment::query_info(uxt, len)624                }625                fn query_fee_details(uxt: <Block as BlockT>::Extrinsic, len: u32) -> FeeDetails<Balance> {626                    TransactionPayment::query_fee_details(uxt, len)627                }628            }629630            /*631            impl pallet_contracts_rpc_runtime_api::ContractsApi<Block, AccountId, Balance, BlockNumber, Hash>632                for Runtime633            {634                fn call(635                    origin: AccountId,636                    dest: AccountId,637                    value: Balance,638                    gas_limit: u64,639                    input_data: Vec<u8>,640                ) -> pallet_contracts_primitives::ContractExecResult {641                    Contracts::bare_call(origin, dest, value, gas_limit, input_data, false)642                }643644                fn instantiate(645                    origin: AccountId,646                    endowment: Balance,647                    gas_limit: u64,648                    code: pallet_contracts_primitives::Code<Hash>,649                    data: Vec<u8>,650                    salt: Vec<u8>,651                ) -> pallet_contracts_primitives::ContractInstantiateResult<AccountId, BlockNumber>652                {653                    Contracts::bare_instantiate(origin, endowment, gas_limit, code, data, salt, true, false)654                }655656                fn get_storage(657                    address: AccountId,658                    key: [u8; 32],659                ) -> pallet_contracts_primitives::GetStorageResult {660                    Contracts::get_storage(address, key)661                }662663                fn rent_projection(664                    address: AccountId,665                ) -> pallet_contracts_primitives::RentProjectionResult<BlockNumber> {666                    Contracts::rent_projection(address)667                }668            }669            */670671            #[cfg(feature = "runtime-benchmarks")]672            impl frame_benchmarking::Benchmark<Block> for Runtime {673                fn benchmark_metadata(extra: bool) -> (674                    Vec<frame_benchmarking::BenchmarkList>,675                    Vec<frame_support::traits::StorageInfo>,676                ) {677                    use frame_benchmarking::{list_benchmark, Benchmarking, BenchmarkList};678                    use frame_support::traits::StorageInfoTrait;679680                    let mut list = Vec::<BenchmarkList>::new();681682                    list_benchmark!(list, extra, pallet_evm_migration, EvmMigration);683                    list_benchmark!(list, extra, pallet_common, Common);684                    list_benchmark!(list, extra, pallet_unique, Unique);685                    list_benchmark!(list, extra, pallet_structure, Structure);686                    list_benchmark!(list, extra, pallet_inflation, Inflation);687                    list_benchmark!(list, extra, pallet_app_promotion, AppPromotion);688                    list_benchmark!(list, extra, pallet_fungible, Fungible);689                    list_benchmark!(list, extra, pallet_nonfungible, Nonfungible);690691                    #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]692                    list_benchmark!(list, extra, pallet_refungible, Refungible);693694                    #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]695                    list_benchmark!(list, extra, pallet_unique_scheduler_v2, Scheduler);696697                    #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]698                    list_benchmark!(list, extra, pallet_proxy_rmrk_core, RmrkCore);699700                    #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]701                    list_benchmark!(list, extra, pallet_proxy_rmrk_equip, RmrkEquip);702703                    #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]704                    list_benchmark!(list, extra, pallet_foreign_assets, ForeignAssets);705706707                    // list_benchmark!(list, extra, pallet_evm_coder_substrate, EvmCoderSubstrate);708709                    let storage_info = AllPalletsReversedWithSystemFirst::storage_info();710711                    return (list, storage_info)712                }713714                fn dispatch_benchmark(715                    config: frame_benchmarking::BenchmarkConfig716                ) -> Result<Vec<frame_benchmarking::BenchmarkBatch>, sp_runtime::RuntimeString> {717                    use frame_benchmarking::{Benchmarking, BenchmarkBatch, add_benchmark, TrackedStorageKey};718719                    let allowlist: Vec<TrackedStorageKey> = vec![720                        // Total Issuance721                        hex_literal::hex!("c2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80").to_vec().into(),722723                        // Block Number724                        hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef702a5c1b19ab7a04f536c519aca4983ac").to_vec().into(),725                        // Execution Phase726                        hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7ff553b5a9862a516939d82b3d3d8661a").to_vec().into(),727                        // Event Count728                        hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef70a98fdbe9ce6c55837576c60c7af3850").to_vec().into(),729                        // System Events730                        hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef780d41e5e16056765bc8461851072c9d7").to_vec().into(),731732                        // Evm CurrentLogs733                        hex_literal::hex!("1da53b775b270400e7e61ed5cbc5a146547f210cec367e9af919603343b9cb56").to_vec().into(),734735                        // Transactional depth736                        hex_literal::hex!("3a7472616e73616374696f6e5f6c6576656c3a").to_vec().into(),737                    ];738739                    let mut batches = Vec::<BenchmarkBatch>::new();740                    let params = (&config, &allowlist);741742                    add_benchmark!(params, batches, pallet_evm_migration, EvmMigration);743                    add_benchmark!(params, batches, pallet_common, Common);744                    add_benchmark!(params, batches, pallet_unique, Unique);745                    add_benchmark!(params, batches, pallet_structure, Structure);746                    add_benchmark!(params, batches, pallet_inflation, Inflation);747                    add_benchmark!(params, batches, pallet_app_promotion, AppPromotion);748                    add_benchmark!(params, batches, pallet_fungible, Fungible);749                    add_benchmark!(params, batches, pallet_nonfungible, Nonfungible);750751                    #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]752                    add_benchmark!(params, batches, pallet_refungible, Refungible);753754                    #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]755                    add_benchmark!(params, batches, pallet_unique_scheduler_v2, Scheduler);756757                    #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]758                    add_benchmark!(params, batches, pallet_proxy_rmrk_core, RmrkCore);759760                    #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]761                    add_benchmark!(params, batches, pallet_proxy_rmrk_equip, RmrkEquip);762763                    #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]764                    add_benchmark!(params, batches, pallet_foreign_assets, ForeignAssets);765766                    // add_benchmark!(params, batches, pallet_evm_coder_substrate, EvmCoderSubstrate);767768                    if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) }769                    Ok(batches)770                }771            }772773            #[cfg(feature = "try-runtime")]774            impl frame_try_runtime::TryRuntime<Block> for Runtime {775                fn on_runtime_upgrade() -> (frame_support::pallet_prelude::Weight, frame_support::pallet_prelude::Weight) {776                    log::info!("try-runtime::on_runtime_upgrade unique-chain.");777                    let weight = Executive::try_runtime_upgrade().unwrap();778                    (weight, crate::config::substrate::RuntimeBlockWeights::get().max_block)779                }780781                fn execute_block(782                    block: Block,783                    state_root_check: bool,784                    select: frame_try_runtime::TryStateSelect785                ) -> frame_support::pallet_prelude::Weight {786                    log::info!(787                        target: "node-runtime",788                        "try-runtime: executing block {:?} / root checks: {:?} / try-state-select: {:?}",789                        block.header.hash(),790                        state_root_check,791                        select,792                    );793794                    Executive::try_execute_block(block, state_root_check, select).unwrap()795                }796            }797        }798    }799}
modifiedruntime/common/weights.rsdiffbeforeafterboth
--- a/runtime/common/weights.rs
+++ b/runtime/common/weights.rs
@@ -121,8 +121,8 @@
 		max_weight_of!(token_owner())
 	}
 
-	fn set_approval_for_all() -> Weight {
-		max_weight_of!(set_approval_for_all())
+	fn set_allowance_for_all() -> Weight {
+		max_weight_of!(set_allowance_for_all())
 	}
 }
 
modifiedtests/src/approve.test.tsdiffbeforeafterboth
--- a/tests/src/approve.test.ts
+++ b/tests/src/approve.test.ts
@@ -617,26 +617,31 @@
 
   itSub('[nft] Enable and disable approval', async ({helper}) => {
     const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
-    await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});
-    const checkBeforeApproval = await helper.nft.isApprovedForAll(collectionId, {Substrate: alice.address}, {Substrate: bob.address});
+
+    const checkBeforeApproval = await helper.nft.allowanceForAll(collectionId, {Substrate: alice.address}, {Substrate: bob.address});
     expect(checkBeforeApproval).to.be.false;
-    await helper.nft.setApprovalForAll(alice, collectionId, {Substrate: bob.address}, true);
-    const checkAfterApproval = await helper.nft.isApprovedForAll(collectionId, {Substrate: alice.address}, {Substrate: bob.address});
+
+    await helper.nft.setAllowanceForAll(alice, collectionId, {Substrate: bob.address}, true);
+    const checkAfterApproval = await helper.nft.allowanceForAll(collectionId, {Substrate: alice.address}, {Substrate: bob.address});
     expect(checkAfterApproval).to.be.true;
-    await helper.nft.setApprovalForAll(alice, collectionId, {Substrate: bob.address}, false);
-    const checkAfterDisapproval = await helper.nft.isApprovedForAll(collectionId, {Substrate: alice.address}, {Substrate: bob.address});
+
+    await helper.nft.setAllowanceForAll(alice, collectionId, {Substrate: bob.address}, false);
+    const checkAfterDisapproval = await helper.nft.allowanceForAll(collectionId, {Substrate: alice.address}, {Substrate: bob.address});
     expect(checkAfterDisapproval).to.be.false;
   });
 
   itSub.ifWithPallets('[rft] Enable and disable approval', [Pallets.ReFungible], async ({helper}) => {
     const {collectionId} = await helper.rft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
-    const checkBeforeApproval = await helper.rft.isApprovedForAll(collectionId, {Substrate: alice.address}, {Substrate: bob.address});
+
+    const checkBeforeApproval = await helper.rft.allowanceForAll(collectionId, {Substrate: alice.address}, {Substrate: bob.address});
     expect(checkBeforeApproval).to.be.false;
-    await helper.rft.setApprovalForAll(alice, collectionId, {Substrate: bob.address}, true);
-    const checkAfterApproval = await helper.rft.isApprovedForAll(collectionId, {Substrate: alice.address}, {Substrate: bob.address});
+
+    await helper.rft.setAllowanceForAll(alice, collectionId, {Substrate: bob.address}, true);
+    const checkAfterApproval = await helper.rft.allowanceForAll(collectionId, {Substrate: alice.address}, {Substrate: bob.address});
     expect(checkAfterApproval).to.be.true;
-    await helper.rft.setApprovalForAll(alice, collectionId, {Substrate: bob.address}, false);
-    const checkAfterDisapproval = await helper.rft.isApprovedForAll(collectionId, {Substrate: alice.address}, {Substrate: bob.address});
+    
+    await helper.rft.setAllowanceForAll(alice, collectionId, {Substrate: bob.address}, false);
+    const checkAfterDisapproval = await helper.rft.allowanceForAll(collectionId, {Substrate: alice.address}, {Substrate: bob.address});
     expect(checkAfterDisapproval).to.be.false;
   });
 });
modifiedtests/src/eth/api/UniqueNFT.soldiffbeforeafterboth
--- a/tests/src/eth/api/UniqueNFT.sol
+++ b/tests/src/eth/api/UniqueNFT.sol
@@ -672,9 +672,9 @@
 	function approve(address approved, uint256 tokenId) external;
 
 	/// @notice Sets or unsets the approval of a given operator.
-	///  An operator is allowed to transfer all tokens of the sender on their behalf.
+	/// The `operator` is allowed to transfer all tokens of the `caller` on their behalf.
 	/// @param operator Operator
-	/// @param approved Is operator enabled or disabled
+	/// @param approved Should operator status be granted or revoked?
 	/// @dev EVM selector for this function is: 0xa22cb465,
 	///  or in textual repr: setApprovalForAll(address,bool)
 	function setApprovalForAll(address operator, bool approved) external;
@@ -684,7 +684,7 @@
 	///  or in textual repr: getApproved(uint256)
 	function getApproved(uint256 tokenId) external view returns (address);
 
-	/// @notice Tells whether an operator is approved by a given owner.
+	/// @notice Tells whether the given `owner` approves the `operator`.
 	/// @dev EVM selector for this function is: 0xe985e9c5,
 	///  or in textual repr: isApprovedForAll(address,address)
 	function isApprovedForAll(address owner, address operator) external view returns (bool);
modifiedtests/src/eth/api/UniqueRefungible.soldiffbeforeafterboth
--- a/tests/src/eth/api/UniqueRefungible.sol
+++ b/tests/src/eth/api/UniqueRefungible.sol
@@ -669,9 +669,9 @@
 	function approve(address approved, uint256 tokenId) external;
 
 	/// @notice Sets or unsets the approval of a given operator.
-	///  An operator is allowed to transfer all tokens of the sender on their behalf.
+	///  The `operator` is allowed to transfer all token pieces of the `caller` on their behalf.
 	/// @param operator Operator
-	/// @param approved Is operator enabled or disabled
+	/// @param approved Should operator status be granted or revoked?
 	/// @dev EVM selector for this function is: 0xa22cb465,
 	///  or in textual repr: setApprovalForAll(address,bool)
 	function setApprovalForAll(address operator, bool approved) external;
@@ -681,7 +681,7 @@
 	///  or in textual repr: getApproved(uint256)
 	function getApproved(uint256 tokenId) external view returns (address);
 
-	/// @notice Tells whether an operator is approved by a given owner.
+	/// @notice Tells whether the given `owner` approves the `operator`.
 	/// @dev EVM selector for this function is: 0xe985e9c5,
 	///  or in textual repr: isApprovedForAll(address,address)
 	function isApprovedForAll(address owner, address operator) external view returns (bool);
modifiedtests/src/eth/nonFungible.test.tsdiffbeforeafterboth
--- a/tests/src/eth/nonFungible.test.ts
+++ b/tests/src/eth/nonFungible.test.ts
@@ -935,48 +935,54 @@
   let donor: IKeyringPair;
   let minter: IKeyringPair;
   let alice: IKeyringPair;
-  let bob: IKeyringPair;
 
   before(async function() {
     await usingEthPlaygrounds(async (helper, privateKey) => {
       donor = await privateKey({filename: __filename});
-      [minter, alice, bob] = await helper.arrange.createAccounts([100n, 100n, 100n], donor);
+      [minter, alice] = await helper.arrange.createAccounts([100n, 100n], donor);
     });
   });
 
   itEth('[negative] Cant perform burn without approval', async ({helper}) => {
     const collection = await helper.nft.mintCollection(minter, {name: 'A', description: 'B', tokenPrefix: 'C'});
 
-    const owner = bob;
+    const owner = await helper.eth.createAccountWithBalance(donor, 100n);
     const spender = await helper.eth.createAccountWithBalance(donor, 100n);
 
-    const token = await collection.mintToken(minter, {Substrate: owner.address});
+    const token = await collection.mintToken(minter, {Ethereum: owner});
 
     const address = helper.ethAddress.fromCollectionId(collection.collectionId);
     const contract = helper.ethNativeContract.collection(address, 'nft');
 
-    {
-      const ownerCross = helper.ethCrossAccount.fromKeyringPair(owner);
-      await expect(contract.methods.burnFromCross(ownerCross, token.tokenId).send({from: spender})).to.be.rejected;
-    }
+    const ownerCross = helper.ethCrossAccount.fromAddress(owner);
+    await expect(contract.methods.burnFromCross(ownerCross, token.tokenId).send({from: spender})).to.be.rejected;
+
+    await contract.methods.setApprovalForAll(spender, true).send({from: owner});
+    await contract.methods.setApprovalForAll(spender, false).send({from: owner});
+
+    await expect(contract.methods.burnFromCross(ownerCross, token.tokenId).send({from: spender})).to.be.rejected;
   });
 
   itEth('[negative] Cant perform transfer without approval', async ({helper}) => {
     const collection = await helper.nft.mintCollection(minter, {name: 'A', description: 'B', tokenPrefix: 'C'});
-    const owner = bob;
     const receiver = alice;
 
+    const owner = await helper.eth.createAccountWithBalance(donor, 100n);
     const spender = await helper.eth.createAccountWithBalance(donor, 100n);
 
-    const token = await collection.mintToken(minter, {Substrate: owner.address});
+    const token = await collection.mintToken(minter, {Ethereum: owner});
 
     const address = helper.ethAddress.fromCollectionId(collection.collectionId);
     const contract = helper.ethNativeContract.collection(address, 'nft');
 
-    {
-      const ownerCross = helper.ethCrossAccount.fromKeyringPair(owner);
-      const recieverCross = helper.ethCrossAccount.fromKeyringPair(receiver);
-      await expect(contract.methods.transferFromCross(ownerCross, recieverCross, token.tokenId).send({from: spender})).to.be.rejected;
-    }
+    const ownerCross = helper.ethCrossAccount.fromAddress(owner);
+    const recieverCross = helper.ethCrossAccount.fromKeyringPair(receiver);
+
+    await expect(contract.methods.transferFromCross(ownerCross, recieverCross, token.tokenId).send({from: spender})).to.be.rejected;
+
+    await contract.methods.setApprovalForAll(spender, true).send({from: owner});
+    await contract.methods.setApprovalForAll(spender, false).send({from: owner});
+    
+    await expect(contract.methods.transferFromCross(ownerCross, recieverCross, token.tokenId).send({from: spender})).to.be.rejected;
   });
 });
modifiedtests/src/eth/reFungible.test.tsdiffbeforeafterboth
--- a/tests/src/eth/reFungible.test.ts
+++ b/tests/src/eth/reFungible.test.ts
@@ -750,10 +750,14 @@
     const address = helper.ethAddress.fromCollectionId(collection.collectionId);
     const contract = helper.ethNativeContract.collection(address, 'rft');
 
-    {
-      const ownerCross = helper.ethCrossAccount.fromAddress(owner);
-      await expect(contract.methods.burnFromCross(ownerCross, token.tokenId).send({from: spender})).to.be.rejected;
-    }
+    const ownerCross = helper.ethCrossAccount.fromAddress(owner);
+
+    await expect(contract.methods.burnFromCross(ownerCross, token.tokenId).send({from: spender})).to.be.rejected;
+
+    await contract.methods.setApprovalForAll(spender, true).send({from: owner});
+    await contract.methods.setApprovalForAll(spender, false).send({from: owner});
+
+    await expect(contract.methods.burnFromCross(ownerCross, token.tokenId).send({from: spender})).to.be.rejected;
   });
 
   itEth('[negative] Cant perform transfer without approval', async ({helper}) => {
@@ -768,10 +772,14 @@
     const address = helper.ethAddress.fromCollectionId(collection.collectionId);
     const contract = helper.ethNativeContract.collection(address, 'rft');
 
-    {
-      const ownerCross = helper.ethCrossAccount.fromAddress(owner);
-      const recieverCross = helper.ethCrossAccount.fromKeyringPair(receiver);
-      await expect(contract.methods.transferFromCross(ownerCross, recieverCross, token.tokenId).send({from: spender})).to.be.rejected;
-    }
+    const ownerCross = helper.ethCrossAccount.fromAddress(owner);
+    const recieverCross = helper.ethCrossAccount.fromKeyringPair(receiver);
+    
+    await expect(contract.methods.transferFromCross(ownerCross, recieverCross, token.tokenId).send({from: spender})).to.be.rejected;
+
+    await contract.methods.setApprovalForAll(spender, true).send({from: owner});
+    await contract.methods.setApprovalForAll(spender, false).send({from: owner});
+    
+    await expect(contract.methods.transferFromCross(ownerCross, recieverCross, token.tokenId).send({from: spender})).to.be.rejected;
   });
 });
modifiedtests/src/interfaces/augment-api-events.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-events.ts
+++ b/tests/src/interfaces/augment-api-events.ts
@@ -107,7 +107,7 @@
        **/
       Approved: AugmentedEvent<ApiType, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;
       /**
-       * Amount pieces of token owned by `sender` was approved for `spender`.
+       * A `sender` approves operations on all owned tokens for `spender`.
        **/
       ApprovedForAll: AugmentedEvent<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, bool]>;
       /**
modifiedtests/src/interfaces/augment-api-query.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-query.ts
+++ b/tests/src/interfaces/augment-api-query.ts
@@ -406,6 +406,10 @@
        **/
       allowance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<PalletEvmAccountBasicCrossAccountIdRepr>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;
       /**
+       * Operator set by a wallet owner that could perform certain transactions on all tokens in the wallet.
+       **/
+      collectionAllowance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<bool>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]>;
+      /**
        * Used to enumerate tokens owned by account.
        **/
       owned: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: u32 | AnyNumber | Uint8Array) => Observable<bool>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, u32]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, u32]>;
@@ -441,10 +445,6 @@
        * Total amount of minted tokens in a collection.
        **/
       tokensMinted: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
-      /**
-       * Operator set by a wallet owner that could perform certain transactions on all tokens in the wallet.
-       **/
-      walletOperator: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<Option<bool>>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]>;
       /**
        * Generic query
        **/
@@ -625,6 +625,10 @@
        **/
       balance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array, arg3: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u128>, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
       /**
+       * Operator set by a wallet owner that could perform certain transactions on all tokens in the wallet.
+       **/
+      collectionAllowance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<bool>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]>;
+      /**
        * Used to enumerate tokens owned by account.
        **/
       owned: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: u32 | AnyNumber | Uint8Array) => Observable<bool>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, u32]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, u32]>;
@@ -648,10 +652,6 @@
        * Total amount of pieces for token
        **/
       totalSupply: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<u128>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;
-      /**
-       * Operator set by a wallet owner that could perform certain transactions on all tokens in the wallet.
-       **/
-      walletOperator: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<Option<bool>>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]>;
       /**
        * Generic query
        **/
modifiedtests/src/interfaces/augment-api-rpc.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-rpc.ts
+++ b/tests/src/interfaces/augment-api-rpc.ts
@@ -684,6 +684,10 @@
        **/
       allowance: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, sender: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, spender: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<u128>>;
       /**
+       * Tells whether the given `owner` approves the `operator`.
+       **/
+      allowanceForAll: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, owner: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, operator: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<bool>>>;
+      /**
        * Check if a user is allowed to operate within a collection
        **/
       allowed: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, account: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<bool>>;
@@ -719,10 +723,6 @@
        * Get effective collection limits
        **/
       effectiveCollectionLimits: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<UpDataStructsCollectionLimits>>>;
-      /**
-       * Tells whether an operator is approved by a given owner.
-       **/
-      isApprovedForAll: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, owner: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, operator: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<bool>>>;
       /**
        * Get the last token ID created in a collection
        **/
modifiedtests/src/interfaces/augment-api-tx.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-tx.ts
+++ b/tests/src/interfaces/augment-api-tx.ts
@@ -1547,15 +1547,15 @@
       /**
        * Sets or unsets the approval of a given operator.
        * 
-       * An operator is allowed to transfer all tokens of the sender on their behalf.
+       * The `operator` is allowed to transfer all tokens of the `owner` on their behalf.
        * 
        * # Arguments
        * 
        * * `owner`: Token owner
        * * `operator`: Operator
-       * * `approve`: Is operator enabled or disabled
+       * * `approve`: Should operator status be granted or revoked?
        **/
-      setApprovalForAll: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, operator: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, approve: bool | boolean | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, bool]>;
+      setAllowanceForAll: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, operator: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, approve: bool | boolean | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, bool]>;
       /**
        * Set specific limits of a collection. Empty, or None fields mean chain default.
        * 
modifiedtests/src/interfaces/default/types.tsdiffbeforeafterboth
--- a/tests/src/interfaces/default/types.ts
+++ b/tests/src/interfaces/default/types.ts
@@ -2312,13 +2312,13 @@
     readonly tokenId: u32;
     readonly amount: u128;
   } & Struct;
-  readonly isSetApprovalForAll: boolean;
-  readonly asSetApprovalForAll: {
+  readonly isSetAllowanceForAll: boolean;
+  readonly asSetAllowanceForAll: {
     readonly collectionId: u32;
     readonly operator: PalletEvmAccountBasicCrossAccountIdRepr;
     readonly approve: bool;
   } & Struct;
-  readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetTokenPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetCollectionLimits' | 'SetCollectionPermissions' | 'Repartition' | 'SetApprovalForAll';
+  readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetTokenPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetCollectionLimits' | 'SetCollectionPermissions' | 'Repartition' | 'SetAllowanceForAll';
 }
 
 /** @name PalletUniqueError */
modifiedtests/src/interfaces/lookup.tsdiffbeforeafterboth
--- a/tests/src/interfaces/lookup.ts
+++ b/tests/src/interfaces/lookup.ts
@@ -2305,7 +2305,7 @@
         tokenId: 'u32',
         amount: 'u128',
       },
-      set_approval_for_all: {
+      set_allowance_for_all: {
         collectionId: 'u32',
         operator: 'PalletEvmAccountBasicCrossAccountIdRepr',
         approve: 'bool'
modifiedtests/src/interfaces/types-lookup.tsdiffbeforeafterboth
--- a/tests/src/interfaces/types-lookup.ts
+++ b/tests/src/interfaces/types-lookup.ts
@@ -2541,13 +2541,13 @@
       readonly tokenId: u32;
       readonly amount: u128;
     } & Struct;
-    readonly isSetApprovalForAll: boolean;
-    readonly asSetApprovalForAll: {
+    readonly isSetAllowanceForAll: boolean;
+    readonly asSetAllowanceForAll: {
       readonly collectionId: u32;
       readonly operator: PalletEvmAccountBasicCrossAccountIdRepr;
       readonly approve: bool;
     } & Struct;
-    readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetTokenPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetCollectionLimits' | 'SetCollectionPermissions' | 'Repartition' | 'SetApprovalForAll';
+    readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetTokenPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetCollectionLimits' | 'SetCollectionPermissions' | 'Repartition' | 'SetAllowanceForAll';
   }
 
   /** @name UpDataStructsCollectionMode (240) */
modifiedtests/src/interfaces/unique/definitions.tsdiffbeforeafterboth
--- a/tests/src/interfaces/unique/definitions.ts
+++ b/tests/src/interfaces/unique/definitions.ts
@@ -175,8 +175,8 @@
       [collectionParam, tokenParam], 
       'Option<u128>',
     ),
-    isApprovedForAll: fun(
-      'Tells whether an operator is approved by a given owner.', 
+    allowanceForAll: fun(
+      'Tells whether the given `owner` approves the `operator`.', 
       [collectionParam, crossAccountParam('owner'), crossAccountParam('operator')], 
       'Option<bool>',
     ),
modifiedtests/src/util/playgrounds/unique.tsdiffbeforeafterboth
--- a/tests/src/util/playgrounds/unique.ts
+++ b/tests/src/util/playgrounds/unique.ts
@@ -1415,26 +1415,26 @@
   }
 
   /**
-   * Tells whether an operator is approved by a given owner.
+   * Tells whether the given `owner` approves the `operator`.
    * @param collectionId ID of collection
    * @param owner owner address
-	 * @param operator operator addrees
+   * @param operator operator addrees
    * @returns true if operator is enabled
    */
-  async isApprovedForAll(collectionId: number, owner: ICrossAccountId, operator: ICrossAccountId): Promise<boolean> {
-    return (await this.helper.callRpc('api.rpc.unique.isApprovedForAll', [collectionId, owner, operator])).toJSON();
+  async allowanceForAll(collectionId: number, owner: ICrossAccountId, operator: ICrossAccountId): Promise<boolean> {
+    return (await this.helper.callRpc('api.rpc.unique.allowanceForAll', [collectionId, owner, operator])).toJSON();
   }
 
   /** Sets or unsets the approval of a given operator.
-	 *  An operator is allowed to transfer all tokens of the sender on their behalf.
-	 *  @param operator Operator
-	 *  @param approved Is operator enabled or disabled
+   *  The `operator` is allowed to transfer all tokens of the `caller` on their behalf.
+   *  @param operator Operator
+   *  @param approved Should operator status be granted or revoked?
    *  @returns ```true``` if extrinsic success, otherwise ```false```
    */
-  async setApprovalForAll(signer: TSigner, collectionId: number, operator: ICrossAccountId, approved: boolean): Promise<boolean> {
+  async setAllowanceForAll(signer: TSigner, collectionId: number, operator: ICrossAccountId, approved: boolean): Promise<boolean> {
     const result = await this.helper.executeExtrinsic(
       signer,
-      'api.tx.unique.setApprovalForAll', [collectionId, operator, approved],
+      'api.tx.unique.setAllowanceForAll', [collectionId, operator, approved],
       true,
     );
     return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'common', 'ApprovedForAll');