The ERC20 standard has a known ERC20 race condition that must be mitigated to prevent attackers from stealing tokens. (See here)
- ERC20 approve() -> Race-condition
- approve(100) -> approve(50)
- Allowance Decrease
- Front-run -> Spend 150
- increaseAllowance()
- decreaseAllowance()