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

difftreelog

Weights added

str-mv2020-10-23parent: #2f98826.patch.diff
in: master

3 files changed

addedpallets/nft/src/benchmarking.rsdiffbeforeafterboth
--- /dev/null
+++ b/pallets/nft/src/benchmarking.rs
@@ -0,0 +1,279 @@
+#[cfg(feature = "runtime-benchmarks")]
+// mod benchmarking {
+    use super::*;
+    use sp_std::prelude::*;
+    use frame_system::RawOrigin;
+    // use frame_support::{ensure, traits::OnFinalize};
+    use frame_benchmarking::{benchmarks, account, whitelisted_caller};  // , TrackedStorageKey, 
+    use crate::Module as Nft;
+
+    const SEED: u32 = 1;
+
+    benchmarks! {
+
+        _ {}
+
+        create_collection {
+            let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+            let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+            let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+            let mode: CollectionMode = CollectionMode::NFT(2000);
+            let caller: T::AccountId = account("caller", 0, SEED);
+        }: create_collection(RawOrigin::Signed(caller.clone()), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode)
+        verify {
+			assert_eq!(Nft::<T>::collection(2).owner, caller);
+        }
+
+        destroy_collection {
+            let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+            let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+            let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+            let mode: CollectionMode = CollectionMode::NFT(2000);
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+        }: destroy_collection(RawOrigin::Signed(caller.clone()), 2)
+
+        add_to_white_list {
+            let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+            let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+            let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+            let mode: CollectionMode = CollectionMode::NFT(2000);
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            let whitelist_account: T::AccountId = account("admin", 0, SEED);
+            Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+        }: add_to_white_list(RawOrigin::Signed(caller.clone()), 2, whitelist_account)
+
+        remove_from_white_list {
+            let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+            let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+            let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+            let mode: CollectionMode = CollectionMode::NFT(2000);
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            let whitelist_account: T::AccountId = account("admin", 0, SEED);
+            Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+            Nft::<T>::add_to_white_list(RawOrigin::Signed(caller.clone()).into(), 2, whitelist_account.clone())?;
+        }: remove_from_white_list(RawOrigin::Signed(caller.clone()), 2, whitelist_account)
+
+        set_public_access_mode {
+            let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+            let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+            let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+            let mode: CollectionMode = CollectionMode::NFT(2000);
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+        }: set_public_access_mode(RawOrigin::Signed(caller.clone()), 2, AccessMode::WhiteList)
+
+        set_mint_permission {
+            let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+            let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+            let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+            let mode: CollectionMode = CollectionMode::NFT(2000);
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+        }: set_mint_permission(RawOrigin::Signed(caller.clone()), 2, true)
+
+        change_collection_owner {
+            let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+            let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+            let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+            let mode: CollectionMode = CollectionMode::NFT(2000);
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+            let new_owner: T::AccountId = account("admin", 0, SEED);
+        }: change_collection_owner(RawOrigin::Signed(caller.clone()), 2, new_owner)
+
+        add_collection_admin {
+            let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+            let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+            let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+            let mode: CollectionMode = CollectionMode::NFT(2000);
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+            let new_admin: T::AccountId = account("admin", 0, SEED);
+        }: add_collection_admin(RawOrigin::Signed(caller.clone()), 2, new_admin)
+
+        remove_collection_admin {
+            let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+            let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+            let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+            let mode: CollectionMode = CollectionMode::NFT(2000);
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+            let new_admin: T::AccountId = account("admin", 0, SEED);
+            Nft::<T>::add_collection_admin(RawOrigin::Signed(caller.clone()).into(), 2, new_admin.clone())?;
+        }: remove_collection_admin(RawOrigin::Signed(caller.clone()), 2, new_admin)
+
+        set_collection_sponsor {
+            let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+            let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+            let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+            let mode: CollectionMode = CollectionMode::NFT(2000);
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+        }: set_collection_sponsor(RawOrigin::Signed(caller.clone()), 2, caller.clone())
+
+        confirm_sponsorship {
+            let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+            let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+            let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+            let mode: CollectionMode = CollectionMode::NFT(2000);
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+            Nft::<T>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone())?;
+        }: confirm_sponsorship(RawOrigin::Signed(caller.clone()), 2)
+
+        remove_collection_sponsor {
+            let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+            let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+            let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+            let mode: CollectionMode = CollectionMode::NFT(2000);
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+            Nft::<T>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone())?;
+            Nft::<T>::confirm_sponsorship(RawOrigin::Signed(caller.clone()).into(), 2)?;
+        }: remove_collection_sponsor(RawOrigin::Signed(caller.clone()), 2)
+
+        // nft item
+        create_item_nft {
+            let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+            let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+            let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+            let mode: CollectionMode = CollectionMode::NFT(2000);
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+
+        }: create_item(RawOrigin::Signed(caller.clone()), 2, [1, 2, 3].to_vec(), caller.clone())
+
+        // fungible item
+        create_item_fungible {
+            let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+            let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+            let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+            let mode: CollectionMode = CollectionMode::Fungible(3);
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+
+        }: create_item(RawOrigin::Signed(caller.clone()), 2, [].to_vec(), caller.clone())
+
+        // refungible item
+        create_item_refungible {
+            let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+            let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+            let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+            let mode: CollectionMode = CollectionMode::ReFungible(3, 3);
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+
+        }: create_item(RawOrigin::Signed(caller.clone()), 2, [1,2,3].to_vec(), caller.clone())
+
+        burn_item {
+            let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+            let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+            let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+            let mode: CollectionMode = CollectionMode::NFT(2000);
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+            Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, [1, 2, 3].to_vec(), caller.clone())?;
+
+        }: burn_item(RawOrigin::Signed(caller.clone()), 2, 1)
+
+        transfer_nft {
+            let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+            let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+            let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+            let mode: CollectionMode = CollectionMode::NFT(2000);
+            let recipient: T::AccountId = account("recipient", 0, SEED);
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+            Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, [1, 2, 3].to_vec(), caller.clone())?;
+
+        }: transfer(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1, 1)
+        
+        transfer_fungible {
+            let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+            let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+            let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+            let mode: CollectionMode = CollectionMode::Fungible(3);
+            let recipient: T::AccountId = account("recipient", 0, SEED);
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+            Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, [].to_vec(), caller.clone())?;
+
+        }: transfer(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1, 1)
+
+        transfer_refungible {
+            let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+            let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+            let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+            let mode: CollectionMode = CollectionMode::ReFungible(3,3);
+            let recipient: T::AccountId = account("recipient", 0, SEED);
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+            Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, [1,2,3].to_vec(), caller.clone())?;
+
+        }: transfer(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1, 1)
+
+        approve {
+            let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+            let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+            let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+            let mode: CollectionMode = CollectionMode::ReFungible(3,3);
+            let recipient: T::AccountId = account("recipient", 0, SEED);
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+            Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, [1,2,3].to_vec(), caller.clone())?;
+
+        }: approve(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1)
+
+        // Nft
+        transfer_from_nft {
+            let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+            let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+            let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+            let mode: CollectionMode = CollectionMode::NFT(300);
+            let recipient: T::AccountId = account("recipient", 0, SEED);
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+            Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, [1,2,3].to_vec(), caller.clone())?;
+            Nft::<T>::approve(RawOrigin::Signed(caller.clone()).into(), recipient.clone(), 2, 1)?;
+
+        }: transfer_from(RawOrigin::Signed(caller.clone()), caller.clone(), recipient.clone(), 2, 1, 1)
+
+        // Fungible
+        transfer_from_fungible {
+            let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+            let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+            let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+            let mode: CollectionMode = CollectionMode::Fungible(3);
+            let recipient: T::AccountId = account("recipient", 0, SEED);
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+            Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, [].to_vec(), caller.clone())?;
+            Nft::<T>::approve(RawOrigin::Signed(caller.clone()).into(), recipient.clone(), 2, 1)?;
+
+        }: transfer_from(RawOrigin::Signed(caller.clone()), caller.clone(), recipient.clone(), 2, 1, 1)
+
+        // ReFungible
+        transfer_from_refungible {
+            let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+            let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+            let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+            let mode: CollectionMode = CollectionMode::ReFungible(3,3);
+            let recipient: T::AccountId = account("recipient", 0, SEED);
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+            Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, [1,2,3].to_vec(), caller.clone())?;
+            Nft::<T>::approve(RawOrigin::Signed(caller.clone()).into(), recipient.clone(), 2, 1)?;
+
+        }: transfer_from(RawOrigin::Signed(caller.clone()), caller.clone(), recipient.clone(), 2, 1, 1)
+
+        set_offchain_schema {
+            let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+            let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+            let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+            let mode: CollectionMode = CollectionMode::ReFungible(3,3);
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+
+        }: set_offchain_schema(RawOrigin::Signed(caller.clone()), 2, [1,2,3].to_vec())
+    }
\ No newline at end of file
modifiedpallets/nft/src/lib.rsdiffbeforeafterboth
22 },22 },
23 IsSubType, StorageValue,23 IsSubType, StorageValue,
24};24};
25// use frame_support::weights::{Weight, constants::RocksDbWeight as DbWeight};
2526
26use frame_system::{self as system, ensure_signed, ensure_root};27use frame_system::{self as system, ensure_signed, ensure_root};
27use sp_runtime::sp_std::prelude::Vec;28use sp_runtime::sp_std::prelude::Vec;
187
188188
189#[cfg(feature = "runtime-benchmarks")]189#[cfg(feature = "runtime-benchmarks")]
190mod benchmarking {190mod benchmarking;
191 use super::*;
192 use sp_std::prelude::*;
193 use frame_system::RawOrigin;
194 // use frame_support::{ensure, traits::OnFinalize};
195 use frame_benchmarking::{benchmarks, account}; // , TrackedStorageKey, whitelisted_caller
196 use crate::Module as Nft;
197
198 const SEED: u32 = 1;
199
200 benchmarks! {
201
202 _ {}
203
204 create_collection {
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::NFT(2000);
209 let caller: T::AccountId = account("caller", 0, SEED);
210 }: create_collection(RawOrigin::Signed(caller.clone()), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode)
211 verify {
212 assert_eq!(Nft::<T>::collection(2).owner, caller);
213 }
214 }
215
216 #[cfg(test)]
217 mod tests {
218 use super::*;
219 use crate::tests_composite::{ExtBuilder, Test};
220 use frame_support::assert_ok;
221
222 #[test]
223 fn create_collection() {
224 ExtBuilder::default().build().execute_with(|| {
225 assert_ok!(test_benchmark_create_collection::<Test>());
226 });
227 }
228 }
229}
230191
231// #endregion192// #endregion
232193
365 /// 326 ///
366 /// * mode: [CollectionMode] collection type and type dependent data.327 /// * mode: [CollectionMode] collection type and type dependent data.
367 // returns collection ID328 // returns collection ID
368 #[weight = 0]329 #[weight =
330 (70_000_000 as Weight)
331 .saturating_add(RocksDbWeight::get().reads(7 as Weight))
332 .saturating_add(RocksDbWeight::get().writes(5 as Weight))]
369 pub fn create_collection(origin,333 pub fn create_collection(origin,
370 collection_name: Vec<u16>,334 collection_name: Vec<u16>,
371 collection_description: Vec<u16>,335 collection_description: Vec<u16>,
461 /// # Arguments425 /// # Arguments
462 /// 426 ///
463 /// * collection_id: collection to destroy.427 /// * collection_id: collection to destroy.
464 #[weight = 0]428 #[weight =
429 (90_000_000 as Weight)
430 .saturating_add(RocksDbWeight::get().reads(2 as Weight))
431 .saturating_add(RocksDbWeight::get().writes(5 as Weight))]
465 pub fn destroy_collection(origin, collection_id: u64) -> DispatchResult {432 pub fn destroy_collection(origin, collection_id: u64) -> DispatchResult {
466433
467 let sender = ensure_signed(origin)?;434 let sender = ensure_signed(origin)?;
508 /// * collection_id.475 /// * collection_id.
509 /// 476 ///
510 /// * address.477 /// * address.
511 #[weight = 0]478 #[weight =
479 (30_000_000 as Weight)
480 .saturating_add(RocksDbWeight::get().reads(3 as Weight))
481 .saturating_add(RocksDbWeight::get().writes(1 as Weight))]
512 pub fn add_to_white_list(origin, collection_id: u64, address: T::AccountId) -> DispatchResult{482 pub fn add_to_white_list(origin, collection_id: u64, address: T::AccountId) -> DispatchResult{
513483
514 let sender = ensure_signed(origin)?;484 let sender = ensure_signed(origin)?;
543 /// * collection_id.513 /// * collection_id.
544 /// 514 ///
545 /// * address.515 /// * address.
546 #[weight = 0]516 #[weight =
517 (35_000_000 as Weight)
518 .saturating_add(RocksDbWeight::get().reads(3 as Weight))
519 .saturating_add(RocksDbWeight::get().writes(1 as Weight))]
547 pub fn remove_from_white_list(origin, collection_id: u64, address: T::AccountId) -> DispatchResult{520 pub fn remove_from_white_list(origin, collection_id: u64, address: T::AccountId) -> DispatchResult{
548521
549 let sender = ensure_signed(origin)?;522 let sender = ensure_signed(origin)?;
572 /// * collection_id.545 /// * collection_id.
573 /// 546 ///
574 /// * mode: [AccessMode]547 /// * mode: [AccessMode]
575 #[weight = 0]548 #[weight =
549 (27_000_000 as Weight)
550 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
551 .saturating_add(RocksDbWeight::get().writes(1 as Weight))]
576 pub fn set_public_access_mode(origin, collection_id: u64, mode: AccessMode) -> DispatchResult552 pub fn set_public_access_mode(origin, collection_id: u64, mode: AccessMode) -> DispatchResult
577 {553 {
578 let sender = ensure_signed(origin)?;554 let sender = ensure_signed(origin)?;
598 /// * collection_id.574 /// * collection_id.
599 /// 575 ///
600 /// * mint_permission: Boolean parameter. If True, allows minting to Anyone with conditions above.576 /// * mint_permission: Boolean parameter. If True, allows minting to Anyone with conditions above.
601 #[weight = 0]577 #[weight =
578 (27_000_000 as Weight)
579 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
580 .saturating_add(RocksDbWeight::get().writes(1 as Weight))]
602 pub fn set_mint_permission(origin, collection_id: u64, mint_permission: bool) -> DispatchResult581 pub fn set_mint_permission(origin, collection_id: u64, mint_permission: bool) -> DispatchResult
603 {582 {
604 let sender = ensure_signed(origin)?;583 let sender = ensure_signed(origin)?;
622 /// * collection_id.601 /// * collection_id.
623 /// 602 ///
624 /// * new_owner.603 /// * new_owner.
625 #[weight = 0]604 #[weight =
605 (27_000_000 as Weight)
606 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
607 .saturating_add(RocksDbWeight::get().writes(1 as Weight))]
626 pub fn change_collection_owner(origin, collection_id: u64, new_owner: T::AccountId) -> DispatchResult {608 pub fn change_collection_owner(origin, collection_id: u64, new_owner: T::AccountId) -> DispatchResult {
627609
628 let sender = ensure_signed(origin)?;610 let sender = ensure_signed(origin)?;
647 /// * collection_id: ID of the Collection to add admin for.629 /// * collection_id: ID of the Collection to add admin for.
648 /// 630 ///
649 /// * new_admin_id: Address of new admin to add.631 /// * new_admin_id: Address of new admin to add.
650 #[weight = 0]632 #[weight =
633 (32_000_000 as Weight)
634 .saturating_add(RocksDbWeight::get().reads(3 as Weight))
635 .saturating_add(RocksDbWeight::get().writes(1 as Weight))]
651 pub fn add_collection_admin(origin, collection_id: u64, new_admin_id: T::AccountId) -> DispatchResult {636 pub fn add_collection_admin(origin, collection_id: u64, new_admin_id: T::AccountId) -> DispatchResult {
652637
653 let sender = ensure_signed(origin)?;638 let sender = ensure_signed(origin)?;
681 /// * collection_id: ID of the Collection to remove admin for.666 /// * collection_id: ID of the Collection to remove admin for.
682 /// 667 ///
683 /// * account_id: Address of admin to remove.668 /// * account_id: Address of admin to remove.
684 #[weight = 0]669 #[weight =
670 (50_000_000 as Weight)
671 .saturating_add(RocksDbWeight::get().reads(2 as Weight))
672 .saturating_add(RocksDbWeight::get().writes(1 as Weight))]
685 pub fn remove_collection_admin(origin, collection_id: u64, account_id: T::AccountId) -> DispatchResult {673 pub fn remove_collection_admin(origin, collection_id: u64, account_id: T::AccountId) -> DispatchResult {
686674
687 let sender = ensure_signed(origin)?;675 let sender = ensure_signed(origin)?;
706 /// * collection_id.694 /// * collection_id.
707 /// 695 ///
708 /// * new_sponsor.696 /// * new_sponsor.
709 #[weight = 0]697 #[weight =
698 (32_000_000 as Weight)
699 .saturating_add(RocksDbWeight::get().reads(2 as Weight))
700 .saturating_add(RocksDbWeight::get().writes(1 as Weight))]
710 pub fn set_collection_sponsor(origin, collection_id: u64, new_sponsor: T::AccountId) -> DispatchResult {701 pub fn set_collection_sponsor(origin, collection_id: u64, new_sponsor: T::AccountId) -> DispatchResult {
711702
712 let sender = ensure_signed(origin)?;703 let sender = ensure_signed(origin)?;
728 /// # Arguments719 /// # Arguments
729 /// 720 ///
730 /// * collection_id.721 /// * collection_id.
731 #[weight = 0]722 #[weight =
723 (22_000_000 as Weight)
724 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
725 .saturating_add(RocksDbWeight::get().writes(1 as Weight))]
732 pub fn confirm_sponsorship(origin, collection_id: u64) -> DispatchResult {726 pub fn confirm_sponsorship(origin, collection_id: u64) -> DispatchResult {
733727
734 let sender = ensure_signed(origin)?;728 let sender = ensure_signed(origin)?;
753 /// # Arguments747 /// # Arguments
754 /// 748 ///
755 /// * collection_id.749 /// * collection_id.
756 #[weight = 0]750 #[weight =
751 (24_000_000 as Weight)
752 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
753 .saturating_add(RocksDbWeight::get().writes(1 as Weight))]
757 pub fn remove_collection_sponsor(origin, collection_id: u64) -> DispatchResult {754 pub fn remove_collection_sponsor(origin, collection_id: u64) -> DispatchResult {
758755
759 let sender = ensure_signed(origin)?;756 let sender = ensure_signed(origin)?;
786 /// * properties: Array of bytes that contains NFT properties. Since NFT Module is agnostic of properties meaning, it is treated purely as an array of bytes.783 /// * properties: Array of bytes that contains NFT properties. Since NFT Module is agnostic of properties meaning, it is treated purely as an array of bytes.
787 /// 784 ///
788 /// * owner: Address, initial owner of the NFT.785 /// * owner: Address, initial owner of the NFT.
789 #[weight = 0]786 #[weight =
787 (130_000_000 as Weight)
788 .saturating_add(RocksDbWeight::get().reads(10 as Weight))
789 .saturating_add(RocksDbWeight::get().writes(8 as Weight))]
790 pub fn create_item(origin, collection_id: u64, properties: Vec<u8>, owner: T::AccountId) -> DispatchResult {790 pub fn create_item(origin, collection_id: u64, properties: Vec<u8>, owner: T::AccountId) -> DispatchResult {
791791
792 let sender = ensure_signed(origin)?;792 let sender = ensure_signed(origin)?;
869 /// * collection_id: ID of the collection.869 /// * collection_id: ID of the collection.
870 /// 870 ///
871 /// * item_id: ID of NFT to burn.871 /// * item_id: ID of NFT to burn.
872 #[weight = 0]872 #[weight =
873 (170_000_000 as Weight)
874 .saturating_add(RocksDbWeight::get().reads(9 as Weight))
875 .saturating_add(RocksDbWeight::get().writes(7 as Weight))]
873 pub fn burn_item(origin, collection_id: u64, item_id: u64) -> DispatchResult {876 pub fn burn_item(origin, collection_id: u64, item_id: u64) -> DispatchResult {
874877
875 let sender = ensure_signed(origin)?;878 let sender = ensure_signed(origin)?;
922 /// * Non-Fungible Mode: Ignored925 /// * Non-Fungible Mode: Ignored
923 /// * Fungible Mode: Must specify transferred amount926 /// * Fungible Mode: Must specify transferred amount
924 /// * Re-Fungible Mode: Must specify transferred portion (between 0 and 1)927 /// * Re-Fungible Mode: Must specify transferred portion (between 0 and 1)
925 #[weight = 0]928 #[weight =
929 (125_000_000 as Weight)
930 .saturating_add(RocksDbWeight::get().reads(7 as Weight))
931 .saturating_add(RocksDbWeight::get().writes(7 as Weight))]
926 pub fn transfer(origin, recipient: T::AccountId, collection_id: u64, item_id: u64, value: u64) -> DispatchResult {932 pub fn transfer(origin, recipient: T::AccountId, collection_id: u64, item_id: u64, value: u64) -> DispatchResult {
927933
928 let sender = ensure_signed(origin)?;934 let sender = ensure_signed(origin)?;
964 /// * collection_id.970 /// * collection_id.
965 /// 971 ///
966 /// * item_id: ID of the item.972 /// * item_id: ID of the item.
967 #[weight = 0]973 #[weight =
974 (45_000_000 as Weight)
975 .saturating_add(RocksDbWeight::get().reads(3 as Weight))
976 .saturating_add(RocksDbWeight::get().writes(1 as Weight))]
968 pub fn approve(origin, approved: T::AccountId, collection_id: u64, item_id: u64) -> DispatchResult {977 pub fn approve(origin, approved: T::AccountId, collection_id: u64, item_id: u64) -> DispatchResult {
969978
970 let sender = ensure_signed(origin)?;979 let sender = ensure_signed(origin)?;
1022 /// * item_id: ID of the item.1031 /// * item_id: ID of the item.
1023 /// 1032 ///
1024 /// * value: Amount to transfer.1033 /// * value: Amount to transfer.
1025 #[weight = 0]1034 #[weight =
1035 (150_000_000 as Weight)
1036 .saturating_add(RocksDbWeight::get().reads(9 as Weight))
1037 .saturating_add(RocksDbWeight::get().writes(8 as Weight))]
1026 pub fn transfer_from(origin, from: T::AccountId, recipient: T::AccountId, collection_id: u64, item_id: u64, value: u64 ) -> DispatchResult {1038 pub fn transfer_from(origin, from: T::AccountId, recipient: T::AccountId, collection_id: u64, item_id: u64, value: u64 ) -> DispatchResult {
10271039
1028 let sender = ensure_signed(origin)?;1040 let sender = ensure_signed(origin)?;
1032 if <ApprovedList<T>>::contains_key(collection_id, (item_id, from.clone())) {1044 if <ApprovedList<T>>::contains_key(collection_id, (item_id, from.clone())) {
1033 let list_itm = <ApprovedList<T>>::get(collection_id, (item_id, from.clone()));1045 let list_itm = <ApprovedList<T>>::get(collection_id, (item_id, from.clone()));
1034 let opt_item = list_itm.iter().find(|i| i.approved == sender.clone());1046 let opt_item = list_itm.iter().find(|i| i.approved == sender.clone());
1035 appoved_transfer = opt_item.is_some();1047 if opt_item.is_some()
1048 {
1049 appoved_transfer = true;
1036 ensure!(opt_item.unwrap().amount >= value, "Requested value more than approved");1050 ensure!(opt_item.unwrap().amount >= value, "Requested value more than approved");
1051 }
1037 }1052 }
10381053
1039 // Transfer permissions check1054 // Transfer permissions check
1091 /// * collection_id.1106 /// * collection_id.
1092 /// 1107 ///
1093 /// * schema: String representing the offchain data schema.1108 /// * schema: String representing the offchain data schema.
1094 #[weight = 0]1109 #[weight =
1110 (33_000_000 as Weight)
1111 .saturating_add(RocksDbWeight::get().reads(2 as Weight))
1112 .saturating_add(RocksDbWeight::get().writes(1 as Weight))]
1095 pub fn set_offchain_schema(1113 pub fn set_offchain_schema(
1096 origin,1114 origin,
1097 collection_id: u64,1115 collection_id: u64,
modifiedruntime/src/lib.rsdiffbeforeafterboth
--- a/runtime/src/lib.rs
+++ b/runtime/src/lib.rs
@@ -528,16 +528,16 @@
 			use frame_benchmarking::{Benchmarking, BenchmarkBatch, add_benchmark, TrackedStorageKey};
 
 			let whitelist: Vec<TrackedStorageKey> = vec![
-				// Block Number
-				hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef702a5c1b19ab7a04f536c519aca4983ac").to_vec().into(),
-				// Total Issuance
-				hex_literal::hex!("c2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80").to_vec().into(),
-				// Execution Phase
-				hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7ff553b5a9862a516939d82b3d3d8661a").to_vec().into(),
-				// Event Count
-				hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef70a98fdbe9ce6c55837576c60c7af3850").to_vec().into(),
-				// System Events
-				hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef780d41e5e16056765bc8461851072c9d7").to_vec().into(),
+				// Alice account
+				hex_literal::hex!("d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d").to_vec().into(),
+				// // Total Issuance
+				// hex_literal::hex!("c2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80").to_vec().into(),
+				// // Execution Phase
+				// hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7ff553b5a9862a516939d82b3d3d8661a").to_vec().into(),
+				// // Event Count
+				// hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef70a98fdbe9ce6c55837576c60c7af3850").to_vec().into(),
+				// // System Events
+				// hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef780d41e5e16056765bc8461851072c9d7").to_vec().into(),
             ];
 
 			let mut batches = Vec::<BenchmarkBatch>::new();