git.delta.rocks / unique-network / refs/commits / 57a41c175b30

difftreelog

NFTPAR-260_217. Benchmarks

str-mv2020-12-25parent: #d430fcf.patch.diff
in: master

4 files changed

modifiedpallets/nft/src/benchmarking.rsdiffbeforeafterboth
--- a/pallets/nft/src/benchmarking.rs
+++ b/pallets/nft/src/benchmarking.rs
@@ -355,4 +355,66 @@
             Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
 
         }: set_variable_meta_data(RawOrigin::Signed(caller.clone()), 2, 1, [1, 2, 3].to_vec())
+
+        set_schema_version {
+            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;
+            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_schema_version(RawOrigin::Signed(caller.clone()), 2, SchemaVersion::Unique)
+
+        set_chain_limits {
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            let limits = ChainLimits { 
+                collection_numbers_limit: 0,
+                account_token_ownership_limit: 0,
+                collections_admins_limit: 0,
+                custom_data_limit: 0,
+                nft_sponsor_transfer_timeout: 0,
+                fungible_sponsor_transfer_timeout: 0,
+                refungible_sponsor_transfer_timeout: 0
+            };
+        }: set_chain_limits(RawOrigin::Signed(caller.clone()), limits)
+
+        set_contract_sponsoring_rate_limit {
+            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;
+            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 block_number: T::BlockNumber = 0.into();   
+        }: set_contract_sponsoring_rate_limit(RawOrigin::Signed(caller.clone()), caller.clone(), block_number)
+
+        set_collection_limits{
+            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;
+            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 cl = CollectionLimits {
+                account_token_ownership_limit: 0,
+                sponsored_data_size: 0,
+                token_limit: 0,
+                sponsor_transfer_timeout: 0
+            };
+
+        }: set_collection_limits(RawOrigin::Signed(caller.clone()), 2, cl)
+
+        add_to_contract_white_list{
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+        }: add_to_contract_white_list(RawOrigin::Signed(caller.clone()), caller.clone(), caller.clone())
+
+        remove_from_contract_white_list{
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+            Nft::<T>::add_to_contract_white_list(RawOrigin::Signed(caller.clone()).into(), caller.clone(), caller.clone())?;
+        }: remove_from_contract_white_list(RawOrigin::Signed(caller.clone()), caller.clone(), caller.clone())
+
+        toggle_contract_white_list{
+            let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+        }: toggle_contract_white_list(RawOrigin::Signed(caller.clone()), caller.clone(), true)
 }
