ERC-20 tokens must strictly follow the standard:
transfer(), transferFrom(), and approve() must return a boolean value
All balance-changing operations must emit standardized Transfer and Approval events
Clients, CEX deposit validators, and off-chain tools expect non-reverting behavior and correct ABI return data
ERC20.sol and its inherited transfer logic reverts instead of returning false, fails to return true, and does not consistently emit required events
Off-chain systems expecting compliant ERC-20 behavior will reject transfers, causing stuck deposits, failed withdrawals, and unusable integrations
Likelihood:
ERC-20 bridges, CEXs, and wallets routinely call transfer() expecting a boolean return → incompatibility always occurs during integration testing
Payment routers and older contracts interacting with the token expect non-reverting behavior → operations fail consistently during routing
Impact:
Deposits/withdrawals on CEX or bridge systems may fail or be rejected, causing user funds to become stuck
Off-chain indexers may miscount balances because events are missing, leading to incorrect visible balances and broken accounting
** ->Expected:**
returned == true
** ->Actual:**
Contract returns no data, causing client failure.
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.
The contest is complete and the rewards are being distributed.