git.delta.rocks / unique-network / refs/commits / 447167e12c6d

difftreelog

feat(rmrk) benchmark new mint_nft

Daniel Shiposha2022-06-14parent: #1946e45.patch.diff
in: master

3 files changed

modifiedpallets/proxy-rmrk-core/src/benchmarking.rsdiffbeforeafterboth
before · pallets/proxy-rmrk-core/src/benchmarking.rs
1use sp_std::vec;23use frame_benchmarking::{benchmarks, account};4use frame_system::RawOrigin;5use frame_support::{6	traits::{Currency, Get},7	BoundedVec,8};9use sp_runtime::Permill;1011use up_data_structs::*;1213use super::*;1415const SEED: u32 = 1;1617fn create_data<S: Get<u32>>() -> BoundedVec<u8, S> {18	vec![b'A'; S::get() as usize].try_into().expect("size == S")19}2021fn create_u32_array<S: Get<u32>>() -> BoundedVec<u32, S> {22	vec![0; S::get() as usize].try_into().expect("size == S")23}2425fn create_basic_resource() -> RmrkBasicResource {26	RmrkBasicResource {27		src: Some(create_data()),28		metadata: Some(create_data()),29		license: Some(create_data()),30		thumb: Some(create_data()),31	}32}3334fn create_composable_resource() -> RmrkComposableResource {35	RmrkComposableResource {36		parts: create_u32_array(),37		base: 100,38		src: Some(create_data()),39		metadata: Some(create_data()),40		license: Some(create_data()),41		thumb: Some(create_data()),42	}43}4445fn create_slot_resource() -> RmrkSlotResource {46	RmrkSlotResource {47		base: 100,48		slot: 200,49		src: Some(create_data()),50		metadata: Some(create_data()),51		license: Some(create_data()),52		thumb: Some(create_data()),53	}54}5556fn create_max_collection<T: Config>(owner: &T::AccountId) -> DispatchResult {57	<T as pallet_common::Config>::Currency::deposit_creating(58		owner,59		T::CollectionCreationPrice::get(),60	);6162	let metadata = create_data();63	let max = None;64	let symbol = create_data();6566	<Pallet<T>>::create_collection(67		RawOrigin::Signed(owner.clone()).into(),68		metadata,69		max,70		symbol,71	)72}7374fn create_max_nft<T: Config>(75	owner: &T::AccountId,76	collection_id: RmrkCollectionId,77) -> DispatchResult {78	let royalty_recipient = Some(owner.clone());79	let royalty_amount = Some(Permill::from_percent(25));80	let metadata = create_data();81	let transferable = true;8283	<Pallet<T>>::mint_nft(84		RawOrigin::Signed(owner.clone()).into(),85		owner.clone(),86		collection_id,87		royalty_recipient,88		royalty_amount,89		metadata,90		transferable,91	)92}9394struct NftBuilder {95	collection_id: RmrkCollectionId,96	current_nft_id: RmrkNftId,97}9899impl NftBuilder {100	fn new(collection_id: RmrkCollectionId) -> Self {101		Self {102			collection_id,103			current_nft_id: 0,104		}105	}106107	fn current_nft_id(&self) -> RmrkNftId {108		self.current_nft_id109	}110111	fn build<T: Config>(&mut self, owner: &T::AccountId) -> Result<RmrkNftId, DispatchError> {112		create_max_nft::<T>(owner, self.collection_id)?;113		self.current_nft_id += 1;114115		Ok(self.current_nft_id)116	}117118	fn build_tower<T: Config>(119		&mut self,120		owner: &T::AccountId,121		height: u32,122	) -> Result<(RmrkNftId, RmrkNftId), DispatchError> {123		self.build::<T>(owner)?;124125		let root_nft_id = self.current_nft_id;126		let mut prev_nft_id = root_nft_id;127128		for _ in 0..height {129			self.build::<T>(owner)?;130131			let new_owner =132				<RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(133					self.collection_id,134					prev_nft_id,135				);136137			<Pallet<T>>::send(138				RawOrigin::Signed(owner.clone()).into(),139				self.collection_id,140				self.current_nft_id,141				new_owner,142			)?;143144			prev_nft_id = self.current_nft_id;145		}146147		let deepest_nft_id = self.current_nft_id;148149		Ok((root_nft_id, deepest_nft_id))150	}151152	fn build_wide_tree<T: Config>(153		&mut self,154		owner: &T::AccountId,155		width: u32,156	) -> Result<RmrkNftId, DispatchError> {157		self.build::<T>(owner)?;158159		let root_nft_id = self.current_nft_id;160161		let root_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(162			self.collection_id,163			root_nft_id,164		);165166		for _ in 0..width {167			self.build::<T>(owner)?;168169			<Pallet<T>>::send(170				RawOrigin::Signed(owner.clone()).into(),171				self.collection_id,172				self.current_nft_id,173				root_owner.clone(),174			)?;175		}176177		Ok(root_nft_id)178	}179}180181benchmarks! {182	create_collection {183		let caller = account("caller", 0, SEED);184		<T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());185		let metadata = create_data();186		let max = None;187		let symbol = create_data();188	}: _(RawOrigin::Signed(caller), metadata, max, symbol)189190	destroy_collection {191		let caller = account("caller", 0, SEED);192193		create_max_collection::<T>(&caller)?;194		let collection_id = 0;195	}: _(RawOrigin::Signed(caller), collection_id)196197	change_collection_issuer {198		let caller: T::AccountId = account("caller", 0, SEED);199200		create_max_collection::<T>(&caller)?;201		let collection_id = 0;202203		let new_owner: T::AccountId = account("new_owner", 0, SEED);204205		let new_owner_source = T::Lookup::unlookup(new_owner);206	}: _(RawOrigin::Signed(caller), collection_id, new_owner_source)207208	lock_collection {209		let caller: T::AccountId = account("caller", 0, SEED);210211		create_max_collection::<T>(&caller)?;212		let collection_id = 0;213	}: _(RawOrigin::Signed(caller), collection_id)214215	mint_nft {216		let caller: T::AccountId = account("caller", 0, SEED);217218		create_max_collection::<T>(&caller)?;219		let collection_id = 0;220		let owner = caller.clone();221222		let royalty_recipient = Some(caller.clone());223		let royalty_amount = Some(Permill::from_percent(25));224		let metadata = create_data();225		let transferable = true;226	}:  _(227		RawOrigin::Signed(caller),228		owner,229		collection_id,230		royalty_recipient,231		royalty_amount,232		metadata,233		transferable234	)235236	burn_nft {237		let b in 0..200;238239		let caller: T::AccountId = account("caller", 0, SEED);240		create_max_collection::<T>(&caller)?;241		let collection_id = 0;242243		let mut nft_builder = NftBuilder::new(collection_id);244		let root_nft_id  = nft_builder.build_wide_tree::<T>(&caller, b)?;245		let max_burns = b + 1;246	}: _(247		RawOrigin::Signed(caller),248		collection_id,249		root_nft_id,250		max_burns251	)252253	send {254		let caller: T::AccountId = account("caller", 0, SEED);255		create_max_collection::<T>(&caller)?;256		let collection_id = 0;257258		let mut nft_builder = NftBuilder::new(collection_id);259		let src_nft_id = nft_builder.build::<T>(&caller)?;260		let (_, target_nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 2)?;261	}: _(262		RawOrigin::Signed(caller),263		collection_id,264		src_nft_id,265		<RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(collection_id, target_nft_id)266	)267268	accept_nft {269		let caller: T::AccountId = account("caller", 0, SEED);270		let sender: T::AccountId = account("sender", 0, SEED);271272		create_max_collection::<T>(&sender)?;273		let src_collection_id = 0;274275		create_max_collection::<T>(&caller)?;276		let target_collection_id = 1;277278		let mut src_nft_builder = NftBuilder::new(src_collection_id);279		let src_nft_id = src_nft_builder.build::<T>(&sender)?;280281		let mut target_nft_builder = NftBuilder::new(target_collection_id);282		let fake_target_nft_id = target_nft_builder.build::<T>(&caller)?;283		let (_, target_nft_id) = target_nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;284285		let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(286			target_collection_id,287			fake_target_nft_id288		);289290		let actual_new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(291			target_collection_id,292			target_nft_id293		);294295		<Pallet<T>>::send(296			RawOrigin::Signed(sender.clone()).into(),297			src_collection_id,298			src_nft_id,299			new_owner,300		)?;301	}: _(302		RawOrigin::Signed(caller),303		src_collection_id,304		src_nft_id,305		actual_new_owner306	)307308	reject_nft {309		let caller: T::AccountId = account("caller", 0, SEED);310		let sender: T::AccountId = account("sender", 0, SEED);311312		create_max_collection::<T>(&sender)?;313		let src_collection_id = 0;314315		create_max_collection::<T>(&caller)?;316		let target_collection_id = 1;317318		let mut src_nft_builder = NftBuilder::new(src_collection_id);319		let (src_root_nft_id, _) = src_nft_builder.build_tower::<T>(&sender, NESTING_BUDGET - 1)?;320321		let mut target_nft_builder = NftBuilder::new(target_collection_id);322		let target_nft_id = target_nft_builder.build::<T>(&caller)?;323324		let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(325			target_collection_id,326			target_nft_id327		);328329		<Pallet<T>>::send(330			RawOrigin::Signed(sender.clone()).into(),331			src_collection_id,332			src_root_nft_id,333			new_owner,334		)?;335	}: _(336		RawOrigin::Signed(caller),337		src_collection_id,338		src_root_nft_id339	)340341	set_property {342		let caller: T::AccountId = account("caller", 0, SEED);343		create_max_collection::<T>(&caller)?;344		let collection_id = 0;345346		let mut nft_builder = NftBuilder::new(collection_id);347		let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;348349		let key = create_data();350		let value = create_data();351	}: _(352		RawOrigin::Signed(caller),353		collection_id,354		Some(nft_id),355		key,356		value357	)358359	set_priority {360		let caller: T::AccountId = account("caller", 0, SEED);361		create_max_collection::<T>(&caller)?;362		let collection_id = 0;363364		let mut nft_builder = NftBuilder::new(collection_id);365		let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;366		let priorities = create_u32_array();367	}: _(368		RawOrigin::Signed(caller),369		collection_id,370		nft_id,371		priorities372	)373374	add_basic_resource {375		let caller: T::AccountId = account("caller", 0, SEED);376		<T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());377378		create_max_collection::<T>(&caller)?;379		let collection_id = 0;380381		let mut nft_builder = NftBuilder::new(collection_id);382		let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;383		let resource = create_basic_resource();384	}: _(385		RawOrigin::Signed(caller),386		collection_id,387		nft_id,388		resource389	)390391	add_composable_resource {392		let caller: T::AccountId = account("caller", 0, SEED);393		<T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());394395		create_max_collection::<T>(&caller)?;396		let collection_id = 0;397398		let mut nft_builder = NftBuilder::new(collection_id);399		let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;400		let resource = create_composable_resource();401	}: _(402		RawOrigin::Signed(caller),403		collection_id,404		nft_id,405		resource406	)407408	add_slot_resource {409		let caller: T::AccountId = account("caller", 0, SEED);410		<T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());411412		create_max_collection::<T>(&caller)?;413		let collection_id = 0;414415		let mut nft_builder = NftBuilder::new(collection_id);416		let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;417		let resource = create_slot_resource();418	}: _(419		RawOrigin::Signed(caller),420		collection_id,421		nft_id,422		resource423	)424425	remove_resource {426		let caller: T::AccountId = account("caller", 0, SEED);427		<T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());428429		create_max_collection::<T>(&caller)?;430		let collection_id = 0;431432		let mut nft_builder = NftBuilder::new(collection_id);433		let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;434		let resource = create_basic_resource();435436		<Pallet<T>>::add_basic_resource(437			RawOrigin::Signed(caller.clone()).into(),438			collection_id,439			nft_id,440			resource441		)?;442443		let resource_id = 1;444	}: _(445		RawOrigin::Signed(caller),446		collection_id,447		nft_id,448		resource_id449	)450451	accept_resource {452		let caller: T::AccountId = account("caller", 0, SEED);453		let admin: T::AccountId = account("admin", 0, SEED);454455		<T as pallet_common::Config>::Currency::deposit_creating(&admin, T::CollectionCreationPrice::get());456457		create_max_collection::<T>(&admin)?;458		let collection_id = 0;459460		let mut nft_builder = NftBuilder::new(collection_id);461		let root_nft_id = 1;462		let (_, nested_nft_id) = nft_builder.build_tower::<T>(&admin, NESTING_BUDGET - 1)?;463		let resource = create_basic_resource();464465		let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::AccountId(caller.clone());466467		<Pallet<T>>::send(468			RawOrigin::Signed(admin.clone()).into(),469			collection_id,470			root_nft_id,471			new_owner,472		)?;473474		<Pallet<T>>::add_basic_resource(475			RawOrigin::Signed(admin.clone()).into(),476			collection_id,477			nested_nft_id,478			resource479		)?;480481		let resource_id = 1;482	}: _(483		RawOrigin::Signed(caller),484		collection_id,485		nested_nft_id,486		resource_id487	)488489	accept_resource_removal {490		let caller: T::AccountId = account("caller", 0, SEED);491		let admin: T::AccountId = account("admin", 0, SEED);492493		<T as pallet_common::Config>::Currency::deposit_creating(&admin, T::CollectionCreationPrice::get());494495		create_max_collection::<T>(&admin)?;496		let collection_id = 0;497498		let mut nft_builder = NftBuilder::new(collection_id);499		let root_nft_id = 1;500		let (_, nested_nft_id) = nft_builder.build_tower::<T>(&admin, NESTING_BUDGET - 1)?;501		let resource = create_basic_resource();502503		<Pallet<T>>::add_basic_resource(504			RawOrigin::Signed(admin.clone()).into(),505			collection_id,506			nested_nft_id,507			resource508		)?;509510		let resource_id = 1;511512		let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::AccountId(caller.clone());513514		<Pallet<T>>::send(515			RawOrigin::Signed(admin.clone()).into(),516			collection_id,517			root_nft_id,518			new_owner,519		)?;520521		<Pallet<T>>::remove_resource(522			RawOrigin::Signed(admin).into(),523			collection_id,524			nested_nft_id,525			resource_id526		)?;527	}: _(528		RawOrigin::Signed(caller),529		collection_id,530		nested_nft_id,531		resource_id532	)533}
after · pallets/proxy-rmrk-core/src/benchmarking.rs
1use sp_std::vec;23use frame_benchmarking::{benchmarks, account};4use frame_system::RawOrigin;5use frame_support::{6	traits::{Currency, Get},7	BoundedVec,8};9use sp_runtime::Permill;1011use up_data_structs::*;1213use super::*;1415const SEED: u32 = 1;1617fn create_data<S: Get<u32>>() -> BoundedVec<u8, S> {18	vec![b'A'; S::get() as usize].try_into().expect("size == S")19}2021fn create_u32_array<S: Get<u32>>() -> BoundedVec<u32, S> {22	vec![0; S::get() as usize].try_into().expect("size == S")23}2425fn create_basic_resource() -> RmrkBasicResource {26	RmrkBasicResource {27		src: Some(create_data()),28		metadata: Some(create_data()),29		license: Some(create_data()),30		thumb: Some(create_data()),31	}32}3334fn create_composable_resource() -> RmrkComposableResource {35	RmrkComposableResource {36		parts: create_u32_array(),37		base: 100,38		src: Some(create_data()),39		metadata: Some(create_data()),40		license: Some(create_data()),41		thumb: Some(create_data()),42	}43}4445fn create_slot_resource() -> RmrkSlotResource {46	RmrkSlotResource {47		base: 100,48		slot: 200,49		src: Some(create_data()),50		metadata: Some(create_data()),51		license: Some(create_data()),52		thumb: Some(create_data()),53	}54}5556fn create_max_resource_types_array<S: Get<u32>>(num: usize) -> BoundedVec<RmrkResourceTypes, S> {57	vec![RmrkResourceTypes::Composable(create_composable_resource()); num].try_into().expect("num <= S")58}5960fn create_max_collection<T: Config>(owner: &T::AccountId) -> DispatchResult {61	<T as pallet_common::Config>::Currency::deposit_creating(62		owner,63		T::CollectionCreationPrice::get(),64	);6566	let metadata = create_data();67	let max = None;68	let symbol = create_data();6970	<Pallet<T>>::create_collection(71		RawOrigin::Signed(owner.clone()).into(),72		metadata,73		max,74		symbol,75	)76}7778fn create_nft<T: Config>(79	owner: &T::AccountId,80	collection_id: RmrkCollectionId,81) -> DispatchResult {82	let royalty_recipient = Some(owner.clone());83	let royalty_amount = Some(Permill::from_percent(25));84	let metadata = create_data();85	let transferable = true;8687	<Pallet<T>>::mint_nft(88		RawOrigin::Signed(owner.clone()).into(),89		owner.clone(),90		collection_id,91		royalty_recipient,92		royalty_amount,93		metadata,94		transferable,95		None96	)97}9899struct NftBuilder {100	collection_id: RmrkCollectionId,101	current_nft_id: RmrkNftId,102}103104impl NftBuilder {105	fn new(collection_id: RmrkCollectionId) -> Self {106		Self {107			collection_id,108			current_nft_id: 0,109		}110	}111112	fn current_nft_id(&self) -> RmrkNftId {113		self.current_nft_id114	}115116	fn build<T: Config>(&mut self, owner: &T::AccountId) -> Result<RmrkNftId, DispatchError> {117		create_nft::<T>(owner, self.collection_id)?;118		self.current_nft_id += 1;119120		Ok(self.current_nft_id)121	}122123	fn build_tower<T: Config>(124		&mut self,125		owner: &T::AccountId,126		height: u32,127	) -> Result<(RmrkNftId, RmrkNftId), DispatchError> {128		self.build::<T>(owner)?;129130		let root_nft_id = self.current_nft_id;131		let mut prev_nft_id = root_nft_id;132133		for _ in 0..height {134			self.build::<T>(owner)?;135136			let new_owner =137				<RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(138					self.collection_id,139					prev_nft_id,140				);141142			<Pallet<T>>::send(143				RawOrigin::Signed(owner.clone()).into(),144				self.collection_id,145				self.current_nft_id,146				new_owner,147			)?;148149			prev_nft_id = self.current_nft_id;150		}151152		let deepest_nft_id = self.current_nft_id;153154		Ok((root_nft_id, deepest_nft_id))155	}156157	fn build_wide_tree<T: Config>(158		&mut self,159		owner: &T::AccountId,160		width: u32,161	) -> Result<RmrkNftId, DispatchError> {162		self.build::<T>(owner)?;163164		let root_nft_id = self.current_nft_id;165166		let root_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(167			self.collection_id,168			root_nft_id,169		);170171		for _ in 0..width {172			self.build::<T>(owner)?;173174			<Pallet<T>>::send(175				RawOrigin::Signed(owner.clone()).into(),176				self.collection_id,177				self.current_nft_id,178				root_owner.clone(),179			)?;180		}181182		Ok(root_nft_id)183	}184}185186benchmarks! {187	create_collection {188		let caller = account("caller", 0, SEED);189		<T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());190		let metadata = create_data();191		let max = None;192		let symbol = create_data();193	}: _(RawOrigin::Signed(caller), metadata, max, symbol)194195	destroy_collection {196		let caller = account("caller", 0, SEED);197198		create_max_collection::<T>(&caller)?;199		let collection_id = 0;200	}: _(RawOrigin::Signed(caller), collection_id)201202	change_collection_issuer {203		let caller: T::AccountId = account("caller", 0, SEED);204205		create_max_collection::<T>(&caller)?;206		let collection_id = 0;207208		let new_owner: T::AccountId = account("new_owner", 0, SEED);209210		let new_owner_source = T::Lookup::unlookup(new_owner);211	}: _(RawOrigin::Signed(caller), collection_id, new_owner_source)212213	lock_collection {214		let caller: T::AccountId = account("caller", 0, SEED);215216		create_max_collection::<T>(&caller)?;217		let collection_id = 0;218	}: _(RawOrigin::Signed(caller), collection_id)219220	mint_nft {221		let b in 0..100;222223		let caller: T::AccountId = account("caller", 0, SEED);224		<T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());225226		create_max_collection::<T>(&caller)?;227		let collection_id = 0;228		let owner = caller.clone();229230		let royalty_recipient = Some(caller.clone());231		let royalty_amount = Some(Permill::from_percent(25));232		let metadata = create_data();233		let transferable = true;234	}:  _(235		RawOrigin::Signed(caller),236		owner,237		collection_id,238		royalty_recipient,239		royalty_amount,240		metadata,241		transferable,242		Some(create_max_resource_types_array(b as usize))243	)244245	burn_nft {246		let b in 0..200;247248		let caller: T::AccountId = account("caller", 0, SEED);249		create_max_collection::<T>(&caller)?;250		let collection_id = 0;251252		let mut nft_builder = NftBuilder::new(collection_id);253		let root_nft_id  = nft_builder.build_wide_tree::<T>(&caller, b)?;254		let max_burns = b + 1;255	}: _(256		RawOrigin::Signed(caller),257		collection_id,258		root_nft_id,259		max_burns260	)261262	send {263		let caller: T::AccountId = account("caller", 0, SEED);264		create_max_collection::<T>(&caller)?;265		let collection_id = 0;266267		let mut nft_builder = NftBuilder::new(collection_id);268		let src_nft_id = nft_builder.build::<T>(&caller)?;269		let (_, target_nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 2)?;270	}: _(271		RawOrigin::Signed(caller),272		collection_id,273		src_nft_id,274		<RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(collection_id, target_nft_id)275	)276277	accept_nft {278		let caller: T::AccountId = account("caller", 0, SEED);279		let sender: T::AccountId = account("sender", 0, SEED);280281		create_max_collection::<T>(&sender)?;282		let src_collection_id = 0;283284		create_max_collection::<T>(&caller)?;285		let target_collection_id = 1;286287		let mut src_nft_builder = NftBuilder::new(src_collection_id);288		let src_nft_id = src_nft_builder.build::<T>(&sender)?;289290		let mut target_nft_builder = NftBuilder::new(target_collection_id);291		let fake_target_nft_id = target_nft_builder.build::<T>(&caller)?;292		let (_, target_nft_id) = target_nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;293294		let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(295			target_collection_id,296			fake_target_nft_id297		);298299		let actual_new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(300			target_collection_id,301			target_nft_id302		);303304		<Pallet<T>>::send(305			RawOrigin::Signed(sender.clone()).into(),306			src_collection_id,307			src_nft_id,308			new_owner,309		)?;310	}: _(311		RawOrigin::Signed(caller),312		src_collection_id,313		src_nft_id,314		actual_new_owner315	)316317	reject_nft {318		let caller: T::AccountId = account("caller", 0, SEED);319		let sender: T::AccountId = account("sender", 0, SEED);320321		create_max_collection::<T>(&sender)?;322		let src_collection_id = 0;323324		create_max_collection::<T>(&caller)?;325		let target_collection_id = 1;326327		let mut src_nft_builder = NftBuilder::new(src_collection_id);328		let (src_root_nft_id, _) = src_nft_builder.build_tower::<T>(&sender, NESTING_BUDGET - 1)?;329330		let mut target_nft_builder = NftBuilder::new(target_collection_id);331		let target_nft_id = target_nft_builder.build::<T>(&caller)?;332333		let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(334			target_collection_id,335			target_nft_id336		);337338		<Pallet<T>>::send(339			RawOrigin::Signed(sender.clone()).into(),340			src_collection_id,341			src_root_nft_id,342			new_owner,343		)?;344	}: _(345		RawOrigin::Signed(caller),346		src_collection_id,347		src_root_nft_id348	)349350	set_property {351		let caller: T::AccountId = account("caller", 0, SEED);352		create_max_collection::<T>(&caller)?;353		let collection_id = 0;354355		let mut nft_builder = NftBuilder::new(collection_id);356		let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;357358		let key = create_data();359		let value = create_data();360	}: _(361		RawOrigin::Signed(caller),362		collection_id,363		Some(nft_id),364		key,365		value366	)367368	set_priority {369		let caller: T::AccountId = account("caller", 0, SEED);370		create_max_collection::<T>(&caller)?;371		let collection_id = 0;372373		let mut nft_builder = NftBuilder::new(collection_id);374		let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;375		let priorities = create_u32_array();376	}: _(377		RawOrigin::Signed(caller),378		collection_id,379		nft_id,380		priorities381	)382383	add_basic_resource {384		let caller: T::AccountId = account("caller", 0, SEED);385		<T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());386387		create_max_collection::<T>(&caller)?;388		let collection_id = 0;389390		let mut nft_builder = NftBuilder::new(collection_id);391		let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;392		let resource = create_basic_resource();393	}: _(394		RawOrigin::Signed(caller),395		collection_id,396		nft_id,397		resource398	)399400	add_composable_resource {401		let caller: T::AccountId = account("caller", 0, SEED);402		<T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());403404		create_max_collection::<T>(&caller)?;405		let collection_id = 0;406407		let mut nft_builder = NftBuilder::new(collection_id);408		let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;409		let resource = create_composable_resource();410	}: _(411		RawOrigin::Signed(caller),412		collection_id,413		nft_id,414		resource415	)416417	add_slot_resource {418		let caller: T::AccountId = account("caller", 0, SEED);419		<T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());420421		create_max_collection::<T>(&caller)?;422		let collection_id = 0;423424		let mut nft_builder = NftBuilder::new(collection_id);425		let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;426		let resource = create_slot_resource();427	}: _(428		RawOrigin::Signed(caller),429		collection_id,430		nft_id,431		resource432	)433434	remove_resource {435		let caller: T::AccountId = account("caller", 0, SEED);436		<T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());437438		create_max_collection::<T>(&caller)?;439		let collection_id = 0;440441		let mut nft_builder = NftBuilder::new(collection_id);442		let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;443		let resource = create_basic_resource();444445		<Pallet<T>>::add_basic_resource(446			RawOrigin::Signed(caller.clone()).into(),447			collection_id,448			nft_id,449			resource450		)?;451452		let resource_id = 1;453	}: _(454		RawOrigin::Signed(caller),455		collection_id,456		nft_id,457		resource_id458	)459460	accept_resource {461		let caller: T::AccountId = account("caller", 0, SEED);462		let admin: T::AccountId = account("admin", 0, SEED);463464		<T as pallet_common::Config>::Currency::deposit_creating(&admin, T::CollectionCreationPrice::get());465466		create_max_collection::<T>(&admin)?;467		let collection_id = 0;468469		let mut nft_builder = NftBuilder::new(collection_id);470		let root_nft_id = 1;471		let (_, nested_nft_id) = nft_builder.build_tower::<T>(&admin, NESTING_BUDGET - 1)?;472		let resource = create_basic_resource();473474		let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::AccountId(caller.clone());475476		<Pallet<T>>::send(477			RawOrigin::Signed(admin.clone()).into(),478			collection_id,479			root_nft_id,480			new_owner,481		)?;482483		<Pallet<T>>::add_basic_resource(484			RawOrigin::Signed(admin.clone()).into(),485			collection_id,486			nested_nft_id,487			resource488		)?;489490		let resource_id = 1;491	}: _(492		RawOrigin::Signed(caller),493		collection_id,494		nested_nft_id,495		resource_id496	)497498	accept_resource_removal {499		let caller: T::AccountId = account("caller", 0, SEED);500		let admin: T::AccountId = account("admin", 0, SEED);501502		<T as pallet_common::Config>::Currency::deposit_creating(&admin, T::CollectionCreationPrice::get());503504		create_max_collection::<T>(&admin)?;505		let collection_id = 0;506507		let mut nft_builder = NftBuilder::new(collection_id);508		let root_nft_id = 1;509		let (_, nested_nft_id) = nft_builder.build_tower::<T>(&admin, NESTING_BUDGET - 1)?;510		let resource = create_basic_resource();511512		<Pallet<T>>::add_basic_resource(513			RawOrigin::Signed(admin.clone()).into(),514			collection_id,515			nested_nft_id,516			resource517		)?;518519		let resource_id = 1;520521		let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::AccountId(caller.clone());522523		<Pallet<T>>::send(524			RawOrigin::Signed(admin.clone()).into(),525			collection_id,526			root_nft_id,527			new_owner,528		)?;529530		<Pallet<T>>::remove_resource(531			RawOrigin::Signed(admin).into(),532			collection_id,533			nested_nft_id,534			resource_id535		)?;536	}: _(537		RawOrigin::Signed(caller),538		collection_id,539		nested_nft_id,540		resource_id541	)542}
modifiedpallets/proxy-rmrk-core/src/lib.rsdiffbeforeafterboth
--- a/pallets/proxy-rmrk-core/src/lib.rs
+++ b/pallets/proxy-rmrk-core/src/lib.rs
@@ -344,7 +344,7 @@
 		/// - `metadata`: Arbitrary data about an nft, e.g. IPFS hash
 		/// - `transferable`: Ability to transfer this NFT
 		#[transactional]
