If you ever used ethereum dexes like uniswap/1inch or yield farming dapps, you would be aware that you have to make two transactions.
The first transaction is to Approve spending or depositing a certain amount of a specific token.
The second step is where you actually make a trade or deposit tokens into a liquidity pool or farm.
Now, In first approve transaction, there are two types — 'approve once' and 'approval all'.
In both cases, you are giving permission to smart contract to manage funds on your behalf.
Difference being, in first one, you are giving permission for exact amount. For example, , if you are approving 100 usdc, that's the only amount smart contract will have permission for.
While, In second, it will have access to all your funds, now and in future — you can revoke this, we'll get there in a bit.
Unlimited allowances offers a superior user experience as the user just needs to approve it once, and not repeat the process for subsequent deposits. In simple words, it saves you from insane gas fees.
However, the downside of infinite token allowances is it presents an opportunity to exploit users. If a user gives infinite approval to a smart contract address in a DeFi application and if that smart contract gets exploited or some bad actor somehow gains control of the address, they can sweep the specific tokens from any wallet that gave permission to spend their tokens. Hardware wallets doesn't save you from this either.
How unlimited allowance can fuck you up:
https://twitter.com/amanusk_/status/1313070958794727430So Is single allowance is better?
Security-wise yes, but paying hundreds of dollars for approval transactions might not be a sound decision either. It's a choice between lesser of two evils.
If you drift towards unlimited allowances part, do check your outstanding allowances periodically, and revoke those that you're not actively using any more (approvals don't expire). Here are some websites you can use;
1)
https://tac.dappstar.io/2)
https://approved.zone/3)
https://ethallowance.com/4)
https://debank.com/approve 5)
https://revoke.cash/Each Revoke transaction will set the spending limit for that smart contract address back to 0, protecting your wallet and tokens. Do keep in mind that Revoke transactions also cost gas.