git.delta.rocks / unique-network / refs/commits / 2a3a7b5d775f

difftreelog

Merge pull request #387 from UniqueNetwork/refactor/set-token-property-permissions

ut-akuznetsov2022-06-15parents: #ed591ba #756efd9.patch.diff
in: master

19 files changed

modifiedpallets/common/src/lib.rsdiffbeforeafterboth
--- a/pallets/common/src/lib.rs
+++ b/pallets/common/src/lib.rs
@@ -1019,7 +1019,7 @@
 	}
 
 	#[transactional]
-	pub fn set_property_permissions(
+	pub fn set_token_property_permissions(
 		collection: &CollectionHandle<T>,
 		sender: &T::CrossAccountId,
 		property_permissions: Vec<PropertyKeyPermission>,
@@ -1239,7 +1239,7 @@
 	fn delete_collection_properties(amount: u32) -> Weight;
 	fn set_token_properties(amount: u32) -> Weight;
 	fn delete_token_properties(amount: u32) -> Weight;
-	fn set_property_permissions(amount: u32) -> Weight;
+	fn set_token_property_permissions(amount: u32) -> Weight;
 	fn transfer() -> Weight;
 	fn approve() -> Weight;
 	fn transfer_from() -> Weight;
@@ -1318,7 +1318,7 @@
 		token_id: TokenId,
 		property_keys: Vec<PropertyKey>,
 	) -> DispatchResultWithPostInfo;
-	fn set_property_permissions(
+	fn set_token_property_permissions(
 		&self,
 		sender: &T::CrossAccountId,
 		property_permissions: Vec<PropertyKeyPermission>,
modifiedpallets/fungible/src/common.rsdiffbeforeafterboth
--- a/pallets/fungible/src/common.rs
+++ b/pallets/fungible/src/common.rs
@@ -72,7 +72,7 @@
 		0
 	}
 
-	fn set_property_permissions(_amount: u32) -> Weight {
+	fn set_token_property_permissions(_amount: u32) -> Weight {
 		// Error
 		0
 	}
@@ -302,7 +302,7 @@
 		fail!(<Error<T>>::SettingPropertiesNotAllowed)
 	}
 
-	fn set_property_permissions(
+	fn set_token_property_permissions(
 		&self,
 		_sender: &T::CrossAccountId,
 		_property_permissions: Vec<PropertyKeyPermission>,
modifiedpallets/nonfungible/src/benchmarking.rsdiffbeforeafterboth
before · pallets/nonfungible/src/benchmarking.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/>.1617use super::*;18use crate::{Pallet, Config, NonfungibleHandle};1920use sp_std::prelude::*;21use pallet_common::benchmarking::{create_collection_raw, property_key, property_value};22use frame_benchmarking::{benchmarks, account};23use up_data_structs::{CollectionMode, MAX_ITEMS_PER_BATCH, MAX_PROPERTIES_PER_ITEM, budget::Unlimited};24use pallet_common::bench_init;2526const SEED: u32 = 1;2728fn create_max_item_data<T: Config>(owner: T::CrossAccountId) -> CreateItemData<T> {29	CreateItemData::<T> {30		owner,31		properties: Default::default(),32	}33}34fn create_max_item<T: Config>(35	collection: &NonfungibleHandle<T>,36	sender: &T::CrossAccountId,37	owner: T::CrossAccountId,38) -> Result<TokenId, DispatchError> {39	<Pallet<T>>::create_item(40		&collection,41		sender,42		create_max_item_data::<T>(owner),43		&Unlimited,44	)?;45	Ok(TokenId(<TokensMinted<T>>::get(&collection.id)))46}4748fn create_collection<T: Config>(49	owner: T::CrossAccountId,50) -> Result<NonfungibleHandle<T>, DispatchError> {51	create_collection_raw(52		owner,53		CollectionMode::NFT,54		|owner, data| <Pallet<T>>::init_collection(owner, data, true),55		NonfungibleHandle::cast,56	)57}5859benchmarks! {60	create_item {61		bench_init!{62			owner: sub; collection: collection(owner);63			sender: cross_from_sub(owner); to: cross_sub;64		};65	}: {create_max_item(&collection, &sender, to.clone())?}6667	create_multiple_items {68		let b in 0..MAX_ITEMS_PER_BATCH;69		bench_init!{70			owner: sub; collection: collection(owner);71			sender: cross_from_sub(owner); to: cross_sub;72		};73		let data = (0..b).map(|_| create_max_item_data::<T>(to.clone())).collect();74	}: {<Pallet<T>>::create_multiple_items(&collection, &sender, data, &Unlimited)?}7576	create_multiple_items_ex {77		let b in 0..MAX_ITEMS_PER_BATCH;78		bench_init!{79			owner: sub; collection: collection(owner);80			sender: cross_from_sub(owner);81		};82		let data = (0..b).map(|i| {83			bench_init!(to: cross_sub(i););84			create_max_item_data::<T>(to)85		}).collect();86	}: {<Pallet<T>>::create_multiple_items(&collection, &sender, data, &Unlimited)?}8788	burn_item {89		bench_init!{90			owner: sub; collection: collection(owner);91			sender: cross_from_sub(owner); burner: cross_sub;92		};93		let item = create_max_item(&collection, &sender, burner.clone())?;94	}: {<Pallet<T>>::burn(&collection, &burner, item)?}9596	burn_recursively_self_raw {97		bench_init!{98			owner: sub; collection: collection(owner);99			sender: cross_from_sub(owner); burner: cross_sub;100		};101		let item = create_max_item(&collection, &sender, burner.clone())?;102	}: {<Pallet<T>>::burn_recursively(&collection, &burner, item, &Unlimited, &Unlimited)?}103104	burn_recursively_breadth_plus_self_plus_self_per_each_raw {105		let b in 0..200;106		bench_init!{107			owner: sub; collection: collection(owner);108			sender: cross_from_sub(owner); burner: cross_sub;109		};110		let item = create_max_item(&collection, &sender, burner.clone())?;111		for i in 0..b {112			create_max_item(&collection, &sender, T::CrossTokenAddressMapping::token_to_address(collection.id, item))?;113		}114	}: {<Pallet<T>>::burn_recursively(&collection, &burner, item, &Unlimited, &Unlimited)?}115116	transfer {117		bench_init!{118			owner: sub; collection: collection(owner);119			owner: cross_from_sub; sender: cross_sub; receiver: cross_sub;120		};121		let item = create_max_item(&collection, &owner, sender.clone())?;122	}: {<Pallet<T>>::transfer(&collection, &sender, &receiver, item, &Unlimited)?}123124	approve {125		bench_init!{126			owner: sub; collection: collection(owner);127			owner: cross_from_sub; sender: cross_sub; spender: cross_sub;128		};129		let item = create_max_item(&collection, &owner, sender.clone())?;130	}: {<Pallet<T>>::set_allowance(&collection, &sender, item, Some(&spender))?}131132	transfer_from {133		bench_init!{134			owner: sub; collection: collection(owner);135			owner: cross_from_sub; sender: cross_sub; spender: cross_sub; receiver: cross_sub;136		};137		let item = create_max_item(&collection, &owner, sender.clone())?;138		<Pallet<T>>::set_allowance(&collection, &sender, item, Some(&spender))?;139	}: {<Pallet<T>>::transfer_from(&collection, &spender, &sender, &receiver, item, &Unlimited)?}140141	burn_from {142		bench_init!{143			owner: sub; collection: collection(owner);144			owner: cross_from_sub; sender: cross_sub; burner: cross_sub;145		};146		let item = create_max_item(&collection, &owner, sender.clone())?;147		<Pallet<T>>::set_allowance(&collection, &sender, item, Some(&burner))?;148	}: {<Pallet<T>>::burn_from(&collection, &burner, &sender, item, &Unlimited)?}149150	set_property_permissions {151		let b in 0..MAX_PROPERTIES_PER_ITEM;152		bench_init!{153			owner: sub; collection: collection(owner);154			owner: cross_from_sub;155		};156		let perms = (0..b).map(|k| PropertyKeyPermission {157			key: property_key(k as usize),158			permission: PropertyPermission {159				mutable: false,160				collection_admin: false,161				token_owner: false,162			},163		}).collect::<Vec<_>>();164	}: {<Pallet<T>>::set_property_permissions(&collection, &owner, perms)?}165166	set_token_properties {167		let b in 0..MAX_PROPERTIES_PER_ITEM;168		bench_init!{169			owner: sub; collection: collection(owner);170			owner: cross_from_sub;171		};172		let perms = (0..b).map(|k| PropertyKeyPermission {173			key: property_key(k as usize),174			permission: PropertyPermission {175				mutable: false,176				collection_admin: true,177				token_owner: true,178			},179		}).collect::<Vec<_>>();180		<Pallet<T>>::set_property_permissions(&collection, &owner, perms)?;181		let props = (0..b).map(|k| Property {182			key: property_key(k as usize),183			value: property_value(),184		}).collect::<Vec<_>>();185		let item = create_max_item(&collection, &owner, owner.clone())?;186	}: {<Pallet<T>>::set_token_properties(&collection, &owner, item, props, false)?}187188	delete_token_properties {189		let b in 0..MAX_PROPERTIES_PER_ITEM;190		bench_init!{191			owner: sub; collection: collection(owner);192			owner: cross_from_sub;193		};194		let perms = (0..b).map(|k| PropertyKeyPermission {195			key: property_key(k as usize),196			permission: PropertyPermission {197				mutable: true,198				collection_admin: true,199				token_owner: true,200			},201		}).collect::<Vec<_>>();202		<Pallet<T>>::set_property_permissions(&collection, &owner, perms)?;203		let props = (0..b).map(|k| Property {204			key: property_key(k as usize),205			value: property_value(),206		}).collect::<Vec<_>>();207		let item = create_max_item(&collection, &owner, owner.clone())?;208		<Pallet<T>>::set_token_properties(&collection, &owner, item, props, false)?;209		let to_delete = (0..b).map(|k| property_key(k as usize)).collect::<Vec<_>>();210	}: {<Pallet<T>>::delete_token_properties(&collection, &owner, item, to_delete)?}211}
after · pallets/nonfungible/src/benchmarking.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/>.1617use super::*;18use crate::{Pallet, Config, NonfungibleHandle};1920use sp_std::prelude::*;21use pallet_common::benchmarking::{create_collection_raw, property_key, property_value};22use frame_benchmarking::{benchmarks, account};23use up_data_structs::{CollectionMode, MAX_ITEMS_PER_BATCH, MAX_PROPERTIES_PER_ITEM, budget::Unlimited};24use pallet_common::bench_init;2526const SEED: u32 = 1;2728fn create_max_item_data<T: Config>(owner: T::CrossAccountId) -> CreateItemData<T> {29	CreateItemData::<T> {30		owner,31		properties: Default::default(),32	}33}34fn create_max_item<T: Config>(35	collection: &NonfungibleHandle<T>,36	sender: &T::CrossAccountId,37	owner: T::CrossAccountId,38) -> Result<TokenId, DispatchError> {39	<Pallet<T>>::create_item(40		&collection,41		sender,42		create_max_item_data::<T>(owner),43		&Unlimited,44	)?;45	Ok(TokenId(<TokensMinted<T>>::get(&collection.id)))46}4748fn create_collection<T: Config>(49	owner: T::CrossAccountId,50) -> Result<NonfungibleHandle<T>, DispatchError> {51	create_collection_raw(52		owner,53		CollectionMode::NFT,54		|owner, data| <Pallet<T>>::init_collection(owner, data, true),55		NonfungibleHandle::cast,56	)57}5859benchmarks! {60	create_item {61		bench_init!{62			owner: sub; collection: collection(owner);63			sender: cross_from_sub(owner); to: cross_sub;64		};65	}: {create_max_item(&collection, &sender, to.clone())?}6667	create_multiple_items {68		let b in 0..MAX_ITEMS_PER_BATCH;69		bench_init!{70			owner: sub; collection: collection(owner);71			sender: cross_from_sub(owner); to: cross_sub;72		};73		let data = (0..b).map(|_| create_max_item_data::<T>(to.clone())).collect();74	}: {<Pallet<T>>::create_multiple_items(&collection, &sender, data, &Unlimited)?}7576	create_multiple_items_ex {77		let b in 0..MAX_ITEMS_PER_BATCH;78		bench_init!{79			owner: sub; collection: collection(owner);80			sender: cross_from_sub(owner);81		};82		let data = (0..b).map(|i| {83			bench_init!(to: cross_sub(i););84			create_max_item_data::<T>(to)85		}).collect();86	}: {<Pallet<T>>::create_multiple_items(&collection, &sender, data, &Unlimited)?}8788	burn_item {89		bench_init!{90			owner: sub; collection: collection(owner);91			sender: cross_from_sub(owner); burner: cross_sub;92		};93		let item = create_max_item(&collection, &sender, burner.clone())?;94	}: {<Pallet<T>>::burn(&collection, &burner, item)?}9596	burn_recursively_self_raw {97		bench_init!{98			owner: sub; collection: collection(owner);99			sender: cross_from_sub(owner); burner: cross_sub;100		};101		let item = create_max_item(&collection, &sender, burner.clone())?;102	}: {<Pallet<T>>::burn_recursively(&collection, &burner, item, &Unlimited, &Unlimited)?}103104	burn_recursively_breadth_plus_self_plus_self_per_each_raw {105		let b in 0..200;106		bench_init!{107			owner: sub; collection: collection(owner);108			sender: cross_from_sub(owner); burner: cross_sub;109		};110		let item = create_max_item(&collection, &sender, burner.clone())?;111		for i in 0..b {112			create_max_item(&collection, &sender, T::CrossTokenAddressMapping::token_to_address(collection.id, item))?;113		}114	}: {<Pallet<T>>::burn_recursively(&collection, &burner, item, &Unlimited, &Unlimited)?}115116	transfer {117		bench_init!{118			owner: sub; collection: collection(owner);119			owner: cross_from_sub; sender: cross_sub; receiver: cross_sub;120		};121		let item = create_max_item(&collection, &owner, sender.clone())?;122	}: {<Pallet<T>>::transfer(&collection, &sender, &receiver, item, &Unlimited)?}123124	approve {125		bench_init!{126			owner: sub; collection: collection(owner);127			owner: cross_from_sub; sender: cross_sub; spender: cross_sub;128		};129		let item = create_max_item(&collection, &owner, sender.clone())?;130	}: {<Pallet<T>>::set_allowance(&collection, &sender, item, Some(&spender))?}131132	transfer_from {133		bench_init!{134			owner: sub; collection: collection(owner);135			owner: cross_from_sub; sender: cross_sub; spender: cross_sub; receiver: cross_sub;136		};137		let item = create_max_item(&collection, &owner, sender.clone())?;138		<Pallet<T>>::set_allowance(&collection, &sender, item, Some(&spender))?;139	}: {<Pallet<T>>::transfer_from(&collection, &spender, &sender, &receiver, item, &Unlimited)?}140141	burn_from {142		bench_init!{143			owner: sub; collection: collection(owner);144			owner: cross_from_sub; sender: cross_sub; burner: cross_sub;145		};146		let item = create_max_item(&collection, &owner, sender.clone())?;147		<Pallet<T>>::set_allowance(&collection, &sender, item, Some(&burner))?;148	}: {<Pallet<T>>::burn_from(&collection, &burner, &sender, item, &Unlimited)?}149150	set_token_property_permissions {151		let b in 0..MAX_PROPERTIES_PER_ITEM;152		bench_init!{153			owner: sub; collection: collection(owner);154			owner: cross_from_sub;155		};156		let perms = (0..b).map(|k| PropertyKeyPermission {157			key: property_key(k as usize),158			permission: PropertyPermission {159				mutable: false,160				collection_admin: false,161				token_owner: false,162			},163		}).collect::<Vec<_>>();164	}: {<Pallet<T>>::set_token_property_permissions(&collection, &owner, perms)?}165166	set_token_properties {167		let b in 0..MAX_PROPERTIES_PER_ITEM;168		bench_init!{169			owner: sub; collection: collection(owner);170			owner: cross_from_sub;171		};172		let perms = (0..b).map(|k| PropertyKeyPermission {173			key: property_key(k as usize),174			permission: PropertyPermission {175				mutable: false,176				collection_admin: true,177				token_owner: true,178			},179		}).collect::<Vec<_>>();180		<Pallet<T>>::set_token_property_permissions(&collection, &owner, perms)?;181		let props = (0..b).map(|k| Property {182			key: property_key(k as usize),183			value: property_value(),184		}).collect::<Vec<_>>();185		let item = create_max_item(&collection, &owner, owner.clone())?;186	}: {<Pallet<T>>::set_token_properties(&collection, &owner, item, props, false)?}187188	delete_token_properties {189		let b in 0..MAX_PROPERTIES_PER_ITEM;190		bench_init!{191			owner: sub; collection: collection(owner);192			owner: cross_from_sub;193		};194		let perms = (0..b).map(|k| PropertyKeyPermission {195			key: property_key(k as usize),196			permission: PropertyPermission {197				mutable: true,198				collection_admin: true,199				token_owner: true,200			},201		}).collect::<Vec<_>>();202		<Pallet<T>>::set_token_property_permissions(&collection, &owner, perms)?;203		let props = (0..b).map(|k| Property {204			key: property_key(k as usize),205			value: property_value(),206		}).collect::<Vec<_>>();207		let item = create_max_item(&collection, &owner, owner.clone())?;208		<Pallet<T>>::set_token_properties(&collection, &owner, item, props, false)?;209		let to_delete = (0..b).map(|k| property_key(k as usize)).collect::<Vec<_>>();210	}: {<Pallet<T>>::delete_token_properties(&collection, &owner, item, to_delete)?}211}
modifiedpallets/nonfungible/src/common.rsdiffbeforeafterboth
--- a/pallets/nonfungible/src/common.rs
+++ b/pallets/nonfungible/src/common.rs
@@ -89,8 +89,8 @@
 		<SelfWeightOf<T>>::delete_token_properties(amount)
 	}
 
-	fn set_property_permissions(amount: u32) -> Weight {
-		<SelfWeightOf<T>>::set_property_permissions(amount)
+	fn set_token_property_permissions(amount: u32) -> Weight {
+		<SelfWeightOf<T>>::set_token_property_permissions(amount)
 	}
 
 	fn transfer() -> Weight {
@@ -242,16 +242,16 @@
 		)
 	}
 
-	fn set_property_permissions(
+	fn set_token_property_permissions(
 		&self,
 		sender: &T::CrossAccountId,
 		property_permissions: Vec<PropertyKeyPermission>,
 	) -> DispatchResultWithPostInfo {
 		let weight =
-			<CommonWeights<T>>::set_property_permissions(property_permissions.len() as u32);
+			<CommonWeights<T>>::set_token_property_permissions(property_permissions.len() as u32);
 
 		with_weight(
-			<Pallet<T>>::set_property_permissions(self, sender, property_permissions),
+			<Pallet<T>>::set_token_property_permissions(self, sender, property_permissions),
 			weight,
 		)
 	}
modifiedpallets/nonfungible/src/lib.rsdiffbeforeafterboth
--- a/pallets/nonfungible/src/lib.rs
+++ b/pallets/nonfungible/src/lib.rs
@@ -594,12 +594,12 @@
 		<PalletCommon<T>>::delete_collection_properties(collection, sender, property_keys)
 	}
 
-	pub fn set_property_permissions(
+	pub fn set_token_property_permissions(
 		collection: &CollectionHandle<T>,
 		sender: &T::CrossAccountId,
 		property_permissions: Vec<PropertyKeyPermission>,
 	) -> DispatchResult {
-		<PalletCommon<T>>::set_property_permissions(collection, sender, property_permissions)
+		<PalletCommon<T>>::set_token_property_permissions(collection, sender, property_permissions)
 	}
 
 	pub fn set_property_permission(
modifiedpallets/nonfungible/src/weights.rsdiffbeforeafterboth
--- a/pallets/nonfungible/src/weights.rs
+++ b/pallets/nonfungible/src/weights.rs
@@ -42,7 +42,7 @@
 	fn approve() -> Weight;
 	fn transfer_from() -> Weight;
 	fn burn_from() -> Weight;
-	fn set_property_permissions(b: u32) -> Weight;
+	fn set_token_property_permissions(b: u32) -> Weight;
 	fn set_token_properties(b: u32) -> Weight;
 	fn delete_token_properties(b: u32) -> Weight;
 }
@@ -159,7 +159,7 @@
 			.saturating_add(T::DbWeight::get().writes(5 as Weight))
 	}
 	// Storage: Common CollectionPropertyPermissions (r:1 w:1)
-	fn set_property_permissions(b: u32, ) -> Weight {
+	fn set_token_property_permissions(b: u32, ) -> Weight {
 		(0 as Weight)
 			// Standard Error: 3_432_000
 			.saturating_add((126_888_000 as Weight).saturating_mul(b as Weight))
@@ -299,7 +299,7 @@
 			.saturating_add(RocksDbWeight::get().writes(5 as Weight))
 	}
 	// Storage: Common CollectionPropertyPermissions (r:1 w:1)
-	fn set_property_permissions(b: u32, ) -> Weight {
+	fn set_token_property_permissions(b: u32, ) -> Weight {
 		(0 as Weight)
 			// Standard Error: 3_432_000
 			.saturating_add((126_888_000 as Weight).saturating_mul(b as Weight))
modifiedpallets/refungible/src/common.rsdiffbeforeafterboth
--- a/pallets/refungible/src/common.rs
+++ b/pallets/refungible/src/common.rs
@@ -85,8 +85,8 @@
 		<SelfWeightOf<T>>::delete_token_properties(amount)
 	}
 
-	fn set_property_permissions(amount: u32) -> Weight {
-		<SelfWeightOf<T>>::set_property_permissions(amount)
+	fn set_token_property_permissions(amount: u32) -> Weight {
+		<SelfWeightOf<T>>::set_token_property_permissions(amount)
 	}
 
 	fn transfer() -> Weight {
@@ -315,7 +315,7 @@
 		fail!(<Error<T>>::SettingPropertiesNotAllowed)
 	}
 
-	fn set_property_permissions(
+	fn set_token_property_permissions(
 		&self,
 		_sender: &T::CrossAccountId,
 		_property_permissions: Vec<PropertyKeyPermission>,
modifiedpallets/refungible/src/weights.rsdiffbeforeafterboth
--- a/pallets/refungible/src/weights.rs
+++ b/pallets/refungible/src/weights.rs
@@ -40,7 +40,7 @@
 	fn burn_item_fully() -> Weight;
 	fn set_token_properties(amount: u32) -> Weight;
 	fn delete_token_properties(amount: u32) -> Weight;
-	fn set_property_permissions(amount: u32) -> Weight;
+	fn set_token_property_permissions(amount: u32) -> Weight;
 	fn transfer_normal() -> Weight;
 	fn transfer_creating() -> Weight;
 	fn transfer_removing() -> Weight;
@@ -142,7 +142,7 @@
 		0
 	}
 
-	fn set_property_permissions(_amount: u32) -> Weight {
+	fn set_token_property_permissions(_amount: u32) -> Weight {
 		// Error
 		0
 	}
@@ -320,7 +320,7 @@
 		0
 	}
 
-	fn set_property_permissions(_amount: u32) -> Weight {
+	fn set_token_property_permissions(_amount: u32) -> Weight {
 		// Error
 		0
 	}
modifiedpallets/unique/src/lib.rsdiffbeforeafterboth
--- a/pallets/unique/src/lib.rs
+++ b/pallets/unique/src/lib.rs
@@ -670,9 +670,9 @@
 			dispatch_tx::<T, _>(collection_id, |d| d.delete_token_properties(sender, token_id, property_keys))
 		}
 
-		#[weight = T::CommonWeightInfo::set_property_permissions(property_permissions.len() as u32)]
+		#[weight = T::CommonWeightInfo::set_token_property_permissions(property_permissions.len() as u32)]
 		#[transactional]
-		pub fn set_property_permissions(
+		pub fn set_token_property_permissions(
 			origin,
 			collection_id: CollectionId,
 			property_permissions: Vec<PropertyKeyPermission>,
@@ -681,7 +681,7 @@
 
 			let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
 
-			dispatch_tx::<T, _>(collection_id, |d| d.set_property_permissions(&sender, property_permissions))
+			dispatch_tx::<T, _>(collection_id, |d| d.set_token_property_permissions(&sender, property_permissions))
 		}
 
 		#[weight = T::CommonWeightInfo::create_multiple_items_ex(&data)]
modifiedruntime/common/src/weights.rsdiffbeforeafterboth
--- a/runtime/common/src/weights.rs
+++ b/runtime/common/src/weights.rs
@@ -70,8 +70,8 @@
 		dispatch_weight::<T>() + max_weight_of!(delete_token_properties(amount))
 	}
 
-	fn set_property_permissions(amount: u32) -> Weight {
-		dispatch_weight::<T>() + max_weight_of!(set_property_permissions(amount))
+	fn set_token_property_permissions(amount: u32) -> Weight {
+		dispatch_weight::<T>() + max_weight_of!(set_token_property_permissions(amount))
 	}
 
 	fn transfer() -> Weight {
modifiedtests/src/createMultipleItems.test.tsdiffbeforeafterboth
--- a/tests/src/createMultipleItems.test.ts
+++ b/tests/src/createMultipleItems.test.ts
@@ -48,7 +48,7 @@
       const alice = privateKeyWrapper('//Alice');
       await submitTransactionAsync(
         alice, 
-        api.tx.unique.setPropertyPermissions(collectionId, [{key: 'data', permission: {tokenOwner: true}}]),
+        api.tx.unique.setTokenPropertyPermissions(collectionId, [{key: 'data', permission: {tokenOwner: true}}]),
       );
       
       const args = [
@@ -470,7 +470,7 @@
 
       const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
 
-      const tx1 = api.tx.unique.setPropertyPermissions(collectionId, propPerms);
+      const tx1 = api.tx.unique.setTokenPropertyPermissions(collectionId, propPerms);
       await expect(executeTransaction(api, alice, tx1)).to.be.rejectedWith(/common\.PropertyLimitReached/);
 
       const itemsListIndexBefore = await getLastTokenId(api, collectionId);
modifiedtests/src/createMultipleItemsEx.test.tsdiffbeforeafterboth
--- a/tests/src/createMultipleItemsEx.test.ts
+++ b/tests/src/createMultipleItemsEx.test.ts
@@ -222,7 +222,7 @@
     const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
     await usingApi(async (api, privateKeyWrapper) => {
       const alice = privateKeyWrapper('//Alice');
-      await expect(executeTransaction(api, alice, api.tx.unique.setPropertyPermissions(collection, propPerms))).to.be.rejectedWith(/common\.PropertyLimitReached/);
+      await expect(executeTransaction(api, alice, api.tx.unique.setTokenPropertyPermissions(collection, propPerms))).to.be.rejectedWith(/common\.PropertyLimitReached/);
     });
   });
 
modifiedtests/src/eth/tokenProperties.test.tsdiffbeforeafterboth
--- a/tests/src/eth/tokenProperties.test.ts
+++ b/tests/src/eth/tokenProperties.test.ts
@@ -29,7 +29,7 @@
     const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
     const token = await createItemExpectSuccess(alice, collection, 'NFT');
 
-    await executeTransaction(api, alice, api.tx.unique.setPropertyPermissions(collection, [{
+    await executeTransaction(api, alice, api.tx.unique.setTokenPropertyPermissions(collection, [{
       key: 'testKey',
       permission: {
         collectionAdmin: true,
@@ -52,7 +52,7 @@
     const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
     const token = await createItemExpectSuccess(alice, collection, 'NFT');
 
-    await executeTransaction(api, alice, api.tx.unique.setPropertyPermissions(collection, [{
+    await executeTransaction(api, alice, api.tx.unique.setTokenPropertyPermissions(collection, [{
       key: 'testKey',
       permission: {
         mutable: true,
@@ -77,7 +77,7 @@
     const collection = await createCollectionExpectSuccess({mode: {type:'NFT'}});
     const token = await createItemExpectSuccess(alice, collection, 'NFT');
 
-    await executeTransaction(api, alice, api.tx.unique.setPropertyPermissions(collection, [{
+    await executeTransaction(api, alice, api.tx.unique.setTokenPropertyPermissions(collection, [{
       key: 'testKey',
       permission: {
         collectionAdmin: true,
modifiedtests/src/interfaces/augment-api-tx.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-tx.ts
+++ b/tests/src/interfaces/augment-api-tx.ts
@@ -974,8 +974,8 @@
        * * new_sponsor.
        **/
       setCollectionSponsor: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, newSponsor: AccountId32 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, AccountId32]>;
-      setPropertyPermissions: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, propertyPermissions: Vec<UpDataStructsPropertyKeyPermission> | (UpDataStructsPropertyKeyPermission | { key?: any; permission?: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [u32, Vec<UpDataStructsPropertyKeyPermission>]>;
       setTokenProperties: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, properties: Vec<UpDataStructsProperty> | (UpDataStructsProperty | { key?: any; value?: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [u32, u32, Vec<UpDataStructsProperty>]>;
+      setTokenPropertyPermissions: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, propertyPermissions: Vec<UpDataStructsPropertyKeyPermission> | (UpDataStructsPropertyKeyPermission | { key?: any; permission?: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [u32, Vec<UpDataStructsPropertyKeyPermission>]>;
       /**
        * Set transfers_enabled value for particular collection
        * 
modifiedtests/src/interfaces/default/types.tsdiffbeforeafterboth
--- a/tests/src/interfaces/default/types.ts
+++ b/tests/src/interfaces/default/types.ts
@@ -1690,8 +1690,8 @@
     readonly tokenId: u32;
     readonly propertyKeys: Vec<Bytes>;
   } & Struct;
-  readonly isSetPropertyPermissions: boolean;
-  readonly asSetPropertyPermissions: {
+  readonly isSetTokenPropertyPermissions: boolean;
+  readonly asSetTokenPropertyPermissions: {
     readonly collectionId: u32;
     readonly propertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;
   } & Struct;
@@ -1750,7 +1750,7 @@
     readonly collectionId: u32;
     readonly newLimit: UpDataStructsCollectionPermissions;
   } & Struct;
-  readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetCollectionLimits' | 'SetCollectionPermissions';
+  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';
 }
 
 /** @name PalletUniqueError */
modifiedtests/src/interfaces/lookup.tsdiffbeforeafterboth
--- a/tests/src/interfaces/lookup.ts
+++ b/tests/src/interfaces/lookup.ts
@@ -1313,7 +1313,7 @@
         tokenId: 'u32',
         propertyKeys: 'Vec<Bytes>',
       },
-      set_property_permissions: {
+      set_token_property_permissions: {
         collectionId: 'u32',
         propertyPermissions: 'Vec<UpDataStructsPropertyKeyPermission>',
       },
modifiedtests/src/interfaces/types-lookup.tsdiffbeforeafterboth
--- a/tests/src/interfaces/types-lookup.ts
+++ b/tests/src/interfaces/types-lookup.ts
@@ -1438,8 +1438,8 @@
       readonly tokenId: u32;
       readonly propertyKeys: Vec<Bytes>;
     } & Struct;
-    readonly isSetPropertyPermissions: boolean;
-    readonly asSetPropertyPermissions: {
+    readonly isSetTokenPropertyPermissions: boolean;
+    readonly asSetTokenPropertyPermissions: {
       readonly collectionId: u32;
       readonly propertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;
     } & Struct;
@@ -1498,7 +1498,7 @@
       readonly collectionId: u32;
       readonly newLimit: UpDataStructsCollectionPermissions;
     } & Struct;
-    readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetCollectionLimits' | 'SetCollectionPermissions';
+    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';
   }
 
   /** @name UpDataStructsCollectionMode (156) */
modifiedtests/src/nesting/properties.test.tsdiffbeforeafterboth
--- a/tests/src/nesting/properties.test.ts
+++ b/tests/src/nesting/properties.test.ts
@@ -38,7 +38,7 @@
       await expect(executeTransaction(
         api, 
         alice, 
-        api.tx.unique.setPropertyPermissions(collectionId, propertyPermissions), 
+        api.tx.unique.setTokenPropertyPermissions(collectionId, propertyPermissions), 
       )).to.not.be.rejected;
 
       const collectionProperties = [
@@ -362,7 +362,7 @@
       await expect(executeTransaction(
         api, 
         alice, 
-        api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true}}]), 
+        api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true}}]), 
       )).to.not.be.rejected;
 
       await addCollectionAdminExpectSuccess(alice, collection, bob.address);
@@ -370,7 +370,7 @@
       await expect(executeTransaction(
         api, 
         alice, 
-        api.tx.unique.setPropertyPermissions(collection, [{key: 'mindgame', permission: {collectionAdmin: true, tokenOwner: false}}]), 
+        api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'mindgame', permission: {collectionAdmin: true, tokenOwner: false}}]), 
       )).to.not.be.rejected;
 
       const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery', 'mindgame'])).toHuman();
@@ -388,13 +388,13 @@
       await expect(executeTransaction(
         api, 
         alice, 
-        api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true, collectionAdmin: true}}]), 
+        api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true, collectionAdmin: true}}]), 
       )).to.not.be.rejected;
 
       await expect(executeTransaction(
         api, 
         alice, 
-        api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: false, tokenOwner: true}}]), 
+        api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: false, tokenOwner: true}}]), 
       )).to.not.be.rejected;
 
       const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery'])).toHuman();
@@ -420,7 +420,7 @@
       await expect(executeTransaction(
         api, 
         bob, 
-        api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true, tokenOwner: true}}]), 
+        api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true, tokenOwner: true}}]), 
       )).to.be.rejectedWith(/common\.NoPermission/);
 
       const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery'])).toJSON();
@@ -443,7 +443,7 @@
       await expect(executeTransaction(
         api, 
         alice, 
-        api.tx.unique.setPropertyPermissions(collection, constitution), 
+        api.tx.unique.setTokenPropertyPermissions(collection, constitution), 
       )).to.be.rejectedWith(/common\.PropertyLimitReached/);
 
       const propertyRights = (await api.query.common.collectionPropertyPermissions(collection)).toJSON();
@@ -458,13 +458,13 @@
       await expect(executeTransaction(
         api, 
         alice, 
-        api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: false, tokenOwner: true}}]), 
+        api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: false, tokenOwner: true}}]), 
       )).to.not.be.rejected;
 
       await expect(executeTransaction(
         api, 
         alice, 
-        api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {}}]), 
+        api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {}}]), 
       )).to.be.rejectedWith(/common\.NoPermission/);
 
       const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery'])).toHuman();
