difftreelog
feat(rmrk) benchmark reject_nft
in: master
3 files changed
pallets/proxy-rmrk-core/src/benchmarking.rsdiffbeforeafterboth1use 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 build<T: Config>(&mut self, owner: &T::AccountId) -> Result<RmrkNftId, DispatchError> {108 create_max_nft::<T>(owner, self.collection_id)?;109 self.current_nft_id += 1;110111 Ok(self.current_nft_id)112 }113114 fn build_tower<T: Config>(115 &mut self,116 owner: &T::AccountId,117 height: u32,118 ) -> Result<RmrkNftId, DispatchError> {119 self.build::<T>(owner)?;120121 let mut prev_nft_id = self.current_nft_id;122123 for _ in 0..height {124 self.build::<T>(owner)?;125126 let new_owner =127 <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(128 self.collection_id,129 prev_nft_id,130 );131132 <Pallet<T>>::send(133 RawOrigin::Signed(owner.clone()).into(),134 self.collection_id,135 self.current_nft_id,136 new_owner,137 )?;138139 prev_nft_id = self.current_nft_id;140 }141142 let deepest_nft_id = self.current_nft_id;143144 Ok(deepest_nft_id)145 }146}147148benchmarks! {149 create_collection {150 let caller = account("caller", 0, SEED);151 <T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());152 let metadata = create_data();153 let max = None;154 let symbol = create_data();155 }: _(RawOrigin::Signed(caller), metadata, max, symbol)156157 destroy_collection {158 let caller = account("caller", 0, SEED);159160 create_max_collection::<T>(&caller)?;161 let collection_id = 0;162 }: _(RawOrigin::Signed(caller), collection_id)163164 change_collection_issuer {165 let caller: T::AccountId = account("caller", 0, SEED);166167 create_max_collection::<T>(&caller)?;168 let collection_id = 0;169170 let new_owner: T::AccountId = account("new_owner", 0, SEED);171172 let new_owner_source = T::Lookup::unlookup(new_owner);173 }: _(RawOrigin::Signed(caller), collection_id, new_owner_source)174175 lock_collection {176 let caller: T::AccountId = account("caller", 0, SEED);177178 create_max_collection::<T>(&caller)?;179 let collection_id = 0;180 }: _(RawOrigin::Signed(caller), collection_id)181182 mint_nft {183 let caller: T::AccountId = account("caller", 0, SEED);184185 create_max_collection::<T>(&caller)?;186 let collection_id = 0;187 let owner = caller.clone();188189 let royalty_recipient = Some(caller.clone());190 let royalty_amount = Some(Permill::from_percent(25));191 let metadata = create_data();192 let transferable = true;193 }: _(194 RawOrigin::Signed(caller),195 owner,196 collection_id,197 royalty_recipient,198 royalty_amount,199 metadata,200 transferable201 )202203 send {204 let caller: T::AccountId = account("caller", 0, SEED);205 create_max_collection::<T>(&caller)?;206 let collection_id = 0;207208 let mut nft_builder = NftBuilder::new(collection_id);209 let src_nft_id = nft_builder.build::<T>(&caller)?;210 let target_nft_id = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 2)?;211 }: _(212 RawOrigin::Signed(caller),213 collection_id,214 src_nft_id,215 <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(collection_id, target_nft_id)216 )217218 accept_nft {219 let caller: T::AccountId = account("caller", 0, SEED);220 let sender: T::AccountId = account("sender", 0, SEED);221222 create_max_collection::<T>(&sender)?;223 let src_collection_id = 0;224225 create_max_collection::<T>(&caller)?;226 let target_collection_id = 1;227228 let mut src_nft_builder = NftBuilder::new(src_collection_id);229 let src_nft_id = src_nft_builder.build::<T>(&sender)?;230231 let mut target_nft_builder = NftBuilder::new(target_collection_id);232 let fake_target_nft_id = target_nft_builder.build::<T>(&caller)?;233 let target_nft_id = target_nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;234235 let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(236 target_collection_id,237 fake_target_nft_id238 );239240 let actual_new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(241 target_collection_id,242 target_nft_id243 );244245 <Pallet<T>>::send(246 RawOrigin::Signed(sender.clone()).into(),247 src_collection_id,248 src_nft_id,249 new_owner,250 )?;251 }: _(252 RawOrigin::Signed(caller),253 src_collection_id,254 src_nft_id,255 actual_new_owner256 )257258 set_property {259 let caller: T::AccountId = account("caller", 0, SEED);260 create_max_collection::<T>(&caller)?;261 let collection_id = 0;262263 let mut nft_builder = NftBuilder::new(collection_id);264 let nft_id = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;265266 let key = create_data();267 let value = create_data();268 }: _(269 RawOrigin::Signed(caller),270 collection_id,271 Some(nft_id),272 key,273 value274 )275276 set_priority {277 let caller: T::AccountId = account("caller", 0, SEED);278 create_max_collection::<T>(&caller)?;279 let collection_id = 0;280281 let mut nft_builder = NftBuilder::new(collection_id);282 let nft_id = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;283 let priorities = create_u32_array();284 }: _(285 RawOrigin::Signed(caller),286 collection_id,287 nft_id,288 priorities289 )290291 add_basic_resource {292 let caller: T::AccountId = account("caller", 0, SEED);293 <T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());294295 create_max_collection::<T>(&caller)?;296 let collection_id = 0;297298 let mut nft_builder = NftBuilder::new(collection_id);299 let nft_id = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;300 let resource = create_basic_resource();301 }: _(302 RawOrigin::Signed(caller),303 collection_id,304 nft_id,305 resource306 )307308 add_composable_resource {309 let caller: T::AccountId = account("caller", 0, SEED);310 <T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());311312 create_max_collection::<T>(&caller)?;313 let collection_id = 0;314315 let mut nft_builder = NftBuilder::new(collection_id);316 let nft_id = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;317 let resource = create_composable_resource();318 }: _(319 RawOrigin::Signed(caller),320 collection_id,321 nft_id,322 resource323 )324325 add_slot_resource {326 let caller: T::AccountId = account("caller", 0, SEED);327 <T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());328329 create_max_collection::<T>(&caller)?;330 let collection_id = 0;331332 let mut nft_builder = NftBuilder::new(collection_id);333 let nft_id = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;334 let resource = create_slot_resource();335 }: _(336 RawOrigin::Signed(caller),337 collection_id,338 nft_id,339 resource340 )341342 remove_resource {343 let caller: T::AccountId = account("caller", 0, SEED);344 <T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());345346 create_max_collection::<T>(&caller)?;347 let collection_id = 0;348349 let mut nft_builder = NftBuilder::new(collection_id);350 let nft_id = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;351 let resource = create_basic_resource();352353 <Pallet<T>>::add_basic_resource(354 RawOrigin::Signed(caller.clone()).into(),355 collection_id,356 nft_id,357 resource358 )?;359360 let resource_id = 1;361 }: _(362 RawOrigin::Signed(caller),363 collection_id,364 nft_id,365 resource_id366 )367368 accept_resource {369 let caller: T::AccountId = account("caller", 0, SEED);370 let admin: T::AccountId = account("admin", 0, SEED);371372 <T as pallet_common::Config>::Currency::deposit_creating(&admin, T::CollectionCreationPrice::get());373374 create_max_collection::<T>(&admin)?;375 let collection_id = 0;376377 let mut nft_builder = NftBuilder::new(collection_id);378 let root_nft_id = 1;379 let nested_nft_id = nft_builder.build_tower::<T>(&admin, NESTING_BUDGET - 1)?;380 let resource = create_basic_resource();381382 let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::AccountId(caller.clone());383384 <Pallet<T>>::send(385 RawOrigin::Signed(admin.clone()).into(),386 collection_id,387 root_nft_id,388 new_owner,389 )?;390391 <Pallet<T>>::add_basic_resource(392 RawOrigin::Signed(admin.clone()).into(),393 collection_id,394 nested_nft_id,395 resource396 )?;397398 let resource_id = 1;399 }: _(400 RawOrigin::Signed(caller),401 collection_id,402 nested_nft_id,403 resource_id404 )405406 accept_resource_removal {407 let caller: T::AccountId = account("caller", 0, SEED);408 let admin: T::AccountId = account("admin", 0, SEED);409410 <T as pallet_common::Config>::Currency::deposit_creating(&admin, T::CollectionCreationPrice::get());411412 create_max_collection::<T>(&admin)?;413 let collection_id = 0;414415 let mut nft_builder = NftBuilder::new(collection_id);416 let root_nft_id = 1;417 let nested_nft_id = nft_builder.build_tower::<T>(&admin, NESTING_BUDGET - 1)?;418 let resource = create_basic_resource();419420 <Pallet<T>>::add_basic_resource(421 RawOrigin::Signed(admin.clone()).into(),422 collection_id,423 nested_nft_id,424 resource425 )?;426427 let resource_id = 1;428429 let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::AccountId(caller.clone());430431 <Pallet<T>>::send(432 RawOrigin::Signed(admin.clone()).into(),433 collection_id,434 root_nft_id,435 new_owner,436 )?;437438 <Pallet<T>>::remove_resource(439 RawOrigin::Signed(admin).into(),440 collection_id,441 nested_nft_id,442 resource_id443 )?;444 }: _(445 RawOrigin::Signed(caller),446 collection_id,447 nested_nft_id,448 resource_id449 )450}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 }151}152153benchmarks! {154 create_collection {155 let caller = account("caller", 0, SEED);156 <T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());157 let metadata = create_data();158 let max = None;159 let symbol = create_data();160 }: _(RawOrigin::Signed(caller), metadata, max, symbol)161162 destroy_collection {163 let caller = account("caller", 0, SEED);164165 create_max_collection::<T>(&caller)?;166 let collection_id = 0;167 }: _(RawOrigin::Signed(caller), collection_id)168169 change_collection_issuer {170 let caller: T::AccountId = account("caller", 0, SEED);171172 create_max_collection::<T>(&caller)?;173 let collection_id = 0;174175 let new_owner: T::AccountId = account("new_owner", 0, SEED);176177 let new_owner_source = T::Lookup::unlookup(new_owner);178 }: _(RawOrigin::Signed(caller), collection_id, new_owner_source)179180 lock_collection {181 let caller: T::AccountId = account("caller", 0, SEED);182183 create_max_collection::<T>(&caller)?;184 let collection_id = 0;185 }: _(RawOrigin::Signed(caller), collection_id)186187 mint_nft {188 let caller: T::AccountId = account("caller", 0, SEED);189190 create_max_collection::<T>(&caller)?;191 let collection_id = 0;192 let owner = caller.clone();193194 let royalty_recipient = Some(caller.clone());195 let royalty_amount = Some(Permill::from_percent(25));196 let metadata = create_data();197 let transferable = true;198 }: _(199 RawOrigin::Signed(caller),200 owner,201 collection_id,202 royalty_recipient,203 royalty_amount,204 metadata,205 transferable206 )207208 send {209 let caller: T::AccountId = account("caller", 0, SEED);210 create_max_collection::<T>(&caller)?;211 let collection_id = 0;212213 let mut nft_builder = NftBuilder::new(collection_id);214 let src_nft_id = nft_builder.build::<T>(&caller)?;215 let (_, target_nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 2)?;216 }: _(217 RawOrigin::Signed(caller),218 collection_id,219 src_nft_id,220 <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(collection_id, target_nft_id)221 )222223 accept_nft {224 let caller: T::AccountId = account("caller", 0, SEED);225 let sender: T::AccountId = account("sender", 0, SEED);226227 create_max_collection::<T>(&sender)?;228 let src_collection_id = 0;229230 create_max_collection::<T>(&caller)?;231 let target_collection_id = 1;232233 let mut src_nft_builder = NftBuilder::new(src_collection_id);234 let src_nft_id = src_nft_builder.build::<T>(&sender)?;235236 let mut target_nft_builder = NftBuilder::new(target_collection_id);237 let fake_target_nft_id = target_nft_builder.build::<T>(&caller)?;238 let (_, target_nft_id) = target_nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;239240 let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(241 target_collection_id,242 fake_target_nft_id243 );244245 let actual_new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(246 target_collection_id,247 target_nft_id248 );249250 <Pallet<T>>::send(251 RawOrigin::Signed(sender.clone()).into(),252 src_collection_id,253 src_nft_id,254 new_owner,255 )?;256 }: _(257 RawOrigin::Signed(caller),258 src_collection_id,259 src_nft_id,260 actual_new_owner261 )262263 reject_nft {264 let caller: T::AccountId = account("caller", 0, SEED);265 let sender: T::AccountId = account("sender", 0, SEED);266267 create_max_collection::<T>(&sender)?;268 let src_collection_id = 0;269270 create_max_collection::<T>(&caller)?;271 let target_collection_id = 1;272273 let mut src_nft_builder = NftBuilder::new(src_collection_id);274 let (src_root_nft_id, _) = src_nft_builder.build_tower::<T>(&sender, NESTING_BUDGET - 1)?;275276 let mut target_nft_builder = NftBuilder::new(target_collection_id);277 let target_nft_id = target_nft_builder.build::<T>(&caller)?;278279 let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(280 target_collection_id,281 target_nft_id282 );283284 <Pallet<T>>::send(285 RawOrigin::Signed(sender.clone()).into(),286 src_collection_id,287 src_root_nft_id,288 new_owner,289 )?;290 }: _(291 RawOrigin::Signed(caller),292 src_collection_id,293 src_root_nft_id294 )295296 set_property {297 let caller: T::AccountId = account("caller", 0, SEED);298 create_max_collection::<T>(&caller)?;299 let collection_id = 0;300301 let mut nft_builder = NftBuilder::new(collection_id);302 let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;303304 let key = create_data();305 let value = create_data();306 }: _(307 RawOrigin::Signed(caller),308 collection_id,309 Some(nft_id),310 key,311 value312 )313314 set_priority {315 let caller: T::AccountId = account("caller", 0, SEED);316 create_max_collection::<T>(&caller)?;317 let collection_id = 0;318319 let mut nft_builder = NftBuilder::new(collection_id);320 let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;321 let priorities = create_u32_array();322 }: _(323 RawOrigin::Signed(caller),324 collection_id,325 nft_id,326 priorities327 )328329 add_basic_resource {330 let caller: T::AccountId = account("caller", 0, SEED);331 <T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());332333 create_max_collection::<T>(&caller)?;334 let collection_id = 0;335336 let mut nft_builder = NftBuilder::new(collection_id);337 let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;338 let resource = create_basic_resource();339 }: _(340 RawOrigin::Signed(caller),341 collection_id,342 nft_id,343 resource344 )345346 add_composable_resource {347 let caller: T::AccountId = account("caller", 0, SEED);348 <T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());349350 create_max_collection::<T>(&caller)?;351 let collection_id = 0;352353 let mut nft_builder = NftBuilder::new(collection_id);354 let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;355 let resource = create_composable_resource();356 }: _(357 RawOrigin::Signed(caller),358 collection_id,359 nft_id,360 resource361 )362363 add_slot_resource {364 let caller: T::AccountId = account("caller", 0, SEED);365 <T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());366367 create_max_collection::<T>(&caller)?;368 let collection_id = 0;369370 let mut nft_builder = NftBuilder::new(collection_id);371 let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;372 let resource = create_slot_resource();373 }: _(374 RawOrigin::Signed(caller),375 collection_id,376 nft_id,377 resource378 )379380 remove_resource {381 let caller: T::AccountId = account("caller", 0, SEED);382 <T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());383384 create_max_collection::<T>(&caller)?;385 let collection_id = 0;386387 let mut nft_builder = NftBuilder::new(collection_id);388 let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;389 let resource = create_basic_resource();390391 <Pallet<T>>::add_basic_resource(392 RawOrigin::Signed(caller.clone()).into(),393 collection_id,394 nft_id,395 resource396 )?;397398 let resource_id = 1;399 }: _(400 RawOrigin::Signed(caller),401 collection_id,402 nft_id,403 resource_id404 )405406 accept_resource {407 let caller: T::AccountId = account("caller", 0, SEED);408 let admin: T::AccountId = account("admin", 0, SEED);409410 <T as pallet_common::Config>::Currency::deposit_creating(&admin, T::CollectionCreationPrice::get());411412 create_max_collection::<T>(&admin)?;413 let collection_id = 0;414415 let mut nft_builder = NftBuilder::new(collection_id);416 let root_nft_id = 1;417 let (_, nested_nft_id) = nft_builder.build_tower::<T>(&admin, NESTING_BUDGET - 1)?;418 let resource = create_basic_resource();419420 let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::AccountId(caller.clone());421422 <Pallet<T>>::send(423 RawOrigin::Signed(admin.clone()).into(),424 collection_id,425 root_nft_id,426 new_owner,427 )?;428429 <Pallet<T>>::add_basic_resource(430 RawOrigin::Signed(admin.clone()).into(),431 collection_id,432 nested_nft_id,433 resource434 )?;435436 let resource_id = 1;437 }: _(438 RawOrigin::Signed(caller),439 collection_id,440 nested_nft_id,441 resource_id442 )443444 accept_resource_removal {445 let caller: T::AccountId = account("caller", 0, SEED);446 let admin: T::AccountId = account("admin", 0, SEED);447448 <T as pallet_common::Config>::Currency::deposit_creating(&admin, T::CollectionCreationPrice::get());449450 create_max_collection::<T>(&admin)?;451 let collection_id = 0;452453 let mut nft_builder = NftBuilder::new(collection_id);454 let root_nft_id = 1;455 let (_, nested_nft_id) = nft_builder.build_tower::<T>(&admin, NESTING_BUDGET - 1)?;456 let resource = create_basic_resource();457458 <Pallet<T>>::add_basic_resource(459 RawOrigin::Signed(admin.clone()).into(),460 collection_id,461 nested_nft_id,462 resource463 )?;464465 let resource_id = 1;466467 let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::AccountId(caller.clone());468469 <Pallet<T>>::send(470 RawOrigin::Signed(admin.clone()).into(),471 collection_id,472 root_nft_id,473 new_owner,474 )?;475476 <Pallet<T>>::remove_resource(477 RawOrigin::Signed(admin).into(),478 collection_id,479 nested_nft_id,480 resource_id481 )?;482 }: _(483 RawOrigin::Signed(caller),484 collection_id,485 nested_nft_id,486 resource_id487 )488}pallets/proxy-rmrk-core/src/lib.rsdiffbeforeafterboth--- a/pallets/proxy-rmrk-core/src/lib.rs
+++ b/pallets/proxy-rmrk-core/src/lib.rs
@@ -628,8 +628,8 @@
/// - `origin`: sender of the transaction
/// - `rmrk_collection_id`: collection id of the nft to be accepted
/// - `rmrk_nft_id`: nft id of the nft to be accepted
- #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
#[transactional]
+ #[pallet::weight(<SelfWeightOf<T>>::reject_nft())]
pub fn reject_nft(
origin: OriginFor<T>,
rmrk_collection_id: RmrkCollectionId,
pallets/proxy-rmrk-core/src/weights.rsdiffbeforeafterboth--- a/pallets/proxy-rmrk-core/src/weights.rs
+++ b/pallets/proxy-rmrk-core/src/weights.rs
@@ -40,6 +40,7 @@
fn mint_nft() -> Weight;
fn send() -> Weight;
fn accept_nft() -> Weight;
+ fn reject_nft() -> Weight;
fn set_property() -> Weight;
fn set_priority() -> Weight;
fn add_basic_resource() -> Weight;
@@ -61,11 +62,10 @@
// Storage: Common CollectionProperties (r:0 w:1)
// Storage: Common CollectionById (r:0 w:1)
// Storage: RmrkCore UniqueCollectionId (r:0 w:1)
- // Storage: RmrkCore RmrkInernalCollectionId (r:0 w:1)
fn create_collection() -> Weight {
- (40_146_000 as Weight)
+ (40_456_000 as Weight)
.saturating_add(T::DbWeight::get().reads(5 as Weight))
- .saturating_add(T::DbWeight::get().writes(9 as Weight))
+ .saturating_add(T::DbWeight::get().writes(8 as Weight))
}
// Storage: RmrkCore UniqueCollectionId (r:1 w:0)
// Storage: Common CollectionProperties (r:1 w:1)
@@ -76,7 +76,7 @@
// Storage: Nonfungible TokensBurnt (r:0 w:1)
// Storage: Common AdminAmount (r:0 w:1)
fn destroy_collection() -> Weight {
- (44_905_000 as Weight)
+ (43_812_000 as Weight)
.saturating_add(T::DbWeight::get().reads(5 as Weight))
.saturating_add(T::DbWeight::get().writes(6 as Weight))
}
@@ -84,7 +84,7 @@
// Storage: Common CollectionById (r:1 w:1)
// Storage: Common CollectionProperties (r:1 w:0)
fn change_collection_issuer() -> Weight {
- (22_502_000 as Weight)
+ (22_032_000 as Weight)
.saturating_add(T::DbWeight::get().reads(3 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
@@ -94,7 +94,7 @@
// Storage: Nonfungible TokensMinted (r:1 w:0)
// Storage: Nonfungible TokensBurnt (r:1 w:0)
fn lock_collection() -> Weight {
- (23_705_000 as Weight)
+ (23_314_000 as Weight)
.saturating_add(T::DbWeight::get().reads(5 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
@@ -107,7 +107,7 @@
// Storage: Nonfungible TokenData (r:0 w:1)
// Storage: Nonfungible Owned (r:0 w:1)
fn mint_nft() -> Weight {
- (40_727_000 as Weight)
+ (40_075_000 as Weight)
.saturating_add(T::DbWeight::get().reads(6 as Weight))
.saturating_add(T::DbWeight::get().writes(5 as Weight))
}
@@ -121,7 +121,7 @@
// Storage: Nonfungible TokenChildren (r:0 w:1)
// Storage: Nonfungible Owned (r:0 w:2)
fn send() -> Weight {
- (73_288_000 as Weight)
+ (71_474_000 as Weight)
.saturating_add(T::DbWeight::get().reads(12 as Weight))
.saturating_add(T::DbWeight::get().writes(6 as Weight))
}
@@ -135,17 +135,32 @@
// Storage: Nonfungible TokenChildren (r:0 w:1)
// Storage: Nonfungible Owned (r:0 w:2)
fn accept_nft() -> Weight {
- (81_985_000 as Weight)
+ (79_890_000 as Weight)
.saturating_add(T::DbWeight::get().reads(15 as Weight))
.saturating_add(T::DbWeight::get().writes(7 as Weight))
}
// Storage: RmrkCore UniqueCollectionId (r:1 w:0)
// Storage: Common CollectionProperties (r:1 w:0)
// Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokenProperties (r:1 w:5)
+ // Storage: Nonfungible TokenData (r:5 w:5)
+ // Storage: Nonfungible TokenChildren (r:9 w:4)
+ // Storage: Nonfungible TokensBurnt (r:1 w:1)
+ // Storage: Nonfungible AccountBalance (r:5 w:5)
+ // Storage: Nonfungible Allowance (r:5 w:0)
+ // Storage: Nonfungible Owned (r:0 w:5)
+ fn reject_nft() -> Weight {
+ (236_754_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(29 as Weight))
+ .saturating_add(T::DbWeight::get().writes(25 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
// Storage: Nonfungible TokenProperties (r:1 w:1)
// Storage: Nonfungible TokenData (r:5 w:0)
fn set_property() -> Weight {
- (50_535_000 as Weight)
+ (48_370_000 as Weight)
.saturating_add(T::DbWeight::get().reads(9 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
@@ -155,7 +170,7 @@
// Storage: Nonfungible TokenProperties (r:1 w:1)
// Storage: Nonfungible TokenData (r:5 w:0)
fn set_priority() -> Weight {
- (49_443_000 as Weight)
+ (47_128_000 as Weight)
.saturating_add(T::DbWeight::get().reads(9 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
@@ -172,7 +187,7 @@
// Storage: Nonfungible Owned (r:0 w:1)
// Storage: Common CollectionPropertyPermissions (r:0 w:1)
fn add_basic_resource() -> Weight {
- (104_226_000 as Weight)
+ (101_501_000 as Weight)
.saturating_add(T::DbWeight::get().reads(16 as Weight))
.saturating_add(T::DbWeight::get().writes(12 as Weight))
}
@@ -189,7 +204,7 @@
// Storage: Nonfungible Owned (r:0 w:1)
// Storage: Common CollectionPropertyPermissions (r:0 w:1)
fn add_composable_resource() -> Weight {
- (105_197_000 as Weight)
+ (103_004_000 as Weight)
.saturating_add(T::DbWeight::get().reads(16 as Weight))
.saturating_add(T::DbWeight::get().writes(12 as Weight))
}
@@ -206,7 +221,7 @@
// Storage: Nonfungible Owned (r:0 w:1)
// Storage: Common CollectionPropertyPermissions (r:0 w:1)
fn add_slot_resource() -> Weight {
- (105_899_000 as Weight)
+ (102_613_000 as Weight)
.saturating_add(T::DbWeight::get().reads(16 as Weight))
.saturating_add(T::DbWeight::get().writes(12 as Weight))
}
@@ -221,7 +236,7 @@
// Storage: Nonfungible Allowance (r:1 w:0)
// Storage: Nonfungible Owned (r:0 w:1)
fn remove_resource() -> Weight {
- (82_997_000 as Weight)
+ (82_084_000 as Weight)
.saturating_add(T::DbWeight::get().reads(16 as Weight))
.saturating_add(T::DbWeight::get().writes(5 as Weight))
}
@@ -231,7 +246,7 @@
// Storage: Nonfungible TokenData (r:5 w:0)
// Storage: Nonfungible TokenProperties (r:2 w:1)
fn accept_resource() -> Weight {
- (56_848_000 as Weight)
+ (56_426_000 as Weight)
.saturating_add(T::DbWeight::get().reads(10 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
@@ -246,7 +261,7 @@
// Storage: Nonfungible Allowance (r:1 w:0)
// Storage: Nonfungible Owned (r:0 w:1)
fn accept_resource_removal() -> Weight {
- (86_303_000 as Weight)
+ (85_631_000 as Weight)
.saturating_add(T::DbWeight::get().reads(17 as Weight))
.saturating_add(T::DbWeight::get().writes(5 as Weight))
}
@@ -262,11 +277,10 @@
// Storage: Common CollectionProperties (r:0 w:1)
// Storage: Common CollectionById (r:0 w:1)
// Storage: RmrkCore UniqueCollectionId (r:0 w:1)
- // Storage: RmrkCore RmrkInernalCollectionId (r:0 w:1)
fn create_collection() -> Weight {
- (40_146_000 as Weight)
+ (40_456_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(5 as Weight))
- .saturating_add(RocksDbWeight::get().writes(9 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(8 as Weight))
}
// Storage: RmrkCore UniqueCollectionId (r:1 w:0)
// Storage: Common CollectionProperties (r:1 w:1)
@@ -277,7 +291,7 @@
// Storage: Nonfungible TokensBurnt (r:0 w:1)
// Storage: Common AdminAmount (r:0 w:1)
fn destroy_collection() -> Weight {
- (44_905_000 as Weight)
+ (43_812_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(5 as Weight))
.saturating_add(RocksDbWeight::get().writes(6 as Weight))
}
@@ -285,7 +299,7 @@
// Storage: Common CollectionById (r:1 w:1)
// Storage: Common CollectionProperties (r:1 w:0)
fn change_collection_issuer() -> Weight {
- (22_502_000 as Weight)
+ (22_032_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(3 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
@@ -295,7 +309,7 @@
// Storage: Nonfungible TokensMinted (r:1 w:0)
// Storage: Nonfungible TokensBurnt (r:1 w:0)
fn lock_collection() -> Weight {
- (23_705_000 as Weight)
+ (23_314_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(5 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
@@ -308,7 +322,7 @@
// Storage: Nonfungible TokenData (r:0 w:1)
// Storage: Nonfungible Owned (r:0 w:1)
fn mint_nft() -> Weight {
- (40_727_000 as Weight)
+ (40_075_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(6 as Weight))
.saturating_add(RocksDbWeight::get().writes(5 as Weight))
}
@@ -322,7 +336,7 @@
// Storage: Nonfungible TokenChildren (r:0 w:1)
// Storage: Nonfungible Owned (r:0 w:2)
fn send() -> Weight {
- (73_288_000 as Weight)
+ (71_474_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(12 as Weight))
.saturating_add(RocksDbWeight::get().writes(6 as Weight))
}
@@ -336,17 +350,32 @@
// Storage: Nonfungible TokenChildren (r:0 w:1)
// Storage: Nonfungible Owned (r:0 w:2)
fn accept_nft() -> Weight {
- (81_985_000 as Weight)
+ (79_890_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(15 as Weight))
.saturating_add(RocksDbWeight::get().writes(7 as Weight))
}
// Storage: RmrkCore UniqueCollectionId (r:1 w:0)
// Storage: Common CollectionProperties (r:1 w:0)
// Storage: Common CollectionById (r:1 w:0)
+ // Storage: Nonfungible TokenProperties (r:1 w:5)
+ // Storage: Nonfungible TokenData (r:5 w:5)
+ // Storage: Nonfungible TokenChildren (r:9 w:4)
+ // Storage: Nonfungible TokensBurnt (r:1 w:1)
+ // Storage: Nonfungible AccountBalance (r:5 w:5)
+ // Storage: Nonfungible Allowance (r:5 w:0)
+ // Storage: Nonfungible Owned (r:0 w:5)
+ fn reject_nft() -> Weight {
+ (236_754_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(29 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(25 as Weight))
+ }
+ // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
+ // Storage: Common CollectionProperties (r:1 w:0)
+ // Storage: Common CollectionById (r:1 w:0)
// Storage: Nonfungible TokenProperties (r:1 w:1)
// Storage: Nonfungible TokenData (r:5 w:0)
fn set_property() -> Weight {
- (50_535_000 as Weight)
+ (48_370_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(9 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
@@ -356,7 +385,7 @@
// Storage: Nonfungible TokenProperties (r:1 w:1)
// Storage: Nonfungible TokenData (r:5 w:0)
fn set_priority() -> Weight {
- (49_443_000 as Weight)
+ (47_128_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(9 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
@@ -373,7 +402,7 @@
// Storage: Nonfungible Owned (r:0 w:1)
// Storage: Common CollectionPropertyPermissions (r:0 w:1)
fn add_basic_resource() -> Weight {
- (104_226_000 as Weight)
+ (101_501_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(16 as Weight))
.saturating_add(RocksDbWeight::get().writes(12 as Weight))
}
@@ -390,7 +419,7 @@
// Storage: Nonfungible Owned (r:0 w:1)
// Storage: Common CollectionPropertyPermissions (r:0 w:1)
fn add_composable_resource() -> Weight {
- (105_197_000 as Weight)
+ (103_004_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(16 as Weight))
.saturating_add(RocksDbWeight::get().writes(12 as Weight))
}
@@ -407,7 +436,7 @@
// Storage: Nonfungible Owned (r:0 w:1)
// Storage: Common CollectionPropertyPermissions (r:0 w:1)
fn add_slot_resource() -> Weight {
- (105_899_000 as Weight)
+ (102_613_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(16 as Weight))
.saturating_add(RocksDbWeight::get().writes(12 as Weight))
}
@@ -422,7 +451,7 @@
// Storage: Nonfungible Allowance (r:1 w:0)
// Storage: Nonfungible Owned (r:0 w:1)
fn remove_resource() -> Weight {
- (82_997_000 as Weight)
+ (82_084_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(16 as Weight))
.saturating_add(RocksDbWeight::get().writes(5 as Weight))
}
@@ -432,7 +461,7 @@
// Storage: Nonfungible TokenData (r:5 w:0)
// Storage: Nonfungible TokenProperties (r:2 w:1)
fn accept_resource() -> Weight {
- (56_848_000 as Weight)
+ (56_426_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(10 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
@@ -447,7 +476,7 @@
// Storage: Nonfungible Allowance (r:1 w:0)
// Storage: Nonfungible Owned (r:0 w:1)
fn accept_resource_removal() -> Weight {
- (86_303_000 as Weight)
+ (85_631_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(17 as Weight))
.saturating_add(RocksDbWeight::get().writes(5 as Weight))
}