From 57a41c175b30d922b1c7def36c569f0ee4740c97 Mon Sep 17 00:00:00 2001 From: str-mv Date: Fri, 25 Dec 2020 15:21:19 +0000 Subject: [PATCH] NFTPAR-260_217. Benchmarks --- --- a/pallets/nft/src/benchmarking.rs +++ b/pallets/nft/src/benchmarking.rs @@ -355,4 +355,66 @@ Nft::::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 = "Test1".encode_utf16().collect::>(); + let col_desc1: Vec = "TestDescription1".encode_utf16().collect::>(); + let token_prefix1: Vec = b"token_prefix1".to_vec(); + let mode: CollectionMode = CollectionMode::NFT; + let caller: T::AccountId = T::AccountId::from(whitelisted_caller()); + Nft::::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 = "Test1".encode_utf16().collect::>(); + let col_desc1: Vec = "TestDescription1".encode_utf16().collect::>(); + let token_prefix1: Vec = b"token_prefix1".to_vec(); + let mode: CollectionMode = CollectionMode::NFT; + let caller: T::AccountId = T::AccountId::from(whitelisted_caller()); + Nft::::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 = "Test1".encode_utf16().collect::>(); + let col_desc1: Vec = "TestDescription1".encode_utf16().collect::>(); + let token_prefix1: Vec = b"token_prefix1".to_vec(); + let mode: CollectionMode = CollectionMode::NFT; + let caller: T::AccountId = T::AccountId::from(whitelisted_caller()); + Nft::::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::::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 --- a/pallets/nft/src/default_weights.rs +++ b/pallets/nft/src/default_weights.rs @@ -107,19 +107,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)) + } } --- 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)?; + ::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")] + >::insert(contract_address.clone(), sender.clone()); + + Self::ensure_contract_owned(sender, &contract_address)?; >::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")] + >::insert(contract_address.clone(), sender.clone()); + + Self::ensure_contract_owned(sender, &contract_address)?; >::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")] + >::insert(contract_address.clone(), sender.clone()); + Self::ensure_contract_owned(sender, &contract_address)?; >::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")] + >::insert(contract_address.clone(), sender.clone()); + Self::ensure_contract_owned(sender, &contract_address)?; - >::remove(contract_address, account_address); Ok(()) } - #[weight = 0] + #[weight = T::WeightInfo::set_collection_limits()] pub fn set_collection_limits( origin, collection_id: u32, --- 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)) + } } -- gitstuff