difftreelog
feat nft benchmarking
in: master
8 files changed
Makefilediffbeforeafterboth--- a/Makefile
+++ b/Makefile
@@ -10,5 +10,9 @@
bench-evm-migration:
make _bench PALLET=evm-migration
+.PHONY: bench-nft
+bench-nft:
+ make _bench PALLET=nft
+
.PHONY: bench
-bench: bench-evm-migration
+bench: bench-evm-migration bench-nft
pallets/nft/src/benchmarking.rsdiffbeforeafterboth1#![cfg(feature = "runtime-benchmarks")]23use super::*;4use crate::Module as Nft;56use sp_std::prelude::*;7use frame_system::RawOrigin;8use frame_benchmarking::{benchmarks, account, whitelisted_caller}; // , TrackedStorageKey,910const SEED: u32 = 1;11/*12fn default_nft_data() -> CreateItemData {13 CreateItemData::NFT(CreateNftData { const_data: vec![1, 2, 3], variable_data: vec![3, 2, 1] })14}1516fn default_fungible_data () -> CreateItemData {17 CreateItemData::Fungible(CreateFungibleData { })18}1920fn default_re_fungible_data () -> CreateItemData {21 CreateItemData::ReFungible(CreateReFungibleData { const_data: vec![1, 2, 3], variable_data: vec![3, 2, 1] })22}23*/2425benchmarks! {2627 create_collection {28 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();29 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();30 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();31 let mode: CollectionMode = CollectionMode::NFT;32 let caller: T::AccountId = account("caller", 0, SEED);33 }: _(RawOrigin::Signed(caller.clone()), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode)34/*35 verify {36 assert_eq!(Nft::<T>::collection_id(2).owner, caller);37 }38 destroy_collection {39 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();40 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();41 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();42 let mode: CollectionMode = CollectionMode::NFT;43 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());44 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;45 }: _(RawOrigin::Signed(caller.clone()), 2)4647 add_to_white_list {48 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();49 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();50 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();51 let mode: CollectionMode = CollectionMode::NFT;52 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());53 let whitelist_account: T::AccountId = account("admin", 0, SEED);54 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;55 }: add_to_white_list(RawOrigin::Signed(caller.clone()), 2, whitelist_account)5657 remove_from_white_list {58 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();59 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();60 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();61 let mode: CollectionMode = CollectionMode::NFT;62 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());63 let whitelist_account: T::AccountId = account("admin", 0, SEED);64 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;65 Nft::<T>::add_to_white_list(RawOrigin::Signed(caller.clone()).into(), 2, whitelist_account.clone())?;66 }: remove_from_white_list(RawOrigin::Signed(caller.clone()), 2, whitelist_account)6768 set_public_access_mode {69 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();70 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();71 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();72 let mode: CollectionMode = CollectionMode::NFT;73 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());74 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;75 }: set_public_access_mode(RawOrigin::Signed(caller.clone()), 2, AccessMode::WhiteList)7677 set_mint_permission {78 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();79 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();80 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();81 let mode: CollectionMode = CollectionMode::NFT;82 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());83 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;84 }: set_mint_permission(RawOrigin::Signed(caller.clone()), 2, true)8586 change_collection_owner {87 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();88 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();89 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();90 let mode: CollectionMode = CollectionMode::NFT;91 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());92 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;93 let new_owner: T::AccountId = account("admin", 0, SEED);94 }: change_collection_owner(RawOrigin::Signed(caller.clone()), 2, new_owner)9596 add_collection_admin {97 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();98 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();99 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();100 let mode: CollectionMode = CollectionMode::NFT;101 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());102 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;103 let new_admin: T::AccountId = account("admin", 0, SEED);104 }: add_collection_admin(RawOrigin::Signed(caller.clone()), 2, new_admin)105106 remove_collection_admin {107 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();108 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();109 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();110 let mode: CollectionMode = CollectionMode::NFT;111 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());112 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;113 let new_admin: T::AccountId = account("admin", 0, SEED);114 Nft::<T>::add_collection_admin(RawOrigin::Signed(caller.clone()).into(), 2, new_admin.clone())?;115 }: remove_collection_admin(RawOrigin::Signed(caller.clone()), 2, new_admin)116117 set_collection_sponsor {118 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();119 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();120 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();121 let mode: CollectionMode = CollectionMode::NFT;122 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());123 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;124 }: set_collection_sponsor(RawOrigin::Signed(caller.clone()), 2, caller.clone())125126 confirm_sponsorship {127 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();128 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();129 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();130 let mode: CollectionMode = CollectionMode::NFT;131 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());132 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;133 Nft::<T>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone())?;134 }: confirm_sponsorship(RawOrigin::Signed(caller.clone()), 2)135136 remove_collection_sponsor {137 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();138 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();139 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();140 let mode: CollectionMode = CollectionMode::NFT;141 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());142 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;143 Nft::<T>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone())?;144 Nft::<T>::confirm_sponsorship(RawOrigin::Signed(caller.clone()).into(), 2)?;145 }: remove_collection_sponsor(RawOrigin::Signed(caller.clone()), 2)146147 // nft item148 create_item_nft {149 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();150 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();151 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();152 let mode: CollectionMode = CollectionMode::NFT;153 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());154 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;155 let data = default_nft_data();156157 }: create_item(RawOrigin::Signed(caller.clone()), 2, caller.clone(), data)158159 #[extra]160 create_item_nft_large {161 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();162 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();163 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();164 let mode: CollectionMode = CollectionMode::NFT;165 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());166 let mut nft_data = CreateNftData {167 const_data: vec![],168 variable_data: vec![]169 };170 for i in 0..1998 {171 nft_data.const_data.push(10);172 nft_data.variable_data.push(10);173 }174 let data = CreateItemData::NFT(nft_data);175 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;176177 }: create_item(RawOrigin::Signed(caller.clone()), 2, caller.clone(), data)178179 // fungible item180 create_item_fungible {181 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();182 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();183 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();184 let mode: CollectionMode = CollectionMode::Fungible(3);185 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());186 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;187 let data = default_fungible_data();188189 }: create_item(RawOrigin::Signed(caller.clone()), 2, caller.clone(), data)190191 // refungible item192 create_item_refungible {193 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();194 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();195 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();196 let mode: CollectionMode = CollectionMode::ReFungible(3);197 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());198 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;199 let data = default_re_fungible_data();200201 }: create_item(RawOrigin::Signed(caller.clone()), 2, caller.clone(), data)202203 burn_item {204 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();205 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();206 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();207 let mode: CollectionMode = CollectionMode::NFT;208 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());209 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;210 let data = default_nft_data();211 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;212213 }: burn_item(RawOrigin::Signed(caller.clone()), 2, 1)214215 transfer_nft {216 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();217 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();218 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();219 let mode: CollectionMode = CollectionMode::NFT;220 let recipient: T::AccountId = account("recipient", 0, SEED);221 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());222 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;223 let data = default_nft_data();224 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;225226 }: transfer(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1, 1)227228 transfer_fungible {229 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();230 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();231 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();232 let mode: CollectionMode = CollectionMode::Fungible(3);233 let recipient: T::AccountId = account("recipient", 0, SEED);234 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());235 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;236 let data = default_fungible_data();237 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;238239 }: transfer(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1, 1)240241 transfer_refungible {242 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();243 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();244 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();245 let mode: CollectionMode = CollectionMode::ReFungible(3);246 let recipient: T::AccountId = account("recipient", 0, SEED);247 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());248 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;249 let data = default_re_fungible_data();250 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;251252 }: transfer(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1, 1)253254 approve {255 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();256 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();257 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();258 let mode: CollectionMode = CollectionMode::ReFungible(3);259 let recipient: T::AccountId = account("recipient", 0, SEED);260 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());261 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;262 let data = default_re_fungible_data();263 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;264265 }: approve(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1)266267 // Nft268 transfer_from_nft {269 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();270 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();271 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();272 let mode: CollectionMode = CollectionMode::NFT;273 let recipient: T::AccountId = account("recipient", 0, SEED);274 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());275 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;276 let data = default_nft_data();277 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;278 Nft::<T>::approve(RawOrigin::Signed(caller.clone()).into(), recipient.clone(), 2, 1)?;279280 }: transfer_from(RawOrigin::Signed(caller.clone()), caller.clone(), recipient.clone(), 2, 1, 1)281282 // Fungible283 transfer_from_fungible {284 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();285 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();286 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();287 let mode: CollectionMode = CollectionMode::Fungible(3);288 let recipient: T::AccountId = account("recipient", 0, SEED);289 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());290 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;291 let data = default_fungible_data();292 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;293 Nft::<T>::approve(RawOrigin::Signed(caller.clone()).into(), recipient.clone(), 2, 1)?;294295 }: transfer_from(RawOrigin::Signed(caller.clone()), caller.clone(), recipient.clone(), 2, 1, 1)296297 // ReFungible298 transfer_from_refungible {299 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();300 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();301 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();302 let mode: CollectionMode = CollectionMode::ReFungible(3);303 let recipient: T::AccountId = account("recipient", 0, SEED);304 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());305 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;306 let data = default_re_fungible_data();307 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;308 Nft::<T>::approve(RawOrigin::Signed(caller.clone()).into(), recipient.clone(), 2, 1)?;309310 }: transfer_from(RawOrigin::Signed(caller.clone()), caller.clone(), recipient.clone(), 2, 1, 1)311312 enable_contract_sponsoring {313 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());314315 }: enable_contract_sponsoring(RawOrigin::Signed(caller.clone()), caller.clone(), true)316317 set_offchain_schema {318 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();319 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();320 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();321 let mode: CollectionMode = CollectionMode::ReFungible(3);322 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());323 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;324325 }: set_offchain_schema(RawOrigin::Signed(caller.clone()), 2, [1,2,3].to_vec())326327 set_const_on_chain_schema {328 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();329 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();330 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();331 let mode: CollectionMode = CollectionMode::ReFungible(3);332 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());333 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;334 }: set_const_on_chain_schema(RawOrigin::Signed(caller.clone()), 2, [1,2,3].to_vec())335336 set_variable_on_chain_schema {337 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();338 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();339 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();340 let mode: CollectionMode = CollectionMode::ReFungible(3);341 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());342 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;343 }: set_variable_on_chain_schema(RawOrigin::Signed(caller.clone()), 2, [1,2,3].to_vec())344345 set_variable_meta_data {346 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();347 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();348 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();349 let mode: CollectionMode = CollectionMode::NFT;350 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());351 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;352 let data = default_nft_data();353 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;354355 }: set_variable_meta_data(RawOrigin::Signed(caller.clone()), 2, 1, [1, 2, 3].to_vec())356357 set_schema_version {358 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();359 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();360 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();361 let mode: CollectionMode = CollectionMode::NFT;362 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());363 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;364 }: set_schema_version(RawOrigin::Signed(caller.clone()), 2, SchemaVersion::Unique)365366 set_chain_limits {367 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());368 let limits = ChainLimits {369 collection_numbers_limit: 0,370 account_token_ownership_limit: 0,371 collections_admins_limit: 0,372 custom_data_limit: 0,373 nft_sponsor_transfer_timeout: 0,374 fungible_sponsor_transfer_timeout: 0,375 refungible_sponsor_transfer_timeout: 0376 };377 }: set_chain_limits(RawOrigin::Signed(caller.clone()), limits)378379 set_contract_sponsoring_rate_limit {380 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();381 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();382 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();383 let mode: CollectionMode = CollectionMode::NFT;384 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());385 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;386 let block_number: T::BlockNumber = 0.into();387 }: set_contract_sponsoring_rate_limit(RawOrigin::Signed(caller.clone()), caller.clone(), block_number)388389 set_collection_limits{390 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();391 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();392 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();393 let mode: CollectionMode = CollectionMode::NFT;394 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());395 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;396397 let cl = CollectionLimits {398 account_token_ownership_limit: 0,399 sponsored_data_size: 0,400 token_limit: 0,401 sponsor_transfer_timeout: 0402 };403404 }: set_collection_limits(RawOrigin::Signed(caller.clone()), 2, cl)405406 add_to_contract_white_list{407 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());408 }: add_to_contract_white_list(RawOrigin::Signed(caller.clone()), caller.clone(), caller.clone())409410 remove_from_contract_white_list{411 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());412 Nft::<T>::add_to_contract_white_list(RawOrigin::Signed(caller.clone()).into(), caller.clone(), caller.clone())?;413 }: remove_from_contract_white_list(RawOrigin::Signed(caller.clone()), caller.clone(), caller.clone())414415 toggle_contract_white_list{416 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());417 }: toggle_contract_white_list(RawOrigin::Signed(caller.clone()), caller.clone(), true)418*/419}1#![cfg(feature = "runtime-benchmarks")]23use super::*;4use crate::Pallet;5use frame_system::RawOrigin;6use frame_benchmarking::{benchmarks, account};7use nft_data_structs::*;8use core::convert::TryInto;9use sp_runtime::DispatchError;1011const SEED: u32 = 1;1213fn create_data(size: usize) -> Vec<u8> {14 (0..size).map(|v| (v & 0xff) as u8).collect()15}16fn create_u16_data(size: usize) -> Vec<u16> {17 (0..size).map(|v| (v & 0xffff) as u16).collect()18}1920fn default_nft_data() -> CreateItemData {21 CreateItemData::NFT(CreateNftData {22 const_data: create_data(CUSTOM_DATA_LIMIT as usize).try_into().unwrap(),23 variable_data: create_data(CUSTOM_DATA_LIMIT as usize).try_into().unwrap(),24 })25}2627fn default_fungible_data() -> CreateItemData {28 CreateItemData::Fungible(CreateFungibleData { value: 1000 })29}3031fn default_re_fungible_data() -> CreateItemData {32 CreateItemData::ReFungible(CreateReFungibleData {33 const_data: create_data(CUSTOM_DATA_LIMIT as usize).try_into().unwrap(),34 variable_data: create_data(CUSTOM_DATA_LIMIT as usize).try_into().unwrap(),35 pieces: 1000,36 })37}3839fn create_collection_helper<T: Config>(40 owner: T::AccountId,41 mode: CollectionMode,42) -> Result<CollectionId, DispatchError> {43 T::Currency::deposit_creating(&owner, T::CollectionCreationPrice::get());44 let col_name = create_u16_data(MAX_COLLECTION_NAME_LENGTH)45 .try_into()46 .unwrap();47 let col_desc = create_u16_data(MAX_COLLECTION_DESCRIPTION_LENGTH)48 .try_into()49 .unwrap();50 let token_prefix = create_data(MAX_TOKEN_PREFIX_LENGTH).try_into().unwrap();51 <Pallet<T>>::create_collection(52 RawOrigin::Signed(owner).into(),53 col_name,54 col_desc,55 token_prefix,56 mode,57 )?;58 Ok(CreatedCollectionCount::get())59}60fn create_nft_collection<T: Config>(owner: T::AccountId) -> Result<CollectionId, DispatchError> {61 create_collection_helper::<T>(owner, CollectionMode::NFT)62}63fn create_fungible_collection<T: Config>(64 owner: T::AccountId,65) -> Result<CollectionId, DispatchError> {66 create_collection_helper::<T>(owner, CollectionMode::Fungible(0))67}68fn create_refungible_collection<T: Config>(69 owner: T::AccountId,70) -> Result<CollectionId, DispatchError> {71 create_collection_helper::<T>(owner, CollectionMode::ReFungible)72}7374benchmarks! {7576 create_collection {77 let col_name: Vec<u16> = create_u16_data(MAX_COLLECTION_NAME_LENGTH);78 let col_desc: Vec<u16> = create_u16_data(MAX_COLLECTION_DESCRIPTION_LENGTH);79 let token_prefix: Vec<u8> = create_data(MAX_TOKEN_PREFIX_LENGTH);80 let mode: CollectionMode = CollectionMode::NFT;81 let caller: T::AccountId = account("caller", 0, SEED);82 T::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());83 }: _(RawOrigin::Signed(caller.clone()), col_name.clone(), col_desc.clone(), token_prefix.clone(), mode)84 verify {85 assert_eq!(<Pallet<T>>::collection_id(2).unwrap().owner, caller);86 }8788 destroy_collection {89 let caller: T::AccountId = account("caller", 0, SEED);90 let collection = create_nft_collection::<T>(caller.clone())?;91 }: _(RawOrigin::Signed(caller.clone()), collection)9293 add_to_white_list {94 let caller: T::AccountId = account("caller", 0, SEED);95 let whitelist_account: T::AccountId = account("admin", 0, SEED);96 let collection = create_nft_collection::<T>(caller.clone())?;97 }: _(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(whitelist_account))9899 remove_from_white_list {100 let caller: T::AccountId = account("caller", 0, SEED);101 let whitelist_account: T::AccountId = account("admin", 0, SEED);102 let collection = create_nft_collection::<T>(caller.clone())?;103 <Pallet<T>>::add_to_white_list(RawOrigin::Signed(caller.clone()).into(), collection, T::CrossAccountId::from_sub(whitelist_account.clone()))?;104 }: _(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(whitelist_account))105106 set_public_access_mode {107 let caller: T::AccountId = account("caller", 0, SEED);108 let collection = create_nft_collection::<T>(caller.clone())?;109 }: _(RawOrigin::Signed(caller.clone()), collection, AccessMode::WhiteList)110111 set_mint_permission {112 let caller: T::AccountId = account("caller", 0, SEED);113 let collection = create_nft_collection::<T>(caller.clone())?;114 }: _(RawOrigin::Signed(caller.clone()), collection, true)115116 change_collection_owner {117 let caller: T::AccountId = account("caller", 0, SEED);118 let collection = create_nft_collection::<T>(caller.clone())?;119 let new_owner: T::AccountId = account("admin", 0, SEED);120 }: _(RawOrigin::Signed(caller.clone()), collection, new_owner)121122 add_collection_admin {123 let caller: T::AccountId = account("caller", 0, SEED);124 let collection = create_nft_collection::<T>(caller.clone())?;125 let new_admin: T::AccountId = account("admin", 0, SEED);126 }: _(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(new_admin))127128 remove_collection_admin {129 let caller: T::AccountId = account("caller", 0, SEED);130 let collection = create_nft_collection::<T>(caller.clone())?;131 let new_admin: T::AccountId = account("admin", 0, SEED);132 <Pallet<T>>::add_collection_admin(RawOrigin::Signed(caller.clone()).into(), 2, T::CrossAccountId::from_sub(new_admin.clone()))?;133 }: _(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(new_admin))134135 set_collection_sponsor {136 let caller: T::AccountId = account("caller", 0, SEED);137 let collection = create_nft_collection::<T>(caller.clone())?;138 }: _(RawOrigin::Signed(caller.clone()), collection, caller.clone())139140 confirm_sponsorship {141 let caller: T::AccountId = account("caller", 0, SEED);142 let collection = create_nft_collection::<T>(caller.clone())?;143 <Pallet<T>>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone())?;144 }: _(RawOrigin::Signed(caller.clone()), collection)145146 remove_collection_sponsor {147 let caller: T::AccountId = account("caller", 0, SEED);148 let collection = create_nft_collection::<T>(caller.clone())?;149 <Pallet<T>>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone())?;150 <Pallet<T>>::confirm_sponsorship(RawOrigin::Signed(caller.clone()).into(), 2)?;151 }: _(RawOrigin::Signed(caller.clone()), collection)152153 // nft item154 create_item_nft {155 let b in 0..(CUSTOM_DATA_LIMIT * 2);156157 let caller: T::AccountId = account("caller", 0, SEED);158 let collection = create_nft_collection::<T>(caller.clone())?;159 let data = CreateItemData::NFT(CreateNftData {160 const_data: create_data(b.min(CUSTOM_DATA_LIMIT) as usize).try_into().unwrap(),161 variable_data: create_data(b.saturating_sub(CUSTOM_DATA_LIMIT) as usize).try_into().unwrap(),162 });163 }: create_item(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(caller.clone()), data)164165 // fungible item166 create_item_fungible {167 let caller: T::AccountId = account("caller", 0, SEED);168 let collection = create_fungible_collection::<T>(caller.clone())?;169 let data = CreateItemData::Fungible(CreateFungibleData {170 value: 1000,171 });172 }: create_item(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(caller.clone()), data)173174 // refungible item175 create_item_refungible {176 let b in 0..(CUSTOM_DATA_LIMIT * 2);177178 let caller: T::AccountId = account("caller", 0, SEED);179 let collection = create_refungible_collection::<T>(caller.clone())?;180 let data = CreateItemData::ReFungible(CreateReFungibleData {181 const_data: create_data(b.min(CUSTOM_DATA_LIMIT) as usize).try_into().unwrap(),182 variable_data: create_data(b.saturating_sub(CUSTOM_DATA_LIMIT) as usize).try_into().unwrap(),183 pieces: 1000,184 });185 }: create_item(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(caller.clone()), data)186187 burn_item_nft {188 let caller: T::AccountId = account("caller", 0, SEED);189 let collection = create_nft_collection::<T>(caller.clone())?;190 let data = default_nft_data();191 <Pallet<T>>::create_item(RawOrigin::Signed(caller.clone()).into(), collection, T::CrossAccountId::from_sub(caller.clone()), data)?;192 }: burn_item(RawOrigin::Signed(caller.clone()), collection, 1, 1)193194 transfer_nft {195 let caller: T::AccountId = account("caller", 0, SEED);196 let collection = create_nft_collection::<T>(caller.clone())?;197 let recipient: T::AccountId = account("recipient", 0, SEED);198 let data = default_nft_data();199 <Pallet<T>>::create_item(RawOrigin::Signed(caller.clone()).into(), collection, T::CrossAccountId::from_sub(caller.clone()), data)?;200 }: transfer(RawOrigin::Signed(caller.clone()), T::CrossAccountId::from_sub(recipient.clone()), collection, 1, 1)201202 transfer_fungible {203 let caller: T::AccountId = account("caller", 0, SEED);204 let collection = create_fungible_collection::<T>(caller.clone())?;205 let recipient: T::AccountId = account("recipient", 0, SEED);206 let data = default_fungible_data();207 <Pallet<T>>::create_item(RawOrigin::Signed(caller.clone()).into(), collection, T::CrossAccountId::from_sub(caller.clone()), data)?;208 }: transfer(RawOrigin::Signed(caller.clone()), T::CrossAccountId::from_sub(recipient.clone()), collection, 1, 1)209210 transfer_refungible {211 let caller: T::AccountId = account("caller", 0, SEED);212 let collection = create_refungible_collection::<T>(caller.clone())?;213 let recipient: T::AccountId = account("recipient", 0, SEED);214 let data = default_re_fungible_data();215 <Pallet<T>>::create_item(RawOrigin::Signed(caller.clone()).into(), collection, T::CrossAccountId::from_sub(caller.clone()), data)?;216 }: transfer(RawOrigin::Signed(caller.clone()), T::CrossAccountId::from_sub(recipient.clone()), collection, 1, 1)217218 approve_nft {219 let caller: T::AccountId = account("caller", 0, SEED);220 let collection = create_nft_collection::<T>(caller.clone())?;221 let recipient: T::AccountId = account("recipient", 0, SEED);222 let data = default_nft_data();223 <Pallet<T>>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, T::CrossAccountId::from_sub(caller.clone()), data)?;224 }: approve(RawOrigin::Signed(caller.clone()), T::CrossAccountId::from_sub(recipient.clone()), collection, 1, 1)225226 // Nft227 transfer_from_nft {228 let caller: T::AccountId = account("caller", 0, SEED);229 let collection = create_nft_collection::<T>(caller.clone())?;230 let recipient: T::AccountId = account("recipient", 0, SEED);231 let data = default_nft_data();232 <Pallet<T>>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, T::CrossAccountId::from_sub(caller.clone()), data)?;233 <Pallet<T>>::approve(RawOrigin::Signed(caller.clone()).into(), T::CrossAccountId::from_sub(recipient.clone()), 2, 1, 1)?;234 }: transfer_from(RawOrigin::Signed(caller.clone()), T::CrossAccountId::from_sub(caller.clone()), T::CrossAccountId::from_sub(recipient.clone()), 2, 1, 1)235236 // Fungible237 transfer_from_fungible {238 let caller: T::AccountId = account("caller", 0, SEED);239 let collection = create_fungible_collection::<T>(caller.clone())?;240 let recipient: T::AccountId = account("recipient", 0, SEED);241 let data = default_fungible_data();242 <Pallet<T>>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, T::CrossAccountId::from_sub(caller.clone()), data)?;243 <Pallet<T>>::approve(RawOrigin::Signed(caller.clone()).into(), T::CrossAccountId::from_sub(recipient.clone()), 2, 1, 1)?;244 }: transfer_from(RawOrigin::Signed(caller.clone()), T::CrossAccountId::from_sub(caller.clone()), T::CrossAccountId::from_sub(recipient.clone()), 2, 1, 1)245246 // ReFungible247 transfer_from_refungible {248 let caller: T::AccountId = account("caller", 0, SEED);249 let collection = create_refungible_collection::<T>(caller.clone())?;250 let recipient: T::AccountId = account("recipient", 0, SEED);251 let data = default_re_fungible_data();252 <Pallet<T>>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, T::CrossAccountId::from_sub(caller.clone()), data)?;253 <Pallet<T>>::approve(RawOrigin::Signed(caller.clone()).into(), T::CrossAccountId::from_sub(recipient.clone()), 2, 1, 1)?;254 }: transfer_from(RawOrigin::Signed(caller.clone()), T::CrossAccountId::from_sub(caller.clone()), T::CrossAccountId::from_sub(recipient.clone()), 2, 1, 1)255256 set_offchain_schema {257 let b in 0..OFFCHAIN_SCHEMA_LIMIT;258259 let caller: T::AccountId = account("caller", 0, SEED);260 let collection = create_nft_collection::<T>(caller.clone())?;261 let data = create_data(b as usize);262 }: set_offchain_schema(RawOrigin::Signed(caller.clone()), collection, data)263264 set_const_on_chain_schema {265 let b in 0..CONST_ON_CHAIN_SCHEMA_LIMIT;266267 let caller: T::AccountId = account("caller", 0, SEED);268 let collection = create_nft_collection::<T>(caller.clone())?;269 let data = create_data(b as usize);270 }: set_const_on_chain_schema(RawOrigin::Signed(caller.clone()), collection, data)271272 set_variable_on_chain_schema {273 let b in 0..VARIABLE_ON_CHAIN_SCHEMA_LIMIT;274275 let caller: T::AccountId = account("caller", 0, SEED);276 let collection = create_nft_collection::<T>(caller.clone())?;277 let data = create_data(b as usize);278 }: set_variable_on_chain_schema(RawOrigin::Signed(caller.clone()), 2, data)279280 set_variable_meta_data_nft {281 let b in 0..CUSTOM_DATA_LIMIT;282283 let caller: T::AccountId = account("caller", 0, SEED);284 let collection = create_nft_collection::<T>(caller.clone())?;285 let data = default_nft_data();286 <Pallet<T>>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, T::CrossAccountId::from_sub(caller.clone()), data)?;287 let data = create_data(b as usize);288 }: set_variable_meta_data(RawOrigin::Signed(caller.clone()), collection, 1, data)289290 set_schema_version {291 let caller: T::AccountId = account("caller", 0, SEED);292 let collection = create_nft_collection::<T>(caller.clone())?;293 }: set_schema_version(RawOrigin::Signed(caller.clone()), 2, SchemaVersion::Unique)294295 set_collection_limits{296 let caller: T::AccountId = account("caller", 0, SEED);297 let collection = create_nft_collection::<T>(caller.clone())?;298299 let cl = CollectionLimits {300 account_token_ownership_limit: 0,301 sponsored_data_size: 0,302 token_limit: 1,303 sponsor_transfer_timeout: 0,304 owner_can_destroy: true,305 owner_can_transfer: true,306 sponsored_data_rate_limit: None,307 };308 }: set_collection_limits(RawOrigin::Signed(caller.clone()), 2, cl)309}pallets/nft/src/default_weights.rsdiffbeforeafterboth--- a/pallets/nft/src/default_weights.rs
+++ /dev/null
@@ -1,150 +0,0 @@
-use frame_support::weights::{Weight, constants::RocksDbWeight as DbWeight};
-
-impl crate::WeightInfo for () {
- fn create_collection() -> Weight {
- 70_000_000_u64
- .saturating_add(DbWeight::get().reads(7_u64))
- .saturating_add(DbWeight::get().writes(5_u64))
- }
- fn destroy_collection() -> Weight {
- 90_000_000_u64
- .saturating_add(DbWeight::get().reads(2_u64))
- .saturating_add(DbWeight::get().writes(5_u64))
- }
- fn add_to_white_list() -> Weight {
- 30_000_000_u64
- .saturating_add(DbWeight::get().reads(3_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn remove_from_white_list() -> Weight {
- 35_000_000_u64
- .saturating_add(DbWeight::get().reads(3_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn set_public_access_mode() -> Weight {
- 27_000_000_u64
- .saturating_add(DbWeight::get().reads(1_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn set_mint_permission() -> Weight {
- 27_000_000_u64
- .saturating_add(DbWeight::get().reads(1_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn change_collection_owner() -> Weight {
- 27_000_000_u64
- .saturating_add(DbWeight::get().reads(1_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn add_collection_admin() -> Weight {
- 32_000_000_u64
- .saturating_add(DbWeight::get().reads(3_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn remove_collection_admin() -> Weight {
- 50_000_000_u64
- .saturating_add(DbWeight::get().reads(2_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn set_collection_sponsor() -> Weight {
- 32_000_000_u64
- .saturating_add(DbWeight::get().reads(2_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn confirm_sponsorship() -> Weight {
- 22_000_000_u64
- .saturating_add(DbWeight::get().reads(1_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn remove_collection_sponsor() -> Weight {
- 24_000_000_u64
- .saturating_add(DbWeight::get().reads(1_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn create_item(s: usize) -> Weight {
- 130_000_000_u64
- .saturating_add(2135_u64.saturating_mul(s as Weight).saturating_mul(500_u64)) // 500 is temporary multiplier, fee for storage
- .saturating_add(DbWeight::get().reads(10_u64))
- .saturating_add(DbWeight::get().writes(8_u64))
- }
- fn burn_item() -> Weight {
- 170_000_000_u64
- .saturating_add(DbWeight::get().reads(9_u64))
- .saturating_add(DbWeight::get().writes(7_u64))
- }
- fn transfer() -> Weight {
- 125_000_000_u64
- .saturating_add(DbWeight::get().reads(7_u64))
- .saturating_add(DbWeight::get().writes(7_u64))
- }
- fn approve() -> Weight {
- 45_000_000_u64
- .saturating_add(DbWeight::get().reads(3_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn transfer_from() -> Weight {
- 150_000_000_u64
- .saturating_add(DbWeight::get().reads(9_u64))
- .saturating_add(DbWeight::get().writes(8_u64))
- }
- fn set_offchain_schema() -> Weight {
- 33_000_000_u64
- .saturating_add(DbWeight::get().reads(2_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn set_const_on_chain_schema() -> Weight {
- 11_100_000_u64
- .saturating_add(DbWeight::get().reads(2_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn set_variable_on_chain_schema() -> Weight {
- 11_100_000_u64
- .saturating_add(DbWeight::get().reads(2_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn set_variable_meta_data() -> Weight {
- 17_500_000_u64
- .saturating_add(DbWeight::get().reads(2_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn enable_contract_sponsoring() -> Weight {
- 13_000_000_u64
- .saturating_add(DbWeight::get().reads(1_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn set_schema_version() -> Weight {
- 8_500_000_u64
- .saturating_add(DbWeight::get().reads(2_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn set_contract_sponsoring_rate_limit() -> Weight {
- 3_500_000_u64
- .saturating_add(DbWeight::get().reads(0_u64))
- .saturating_add(DbWeight::get().writes(2_u64))
- }
- fn set_variable_meta_data_sponsoring_rate_limit() -> Weight {
- 3_500_000_u64
- .saturating_add(DbWeight::get().reads(2_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn toggle_contract_white_list() -> Weight {
- 3_000_000_u64
- .saturating_add(DbWeight::get().reads(0_u64))
- .saturating_add(DbWeight::get().writes(2_u64))
- }
- fn add_to_contract_white_list() -> Weight {
- 3_000_000_u64
- .saturating_add(DbWeight::get().reads(0_u64))
- .saturating_add(DbWeight::get().writes(2_u64))
- }
- fn remove_from_contract_white_list() -> Weight {
- 3_200_000_u64
- .saturating_add(DbWeight::get().reads(0_u64))
- .saturating_add(DbWeight::get().writes(2_u64))
- }
- fn set_collection_limits() -> Weight {
- 8_900_000_u64
- .saturating_add(DbWeight::get().reads(2_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
-}
pallets/nft/src/lib.rsdiffbeforeafterboth--- a/pallets/nft/src/lib.rs
+++ b/pallets/nft/src/lib.rs
@@ -40,8 +40,9 @@
MAX_DECIMAL_POINTS, MAX_SPONSOR_TIMEOUT, MAX_TOKEN_OWNERSHIP, MAX_REFUNGIBLE_PIECES,
CUSTOM_DATA_LIMIT, COLLECTION_NUMBER_LIMIT, ACCOUNT_TOKEN_OWNERSHIP_LIMIT,
VARIABLE_ON_CHAIN_SCHEMA_LIMIT, CONST_ON_CHAIN_SCHEMA_LIMIT, COLLECTION_ADMINS_LIMIT,
- OFFCHAIN_SCHEMA_LIMIT, AccessMode, Collection, CreateItemData, CollectionLimits, CollectionId,
- CollectionMode, TokenId, SchemaVersion, SponsorshipState, Ownership, NftItemType,
+ OFFCHAIN_SCHEMA_LIMIT, MAX_TOKEN_PREFIX_LENGTH, MAX_COLLECTION_NAME_LENGTH,
+ MAX_COLLECTION_DESCRIPTION_LENGTH, AccessMode, Collection, CreateItemData, CollectionLimits,
+ CollectionId, CollectionMode, TokenId, SchemaVersion, SponsorshipState, Ownership, NftItemType,
FungibleItemType, ReFungibleItemType,
};
@@ -51,7 +52,6 @@
#[cfg(test)]
mod tests;
-mod default_weights;
mod eth;
mod sponsorship;
pub use sponsorship::NftSponsorshipHandler;
@@ -63,38 +63,8 @@
#[cfg(feature = "runtime-benchmarks")]
mod benchmarking;
-
-pub trait WeightInfo {
- fn create_collection() -> Weight;
- fn destroy_collection() -> Weight;
- fn add_to_white_list() -> Weight;
- fn remove_from_white_list() -> Weight;
- fn set_public_access_mode() -> Weight;
- fn set_mint_permission() -> Weight;
- fn change_collection_owner() -> Weight;
- fn add_collection_admin() -> Weight;
- fn remove_collection_admin() -> Weight;
- fn set_collection_sponsor() -> Weight;
- fn confirm_sponsorship() -> Weight;
- fn remove_collection_sponsor() -> Weight;
- fn create_item(s: usize) -> Weight;
- fn burn_item() -> Weight;
- fn transfer() -> Weight;
- fn approve() -> Weight;
- fn transfer_from() -> Weight;
- fn set_offchain_schema() -> Weight;
- fn set_const_on_chain_schema() -> Weight;
- fn set_variable_on_chain_schema() -> Weight;
- fn set_variable_meta_data() -> Weight;
- fn enable_contract_sponsoring() -> Weight;
- fn set_schema_version() -> Weight;
- fn set_contract_sponsoring_rate_limit() -> Weight;
- fn set_variable_meta_data_sponsoring_rate_limit() -> Weight;
- fn toggle_contract_white_list() -> Weight;
- fn add_to_contract_white_list() -> Weight;
- fn remove_from_contract_white_list() -> Weight;
- fn set_collection_limits() -> Weight;
-}
+pub mod weights;
+use weights::WeightInfo;
decl_error! {
/// Error for non-fungible-token module.
@@ -246,6 +216,39 @@
type TreasuryAccountId: Get<Self::AccountId>;
}
+type SelfWeightOf<T> = <T as Config>::WeightInfo;
+
+trait WeightInfoHelpers: WeightInfo {
+ fn transfer() -> Weight {
+ Self::transfer_nft()
+ .max(Self::transfer_fungible())
+ .max(Self::transfer_refungible())
+ }
+ fn transfer_from() -> Weight {
+ Self::transfer_from_nft()
+ .max(Self::transfer_from_fungible())
+ .max(Self::transfer_from_refungible())
+ }
+ fn approve() -> Weight {
+ // TODO: refungible, fungible
+ Self::approve_nft()
+ }
+ fn set_variable_meta_data(data: u32) -> Weight {
+ // TODO: refungible
+ Self::set_variable_meta_data_nft(data)
+ }
+ fn create_item(data: u32) -> Weight {
+ Self::create_item_nft(data)
+ .max(Self::create_item_fungible())
+ .max(Self::create_item_refungible(data))
+ }
+ fn burn_item() -> Weight {
+ // TODO: refungible, fungible
+ Self::burn_item_nft()
+ }
+}
+impl<T: WeightInfo> WeightInfoHelpers for T {}
+
// # Used definitions
//
// ## User control levels
@@ -455,7 +458,7 @@
///
/// * mode: [CollectionMode] collection type and type dependent data.
// returns collection ID
- #[weight = <T as Config>::WeightInfo::create_collection()]
+ #[weight = <SelfWeightOf<T>>::create_collection()]
#[transactional]
pub fn create_collection(origin,
collection_name: Vec<u16>,
@@ -492,9 +495,9 @@
// check params
ensure!(decimal_points <= MAX_DECIMAL_POINTS, Error::<T>::CollectionDecimalPointLimitExceeded);
- ensure!(collection_name.len() <= 64, Error::<T>::CollectionNameLimitExceeded);
- ensure!(collection_description.len() <= 256, Error::<T>::CollectionDescriptionLimitExceeded);
- ensure!(token_prefix.len() <= 16, Error::<T>::CollectionTokenPrefixLimitExceeded);
+ ensure!(collection_name.len() <= MAX_COLLECTION_NAME_LENGTH, Error::<T>::CollectionNameLimitExceeded);
+ ensure!(collection_description.len() <= MAX_COLLECTION_DESCRIPTION_LENGTH, Error::<T>::CollectionDescriptionLimitExceeded);
+ ensure!(token_prefix.len() <= MAX_TOKEN_PREFIX_LENGTH, Error::<T>::CollectionTokenPrefixLimitExceeded);
// Generate next collection ID
let next_id = created_count
@@ -545,7 +548,7 @@
/// # Arguments
///
/// * collection_id: collection to destroy.
- #[weight = <T as Config>::WeightInfo::destroy_collection()]
+ #[weight = <SelfWeightOf<T>>::destroy_collection()]
#[transactional]
pub fn destroy_collection(origin, collection_id: CollectionId) -> DispatchResult {
@@ -593,7 +596,7 @@
/// * collection_id.
///
/// * address.
- #[weight = <T as Config>::WeightInfo::add_to_white_list()]
+ #[weight = <SelfWeightOf<T>>::add_to_white_list()]
#[transactional]
pub fn add_to_white_list(origin, collection_id: CollectionId, address: T::CrossAccountId) -> DispatchResult{
@@ -622,7 +625,7 @@
/// * collection_id.
///
/// * address.
- #[weight = <T as Config>::WeightInfo::remove_from_white_list()]
+ #[weight = <SelfWeightOf<T>>::remove_from_white_list()]
#[transactional]
pub fn remove_from_white_list(origin, collection_id: CollectionId, address: T::CrossAccountId) -> DispatchResult{
@@ -650,7 +653,7 @@
/// * collection_id.
///
/// * mode: [AccessMode]
- #[weight = <T as Config>::WeightInfo::set_public_access_mode()]
+ #[weight = <SelfWeightOf<T>>::set_public_access_mode()]
#[transactional]
pub fn set_public_access_mode(origin, collection_id: CollectionId, mode: AccessMode) -> DispatchResult
{
@@ -675,7 +678,7 @@
/// * collection_id.
///
/// * mint_permission: Boolean parameter. If True, allows minting to Anyone with conditions above.
- #[weight = <T as Config>::WeightInfo::set_mint_permission()]
+ #[weight = <SelfWeightOf<T>>::set_mint_permission()]
#[transactional]
pub fn set_mint_permission(origin, collection_id: CollectionId, mint_permission: bool) -> DispatchResult
{
@@ -698,7 +701,7 @@
/// * collection_id.
///
/// * new_owner.
- #[weight = <T as Config>::WeightInfo::change_collection_owner()]
+ #[weight = <SelfWeightOf<T>>::change_collection_owner()]
#[transactional]
pub fn change_collection_owner(origin, collection_id: CollectionId, new_owner: T::AccountId) -> DispatchResult {
@@ -722,7 +725,7 @@
/// * collection_id: ID of the Collection to add admin for.
///
/// * new_admin_id: Address of new admin to add.
- #[weight = <T as Config>::WeightInfo::add_collection_admin()]
+ #[weight = <SelfWeightOf<T>>::add_collection_admin()]
#[transactional]
pub fn add_collection_admin(origin, collection_id: CollectionId, new_admin_id: T::CrossAccountId) -> DispatchResult {
let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
@@ -753,7 +756,7 @@
/// * collection_id: ID of the Collection to remove admin for.
///
/// * account_id: Address of admin to remove.
- #[weight = <T as Config>::WeightInfo::remove_collection_admin()]
+ #[weight = <SelfWeightOf<T>>::remove_collection_admin()]
#[transactional]
pub fn remove_collection_admin(origin, collection_id: CollectionId, account_id: T::CrossAccountId) -> DispatchResult {
let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
@@ -777,7 +780,7 @@
/// * collection_id.
///
/// * new_sponsor.
- #[weight = <T as Config>::WeightInfo::set_collection_sponsor()]
+ #[weight = <SelfWeightOf<T>>::set_collection_sponsor()]
#[transactional]
pub fn set_collection_sponsor(origin, collection_id: CollectionId, new_sponsor: T::AccountId) -> DispatchResult {
let sender = ensure_signed(origin)?;
@@ -795,7 +798,7 @@
/// # Arguments
///
/// * collection_id.
- #[weight = <T as Config>::WeightInfo::confirm_sponsorship()]
+ #[weight = <SelfWeightOf<T>>::confirm_sponsorship()]
#[transactional]
pub fn confirm_sponsorship(origin, collection_id: CollectionId) -> DispatchResult {
let sender = ensure_signed(origin)?;
@@ -819,7 +822,7 @@
/// # Arguments
///
/// * collection_id.
- #[weight = <T as Config>::WeightInfo::remove_collection_sponsor()]
+ #[weight = <SelfWeightOf<T>>::remove_collection_sponsor()]
#[transactional]
pub fn remove_collection_sponsor(origin, collection_id: CollectionId) -> DispatchResult {
let sender = ensure_signed(origin)?;
@@ -855,7 +858,7 @@
// .saturating_add(RocksDbWeight::get().reads(10 as Weight))
// .saturating_add(RocksDbWeight::get().writes(8 as Weight))]
- #[weight = <T as Config>::WeightInfo::create_item(data.data_size())]
+ #[weight = <SelfWeightOf<T>>::create_item(data.data_size() as u32)]
#[transactional]
pub fn create_item(origin, collection_id: CollectionId, owner: T::CrossAccountId, data: CreateItemData) -> DispatchResult {
let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
@@ -884,8 +887,8 @@
/// * itemsData: Array items properties. Each property is an array of bytes itself, see [create_item].
///
/// * owner: Address, initial owner of the NFT.
- #[weight = <T as Config>::WeightInfo::create_item(items_data.iter()
- .map(|data| { data.data_size() })
+ #[weight = <SelfWeightOf<T>>::create_item(items_data.iter()
+ .map(|data| { data.data_size() as u32 })
.sum())]
#[transactional]
pub fn create_multiple_items(origin, collection_id: CollectionId, owner: T::CrossAccountId, items_data: Vec<CreateItemData>) -> DispatchResult {
@@ -912,7 +915,7 @@
/// * collection_id: ID of the collection.
///
/// * value: New flag value.
- #[weight = <T as Config>::WeightInfo::burn_item()]
+ #[weight = <SelfWeightOf<T>>::burn_item()]
#[transactional]
pub fn set_transfers_enabled_flag(origin, collection_id: CollectionId, value: bool) -> DispatchResult {
@@ -938,7 +941,7 @@
/// * collection_id: ID of the collection.
///
/// * item_id: ID of NFT to burn.
- #[weight = <T as Config>::WeightInfo::burn_item()]
+ #[weight = <SelfWeightOf<T>>::burn_item()]
#[transactional]
pub fn burn_item(origin, collection_id: CollectionId, item_id: TokenId, value: u128) -> DispatchResult {
@@ -973,7 +976,7 @@
/// * Non-Fungible Mode: Ignored
/// * Fungible Mode: Must specify transferred amount
/// * Re-Fungible Mode: Must specify transferred portion (between 0 and 1)
- #[weight = <T as Config>::WeightInfo::transfer()]
+ #[weight = <SelfWeightOf<T>>::transfer()]
#[transactional]
pub fn transfer(origin, recipient: T::CrossAccountId, collection_id: CollectionId, item_id: TokenId, value: u128) -> DispatchResult {
let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
@@ -999,7 +1002,7 @@
/// * collection_id.
///
/// * item_id: ID of the item.
- #[weight = <T as Config>::WeightInfo::approve()]
+ #[weight = <SelfWeightOf<T>>::approve()]
#[transactional]
pub fn approve(origin, spender: T::CrossAccountId, collection_id: CollectionId, item_id: TokenId, amount: u128) -> DispatchResult {
let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
@@ -1029,7 +1032,7 @@
/// * item_id: ID of the item.
///
/// * value: Amount to transfer.
- #[weight = <T as Config>::WeightInfo::transfer_from()]
+ #[weight = <SelfWeightOf<T>>::transfer_from()]
#[transactional]
pub fn transfer_from(origin, from: T::CrossAccountId, recipient: T::CrossAccountId, collection_id: CollectionId, item_id: TokenId, value: u128 ) -> DispatchResult {
let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
@@ -1064,7 +1067,7 @@
/// * collection_id.
///
/// * schema: String representing the offchain data schema.
- #[weight = <T as Config>::WeightInfo::set_variable_meta_data()]
+ #[weight = <SelfWeightOf<T>>::set_variable_meta_data(data.len() as u32)]
#[transactional]
pub fn set_variable_meta_data (
origin,
@@ -1095,7 +1098,7 @@
/// * collection_id.
///
/// * schema: SchemaVersion: enum
- #[weight = <T as Config>::WeightInfo::set_schema_version()]
+ #[weight = <SelfWeightOf<T>>::set_schema_version()]
#[transactional]
pub fn set_schema_version(
origin,
@@ -1121,7 +1124,7 @@
/// * collection_id.
///
/// * schema: String representing the offchain data schema.
- #[weight = <T as Config>::WeightInfo::set_offchain_schema()]
+ #[weight = <SelfWeightOf<T>>::set_offchain_schema(schema.len() as u32)]
#[transactional]
pub fn set_offchain_schema(
origin,
@@ -1151,7 +1154,7 @@
/// * collection_id.
///
/// * schema: String representing the const on-chain data schema.
- #[weight = <T as Config>::WeightInfo::set_const_on_chain_schema()]
+ #[weight = <SelfWeightOf<T>>::set_const_on_chain_schema(schema.len() as u32)]
#[transactional]
pub fn set_const_on_chain_schema (
origin,
@@ -1181,7 +1184,7 @@
/// * collection_id.
///
/// * schema: String representing the variable on-chain data schema.
- #[weight = <T as Config>::WeightInfo::set_const_on_chain_schema()]
+ #[weight = <SelfWeightOf<T>>::set_const_on_chain_schema(schema.len() as u32)]
#[transactional]
pub fn set_variable_on_chain_schema (
origin,
@@ -1199,7 +1202,7 @@
target_collection.save()
}
- #[weight = <T as Config>::WeightInfo::set_collection_limits()]
+ #[weight = <SelfWeightOf<T>>::set_collection_limits()]
#[transactional]
pub fn set_collection_limits(
origin,
pallets/nft/src/weights.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/nft/src/weights.rs
@@ -0,0 +1,362 @@
+// Template adopted from https://github.com/paritytech/substrate/blob/master/.maintain/frame-weight-template.hbs
+
+//! Autogenerated weights for pallet_nft
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0
+//! DATE: 2021-08-30, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 128
+
+// Executed Command:
+// target/release/nft
+// benchmark
+// --pallet
+// pallet-nft
+// --wasm-execution
+// compiled
+// --extrinsic
+// *
+// --template
+// .maintain/frame-weight-template.hbs
+// --steps=50
+// --repeat=20
+// --output=./pallets/nft/src/weights.rs
+
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+
+use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}};
+use sp_std::marker::PhantomData;
+
+/// Weight functions needed for pallet_nft.
+pub trait WeightInfo {
+ fn create_collection() -> Weight;
+ fn destroy_collection() -> Weight;
+ fn add_to_white_list() -> Weight;
+ fn remove_from_white_list() -> Weight;
+ fn set_public_access_mode() -> Weight;
+ fn set_mint_permission() -> Weight;
+ fn change_collection_owner() -> Weight;
+ fn add_collection_admin() -> Weight;
+ fn remove_collection_admin() -> Weight;
+ fn set_collection_sponsor() -> Weight;
+ fn confirm_sponsorship() -> Weight;
+ fn remove_collection_sponsor() -> Weight;
+ fn create_item_nft(b: u32, ) -> Weight;
+ fn create_item_fungible() -> Weight;
+ fn create_item_refungible(b: u32, ) -> Weight;
+ fn burn_item_nft() -> Weight;
+ fn transfer_nft() -> Weight;
+ fn transfer_fungible() -> Weight;
+ fn transfer_refungible() -> Weight;
+ fn approve_nft() -> Weight;
+ fn transfer_from_nft() -> Weight;
+ fn transfer_from_fungible() -> Weight;
+ fn transfer_from_refungible() -> Weight;
+ fn set_offchain_schema(b: u32, ) -> Weight;
+ fn set_const_on_chain_schema(b: u32, ) -> Weight;
+ fn set_variable_on_chain_schema(b: u32, ) -> Weight;
+ fn set_variable_meta_data_nft(b: u32, ) -> Weight;
+ fn set_schema_version() -> Weight;
+ fn set_collection_limits() -> Weight;
+}
+
+/// Weights for pallet_nft using the Substrate node and recommended hardware.
+pub struct SubstrateWeight<T>(PhantomData<T>);
+impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
+ fn create_collection() -> Weight {
+ (25_851_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(8 as Weight))
+ .saturating_add(T::DbWeight::get().writes(6 as Weight))
+ }
+ fn destroy_collection() -> Weight {
+ (28_737_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(2 as Weight))
+ .saturating_add(T::DbWeight::get().writes(4 as Weight))
+ }
+ fn add_to_white_list() -> Weight {
+ (6_237_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ fn remove_from_white_list() -> Weight {
+ (6_252_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ fn set_public_access_mode() -> Weight {
+ (6_691_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ fn set_mint_permission() -> Weight {
+ (6_630_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ fn change_collection_owner() -> Weight {
+ (6_521_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ fn add_collection_admin() -> Weight {
+ (8_057_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(2 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ fn remove_collection_admin() -> Weight {
+ (8_307_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(2 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ fn set_collection_sponsor() -> Weight {
+ (6_484_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ fn confirm_sponsorship() -> Weight {
+ (6_530_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ fn remove_collection_sponsor() -> Weight {
+ (6_733_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ fn create_item_nft(_b: u32, ) -> Weight {
+ (167_909_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(11 as Weight))
+ .saturating_add(T::DbWeight::get().writes(8 as Weight))
+ }
+ fn create_item_fungible() -> Weight {
+ (22_331_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(9 as Weight))
+ .saturating_add(T::DbWeight::get().writes(4 as Weight))
+ }
+ fn create_item_refungible(_b: u32, ) -> Weight {
+ (26_293_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(9 as Weight))
+ .saturating_add(T::DbWeight::get().writes(7 as Weight))
+ }
+ fn burn_item_nft() -> Weight {
+ (32_237_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(9 as Weight))
+ .saturating_add(T::DbWeight::get().writes(7 as Weight))
+ }
+ fn transfer_nft() -> Weight {
+ (192_578_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(14 as Weight))
+ .saturating_add(T::DbWeight::get().writes(10 as Weight))
+ }
+ fn transfer_fungible() -> Weight {
+ (170_749_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(11 as Weight))
+ .saturating_add(T::DbWeight::get().writes(7 as Weight))
+ }
+ fn transfer_refungible() -> Weight {
+ (35_949_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(10 as Weight))
+ .saturating_add(T::DbWeight::get().writes(7 as Weight))
+ }
+ fn approve_nft() -> Weight {
+ (169_825_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(9 as Weight))
+ .saturating_add(T::DbWeight::get().writes(4 as Weight))
+ }
+ fn transfer_from_nft() -> Weight {
+ (197_912_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(15 as Weight))
+ .saturating_add(T::DbWeight::get().writes(11 as Weight))
+ }
+ fn transfer_from_fungible() -> Weight {
+ (183_789_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(12 as Weight))
+ .saturating_add(T::DbWeight::get().writes(8 as Weight))
+ }
+ fn transfer_from_refungible() -> Weight {
+ (37_149_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(11 as Weight))
+ .saturating_add(T::DbWeight::get().writes(8 as Weight))
+ }
+ fn set_offchain_schema(_b: u32, ) -> Weight {
+ (6_435_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ fn set_const_on_chain_schema(_b: u32, ) -> Weight {
+ (6_646_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ fn set_variable_on_chain_schema(_b: u32, ) -> Weight {
+ (6_542_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ fn set_variable_meta_data_nft(_b: u32, ) -> Weight {
+ (14_697_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(2 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ fn set_schema_version() -> Weight {
+ (6_566_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+ fn set_collection_limits() -> Weight {
+ (6_349_000 as Weight)
+ .saturating_add(T::DbWeight::get().reads(1 as Weight))
+ .saturating_add(T::DbWeight::get().writes(1 as Weight))
+ }
+}
+
+// For backwards compatibility and tests
+impl WeightInfo for () {
+ fn create_collection() -> Weight {
+ (25_851_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(8 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(6 as Weight))
+ }
+ fn destroy_collection() -> Weight {
+ (28_737_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(2 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(4 as Weight))
+ }
+ fn add_to_white_list() -> Weight {
+ (6_237_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ fn remove_from_white_list() -> Weight {
+ (6_252_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ fn set_public_access_mode() -> Weight {
+ (6_691_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ fn set_mint_permission() -> Weight {
+ (6_630_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ fn change_collection_owner() -> Weight {
+ (6_521_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ fn add_collection_admin() -> Weight {
+ (8_057_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(2 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ fn remove_collection_admin() -> Weight {
+ (8_307_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(2 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ fn set_collection_sponsor() -> Weight {
+ (6_484_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ fn confirm_sponsorship() -> Weight {
+ (6_530_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ fn remove_collection_sponsor() -> Weight {
+ (6_733_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ fn create_item_nft(_b: u32, ) -> Weight {
+ (167_909_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(11 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(8 as Weight))
+ }
+ fn create_item_fungible() -> Weight {
+ (22_331_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(9 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(4 as Weight))
+ }
+ fn create_item_refungible(_b: u32, ) -> Weight {
+ (26_293_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(9 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(7 as Weight))
+ }
+ fn burn_item_nft() -> Weight {
+ (32_237_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(9 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(7 as Weight))
+ }
+ fn transfer_nft() -> Weight {
+ (192_578_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(14 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(10 as Weight))
+ }
+ fn transfer_fungible() -> Weight {
+ (170_749_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(11 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(7 as Weight))
+ }
+ fn transfer_refungible() -> Weight {
+ (35_949_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(10 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(7 as Weight))
+ }
+ fn approve_nft() -> Weight {
+ (169_825_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(9 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(4 as Weight))
+ }
+ fn transfer_from_nft() -> Weight {
+ (197_912_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(15 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(11 as Weight))
+ }
+ fn transfer_from_fungible() -> Weight {
+ (183_789_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(12 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(8 as Weight))
+ }
+ fn transfer_from_refungible() -> Weight {
+ (37_149_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(11 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(8 as Weight))
+ }
+ fn set_offchain_schema(_b: u32, ) -> Weight {
+ (6_435_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ fn set_const_on_chain_schema(_b: u32, ) -> Weight {
+ (6_646_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ fn set_variable_on_chain_schema(_b: u32, ) -> Weight {
+ (6_542_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ fn set_variable_meta_data_nft(_b: u32, ) -> Weight {
+ (14_697_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(2 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ fn set_schema_version() -> Weight {
+ (6_566_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+ fn set_collection_limits() -> Weight {
+ (6_349_000 as Weight)
+ .saturating_add(RocksDbWeight::get().reads(1 as Weight))
+ .saturating_add(RocksDbWeight::get().writes(1 as Weight))
+ }
+}
\ No newline at end of file
primitives/nft/src/lib.rsdiffbeforeafterboth--- a/primitives/nft/src/lib.rs
+++ b/primitives/nft/src/lib.rs
@@ -55,6 +55,10 @@
pub const VARIABLE_ON_CHAIN_SCHEMA_LIMIT: u32 = 1024;
pub const CONST_ON_CHAIN_SCHEMA_LIMIT: u32 = 1024;
+pub const MAX_COLLECTION_NAME_LENGTH: usize = 64;
+pub const MAX_COLLECTION_DESCRIPTION_LENGTH: usize = 256;
+pub const MAX_TOKEN_PREFIX_LENGTH: usize = 16;
+
/// How much items can be created per single
/// create_many call
pub const MAX_ITEMS_PER_BATCH: u32 = 200;
runtime/src/lib.rsdiffbeforeafterboth--- a/runtime/src/lib.rs
+++ b/runtime/src/lib.rs
@@ -119,8 +119,6 @@
/// Digest item type.
pub type DigestItem = generic::DigestItem<Hash>;
-mod nft_weights;
-
/// Opaque types. These are used by the CLI to instantiate machinery that don't need to know
/// the specifics of the runtime. They can then be made to be agnostic over specific formats
/// of data like extrinsics, allowing for them to continue syncing the network through upgrades
@@ -695,7 +693,7 @@
/// Used for the pallet nft in `./nft.rs`
impl pallet_nft::Config for Runtime {
type Event = Event;
- type WeightInfo = nft_weights::WeightInfo;
+ type WeightInfo = pallet_nft::weights::SubstrateWeight<Self>;
type EvmBackwardsAddressMapping = pallet_nft::MapBackwardsAddressTruncated;
type EvmAddressMapping = HashedAddressMapping<Self::Hashing>;
runtime/src/nft_weights.rsdiffbeforeafterboth--- a/runtime/src/nft_weights.rs
+++ /dev/null
@@ -1,156 +0,0 @@
-//
-// This file is subject to the terms and conditions defined in
-// file 'LICENSE', which is part of this source code package.
-//
-
-use frame_support::weights::{Weight, constants::RocksDbWeight as DbWeight};
-
-pub struct WeightInfo;
-impl pallet_nft::WeightInfo for WeightInfo {
- fn create_collection() -> Weight {
- 70_000_000_u64
- .saturating_add(DbWeight::get().reads(7_u64))
- .saturating_add(DbWeight::get().writes(5_u64))
- }
- fn destroy_collection() -> Weight {
- 90_000_000_u64
- .saturating_add(DbWeight::get().reads(2_u64))
- .saturating_add(DbWeight::get().writes(5_u64))
- }
- fn add_to_white_list() -> Weight {
- 30_000_000_u64
- .saturating_add(DbWeight::get().reads(3_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn remove_from_white_list() -> Weight {
- 35_000_000_u64
- .saturating_add(DbWeight::get().reads(3_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn set_public_access_mode() -> Weight {
- 27_000_000_u64
- .saturating_add(DbWeight::get().reads(1_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn set_mint_permission() -> Weight {
- 27_000_000_u64
- .saturating_add(DbWeight::get().reads(1_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn change_collection_owner() -> Weight {
- 27_000_000_u64
- .saturating_add(DbWeight::get().reads(1_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn add_collection_admin() -> Weight {
- 32_000_000_u64
- .saturating_add(DbWeight::get().reads(3_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn remove_collection_admin() -> Weight {
- 50_000_000_u64
- .saturating_add(DbWeight::get().reads(2_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn set_collection_sponsor() -> Weight {
- 32_000_000_u64
- .saturating_add(DbWeight::get().reads(2_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn confirm_sponsorship() -> Weight {
- 22_000_000_u64
- .saturating_add(DbWeight::get().reads(1_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn remove_collection_sponsor() -> Weight {
- 24_000_000_u64
- .saturating_add(DbWeight::get().reads(1_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn create_item(s: usize) -> Weight {
- 130_000_000_u64
- .saturating_add(2135_u64.saturating_mul(s as Weight).saturating_mul(500_u64)) // 500 is temparary multiplier, fee for storage
- .saturating_add(DbWeight::get().reads(10_u64))
- .saturating_add(DbWeight::get().writes(8_u64))
- }
- fn burn_item() -> Weight {
- 170_000_000_u64
- .saturating_add(DbWeight::get().reads(9_u64))
- .saturating_add(DbWeight::get().writes(7_u64))
- }
- fn transfer() -> Weight {
- 125_000_000_u64
- .saturating_add(DbWeight::get().reads(7_u64))
- .saturating_add(DbWeight::get().writes(7_u64))
- }
- fn approve() -> Weight {
- 45_000_000_u64
- .saturating_add(DbWeight::get().reads(3_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn transfer_from() -> Weight {
- 150_000_000_u64
- .saturating_add(DbWeight::get().reads(9_u64))
- .saturating_add(DbWeight::get().writes(8_u64))
- }
- fn set_offchain_schema() -> Weight {
- 33_000_000_u64
- .saturating_add(DbWeight::get().reads(2_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn set_const_on_chain_schema() -> Weight {
- 11_100_000_u64
- .saturating_add(DbWeight::get().reads(2_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn set_variable_on_chain_schema() -> Weight {
- 11_100_000_u64
- .saturating_add(DbWeight::get().reads(2_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn set_variable_meta_data() -> Weight {
- 17_500_000_u64
- .saturating_add(DbWeight::get().reads(2_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn enable_contract_sponsoring() -> Weight {
- 13_000_000_u64
- .saturating_add(DbWeight::get().reads(1_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn set_schema_version() -> Weight {
- 8_500_000_u64
- .saturating_add(DbWeight::get().reads(2_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
- fn set_contract_sponsoring_rate_limit() -> Weight {
- 3_500_000_u64
- .saturating_add(DbWeight::get().reads(0_u64))
- .saturating_add(DbWeight::get().writes(2_u64))
- }
- fn set_variable_meta_data_sponsoring_rate_limit() -> Weight {
- 3_500_000_u64
- .saturating_add(DbWeight::get().reads(1_u64))
- .saturating_add(DbWeight::get().writes(2_u64))
- }
- fn toggle_contract_white_list() -> Weight {
- 3_000_000_u64
- .saturating_add(DbWeight::get().reads(0_u64))
- .saturating_add(DbWeight::get().writes(2_u64))
- }
- fn add_to_contract_white_list() -> Weight {
- 3_000_000_u64
- .saturating_add(DbWeight::get().reads(0_u64))
- .saturating_add(DbWeight::get().writes(2_u64))
- }
- fn remove_from_contract_white_list() -> Weight {
- 3_200_000_u64
- .saturating_add(DbWeight::get().reads(0_u64))
- .saturating_add(DbWeight::get().writes(2_u64))
- }
- fn set_collection_limits() -> Weight {
- 8_900_000_u64
- .saturating_add(DbWeight::get().reads(2_u64))
- .saturating_add(DbWeight::get().writes(1_u64))
- }
-}