eYe Token - Smart Contract Audit Report
MEDIA EYE is building a new ERC20 token with a liquidity generation event.We audited the project team's ERC20_Taxed contract at 0xf0d0036f959fe717b68edfb24e8ff336db82a342 on the Binance Smart Chain Testnet.
Notes on the Contract:
Audit Findings Summary
- The total supply of the token is determined by the owner on deployment.
- No mint or burn functions exist, though the circulating supply can be decreased by sending tokens to the 0x..dead address.
- Initially, 100% of the total supply is held by the owner.
- There is a tax fee on all transfers where both the sender is not on the sender tax whitelist and the recipient is not on the recipient tax whitelist.
- The tokens collected from the tax fee are sent to the tax receiver wallet controlled by the team.
- This contract also supports a Liquidity Generation Event consisting of one or many rounds as determined by the owner.
- Each round has a set duration, a maximum contribution amount per user, and a whitelist of addresses that are able to participate; these values are determined by the LGE Whitelister address, which is set by the owner.
- After the rounds are created and the Pair address is set, anyone may kick off the Liquidity Generation Event by transferring tokens to the Pair address.
- Only whitelisted users may participate in the Liquidity Generation Event by purchasing tokens from the Pair; there may be a different set of whitelisted users for every round.
- During the Liquidity Generation Event, the amount of purchased tokens are recorded to ensure it does not exceed the maximum allowed amount per user per round.
- The LGE Whitelister address can set the Pair address, delete the round data, modify the round duration, maximum contribution amount, and list of whitelisted users for any round at any time.
- The owner can set the tax rate to any value up to 10% at any time.
- The owner can set the tax receiver address to any address at any time.
- The owner can add or remove any address from the sender or recipient tax whitelists at any time; initially, only the owner and the tax receiver addresses are exempt from any tax fees.
- The owner can set the LGE Whitelister address to any address at any time; initially, the owner is set as the LGE Whitelister.
- The contract complies with the ERC-20 standard.
- As the contract is deployed with Solidity v0.8.9, it is protected from overflows.
- No security threats from outside attackers were identified.
- Ensure trust in the team as they have some control in the ecosystem.
- Date: November 5th, 2021
External Threat Results
|Arbitrary Storage Write||N/A||PASS|
|Delegate Call to Untrusted Contract||N/A||PASS|
|Dependence on Predictable Variables||N/A||PASS|
|State Change External Calls||N/A||PASS|
|User Supplied Assertion||N/A||PASS|
|Critical Solidity Compiler||N/A||PASS|
|Overall Contract Safety||PASS|
($) = payable function # = non-constant function + [Int] IERC20 - [Ext] totalSupply - [Ext] balanceOf - [Ext] transfer # - [Ext] allowance - [Ext] approve # - [Ext] transferFrom # + [Int] IERC20Metadata (IERC20) - [Ext] name - [Ext] symbol - [Ext] decimals + Context - [Int] _msgSender - [Int] _msgData + ERC20 (Context, IERC20, IERC20Metadata) - [Pub]
# - [Pub] name - [Pub] symbol - [Pub] decimals - [Pub] totalSupply - [Pub] balanceOf - [Pub] transfer # - [Pub] allowance - [Pub] approve # - [Pub] transferFrom # - [Pub] increaseAllowance # - [Pub] decreaseAllowance # - [Int] _transfer # - [Int] _mint # - [Int] _burn # - [Int] _approve # - [Int] _beforeTokenTransfer # - [Int] _afterTokenTransfer # + Ownable (Context) - [Pub] # - [Pub] owner - [Pub] renounceOwnership # - modifiers: onlyOwner - [Pub] transferOwnership # - modifiers: onlyOwner + ERC20_Taxed (ERC20, Ownable) - [Pub] # - modifiers: ERC20 - [Pub] getLGEWhitelistRound - [Ext] setTaxRate # - modifiers: onlyOwner - [Ext] setTaxReceiver # - modifiers: onlyOwner - [Ext] addToSenderWhitelist # - modifiers: onlyOwner - [Ext] removeFromSenderWhitelist # - modifiers: onlyOwner - [Ext] addToRecipientWhitelist # - modifiers: onlyOwner - [Ext] removeFromRecipientWhitelist # - modifiers: onlyOwner - [Ext] transferLGEWhitelister # - modifiers: onlyOwner - [Ext] createLGEWhitelist # - modifiers: onlyLGEWhitelister - [Ext] modifyLGEWhitelist # - modifiers: onlyLGEWhitelister - [Int] _transfer # - [Int] _applyLGEWhitelist # - [Int] _transferLGEWhitelister #