BlockMonsters Token - Smart Contract Audit Report
Summary
BlockMonsters ($MNSTRS) is a new community-driven DeFi token on the Binance Smart Chain.
Notes on the Contract:Audit Findings Summary
- The total supply of the token is set to 500 million $MNSTRS [500,000,000].
- No minting or burn functions are present; though the circulating supply can be reduced by sending tokens to the 0x..dead address, if desired.
- At the time of writing this report, 42.45% of the total $MNSTRS token supply is stored in the BlockMonsterWallet contract.
- 12.3% of the total supply is in Pancakeswap liquidity.
- Of that liquidity, 99.63% of the LP tokens have been burned.
- 8% of the total $MNSTRS token supply is stored in the BlockMonsterVestedWallet contract.
- 4.2% of the total $MNSTRS token supply is stored in the BuyStarterReplacementV2 contract.
- The BlockMonsterWallet, BlockMonsterVestedWallet, and BuyStarterReplacementV2 contracts were all out of scope for the purpose of this audit.
- There is a 4% operations fee and a 1% rewards fee on all transactions for any address that participates in a transfer when buying or selling to Pancakeswap.
- The operations fee collected on transactions is stored in the contract and, once a threshold value (determined by the owner) is met, is swapped for BNB and sent back to the contract. The BNB is then sent from the contract to the team's operations wallet.
- The tokens collected from the rewards fee are sent directly to the team's rewards wallet.
- As the project is implemented with Solidity v0.8.0, it is protected from overflows.
Ownership Controls:- Ownership has not been renounced.
- The owner has the ability to activate/deactivate transfer fees at any time.
- The owner has the ability to withdraw any BNB or $MNSTRS tokens from the contract address at any time.
- The owner has the ability to change the Pancakeswap Router address as well as the Pancakeswap Pair address to a new address at any time.
- The owner has the ability to update the operations wallet and rewards wallet to any address at any time.
- No external threats were identified.
- Date: September 29th, 2021
Audit Results
Vulnerability Category | Notes | Result |
---|---|---|
Arbitrary Storage Write | N/A | PASS |
Arbitrary Jump | N/A | PASS |
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
Inheritence Chart
Functions Overview
($) = 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
- [Prv] _setOwner #
+ [Lib] SafeMath
- [Int] tryAdd
- [Int] trySub
- [Int] tryMul
- [Int] tryDiv
- [Int] tryMod
- [Int] add
- [Int] sub
- [Int] mul
- [Int] div
- [Int] mod
- [Int] sub
- [Int] div
- [Int] mod
+ [Int] IPancakePair
- [Ext] name
- [Ext] symbol
- [Ext] decimals
- [Ext] totalSupply
- [Ext] balanceOf
- [Ext] allowance
- [Ext] approve #
- [Ext] transfer #
- [Ext] transferFrom #
- [Ext] DOMAIN_SEPARATOR
- [Ext] PERMIT_TYPEHASH
- [Ext] nonces
- [Ext] permit #
- [Ext] MINIMUM_LIQUIDITY
- [Ext] factory
- [Ext] token0
- [Ext] token1
- [Ext] getReserves
- [Ext] price0CumulativeLast
- [Ext] price1CumulativeLast
- [Ext] kLast
- [Ext] mint #
- [Ext] burn #
- [Ext] swap #
- [Ext] skim #
- [Ext] sync #
- [Ext] initialize #
+ [Int] IPancakeRouter01
- [Ext] factory
- [Ext] WETH
- [Ext] addLiquidity #
- [Ext] addLiquidityETH ($)
- [Ext] removeLiquidity #
- [Ext] removeLiquidityETH #
- [Ext] removeLiquidityWithPermit #
- [Ext] removeLiquidityETHWithPermit #
- [Ext] swapExactTokensForTokens #
- [Ext] swapTokensForExactTokens #
- [Ext] swapExactETHForTokens ($)
- [Ext] swapTokensForExactETH #
- [Ext] swapExactTokensForETH #
- [Ext] swapETHForExactTokens ($)
- [Ext] quote
- [Ext] getAmountOut
- [Ext] getAmountIn
- [Ext] getAmountsOut
- [Ext] getAmountsIn
+ [Int] IPancakeRouter02 (IPancakeRouter01)
- [Ext] removeLiquidityETHSupportingFeeOnTransferTokens #
- [Ext] removeLiquidityETHWithPermitSupportingFeeOnTransferTokens #
- [Ext] swapExactTokensForTokensSupportingFeeOnTransferTokens #
- [Ext] swapExactETHForTokensSupportingFeeOnTransferTokens ($)
- [Ext] swapExactTokensForETHSupportingFeeOnTransferTokens #
+ MNSTRS (IERC20, Ownable)
- [Pub] #
- [Ext] ($)
- [Pub] name
- [Pub] symbol
- [Pub] decimals
- [Pub] totalSupply
- [Pub] balanceOf
- [Pub] allowance
- [Ext] transfer #
- [Ext] transferFrom #
- [Pub] increaseAllowance #
- [Pub] decreaseAllowance #
- [Int] distributeFees #
- [Int] _transfer #
- [Ext] approve #
- [Prv] _approve #
- [Pub] setPairAddress #
- modifiers: onlyOwner
- [Pub] setRouterAddress #
- modifiers: onlyOwner
- [Ext] setOperationsVaultAddress #
- modifiers: onlyOwner
- [Ext] setRewardsVaultAddress #
- modifiers: onlyOwner
- [Ext] setPreSaleAddress #
- modifiers: onlyOwner
- [Ext] setPrivateSaleAddress #
- modifiers: onlyOwner
- [Ext] activateFeesOnTransfer #
- modifiers: onlyOwner
- [Ext] deactivateFeesOnTransfer #
- modifiers: onlyOwner
- [Ext] setSwapThreshold #
- modifiers: onlyOwner
- [Int] _calculateFees
- [Int] _shouldTakeFee
- [Int] _claimTransfer
- [Int] _swapTokensForNative #
- modifiers: liquiditySemaphore
- [Ext] withdrawNative #
- modifiers: onlyOwner
- [Ext] withdrawToken #
- modifiers: onlyOwner