The _burn function does not emit the required Transfer event when tokens are burned. According to the ERC20 standard, any token burning must emit a Transfer event with from set to the sender address and to set to the zero address. Without this event, external observers cannot track token burning, breaking interoperability with wallets, block explorers, and other smart contracts.
The function uses Yul assembly for gas optimization but omits the emission of the Transfer event after updating the token balances and total supply.
Likelihood:
Every burn operation fails to emit the required event, affecting all burns.
The absence of events is immediately apparent to any external observer or tool that relies on events.
Impact:
· Broken ERC20 Compliance: The token does not fully comply with the ERC20 standard, which may cause integration issues with exchanges, wallets, and other DeFi protocols.
Lack of Transparency: External parties cannot track burning activities, leading to a loss of transparency and auditability.
Supply Tracking Issues: Without burn events, external tools cannot accurately track the circulating supply or calculate burn rates.
Interoperability Issues: Smart contracts that rely on Transfer events to react to token burning (e.g., deflationary token trackers, reward calculations) will not function correctly.
Emit a Transfer event with from set to the account and to set to address(0) after updating balances:
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.