NMBTC Token - Smart Contract Audit Report

Summary

NMBTC Token Audit Report NMBTC Token ($NMBTC) is a new community-driven DeFi token on the Binance Smart Chain.

We reviewed the NMBTC contract that is deployed at 0x5DdB331C3Ba48A1D68CbF50dD3bC7Aac407Dc115 on the Binance Smart Chain mainnet.

Notes on the Contract:
  • The total supply of the token is set to 42 trillion $NMBTC [42,000,000,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, 87.97% of the total supply has been sent to 0x..666 Burn address.
  • 1% of the total supply belongs to the $NMBTC Contract address.
  • 0.65% of the total supply is in Pancakeswap BUSD-T liquidity.
  • Of that liquidity, 97.33% of the LP tokens belong to an unverified contract.
  • 0.49% of the total supply is in Pancakeswap BNB liquidity.
  • Of that liquidity, 98.5% of the LP tokens belong to an unverified contract.

  • There is a 1% tax fee that is charged for any contract address that participate in a transfer. Although a liquidity fee exists in the contract, its percentage is set to 0 and cannot be changed.
  • The tokens collected through the tax fee are sent to the Burn address.
  • The contract utilizes the Safemath library to prevent overflows/underflows and complies with the BEP20 standard.
Ownership Controls:
  • Ownership has been renounced.
  • The owner could previously modify the tax fee and liquidity fee for both fee structures to any percentages at any time.
  • The owner could previously exclude and include accounts from transfer fees and reward distribution.
  • The owner could previously pause all trading at any time.
  • The owner could previously set and update a maximum transaction amount at any time, which will impose a limit to the number of tokens that could previously be transferred during any given transaction.
  • The owner could previously enable/disable automatic liquidity adds at any time.
  • The owner could previously update the threshold value needed to trigger an automatic liquidity add to any value.
  • The owner could previously update the distribution percentages of tokens collected from the tax fee that are allocated to the Weekly rewards wallet, FOMO Admin wallet, and Burn address.
  • The owner could previously enable/disable the weekly rewards mechanism.
  • The owner could previously update the minimum number of tokens a user must own as well as the minimum number of tokens that must be transferred to another user in order to become an eligible player.
  • The owner could previously update the number of top eligible players to any value at any time.
  • The owner could previously update the time interval between each "weekly" rewards distribution to any value at any time.
  • The owner could previously update the FOMO admin wallet to any address at any time. The owner must exercise caution when doing so as this wallet is responsible for paying rewards to buyers.
  • The owner could previously update the amount of time needed between buying transactions from Pancakeswap and minimum token amount that determines if a user is eligible for FOMO rewards.
Audit Findings Summary
  • No external threats were identified.
  • Ownership has been renounced by the team.
  • Date: December 3rd, 2021
  • Updated December 21th, 2021 after the team renounced ownership.

Audit Results

Vulnerability CategoryNotesResult
Arbitrary Storage WriteN/APASS
Arbitrary JumpN/APASS
Centralization of ControlN/APASS
Delegate Call to Untrusted ContractN/APASS
Dependence on Predictable VariablesN/APASS
Deprecated OpcodesN/APASS
Ether ThiefN/APASS
ExceptionsN/APASS
External CallsN/APASS
Flash LoansN/APASS
Integer Over/UnderflowN/APASS
Multiple SendsN/APASS
OraclesN/APASS
SuicideN/APASS
State Change External CallsN/APASS
Unchecked RetvalN/APASS
User Supplied AssertionN/APASS
Critical Solidity CompilerN/APASS
Overall Contract Safety PASS

Function Graph

ERC20 Token Graph


Inheritance Chart

Multi-file Token


Functions Overview


 ($) = payable function
 # = non-constant function
 
 + [Int] IERC20 
    - [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

 +  Context 
    - [Int] _msgSender
    - [Int] _msgData

 + [Lib] Address 
    - [Int] isContract
    - [Int] sendValue #
    - [Int] functionCall #
    - [Int] functionCall #
    - [Int] functionCallWithValue #
    - [Int] functionCallWithValue #
    - [Prv] _functionCallWithValue #

 +  Ownable (Context)
    - [Int]  #
    - [Pub] owner
    - [Pub] renounceOwnership #
       - modifiers: onlyOwner
    - [Pub] transferOwnership #
       - modifiers: onlyOwner
    - [Pub] geUnlockTime
    - [Pub] lock #
       - modifiers: onlyOwner
    - [Pub] unlock #

 + [Int] IUniswapV2Factory 
    - [Ext] feeTo
    - [Ext] feeToSetter
    - [Ext] getPair
    - [Ext] allPairs
    - [Ext] allPairsLength
    - [Ext] createPair #
    - [Ext] setFeeTo #
    - [Ext] setFeeToSetter #

 + [Int] IUniswapV2Pair 
    - [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] IUniswapV2Router01 
    - [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] IUniswapV2Router02 (IUniswapV2Router01)
    - [Ext] removeLiquidityETHSupportingFeeOnTransferTokens #
    - [Ext] removeLiquidityETHWithPermitSupportingFeeOnTransferTokens #
    - [Ext] swapExactTokensForTokensSupportingFeeOnTransferTokens #
    - [Ext] swapExactETHForTokensSupportingFeeOnTransferTokens ($)
    - [Ext] swapExactTokensForETHSupportingFeeOnTransferTokens #

 +  ForwardAccount 
    - [Pub]  #

 +  NMBTC (Context, IERC20, Ownable)
    - [Pub]  #
    - [Pub] setFomoAdmin #
       - modifiers: onlyOwner
    - [Pub] setfomoInterval #
       - modifiers: onlyOwner
    - [Pub] setMinFoMoBalance #
       - modifiers: onlyOwner
    - [Pub] getFomoAddress
    - [Pub] name
    - [Pub] symbol
    - [Pub] decimals
    - [Pub] totalSupply
    - [Pub] balanceOf
    - [Pub] transfer #
    - [Pub] allowance
    - [Pub] approve #
    - [Pub] transferFrom #
    - [Pub] increaseAllowance #
    - [Pub] decreaseAllowance #
    - [Pub] getTopPlayers
    - [Pub] getTipTopPlayer
    - [Pub] getPlayerAddr
    - [Pub] getPlayerInfo
    - [Pub] isExcludedFromReward
    - [Pub] totalFees
    - [Pub] deliver #
    - [Pub] reflectionFromToken
    - [Pub] tokenFromReflection
    - [Pub] excludeFromReward #
       - modifiers: onlyOwner
    - [Ext] includeInReward #
       - modifiers: onlyOwner
    - [Prv] _transferBothExcluded #
    - [Pub] excludeFromFee #
       - modifiers: onlyOwner
    - [Pub] includeInFee #
       - modifiers: onlyOwner
    - [Pub] setPauseTransfer #
       - modifiers: onlyOwner
    - [Pub] setPauseContractTransfer #
       - modifiers: onlyOwner
    - [Pub] setMaxRewardNum #
       - modifiers: onlyOwner
    - [Pub] setRewardInterval #
       - modifiers: onlyOwner
    - [Pub] setMaxPlayerLevel #
       - modifiers: onlyOwner
    - [Ext] setPlayerRewardRatio #
       - modifiers: onlyOwner
    - [Ext] setTaxFeePercent #
       - modifiers: onlyOwner
    - [Ext] setContractFeePercent #
       - modifiers: onlyOwner
    - [Ext] setWeeklyRewardPercent #
       - modifiers: onlyOwner
    - [Ext] setWeeklyRewardEnabled #
       - modifiers: onlyOwner
    - [Ext] setBurnPercent #
       - modifiers: onlyOwner
    - [Ext] setPlayerRewardPercent #
       - modifiers: onlyOwner
    - [Ext] setFomoPercent #
       - modifiers: onlyOwner
    - [Ext] createPair #
       - modifiers: onlyOwner
    - [Ext] setLiquidityFeePercent #
       - modifiers: onlyOwner
    - [Ext] setLiquidityFeeContractPercent #
       - modifiers: onlyOwner
    - [Ext] setplayerHoldingRatio #
       - modifiers: onlyOwner
    - [Ext] setMinReferAmount #
       - modifiers: onlyOwner
    - [Ext] setMaxTxPercent #
       - modifiers: onlyOwner
    - [Ext] setNumTokensSellToAddToLiquidity #
       - modifiers: onlyOwner
    - [Pub] setSwapAndLiquifyEnabled #
       - modifiers: onlyOwner
    - [Ext]  ($)
    - [Prv] _checkPlayerBalanceLimit
    - [Prv] _playerRewardHandle #
    - [Prv] _playerReward #
    - [Prv] _reflectFee #
    - [Prv] _getValues
    - [Prv] _getTValues
    - [Prv] _getRValues
    - [Prv] _getRate
    - [Prv] _getCurrentSupply
    - [Prv] _takeLiquidity #
    - [Prv] calculateTaxFee
    - [Prv] calculateLiquidityFee
    - [Prv] removeAllFee #
    - [Prv] restoreAllFee #
    - [Pub] isExcludedFromFee
    - [Prv] _approve #
    - [Prv] _transfer #
    - [Prv] _awardsFoMo #
    - [Prv] swapAndLiquify #
       - modifiers: lockTheSwap
    - [Prv] swapTokensForUsdt #
    - [Prv] addLiquidity #
    - [Prv] _bindRefer #
    - [Prv] _isContractTransaction
    - [Prv] _tokenTransfer #
    - [Prv] _transferStandard #
    - [Prv] _transferToExcluded #
    - [Prv] _transferFromExcluded #
    - [Prv] _rewardTopPlayers #
    - [Prv] _updateTopPlayers #
    - [Prv] _rankTopPlayers #
    - [Prv] _updateTopPlayerTip #
    - [Prv] _sendToPlayerReward #