1#[cfg(feature = "runtime-benchmarks")]23 use super::*;4 use sp_std::prelude::*;5 use frame_system::RawOrigin;6 7 use frame_benchmarking::{benchmarks, account, whitelisted_caller}; 8 use crate::Module as Nft;910 const SEED: u32 = 1;1112 benchmarks! {1314 _ {}1516 create_collection {17 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();18 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();19 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();20 let mode: CollectionMode = CollectionMode::NFT(2000);21 let caller: T::AccountId = account("caller", 0, SEED);22 }: create_collection(RawOrigin::Signed(caller.clone()), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode)23 verify {24 assert_eq!(Nft::<T>::collection(2).owner, caller);25 }2627 destroy_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(2000);32 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());33 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;34 }: destroy_collection(RawOrigin::Signed(caller.clone()), 2)3536 add_to_white_list {37 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();38 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();39 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();40 let mode: CollectionMode = CollectionMode::NFT(2000);41 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());42 let whitelist_account: T::AccountId = account("admin", 0, SEED);43 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;44 }: add_to_white_list(RawOrigin::Signed(caller.clone()), 2, whitelist_account)4546 remove_from_white_list {47 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();48 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();49 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();50 let mode: CollectionMode = CollectionMode::NFT(2000);51 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());52 let whitelist_account: T::AccountId = account("admin", 0, SEED);53 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;54 Nft::<T>::add_to_white_list(RawOrigin::Signed(caller.clone()).into(), 2, whitelist_account.clone())?;55 }: remove_from_white_list(RawOrigin::Signed(caller.clone()), 2, whitelist_account)5657 set_public_access_mode {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(2000);62 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());63 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;64 }: set_public_access_mode(RawOrigin::Signed(caller.clone()), 2, AccessMode::WhiteList)6566 set_mint_permission {67 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();68 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();69 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();70 let mode: CollectionMode = CollectionMode::NFT(2000);71 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());72 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;73 }: set_mint_permission(RawOrigin::Signed(caller.clone()), 2, true)7475 change_collection_owner {76 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();77 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();78 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();79 let mode: CollectionMode = CollectionMode::NFT(2000);80 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());81 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;82 let new_owner: T::AccountId = account("admin", 0, SEED);83 }: change_collection_owner(RawOrigin::Signed(caller.clone()), 2, new_owner)8485 add_collection_admin {86 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();87 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();88 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();89 let mode: CollectionMode = CollectionMode::NFT(2000);90 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());91 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;92 let new_admin: T::AccountId = account("admin", 0, SEED);93 }: add_collection_admin(RawOrigin::Signed(caller.clone()), 2, new_admin)9495 remove_collection_admin {96 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();97 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();98 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();99 let mode: CollectionMode = CollectionMode::NFT(2000);100 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());101 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;102 let new_admin: T::AccountId = account("admin", 0, SEED);103 Nft::<T>::add_collection_admin(RawOrigin::Signed(caller.clone()).into(), 2, new_admin.clone())?;104 }: remove_collection_admin(RawOrigin::Signed(caller.clone()), 2, new_admin)105106 set_collection_sponsor {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(2000);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 }: set_collection_sponsor(RawOrigin::Signed(caller.clone()), 2, caller.clone())114115 confirm_sponsorship {116 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();117 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();118 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();119 let mode: CollectionMode = CollectionMode::NFT(2000);120 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());121 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;122 Nft::<T>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone())?;123 }: confirm_sponsorship(RawOrigin::Signed(caller.clone()), 2)124125 remove_collection_sponsor {126 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();127 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();128 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();129 let mode: CollectionMode = CollectionMode::NFT(2000);130 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());131 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;132 Nft::<T>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone())?;133 Nft::<T>::confirm_sponsorship(RawOrigin::Signed(caller.clone()).into(), 2)?;134 }: remove_collection_sponsor(RawOrigin::Signed(caller.clone()), 2)135136 137 create_item_nft {138 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();139 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();140 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();141 let mode: CollectionMode = CollectionMode::NFT(2000);142 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());143 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;144145 }: create_item(RawOrigin::Signed(caller.clone()), 2, [1, 2, 3].to_vec(), caller.clone())146147 148 create_item_fungible {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::Fungible(3);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())?;155156 }: create_item(RawOrigin::Signed(caller.clone()), 2, [].to_vec(), caller.clone())157158 159 create_item_refungible {160 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();161 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();162 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();163 let mode: CollectionMode = CollectionMode::ReFungible(3, 3);164 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());165 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;166167 }: create_item(RawOrigin::Signed(caller.clone()), 2, [1,2,3].to_vec(), caller.clone())168169 burn_item {170 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();171 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();172 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();173 let mode: CollectionMode = CollectionMode::NFT(2000);174 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());175 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;176 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, [1, 2, 3].to_vec(), caller.clone())?;177178 }: burn_item(RawOrigin::Signed(caller.clone()), 2, 1)179180 transfer_nft {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::NFT(2000);185 let recipient: T::AccountId = account("recipient", 0, SEED);186 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());187 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;188 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, [1, 2, 3].to_vec(), caller.clone())?;189190 }: transfer(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1, 1)191 192 transfer_fungible {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::Fungible(3);197 let recipient: T::AccountId = account("recipient", 0, SEED);198 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());199 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;200 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, [].to_vec(), caller.clone())?;201202 }: transfer(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1, 1)203204 transfer_refungible {205 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();206 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();207 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();208 let mode: CollectionMode = CollectionMode::ReFungible(3,3);209 let recipient: T::AccountId = account("recipient", 0, SEED);210 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());211 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;212 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, [1,2,3].to_vec(), caller.clone())?;213214 }: transfer(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1, 1)215216 approve {217 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();218 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();219 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();220 let mode: CollectionMode = CollectionMode::ReFungible(3,3);221 let recipient: T::AccountId = account("recipient", 0, SEED);222 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());223 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;224 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, [1,2,3].to_vec(), caller.clone())?;225226 }: approve(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1)227228 229 transfer_from_nft {230 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();231 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();232 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();233 let mode: CollectionMode = CollectionMode::NFT(300);234 let recipient: T::AccountId = account("recipient", 0, SEED);235 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());236 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;237 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, [1,2,3].to_vec(), caller.clone())?;238 Nft::<T>::approve(RawOrigin::Signed(caller.clone()).into(), recipient.clone(), 2, 1)?;239240 }: transfer_from(RawOrigin::Signed(caller.clone()), caller.clone(), recipient.clone(), 2, 1, 1)241242 243 transfer_from_fungible {244 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();245 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();246 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();247 let mode: CollectionMode = CollectionMode::Fungible(3);248 let recipient: T::AccountId = account("recipient", 0, SEED);249 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());250 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;251 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, [].to_vec(), caller.clone())?;252 Nft::<T>::approve(RawOrigin::Signed(caller.clone()).into(), recipient.clone(), 2, 1)?;253254 }: transfer_from(RawOrigin::Signed(caller.clone()), caller.clone(), recipient.clone(), 2, 1, 1)255256 257 transfer_from_refungible {258 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();259 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();260 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();261 let mode: CollectionMode = CollectionMode::ReFungible(3,3);262 let recipient: T::AccountId = account("recipient", 0, SEED);263 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());264 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;265 Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, [1,2,3].to_vec(), caller.clone())?;266 Nft::<T>::approve(RawOrigin::Signed(caller.clone()).into(), recipient.clone(), 2, 1)?;267268 }: transfer_from(RawOrigin::Signed(caller.clone()), caller.clone(), recipient.clone(), 2, 1, 1)269270 set_offchain_schema {271 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();272 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();273 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();274 let mode: CollectionMode = CollectionMode::ReFungible(3,3);275 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());276 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;277278 }: set_offchain_schema(RawOrigin::Signed(caller.clone()), 2, [1,2,3].to_vec())279 }