git.delta.rocks / unique-network / refs/commits / 5743a92bf274

difftreelog

NFTPAR-280. Rate limit for CreateItem

str-mv2021-01-12parent: #1b2f5b5.patch.diff
in: master

1 file changed

modifiedpallets/nft/src/lib.rsdiffbeforeafterboth
419 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>;
420420
421 /// Tokens transfer baskets421 /// Tokens transfer baskets
422 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 }
1475
1476 #[weight = T::WeightInfo::add_to_contract_white_list()]
1477 pub fn wasm_dummy_method(
1478 origin
1479 ) -> DispatchResult {
1480 let sender = ensure_signed(origin)?;
1481 Ok(())
1482 }
14831476
1484 /// 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)) => {
2300
2301 // sponsor timeout
2302 let block_number = <system::Module<T>>::block_number() as T::BlockNumber;
2303
2304 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 }
23072316
2308 // check free create limit2317 // check free create limit
2309 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).sponsor
2313 } else {2323 } else {