MekaMiners Token - Smart Contract Audit Report
Summary
MekaMiners ($MEKA) is building a new BEP-20 token.
We reviewed the MekaMiners contract at 0xbA8545ceE81EA0f20002944FD3E1792eF3Bc58f8 on the Binance Smart Chain Testnet.Notes on the Contract:Ownership Controls:
- The total supply of the token is set to 200 million $MEKA [200,000,000].
- No mint or burn functions are present; though the circulating supply can be reduced by sending tokens to the 0x..dead address if desired.
- There was no token allocation for our team to analyze as the contract has yet to be deployed to the mainnet.
- There is a fee charged on all transfers with Pancakeswap or any other approved DEX. A separate fee structure can be set by the team to apply a different fee percentage depending on whether the user is buying or selling during the transfer.
- The tokens collected from the transfer fee are sent directly to the Fee wallet controlled by the team.
- The contract features a cool-down mechanism that will prevent a user from trading with Pancakeswap (or any other approved DEX) if the cool-down time (set by the owner) since their last trade has not yet elapsed.
- The contract features a blacklist mechanism that prevents accounts specified by the owner from being able to participate in transfers.
- The contract complies with the BEP-20 token standard.
- Although the SafeMath library is utilized, the contract is implemented with Solidity v0.8.11 which has built-in overflow checks. SafeMath could be safely removed to reduce contract size and deployment costs.
- The owner can update the transfer fees when either buying or selling via Pancakeswap to any percentages at any time.
- The owner can enable/disable transfer fees and the cool-down mechanism at any time.
- The owner can update the cool-down wait time to any value at any time.
- The owner can pause all trading at any time.
- The owner can manually add/remove accounts from the transfer blacklist at any time.
- The owner can add or remove any address as an approved DEX pair or Router address at any time. The team can add any user's address to this list and the transfer fee will be applied on every transaction where the user is the sender or recipient.
- The owner can update the team's Fee wallet to any address at any time.
Audit Findings Summary
- No external threats were identified.
- Please ensure trust in the team prior to investing as they have substantial control in the ecosystem.
- Date: January 17th, 2022
Audit Results
Vulnerability Category | Notes | Result |
---|---|---|
Arbitrary Storage Write | N/A | PASS |
Arbitrary Jump | N/A | PASS |
Centralization of Control | WARNING | |
Delegate Call to Untrusted Contract | N/A | PASS |
Dependence on Predictable Variables | N/A | PASS |
Deprecated Opcodes | N/A | PASS |
Ether Thief | N/A | PASS |
Exceptions | N/A | PASS |
External Calls | N/A | PASS |
Flash Loans | N/A | PASS |
Integer Over/Underflow | N/A | PASS |
Multiple Sends | N/A | PASS |
Oracles | N/A | PASS |
Suicide | N/A | PASS |
State Change External Calls | N/A | PASS |
Unchecked Retval | N/A | PASS |
User Supplied Assertion | N/A | PASS |
Critical Solidity Compiler | N/A | PASS |
Overall Contract Safety | PASS |
Function Graph
Inheritance Chart
Functions Overview
($) = payable function
# = non-constant function
+ Context
- [Pub] #
- [Int] _msgSender
- [Int] _msgData
+ Ownable (Context)
- [Pub] #
- [Pub] owner
- [Pub] isOwner
- [Pub] renounceOwnership #
- modifiers: onlyOwner
- [Pub] transferOwnership #
- modifiers: onlyOwner
- [Int] _transferOwnership #
+ Pausable (Ownable)
- [Pub] _pause #
- modifiers: onlyOwner,whenNotPaused
- [Pub] _unpause #
- modifiers: onlyOwner,whenPaused
+ [Int] IBEP20
- [Ext] name
- [Ext] symbol
- [Ext] decimals
- [Ext] totalSupply
- [Ext] balanceOf
- [Ext] transfer #
- [Ext] allowance
- [Ext] approve #
- [Ext] transferFrom #
+ [Lib] SafeMath
- [Int] add
- [Int] sub
- [Int] sub
- [Int] mul
- [Int] div
- [Int] div
- [Int] mod
- [Int] mod
+ BEP20 (IBEP20, Context, Pausable)
- [Pub] #
- [Pub] name
- [Pub] symbol
- [Pub] decimals
- [Pub] totalSupply
- [Pub] balanceOf
- [Pub] transfer #
- modifiers: whenNotPaused
- [Pub] allowance
- [Pub] approve #
- modifiers: whenNotPaused
- [Pub] transferFrom #
- modifiers: whenNotPaused
- [Int] _transferFrom #
- [Pub] increaseAllowance #
- modifiers: whenNotPaused
- [Pub] decreaseAllowance #
- modifiers: whenNotPaused
- [Int] _transfer #
- [Int] _mint #
- [Int] _burn #
- [Int] _approve #
- [Int] _beforeTokenTransfer #
- [Int] _afterTokenTransfer #
+ [Int] IERC165
- [Ext] supportsInterface
+ [Int] IERC721 (IERC165)
- [Ext] balanceOf
- [Ext] ownerOf
- [Ext] safeTransferFrom #
- [Ext] transferFrom #
- [Ext] approve #
- [Ext] getApproved
- [Ext] setApprovalForAll #
- [Ext] isApprovedForAll
- [Ext] safeTransferFrom #
+ [Int] IERC721Enumerable (IERC721)
- [Ext] totalSupply
- [Ext] tokenOfOwnerByIndex
- [Ext] tokenOfOwner
- [Ext] tokenByIndex
+ MekaMiners (BEP20)
- [Pub] #
- modifiers: BEP20
- [Ext] setCooldownForTrades #
- modifiers: onlyOwner
- [Pub] setBuyFee #
- modifiers: onlyOwner
- [Pub] setSellFee #
- modifiers: onlyOwner
- [Ext] setFeeReceiveAddress #
- modifiers: onlyOwner
- [Pub] setPCSRouterdAddress #
- modifiers: onlyOwner
- [Ext] setLPAddress #
- modifiers: onlyOwner
- [Ext] getFees
- [Pub] isAddressLP
- [Ext] getFeeAddress
- [Ext] isBlacklisted
- modifiers: onlyOwner
- [Ext] updateTokenLock #
- modifiers: onlyOwner
- [Ext] updateApplyFee #
- modifiers: onlyOwner
- [Ext] bulkBlackList #
- modifiers: onlyOwner
- [Ext] updateBlackList #
- modifiers: onlyOwner
- [Pub] transfer #
- modifiers: whenNotPaused
- [Pub] transferFrom #
- modifiers: whenNotPaused
- [Prv] computeCut
- [Prv] isContract
- [Int] _beforeTokenTransfer #