@@ -488,21 +488,21 @@
         await expect(executeTransaction(
           api, 
           alice, 
-          api.tx.unique.setPropertyPermissions(collection, invalidProperties[i]), 
+          api.tx.unique.setTokenPropertyPermissions(collection, invalidProperties[i]), 
         ), `on setting the new badly-named property #${i}`).to.be.rejectedWith(/common\.InvalidCharacterInPropertyKey/);
       }
 
       await expect(executeTransaction(
         api, 
         alice, 
-        api.tx.unique.setPropertyPermissions(collection, [{key: '', permission: {}}]), 
+        api.tx.unique.setTokenPropertyPermissions(collection, [{key: '', permission: {}}]), 
       ), 'on rejecting an unnamed property').to.be.rejectedWith(/common\.EmptyPropertyKey/);
 
       const correctKey = '--0x03116e387820CA05'; // PolkadotJS would parse this as an already encoded hex-string
       await expect(executeTransaction(
         api, 
         alice, 
-        api.tx.unique.setPropertyPermissions(collection, [
+        api.tx.unique.setTokenPropertyPermissions(collection, [
           {key: correctKey, permission: {collectionAdmin: true}},
         ]), 
       ), 'on setting the correctly-but-still-badly-named property').to.not.be.rejected;
@@ -576,7 +576,7 @@
           await expect(executeTransaction(
             api, 
             alice, 
-            api.tx.unique.setPropertyPermissions(collection, [{key: key, permission: permission.permission}]), 
+            api.tx.unique.setTokenPropertyPermissions(collection, [{key: key, permission: permission.permission}]), 
           ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;
 
           await expect(executeTransaction(
@@ -612,7 +612,7 @@
           await expect(executeTransaction(
             api, 
             alice, 
-            api.tx.unique.setPropertyPermissions(collection, [{key: key, permission: permission.permission}]), 
+            api.tx.unique.setTokenPropertyPermissions(collection, [{key: key, permission: permission.permission}]), 
           ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;
 
           await expect(executeTransaction(
@@ -655,7 +655,7 @@
           await expect(executeTransaction(
             api, 
             alice, 
-            api.tx.unique.setPropertyPermissions(collection, [{key: key, permission: permission.permission}]), 
+            api.tx.unique.setTokenPropertyPermissions(collection, [{key: key, permission: permission.permission}]), 
           ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;
 
           await expect(executeTransaction(
@@ -721,7 +721,7 @@
         await expect(executeTransaction(
           api, 
           alice, 
-          api.tx.unique.setPropertyPermissions(collection, [{key: `${i}`, permission: passage.permission}]), 
+          api.tx.unique.setTokenPropertyPermissions(collection, [{key: `${i}`, permission: passage.permission}]), 
         ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;
 
         await expect(executeTransaction(
@@ -798,7 +798,7 @@
       await expect(executeTransaction(
         api, 
         alice, 
-        api.tx.unique.setPropertyPermissions(collection, [{key: 'now-existent', permission: {}}]), 
+        api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'now-existent', permission: {}}]), 
       ), 'on setting a new non-permitted property').to.not.be.rejected;
 
       await expect(executeTransaction(
@@ -818,7 +818,7 @@
       await expect(executeTransaction(
         api, 
         alice, 
-        api.tx.unique.setPropertyPermissions(collection, [
+        api.tx.unique.setTokenPropertyPermissions(collection, [
           {key: 'a_holy_book', permission: {collectionAdmin: true, tokenOwner: true}}, 
           {key: 'young_years', permission: {collectionAdmin: true, tokenOwner: true}},
         ]), 
modifiedtests/src/rmrk/rmrk.test.tsdiffbeforeafterboth
--- a/tests/src/rmrk/rmrk.test.ts
+++ b/tests/src/rmrk/rmrk.test.ts
@@ -129,8 +129,8 @@
       await expect(executeTransaction(api, alice, txDeleteCollectionProperties), 'deleting collection properties')
         .to.be.rejectedWith(/common\.CollectionIsExternal/);
 
-      const txSetPropertyPermissions = api.tx.unique.setPropertyPermissions(uniqueCollectionId, [{key: 'a', permission: {mutable: true}}]);
-      await expect(executeTransaction(api, alice, txSetPropertyPermissions), 'setting property permissions')
+      const txsetTokenPropertyPermissions = api.tx.unique.setTokenPropertyPermissions(uniqueCollectionId, [{key: 'a', permission: {mutable: true}}]);
+      await expect(executeTransaction(api, alice, txsetTokenPropertyPermissions), 'setting property permissions')
         .to.be.rejectedWith(/common\.CollectionIsExternal/);
 
       // NFT