-		#[pallet::weight(<SelfWeightOf<T>>::mint_nft())]
+		#[pallet::weight(<SelfWeightOf<T>>::mint_nft(resources.as_ref().map(|r| r.len() as u32).unwrap_or(0)))]
 		pub fn mint_nft(
 			origin: OriginFor<T>,
 			owner: T::AccountId,
modifiedpallets/proxy-rmrk-core/src/weights.rsdiffbeforeafterboth
--- a/pallets/proxy-rmrk-core/src/weights.rs
+++ b/pallets/proxy-rmrk-core/src/weights.rs
@@ -3,7 +3,7 @@
 //! Autogenerated weights for pallet_proxy_rmrk_core
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2022-06-10, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2022-06-14, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
 
 // Executed Command:
@@ -37,7 +37,7 @@
 	fn destroy_collection() -> Weight;
 	fn change_collection_issuer() -> Weight;
 	fn lock_collection() -> Weight;
-	fn mint_nft() -> Weight;
+	fn mint_nft(b: u32, ) -> Weight;
 	fn burn_nft(b: u32, ) -> Weight;
 	fn send() -> Weight;
 	fn accept_nft() -> Weight;
@@ -64,7 +64,7 @@
 	// Storage: Common CollectionById (r:0 w:1)
 	// Storage: RmrkCore UniqueCollectionId (r:0 w:1)
 	fn create_collection() -> Weight {
-		(40_837_000 as Weight)
+		(41_277_000 as Weight)
 			.saturating_add(T::DbWeight::get().reads(5 as Weight))
 			.saturating_add(T::DbWeight::get().writes(8 as Weight))
 	}
@@ -77,7 +77,7 @@
 	// Storage: Nonfungible TokensBurnt (r:0 w:1)
 	// Storage: Common AdminAmount (r:0 w:1)
 	fn destroy_collection() -> Weight {
-		(44_544_000 as Weight)
+		(43_371_000 as Weight)
 			.saturating_add(T::DbWeight::get().reads(5 as Weight))
 			.saturating_add(T::DbWeight::get().writes(6 as Weight))
 	}
@@ -85,7 +85,7 @@
 	// Storage: Common CollectionById (r:1 w:1)
 	// Storage: Common CollectionProperties (r:1 w:0)
 	fn change_collection_issuer() -> Weight {
-		(22_151_000 as Weight)
+		(21_891_000 as Weight)
 			.saturating_add(T::DbWeight::get().reads(3 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -95,7 +95,7 @@
 	// Storage: Nonfungible TokensMinted (r:1 w:0)
 	// Storage: Nonfungible TokensBurnt (r:1 w:0)
 	fn lock_collection() -> Weight {
-		(23_766_000 as Weight)
+		(23_144_000 as Weight)
 			.saturating_add(T::DbWeight::get().reads(5 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -107,10 +107,18 @@
 	// Storage: Nonfungible TokenProperties (r:1 w:1)
 	// Storage: Nonfungible TokenData (r:0 w:1)
 	// Storage: Nonfungible Owned (r:0 w:1)
-	fn mint_nft() -> Weight {
-		(40_237_000 as Weight)
-			.saturating_add(T::DbWeight::get().reads(6 as Weight))
-			.saturating_add(T::DbWeight::get().writes(5 as Weight))
+	// Storage: Common CreatedCollectionCount (r:1 w:1)
+	// Storage: Common DestroyedCollectionCount (r:1 w:0)
+	// Storage: System Account (r:2 w:2)
+	// Storage: Common CollectionPropertyPermissions (r:0 w:1)
+	fn mint_nft(b: u32, ) -> Weight {
+		(68_329_000 as Weight)
+			// Standard Error: 3_000
+			.saturating_add((21_470_000 as Weight).saturating_mul(b as Weight))
+			.saturating_add(T::DbWeight::get().reads(12 as Weight))
+			.saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
+			.saturating_add(T::DbWeight::get().writes(12 as Weight))
+			.saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(b as Weight)))
 	}
 	// Storage: RmrkCore UniqueCollectionId (r:1 w:0)
 	// Storage: Common CollectionProperties (r:1 w:0)
@@ -124,8 +132,8 @@
 	// Storage: Nonfungible TokenProperties (r:0 w:1)
 	fn burn_nft(b: u32, ) -> Weight {
 		(0 as Weight)
-			// Standard Error: 1_023_000
-			.saturating_add((318_424_000 as Weight).saturating_mul(b as Weight))
+			// Standard Error: 959_000
+			.saturating_add((305_872_000 as Weight).saturating_mul(b as Weight))
 			.saturating_add(T::DbWeight::get().reads(9 as Weight))
 			.saturating_add(T::DbWeight::get().reads((4 as Weight).saturating_mul(b as Weight)))
 			.saturating_add(T::DbWeight::get().writes(6 as Weight))
@@ -141,7 +149,7 @@
 	// Storage: Nonfungible TokenChildren (r:0 w:1)
 	// Storage: Nonfungible Owned (r:0 w:2)
 	fn send() -> Weight {
-		(71_055_000 as Weight)
+		(71_405_000 as Weight)
 			.saturating_add(T::DbWeight::get().reads(12 as Weight))
 			.saturating_add(T::DbWeight::get().writes(6 as Weight))
 	}
@@ -155,7 +163,7 @@
 	// Storage: Nonfungible TokenChildren (r:0 w:1)
 	// Storage: Nonfungible Owned (r:0 w:2)
 	fn accept_nft() -> Weight {
-		(79_098_000 as Weight)
+		(79_159_000 as Weight)
 			.saturating_add(T::DbWeight::get().reads(15 as Weight))
 			.saturating_add(T::DbWeight::get().writes(7 as Weight))
 	}
@@ -170,7 +178,7 @@
 	// Storage: Nonfungible Allowance (r:5 w:0)
 	// Storage: Nonfungible Owned (r:0 w:5)
 	fn reject_nft() -> Weight {
-		(237_777_000 as Weight)
+		(238_179_000 as Weight)
 			.saturating_add(T::DbWeight::get().reads(29 as Weight))
 			.saturating_add(T::DbWeight::get().writes(25 as Weight))
 	}
@@ -180,7 +188,7 @@
 	// Storage: Nonfungible TokenProperties (r:1 w:1)
 	// Storage: Nonfungible TokenData (r:5 w:0)
 	fn set_property() -> Weight {
-		(47_359_000 as Weight)
+		(47_770_000 as Weight)
 			.saturating_add(T::DbWeight::get().reads(9 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -190,7 +198,7 @@
 	// Storage: Nonfungible TokenProperties (r:1 w:1)
 	// Storage: Nonfungible TokenData (r:5 w:0)
 	fn set_priority() -> Weight {
-		(46_537_000 as Weight)
+		(46_679_000 as Weight)
 			.saturating_add(T::DbWeight::get().reads(9 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -207,7 +215,7 @@
 	// Storage: Nonfungible Owned (r:0 w:1)
 	// Storage: Common CollectionPropertyPermissions (r:0 w:1)
 	fn add_basic_resource() -> Weight {
-		(100_939_000 as Weight)
+		(100_770_000 as Weight)
 			.saturating_add(T::DbWeight::get().reads(16 as Weight))
 			.saturating_add(T::DbWeight::get().writes(12 as Weight))
 	}
@@ -224,7 +232,7 @@
 	// Storage: Nonfungible Owned (r:0 w:1)
 	// Storage: Common CollectionPropertyPermissions (r:0 w:1)
 	fn add_composable_resource() -> Weight {
-		(101_821_000 as Weight)
+		(101_791_000 as Weight)
 			.saturating_add(T::DbWeight::get().reads(16 as Weight))
 			.saturating_add(T::DbWeight::get().writes(12 as Weight))
 	}
@@ -241,7 +249,7 @@
 	// Storage: Nonfungible Owned (r:0 w:1)
 	// Storage: Common CollectionPropertyPermissions (r:0 w:1)
 	fn add_slot_resource() -> Weight {
-		(100_880_000 as Weight)
+		(101_610_000 as Weight)
 			.saturating_add(T::DbWeight::get().reads(16 as Weight))
 			.saturating_add(T::DbWeight::get().writes(12 as Weight))
 	}
@@ -256,7 +264,7 @@
 	// Storage: Nonfungible Allowance (r:1 w:0)
 	// Storage: Nonfungible Owned (r:0 w:1)
 	fn remove_resource() -> Weight {
-		(79_831_000 as Weight)
+		(80_571_000 as Weight)
 			.saturating_add(T::DbWeight::get().reads(16 as Weight))
 			.saturating_add(T::DbWeight::get().writes(5 as Weight))
 	}
@@ -266,7 +274,7 @@
 	// Storage: Nonfungible TokenData (r:5 w:0)
 	// Storage: Nonfungible TokenProperties (r:2 w:1)
 	fn accept_resource() -> Weight {
-		(54_573_000 as Weight)
+		(54_733_000 as Weight)
 			.saturating_add(T::DbWeight::get().reads(10 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -281,7 +289,7 @@
 	// Storage: Nonfungible Allowance (r:1 w:0)
 	// Storage: Nonfungible Owned (r:0 w:1)
 	fn accept_resource_removal() -> Weight {
-		(83_426_000 as Weight)
+		(84_138_000 as Weight)
 			.saturating_add(T::DbWeight::get().reads(17 as Weight))
 			.saturating_add(T::DbWeight::get().writes(5 as Weight))
 	}
@@ -298,7 +306,7 @@
 	// Storage: Common CollectionById (r:0 w:1)
 	// Storage: RmrkCore UniqueCollectionId (r:0 w:1)
 	fn create_collection() -> Weight {
-		(40_837_000 as Weight)
+		(41_277_000 as Weight)
 			.saturating_add(RocksDbWeight::get().reads(5 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(8 as Weight))
 	}
@@ -311,7 +319,7 @@
 	// Storage: Nonfungible TokensBurnt (r:0 w:1)
 	// Storage: Common AdminAmount (r:0 w:1)
 	fn destroy_collection() -> Weight {
-		(44_544_000 as Weight)
+		(43_371_000 as Weight)
 			.saturating_add(RocksDbWeight::get().reads(5 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(6 as Weight))
 	}
@@ -319,7 +327,7 @@
 	// Storage: Common CollectionById (r:1 w:1)
 	// Storage: Common CollectionProperties (r:1 w:0)
 	fn change_collection_issuer() -> Weight {
-		(22_151_000 as Weight)
+		(21_891_000 as Weight)
 			.saturating_add(RocksDbWeight::get().reads(3 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -329,7 +337,7 @@
 	// Storage: Nonfungible TokensMinted (r:1 w:0)
 	// Storage: Nonfungible TokensBurnt (r:1 w:0)
 	fn lock_collection() -> Weight {
-		(23_766_000 as Weight)
+		(23_144_000 as Weight)
 			.saturating_add(RocksDbWeight::get().reads(5 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -341,10 +349,18 @@
 	// Storage: Nonfungible TokenProperties (r:1 w:1)
 	// Storage: Nonfungible TokenData (r:0 w:1)
 	// Storage: Nonfungible Owned (r:0 w:1)
-	fn mint_nft() -> Weight {
-		(40_237_000 as Weight)
-			.saturating_add(RocksDbWeight::get().reads(6 as Weight))
-			.saturating_add(RocksDbWeight::get().writes(5 as Weight))
+	// Storage: Common CreatedCollectionCount (r:1 w:1)
+	// Storage: Common DestroyedCollectionCount (r:1 w:0)
+	// Storage: System Account (r:2 w:2)
+	// Storage: Common CollectionPropertyPermissions (r:0 w:1)
+	fn mint_nft(b: u32, ) -> Weight {
+		(68_329_000 as Weight)
+			// Standard Error: 3_000
+			.saturating_add((21_470_000 as Weight).saturating_mul(b as Weight))
+			.saturating_add(RocksDbWeight::get().reads(12 as Weight))
+			.saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
+			.saturating_add(RocksDbWeight::get().writes(12 as Weight))
+			.saturating_add(RocksDbWeight::get().writes((3 as Weight).saturating_mul(b as Weight)))
 	}
 	// Storage: RmrkCore UniqueCollectionId (r:1 w:0)
 	// Storage: Common CollectionProperties (r:1 w:0)
@@ -358,8 +374,8 @@
 	// Storage: Nonfungible TokenProperties (r:0 w:1)
 	fn burn_nft(b: u32, ) -> Weight {
 		(0 as Weight)
-			// Standard Error: 1_023_000
-			.saturating_add((318_424_000 as Weight).saturating_mul(b as Weight))
+			// Standard Error: 959_000
+			.saturating_add((305_872_000 as Weight).saturating_mul(b as Weight))
 			.saturating_add(RocksDbWeight::get().reads(9 as Weight))
 			.saturating_add(RocksDbWeight::get().reads((4 as Weight).saturating_mul(b as Weight)))
 			.saturating_add(RocksDbWeight::get().writes(6 as Weight))
@@ -375,7 +391,7 @@
 	// Storage: Nonfungible TokenChildren (r:0 w:1)
 	// Storage: Nonfungible Owned (r:0 w:2)
 	fn send() -> Weight {
-		(71_055_000 as Weight)
+		(71_405_000 as Weight)
 			.saturating_add(RocksDbWeight::get().reads(12 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(6 as Weight))
 	}
@@ -389,7 +405,7 @@
 	// Storage: Nonfungible TokenChildren (r:0 w:1)
 	// Storage: Nonfungible Owned (r:0 w:2)
 	fn accept_nft() -> Weight {
-		(79_098_000 as Weight)
+		(79_159_000 as Weight)
 			.saturating_add(RocksDbWeight::get().reads(15 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(7 as Weight))
 	}
@@ -404,7 +420,7 @@
 	// Storage: Nonfungible Allowance (r:5 w:0)
 	// Storage: Nonfungible Owned (r:0 w:5)
 	fn reject_nft() -> Weight {
-		(237_777_000 as Weight)
+		(238_179_000 as Weight)
 			.saturating_add(RocksDbWeight::get().reads(29 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(25 as Weight))
 	}
@@ -414,7 +430,7 @@
 	// Storage: Nonfungible TokenProperties (r:1 w:1)
 	// Storage: Nonfungible TokenData (r:5 w:0)
 	fn set_property() -> Weight {
-		(47_359_000 as Weight)
+		(47_770_000 as Weight)
 			.saturating_add(RocksDbWeight::get().reads(9 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -424,7 +440,7 @@
 	// Storage: Nonfungible TokenProperties (r:1 w:1)
 	// Storage: Nonfungible TokenData (r:5 w:0)
 	fn set_priority() -> Weight {
-		(46_537_000 as Weight)
+		(46_679_000 as Weight)
 			.saturating_add(RocksDbWeight::get().reads(9 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -441,7 +457,7 @@
 	// Storage: Nonfungible Owned (r:0 w:1)
 	// Storage: Common CollectionPropertyPermissions (r:0 w:1)
 	fn add_basic_resource() -> Weight {
-		(100_939_000 as Weight)
+		(100_770_000 as Weight)
 			.saturating_add(RocksDbWeight::get().reads(16 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(12 as Weight))
 	}
@@ -458,7 +474,7 @@
 	// Storage: Nonfungible Owned (r:0 w:1)
 	// Storage: Common CollectionPropertyPermissions (r:0 w:1)
 	fn add_composable_resource() -> Weight {
-		(101_821_000 as Weight)
+		(101_791_000 as Weight)
 			.saturating_add(RocksDbWeight::get().reads(16 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(12 as Weight))
 	}
@@ -475,7 +491,7 @@
 	// Storage: Nonfungible Owned (r:0 w:1)
 	// Storage: Common CollectionPropertyPermissions (r:0 w:1)
 	fn add_slot_resource() -> Weight {
-		(100_880_000 as Weight)
+		(101_610_000 as Weight)
 			.saturating_add(RocksDbWeight::get().reads(16 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(12 as Weight))
 	}
@@ -490,7 +506,7 @@
 	// Storage: Nonfungible Allowance (r:1 w:0)
 	// Storage: Nonfungible Owned (r:0 w:1)
 	fn remove_resource() -> Weight {
-		(79_831_000 as Weight)
+		(80_571_000 as Weight)
 			.saturating_add(RocksDbWeight::get().reads(16 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(5 as Weight))
 	}
@@ -500,7 +516,7 @@
 	// Storage: Nonfungible TokenData (r:5 w:0)
 	// Storage: Nonfungible TokenProperties (r:2 w:1)
 	fn accept_resource() -> Weight {
-		(54_573_000 as Weight)
+		(54_733_000 as Weight)
 			.saturating_add(RocksDbWeight::get().reads(10 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
@@ -515,7 +531,7 @@
 	// Storage: Nonfungible Allowance (r:1 w:0)
 	// Storage: Nonfungible Owned (r:0 w:1)
 	fn accept_resource_removal() -> Weight {
-		(83_426_000 as Weight)
+		(84_138_000 as Weight)
 			.saturating_add(RocksDbWeight::get().reads(17 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(5 as Weight))
 	}