From 7e808da4a3d9fddfdf3cf416dddd52bd60b4855c Mon Sep 17 00:00:00 2001 From: Daniel Shiposha Date: Sun, 05 Jun 2022 18:10:03 +0000 Subject: [PATCH] fix: revert set_allowance --- --- a/pallets/common/src/lib.rs +++ b/pallets/common/src/lib.rs @@ -1298,7 +1298,6 @@ spender: T::CrossAccountId, token: TokenId, amount: u128, - nesting_budget: &dyn Budget, ) -> DispatchResultWithPostInfo; fn transfer_from( &self, --- a/pallets/fungible/src/common.rs +++ b/pallets/fungible/src/common.rs @@ -226,7 +226,6 @@ spender: T::CrossAccountId, token: TokenId, amount: u128, - _nesting_budget: &dyn Budget, ) -> DispatchResultWithPostInfo { ensure!( token == TokenId::default(), --- a/pallets/nonfungible/src/common.rs +++ b/pallets/nonfungible/src/common.rs @@ -308,15 +308,14 @@ spender: T::CrossAccountId, token: TokenId, amount: u128, - nesting_budget: &dyn Budget, ) -> DispatchResultWithPostInfo { ensure!(amount <= 1, >::NonfungibleItemsHaveNoAmount); with_weight( if amount == 1 { - >::set_allowance(self, &sender, token, Some(&spender), nesting_budget) + >::set_allowance(self, &sender, token, Some(&spender)) } else { - >::set_allowance(self, &sender, token, None, nesting_budget) + >::set_allowance(self, &sender, token, None) }, >::approve(), ) --- a/pallets/nonfungible/src/erc.rs +++ b/pallets/nonfungible/src/erc.rs @@ -269,11 +269,8 @@ let caller = T::CrossAccountId::from_eth(caller); let approved = T::CrossAccountId::from_eth(approved); let token = token_id.try_into()?; - let budget = self - .recorder - .weight_calls_budget(>::find_parent()); - >::set_allowance(self, &caller, token, Some(&approved), &budget) + >::set_allowance(self, &caller, token, Some(&approved)) .map_err(dispatch_to_evm::)?; Ok(()) } --- a/pallets/nonfungible/src/lib.rs +++ b/pallets/nonfungible/src/lib.rs @@ -878,7 +878,6 @@ sender: &T::CrossAccountId, token: TokenId, spender: Option<&T::CrossAccountId>, - nesting_budget: &dyn Budget, ) -> DispatchResult { if collection.permissions.access() == AccessMode::AllowList { collection.check_allowlist(sender)?; @@ -890,16 +889,10 @@ if let Some(spender) = spender { >::ensure_correct_receiver(spender)?; } - - let is_owned = >::check_indirectly_owned( - sender.clone(), - collection.id, - token, - None, - nesting_budget - )?; - if !is_owned { + let token_data = + >::get((collection.id, token)).ok_or(>::TokenNotFound)?; + if &token_data.owner != sender { ensure!( collection.ignores_owned_amount(sender), >::CantApproveMoreThanOwned @@ -926,9 +919,6 @@ // `from`, `to` checked in [`transfer`] collection.check_allowlist(spender)?; } - if >::get((collection.id, token)).as_ref() == Some(spender) { - return Ok(()); - } if let Some(source) = T::CrossTokenAddressMapping::address_to_token(from) { // TODO: should collection owner be allowed to perform this transfer? ensure!( @@ -943,6 +933,9 @@ ); return Ok(()); } + if >::get((collection.id, token)).as_ref() == Some(spender) { + return Ok(()); + } ensure!( collection.ignores_allowance(spender), >::ApprovedValueTooLow --- a/pallets/proxy-rmrk-core/src/lib.rs +++ b/pallets/proxy-rmrk-core/src/lib.rs @@ -414,13 +414,14 @@ let is_approval_required = cross_sender != spender; if is_approval_required { - >::set_allowance( - &collection, - &cross_sender, - nft_id, - Some(&spender), - &budget - ).map_err(Self::map_common_err_to_proxy)?; + // FIXME + // >::set_allowance( + // &collection, + // &cross_sender, + // nft_id, + // Some(&spender), + // &budget + // ).map_err(Self::map_common_err_to_proxy)?; return Ok(()); } --- a/pallets/refungible/src/common.rs +++ b/pallets/refungible/src/common.rs @@ -254,7 +254,6 @@ spender: T::CrossAccountId, token: TokenId, amount: u128, - _nesting_budget: &dyn Budget, ) -> DispatchResultWithPostInfo { with_weight( >::set_allowance(self, &sender, &spender, token, amount), --- a/pallets/unique/src/lib.rs +++ b/pallets/unique/src/lib.rs @@ -815,9 +815,8 @@ #[transactional] pub fn approve(origin, spender: T::CrossAccountId, collection_id: CollectionId, item_id: TokenId, amount: u128) -> DispatchResultWithPostInfo { let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?); - let budget = budget::Value::new(NESTING_BUDGET); - dispatch_call::(collection_id, |d| d.approve(sender, spender, item_id, amount, &budget)) + dispatch_call::(collection_id, |d| d.approve(sender, spender, item_id, amount)) } /// Change ownership of a NFT on behalf of the owner. See Approve method for additional information. After this method executes, the approval is removed so that the approved address will not be able to transfer this NFT again from this owner. -- gitstuff