The joinGame
function uses transferFrom()
but does not verify how many tokens were actually received. This opens up underpayment exploits with ERC20s that include fees or have broken implementations.
This code assumes success and the full amount, but certain tokens (e.g., fee-on-transfer tokens) reduce the transferred amount.
Malicious users may join games without committing the full stake.
Honest users are at financial disadvantage.
Manual review
Custom ERC20 mocks with fee-on-transfer behavior
Validate the contract balance before and after:
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.