difftreelog
NFTPAR-280. Rate limit for CreateItem
in: master
1 file changed
pallets/nft/src/lib.rsdiffbeforeafterboth419 pub AddressTokens get(fn address_tokens): double_map hasher(identity) CollectionId, hasher(twox_64_concat) T::AccountId => Vec<TokenId>;419 pub AddressTokens get(fn address_tokens): double_map hasher(identity) CollectionId, hasher(twox_64_concat) T::AccountId => Vec<TokenId>;420420421 /// Tokens transfer baskets421 /// Tokens transfer baskets422 pub CreateItemBasket get(fn create_item_basket): map hasher(identity) CollectionId => T::BlockNumber;422 pub NftTransferBasket get(fn nft_transfer_basket): double_map hasher(identity) CollectionId, hasher(identity) TokenId => T::BlockNumber;423 pub NftTransferBasket get(fn nft_transfer_basket): double_map hasher(identity) CollectionId, hasher(identity) TokenId => T::BlockNumber;423 pub FungibleTransferBasket get(fn fungible_transfer_basket): double_map hasher(identity) CollectionId, hasher(twox_64_concat) T::AccountId => T::BlockNumber;424 pub FungibleTransferBasket get(fn fungible_transfer_basket): double_map hasher(identity) CollectionId, hasher(twox_64_concat) T::AccountId => T::BlockNumber;424 pub ReFungibleTransferBasket get(fn refungible_transfer_basket): double_map hasher(identity) CollectionId, hasher(identity) TokenId => T::BlockNumber;425 pub ReFungibleTransferBasket get(fn refungible_transfer_basket): double_map hasher(identity) CollectionId, hasher(identity) TokenId => T::BlockNumber;1473 Ok(())1474 Ok(())1474 }1475 }14751476 #[weight = T::WeightInfo::add_to_contract_white_list()]1477 pub fn wasm_dummy_method(1478 origin1479 ) -> DispatchResult {1480 let sender = ensure_signed(origin)?;1481 Ok(())1482 }148314761484 /// Remove an address from smart contract white list.1477 /// Remove an address from smart contract white list.1485 /// 1478 /// 2305 let mut sponsor: T::AccountId = match IsSubType::<Call<T>>::is_sub_type(call) {2298 let mut sponsor: T::AccountId = match IsSubType::<Call<T>>::is_sub_type(call) {2306 Some(Call::create_item(collection_id, _owner, _properties)) => {2299 Some(Call::create_item(collection_id, _owner, _properties)) => {23002301 // sponsor timeout2302 let block_number = <system::Module<T>>::block_number() as T::BlockNumber;23032304 let limit = <Collection<T>>::get(collection_id).limits.sponsor_transfer_timeout;2305 let mut sponsored = true;2306 if <CreateItemBasket<T>>::contains_key(collection_id) {2307 let last_tx_block = <CreateItemBasket<T>>::get(collection_id);2308 let limit_time = last_tx_block + limit.into();2309 if block_number <= limit_time {2310 sponsored = false;2311 }2312 }2313 if sponsored {2314 <CreateItemBasket<T>>::insert(collection_id, block_number);2315 }230723162308 // check free create limit2317 // check free create limit2309 if (<Collection<T>>::get(collection_id).limits.sponsored_data_size >= (_properties.len() as u32)) &&2318 if (<Collection<T>>::get(collection_id).limits.sponsored_data_size >= (_properties.len() as u32)) &&2310 (<Collection<T>>::get(collection_id).sponsor_confirmed)2319 (<Collection<T>>::get(collection_id).sponsor_confirmed) &&2320 (sponsored)2311 {2321 {2312 <Collection<T>>::get(collection_id).sponsor2322 <Collection<T>>::get(collection_id).sponsor2313 } else {2323 } else {