The ERC20.transfer() and ERC20.transferFrom() functions return a boolean value indicating success. This parameter needs to be checked for success. Some tokens do not revert if the transfer failed but return false instead.
_battle() function does not check the return value of these functions.
Tokens that don't actually perform the transfer and return false are still counted as a correct transfer.
Manual Review
We recommend using OpenZeppelin’s SafeERC20 versions with the safeTransfer() and safeTransferFrom() functions that handle the return values check.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.