Token-0x

First Flight #54
Beginner FriendlyDeFi
100 EXP
Submission Details
Impact: medium
Likelihood: high

Mint Missing Event. _mint() does not emit Transfer event violating ERC20 standardMint Missing Event-

Author Revealed upon completion

Root + Impact

Description

  • ERC20 standard requires Transfer(address(0), to, value) event on mint.

  • Token-0x _mint() updates state but never emits the Transfer event.

// src/helpers/ERC20Internals.sol#L134-L156
function _mint(address account, uint256 value) internal {
assembly ("memory-safe") {
// ... state updates ...
sstore(supplySlot, add(supply, value))
sstore(accountBalanceSlot, add(accountBalance, value))
@> // Missing: log3 for Transfer event!
}
}

Risk

Likelihood:

  • Every mint operation is affected

  • 100% occurrence rate

Impact:

  • Wallets and block explorers won't detect mints

  • DeFi integrations relying on Transfer events will break

  • Non-compliant with ERC20 standard

Proof of Concept

function test_BUG_MintDoesNotEmitTransferEvent() public {
vm.expectEmit(true, true, false, true);
emit Transfer(address(0), alice, 100e18);
token.mint(alice, 100e18); // FAILS - no event emitted
}

Recommended Mitigation

function _mint(address account, uint256 value) internal {
assembly ("memory-safe") {
// ... existing code ...
sstore(accountBalanceSlot, add(accountBalance, value))
+ // Emit Transfer event
+ mstore(ptr, value)
+ log3(ptr, 0x20, 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef, 0, account)
}
}
---
## Finding #5 — Burn Missing Event
**Titre :**

_burn() does not emit Transfer event violating ERC20 standard

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.

Give us feedback!