Standard ERC-20 implementations (like OpenZeppelin) explicitly inherit from the IERC20 interface (contract ERC20 is IERC20).
This ensures that the contract actually implements all functions required by the interface and signatures match exactly.
The ERC20 contract in src/ERC20.sol implements the functions required by the standard (transfer , approve, etc.) but does not mark is IERC20 in its declaration.
Likelihood:
The functions are present and public.
Impact:
Missing Compile-Time Checks: If a function signature in ERC20 is slightly wrong (e.g., transfer returning void instead of bool), the compiler won't throw an error because it's not trying to match the IERC20 interface.
Integration Issues: Some smart contract tools or EIP-165 checks (if added later) might rely on explicit inheritance to verify compliance.
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.