Omniscia Olympus DAO Audit

ERC20 Manual Review Findings

ERC20 Manual Review Findings

ERC-01M: Non-Standard Mint Implementation

TypeSeverityLocation
Standard ConformityMinorERC20.sol:L95-L101

Description:

The _mint function of the ERC20 implementation invokes the _beforeTokenTransfer hook and the Transfer event with the from argument being the address(this), an adaptation that will cause off-chain explorers to misbehave.

Example:

contracts/types/ERC20.sol
95function _mint(address account_, uint256 ammount_) internal virtual {
96 require(account_ != address(0), "ERC20: mint to the zero address");
97 _beforeTokenTransfer(address( this ), account_, ammount_);
98 _totalSupply = _totalSupply.add(ammount_);
99 _balances[account_] = _balances[account_].add(ammount_);
100 emit Transfer(address( this ), account_, ammount_);
101}

Recommendation:

We advise both instances to be replaced by the canonical address(0) to enable proper interfacing of block explorers.

Alleviation:

The hook and event instances now properly use the zero address instead of the self address to indicate the origin of the "transfer" operation, thereby alleviating this exhibit.