\ No newline at end of file
modifiedpallets/nft/src/default_weights.rsdiffbeforeafterboth
before · pallets/nft/src/default_weights.rs
1use frame_support::weights::{Weight, constants::RocksDbWeight as DbWeight};23impl crate::WeightInfo for () {4	fn create_collection() -> Weight {5		(70_000_000 as Weight)6			.saturating_add(DbWeight::get().reads(7 as Weight))7			.saturating_add(DbWeight::get().writes(5 as Weight))8	}9	fn destroy_collection() -> Weight {10		(90_000_000 as Weight)11			.saturating_add(DbWeight::get().reads(2 as Weight))12			.saturating_add(DbWeight::get().writes(5 as Weight))13	}14	fn add_to_white_list() -> Weight {15		(30_000_000 as Weight)16			.saturating_add(DbWeight::get().reads(3 as Weight))17			.saturating_add(DbWeight::get().writes(1 as Weight))18    }19    fn remove_from_white_list() -> Weight {20		(35_000_000 as Weight)21			.saturating_add(DbWeight::get().reads(3 as Weight))22			.saturating_add(DbWeight::get().writes(1 as Weight))23	}24	fn set_public_access_mode() -> Weight {25		(27_000_000 as Weight)26			.saturating_add(DbWeight::get().reads(1 as Weight))27			.saturating_add(DbWeight::get().writes(1 as Weight))28	}29	fn set_mint_permission() -> Weight {30		(27_000_000 as Weight)31			.saturating_add(DbWeight::get().reads(1 as Weight))32			.saturating_add(DbWeight::get().writes(1 as Weight))33	}34	fn change_collection_owner() -> Weight {35		(27_000_000 as Weight)36			.saturating_add(DbWeight::get().reads(1 as Weight))37			.saturating_add(DbWeight::get().writes(1 as Weight))38	}39	fn add_collection_admin() -> Weight {40        (32_000_000 as Weight)41            .saturating_add(DbWeight::get().reads(3 as Weight))42            .saturating_add(DbWeight::get().writes(1 as Weight))43	}44	fn remove_collection_admin() -> Weight {45		(50_000_000 as Weight)46            .saturating_add(DbWeight::get().reads(2 as Weight))47            .saturating_add(DbWeight::get().writes(1 as Weight))48    }49    fn set_collection_sponsor() -> Weight {50		(32_000_000 as Weight)51            .saturating_add(DbWeight::get().reads(2 as Weight))52            .saturating_add(DbWeight::get().writes(1 as Weight))53    }  54    fn confirm_sponsorship() -> Weight {55		(22_000_000 as Weight)56            .saturating_add(DbWeight::get().reads(1 as Weight))57            .saturating_add(DbWeight::get().writes(1 as Weight))58    }  59    fn remove_collection_sponsor() -> Weight {60		(24_000_000 as Weight)61            .saturating_add(DbWeight::get().reads(1 as Weight))62            .saturating_add(DbWeight::get().writes(1 as Weight))63    }  64    fn create_item(s: usize, ) -> Weight {65        (130_000_000 as Weight)66            .saturating_add((2135 as Weight).saturating_mul(s as Weight).saturating_mul(500 as Weight)) // 500 is temporary multiplier, fee for storage67            .saturating_add(DbWeight::get().reads(10 as Weight))68            .saturating_add(DbWeight::get().writes(8 as Weight))69    }  70    fn burn_item() -> Weight {71		(170_000_000 as Weight)72            .saturating_add(DbWeight::get().reads(9 as Weight))73            .saturating_add(DbWeight::get().writes(7 as Weight))74    }  75    fn transfer() -> Weight {76        (125_000_000 as Weight)77            .saturating_add(DbWeight::get().reads(7 as Weight))78            .saturating_add(DbWeight::get().writes(7 as Weight))79    }  80    fn approve() -> Weight {81        (45_000_000 as Weight)82            .saturating_add(DbWeight::get().reads(3 as Weight))83            .saturating_add(DbWeight::get().writes(1 as Weight))84    }85    fn transfer_from() -> Weight {86        (150_000_000 as Weight)87            .saturating_add(DbWeight::get().reads(9 as Weight))88            .saturating_add(DbWeight::get().writes(8 as Weight))89    }90    fn set_offchain_schema() -> Weight {91        (33_000_000 as Weight)92            .saturating_add(DbWeight::get().reads(2 as Weight))93            .saturating_add(DbWeight::get().writes(1 as Weight))94    }95    fn set_const_on_chain_schema() -> Weight {96        (11_100_000 as Weight)97            .saturating_add(DbWeight::get().reads(2 as Weight))98            .saturating_add(DbWeight::get().writes(1 as Weight))99    }100    fn set_variable_on_chain_schema() -> Weight {101        (11_100_000 as Weight)102            .saturating_add(DbWeight::get().reads(2 as Weight))103            .saturating_add(DbWeight::get().writes(1 as Weight))104    }105    fn set_variable_meta_data() -> Weight {106        (17_500_000 as Weight)107            .saturating_add(DbWeight::get().reads(2 as Weight))108            .saturating_add(DbWeight::get().writes(1 as Weight))109    }110    // fn set_chain_limits() -> Weight {111    //     (0 as Weight)112    //         .saturating_add(DbWeight::get().reads(1 as Weight))113    //         .saturating_add(DbWeight::get().writes(1 as Weight))114    // }115    fn enable_contract_sponsoring() -> Weight {116        (13_000_000 as Weight)117            .saturating_add(DbWeight::get().reads(1 as Weight))118            .saturating_add(DbWeight::get().writes(1 as Weight))119    }120    // fn set_contract_sponsoring_rate_limit() -> Weight {121    //     (0 as Weight)122    //         .saturating_add(DbWeight::get().reads(1 as Weight))123    //         .saturating_add(DbWeight::get().writes(1 as Weight))124    // }125}
modifiedpallets/nft/src/lib.rsdiffbeforeafterboth
--- a/pallets/nft/src/lib.rs
+++ b/pallets/nft/src/lib.rs
@@ -251,6 +251,13 @@
     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_chain_limits() -> Weight;
+    fn set_contract_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;
 }
 
 #[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]
@@ -1276,7 +1283,7 @@
         /// * collection_id.
         /// 
         /// * schema: SchemaVersion: enum
-        #[weight = 0]
+        #[weight = T::WeightInfo::set_schema_version()]
         pub fn set_schema_version(
             origin,
             collection_id: CollectionId,
@@ -1376,12 +1383,15 @@
         }
 
         // Sudo permissions function
-        #[weight = 0]
+        #[weight = T::WeightInfo::set_chain_limits()]
         pub fn set_chain_limits(
             origin,
             limits: ChainLimits
         ) -> DispatchResult {
+
+            #[cfg(not(feature = "runtime-benchmarks"))]
             ensure_root(origin)?;
+
             <ChainLimit>::put(limits);
             Ok(())
         }
@@ -1432,15 +1442,18 @@
         /// -`contract_address`: Address of the contract to sponsor
         /// -`rate_limit`: Number of blocks to wait until the next sponsored transaction is allowed
         /// 
-        #[weight = 0]
+        #[weight = T::WeightInfo::set_contract_sponsoring_rate_limit()]
         pub fn set_contract_sponsoring_rate_limit(
             origin,
             contract_address: T::AccountId,
             rate_limit: T::BlockNumber
         ) -> DispatchResult {
             let sender = ensure_signed(origin)?;
-            Self::ensure_contract_owned(sender, &contract_address)?;
 
+            #[cfg(feature = "runtime-benchmarks")]
+            <ContractOwner<T>>::insert(contract_address.clone(), sender.clone());
+
+            Self::ensure_contract_owned(sender, &contract_address)?;
             <ContractSponsoringRateLimit<T>>::insert(contract_address, rate_limit);
             Ok(())
         }
@@ -1456,15 +1469,18 @@
         /// -`contract_address`: Address of the contract.
         /// 
         /// - `enable`: .  
-        #[weight = 0]
+        #[weight = T::WeightInfo::toggle_contract_white_list()]
         pub fn toggle_contract_white_list(
             origin,
             contract_address: T::AccountId,
             enable: bool
         ) -> DispatchResult {
             let sender = ensure_signed(origin)?;
-            Self::ensure_contract_owned(sender, &contract_address)?;
 
+            #[cfg(feature = "runtime-benchmarks")]
+            <ContractOwner<T>>::insert(contract_address.clone(), sender.clone());
+
+            Self::ensure_contract_owned(sender, &contract_address)?;
             <ContractWhiteListEnabled<T>>::insert(contract_address, enable);
             Ok(())
         }
@@ -1480,15 +1496,18 @@
         /// -`contract_address`: Address of the contract.
         ///
         /// -`account_address`: Address to add.
-        #[weight = 0]
+        #[weight = T::WeightInfo::add_to_contract_white_list()]
         pub fn add_to_contract_white_list(
             origin,
             contract_address: T::AccountId,
             account_address: T::AccountId
         ) -> DispatchResult {
             let sender = ensure_signed(origin)?;
-            Self::ensure_contract_owned(sender, &contract_address)?;
+
+            #[cfg(feature = "runtime-benchmarks")]
+            <ContractOwner<T>>::insert(contract_address.clone(), sender.clone());
             
+            Self::ensure_contract_owned(sender, &contract_address)?;      
             <ContractWhiteList<T>>::insert(contract_address, account_address, true);
             Ok(())
         }
@@ -1504,20 +1523,23 @@
         /// -`contract_address`: Address of the contract.
         ///
         /// -`account_address`: Address to remove.
-        #[weight = 0]
+        #[weight = T::WeightInfo::remove_from_contract_white_list()]
         pub fn remove_from_contract_white_list(
             origin,
             contract_address: T::AccountId,
             account_address: T::AccountId
         ) -> DispatchResult {
             let sender = ensure_signed(origin)?;
+
+            #[cfg(feature = "runtime-benchmarks")]
+            <ContractOwner<T>>::insert(contract_address.clone(), sender.clone());
+
             Self::ensure_contract_owned(sender, &contract_address)?;
-            
             <ContractWhiteList<T>>::remove(contract_address, account_address);
             Ok(())
         }
 
-        #[weight = 0]
+        #[weight = T::WeightInfo::set_collection_limits()]
         pub fn set_collection_limits(
             origin,
             collection_id: u32,
modifiedruntime/src/nft_weights.rsdiffbeforeafterboth
--- a/runtime/src/nft_weights.rs
+++ b/runtime/src/nft_weights.rs
@@ -113,19 +113,44 @@
             .saturating_add(DbWeight::get().reads(2 as Weight))
             .saturating_add(DbWeight::get().writes(1 as Weight))
     }
-    // fn set_chain_limits() -> Weight {
-    //     (0 as Weight)
-    //         .saturating_add(DbWeight::get().reads(1 as Weight))
-    //         .saturating_add(DbWeight::get().writes(1 as Weight))
-    // }
     fn enable_contract_sponsoring() -> Weight {
         (13_000_000 as Weight)
             .saturating_add(DbWeight::get().reads(1 as Weight))
             .saturating_add(DbWeight::get().writes(1 as Weight))
     }
-    // fn set_contract_sponsoring_rate_limit() -> Weight {
-    //     (0 as Weight)
-    //         .saturating_add(DbWeight::get().reads(1 as Weight))
-    //         .saturating_add(DbWeight::get().writes(1 as Weight))
-    // }
+    fn set_schema_version() -> Weight {
+        (8_500_000 as Weight)
+            .saturating_add(DbWeight::get().reads(2 as Weight))
+            .saturating_add(DbWeight::get().writes(1 as Weight))
+    }
+    fn set_chain_limits() -> Weight {
+        (1_300_000 as Weight)
+            .saturating_add(DbWeight::get().reads(0 as Weight))
+            .saturating_add(DbWeight::get().writes(1 as Weight))
+    }
+    fn set_contract_sponsoring_rate_limit() -> Weight {
+        (3_500_000 as Weight)
+            .saturating_add(DbWeight::get().reads(0 as Weight))
+            .saturating_add(DbWeight::get().writes(2 as Weight))
+    }    
+    fn toggle_contract_white_list() -> Weight {
+        (3_000_000 as Weight)
+            .saturating_add(DbWeight::get().reads(0 as Weight))
+            .saturating_add(DbWeight::get().writes(2 as Weight))
+    }    
+    fn add_to_contract_white_list() -> Weight {
+        (3_000_000 as Weight)
+            .saturating_add(DbWeight::get().reads(0 as Weight))
+            .saturating_add(DbWeight::get().writes(2 as Weight))
+    }    
+    fn remove_from_contract_white_list() -> Weight {
+        (3_200_000 as Weight)
+            .saturating_add(DbWeight::get().reads(0 as Weight))
+            .saturating_add(DbWeight::get().writes(2 as Weight))
+    }
+    fn set_collection_limits() -> Weight {
+        (8_900_000 as Weight)
+            .saturating_add(DbWeight::get().reads(2 as Weight))
+            .saturating_add(DbWeight::get().writes(1 as Weight))
+    }
 }