According to the ERC20 standard, the Transfer event must be emitted on every token balance change, including:
Minting: Transfer(address(0), account, value) (from zero address)
Burning: Transfer(account, address(0), value) (to zero address)
Transfers: Transfer(from, to, value)
specific issue
The _mint and _burn functions in the contract do not emit any Transfer events, while only the _transfer function correctly emits the event.
function _mint(address account, uint256 value) internal {
assembly ("memory-safe") {
// ... logic to increase supply and balance ...
//NO Transfer event emitted!
}
}
function _burn(address account, uint256 value) internal {
assembly ("memory-safe") {
// ... logic to decrease supply and balance ...
// NO Transfer event emitted!
}
}
Likelihood: Certain
Every mint and burn operation will fail to emit required events
This violates the ERC20 standard explicitly
External tools rely on these events to track token supply changes
Impact: Medium
Broken Compliance: Contract is not ERC20 compliant
Audit Failure: Will fail any standard ERC20 compliance audit
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.