The Mama Shiba project is based on a 'NFT Game Play to Earn', it will adopt a hyper-deflated token that works on the BSC network and guarantees reward in BNB for each transaction.
MAMASHIBA.swapAndLiquify(uint256) (MamaShiba.sol#542-573) sends eth to arbitrary user
Dangerous calls:
- MarketingWallet.transfer(amountBNBMarketing) (MamaShiba.sol#565)
MAMASHIBA.addLiquidity(uint256,uint256) (MamaShiba.sol#613-625) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (MamaShiba.sol#616-623)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in MAMASHIBA._transfer(address,address,uint256) (MamaShiba.sol#467-540):
External calls:
- pinkAntiBot.onPreTransferCheck(from,to,amount) (MamaShiba.sol#477)
- swapAndLiquifyDividends() (MamaShiba.sol#505)
- (success) = address(dividendTracker).call{value: dividends}() (MamaShiba.sol#578)
External calls sending eth:
- swapAndLiquifyDividends() (MamaShiba.sol#505)
- (success) = address(dividendTracker).call{value: dividends}() (MamaShiba.sol#578)
State variables written after the call(s):
- nextTxSendDividends = 0 (MamaShiba.sol#506)
Reentrancy in MAMASHIBA._transfer(address,address,uint256) (MamaShiba.sol#467-540):
External calls:
- pinkAntiBot.onPreTransferCheck(from,to,amount) (MamaShiba.sol#477)
- swapAndLiquifyDividends() (MamaShiba.sol#505)
- (success) = address(dividendTracker).call{value: dividends}() (MamaShiba.sol#578)
- swapAndLiquify(contractTokenBalance) (MamaShiba.sol#515)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (MamaShiba.sol#616-623)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,_to,block.timestamp) (MamaShiba.sol#597-603)
External calls sending eth:
- swapAndLiquifyDividends() (MamaShiba.sol#505)
- (success) = address(dividendTracker).call{value: dividends}() (MamaShiba.sol#578)
- swapAndLiquify(contractTokenBalance) (MamaShiba.sol#515)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (MamaShiba.sol#616-623)
- MarketingWallet.transfer(amountBNBMarketing) (MamaShiba.sol#565)
State variables written after the call(s):
- amountToSend = takeFee(from,to,amount) (MamaShiba.sol#522)
- _balances[account] = accountBalance - amount (ERC20.sol#280)
- _balances[sender] = senderBalance - amount (ERC20.sol#231)
- _balances[recipient] += amount (ERC20.sol#233)
- super._transfer(from,to,amountToSend) (MamaShiba.sol#525)
- _balances[sender] = senderBalance - amount (ERC20.sol#231)
- _balances[recipient] += amount (ERC20.sol#233)
- swapAndLiquify(contractTokenBalance) (MamaShiba.sol#515)
- nextTxSendDividends = tokensForSwap (MamaShiba.sol#571)
Reentrancy in DividendPayingToken._withdrawDividendOfUser(address) (DividendPayingToken.sol#90-106):
External calls:
- (success) = user.call{gas: 3000,value: _withdrawableDividend}() (DividendPayingToken.sol#95)
State variables written after the call(s):
- withdrawnDividends[user] = withdrawnDividends[user].sub(_withdrawableDividend) (DividendPayingToken.sol#98)
Reentrancy in MAMASHIBA.swapAndLiquify(uint256) (MamaShiba.sol#542-573):
External calls:
- swapTokensForBnb(tokensForSwap,address(this)) (MamaShiba.sol#547)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,_to,block.timestamp) (MamaShiba.sol#597-603)
- addLiquidity(tokensForLP,amountBNBLiquidity) (MamaShiba.sol#569)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (MamaShiba.sol#616-623)
External calls sending eth:
- MarketingWallet.transfer(amountBNBMarketing) (MamaShiba.sol#565)
- addLiquidity(tokensForLP,amountBNBLiquidity) (MamaShiba.sol#569)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (MamaShiba.sol#616-623)
State variables written after the call(s):
- addLiquidity(tokensForLP,amountBNBLiquidity) (MamaShiba.sol#569)
- _allowances[owner][spender] = amount (ERC20.sol#310)
Apply the check-effects-interactions pattern.
Additional information: link
SafeToken.withdraw(address,uint256) (SafeToken.sol#23-26) ignores return value by IERC20(_token).transfer(safeManager,_amount) (SafeToken.sol#25)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
Combination 1: Reentrancy vulnerabilities + Functions that send Ether to arbitraty destination. Usual for scams. May be justified by some complex mechanics (e.g. rebase, reflections). DYOR & manual audit are advised.
Combination 2: Unchecked transfer + Functions that send Ether to arbitraty destination. Usual for scams. May be justified by some complex mechanics (e.g. rebase, reflections). DYOR & manual audit are advised.
Combination 3: Reentrancy vulnerabilities + Unchecked transfer vulnerability. Usual for scams. May be justified by some complex mechanics (e.g. rebase, reflections). DYOR & manual audit are advised.
Unable to verify that contract auditor is trusted: Certik, Quantstamp, Hacken, Solidity, Paladinsec, Openzeppelin, Verichains
Contract ownership is not renounced (belongs to a wallet)
SafeToken.setSafeManager(address)._safeManager (SafeToken.sol#19) lacks a zero-check on :
- safeManager = _safeManager (SafeToken.sol#20)
MAMASHIBA.setMarketingWallet(address)._newMarketingWallet (MamaShiba.sol#174) lacks a zero-check on :
- MarketingWallet = _newMarketingWallet (MamaShiba.sol#175)
MAMASHIBA.setGameWallet(address)._newGameWallet (MamaShiba.sol#178) lacks a zero-check on :
- GameWallet = _newGameWallet (MamaShiba.sol#179)
Check that the address is not zero.
Additional information: link
Reentrancy in MAMASHIBA._setAutomatedMarketMakerPair(address,bool) (MamaShiba.sol#301-310):
External calls:
- dividendTracker.excludeFromDividends(pair) (MamaShiba.sol#306)
Event emitted after the call(s):
- SetAutomatedMarketMakerPair(pair,value) (MamaShiba.sol#309)
Reentrancy in MAMASHIBA._transfer(address,address,uint256) (MamaShiba.sol#467-540):
External calls:
- pinkAntiBot.onPreTransferCheck(from,to,amount) (MamaShiba.sol#477)
Event emitted after the call(s):
- Transfer(sender,recipient,amount) (ERC20.sol#235)
- super._transfer(from,to,0) (MamaShiba.sol#490)
Reentrancy in MAMASHIBA._transfer(address,address,uint256) (MamaShiba.sol#467-540):
External calls:
- pinkAntiBot.onPreTransferCheck(from,to,amount) (MamaShiba.sol#477)
- swapAndLiquifyDividends() (MamaShiba.sol#505)
- (success) = address(dividendTracker).call{value: dividends}() (MamaShiba.sol#578)
External calls sending eth:
- swapAndLiquifyDividends() (MamaShiba.sol#505)
- (success) = address(dividendTracker).call{value: dividends}() (MamaShiba.sol#578)
Event emitted after the call(s):
- SendDividends(nextTxSendDividends,dividends) (MamaShiba.sol#581)
- swapAndLiquifyDividends() (MamaShiba.sol#505)
Reentrancy in MAMASHIBA._transfer(address,address,uint256) (MamaShiba.sol#467-540):
External calls:
- pinkAntiBot.onPreTransferCheck(from,to,amount) (MamaShiba.sol#477)
- swapAndLiquifyDividends() (MamaShiba.sol#505)
- (success) = address(dividendTracker).call{value: dividends}() (MamaShiba.sol#578)
- swapAndLiquify(contractTokenBalance) (MamaShiba.sol#515)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (MamaShiba.sol#616-623)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,_to,block.timestamp) (MamaShiba.sol#597-603)
External calls sending eth:
- swapAndLiquifyDividends() (MamaShiba.sol#505)
- (success) = address(dividendTracker).call{value: dividends}() (MamaShiba.sol#578)
- swapAndLiquify(contractTokenBalance) (MamaShiba.sol#515)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (MamaShiba.sol#616-623)
- MarketingWallet.transfer(amountBNBMarketing) (MamaShiba.sol#565)
Event emitted after the call(s):
- Approval(owner,spender,amount) (ERC20.sol#311)
- swapAndLiquify(contractTokenBalance) (MamaShiba.sol#515)
- SwapAndLiquify(tokensForLP,totMarkRewardsLiquidity) (MamaShiba.sol#572)
- swapAndLiquify(contractTokenBalance) (MamaShiba.sol#515)
- Transfer(account,address(0),amount) (ERC20.sol#284)
- amountToSend = takeFee(from,to,amount) (MamaShiba.sol#522)
- Transfer(sender,recipient,amount) (ERC20.sol#235)
- amountToSend = takeFee(from,to,amount) (MamaShiba.sol#522)
- Transfer(sender,recipient,amount) (ERC20.sol#235)
- super._transfer(from,to,amountToSend) (MamaShiba.sol#525)
- liquidityGetBnb(amountBNBLiquidity) (MamaShiba.sol#562)
- swapAndLiquify(contractTokenBalance) (MamaShiba.sol#515)
- marketingGetBnb(amountBNBMarketing) (MamaShiba.sol#561)
- swapAndLiquify(contractTokenBalance) (MamaShiba.sol#515)
- rewardsGetBnb(amountBNBRewards) (MamaShiba.sol#560)
- swapAndLiquify(contractTokenBalance) (MamaShiba.sol#515)
Reentrancy in MAMASHIBA._transfer(address,address,uint256) (MamaShiba.sol#467-540):
External calls:
- pinkAntiBot.onPreTransferCheck(from,to,amount) (MamaShiba.sol#477)
- swapAndLiquifyDividends() (MamaShiba.sol#505)
- (success) = address(dividendTracker).call{value: dividends}() (MamaShiba.sol#578)
- swapAndLiquify(contractTokenBalance) (MamaShiba.sol#515)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (MamaShiba.sol#616-623)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,_to,block.timestamp) (MamaShiba.sol#597-603)
- dividendTracker.setBalance(address(from),balanceOf(from)) (MamaShiba.sol#527)
- dividendTracker.setBalance(address(to),balanceOf(to)) (MamaShiba.sol#528)
- dividendTracker.process(gas) (MamaShiba.sol#533-538)
External calls sending eth:
- swapAndLiquifyDividends() (MamaShiba.sol#505)
- (success) = address(dividendTracker).call{value: dividends}() (MamaShiba.sol#578)
- swapAndLiquify(contractTokenBalance) (MamaShiba.sol#515)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (MamaShiba.sol#616-623)
- MarketingWallet.transfer(amountBNBMarketing) (MamaShiba.sol#565)
Event emitted after the call(s):
- ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gas,tx.origin) (MamaShiba.sol#534)
Reentrancy in MAMASHIBA.constructor() (MamaShiba.sol#187-247):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (MamaShiba.sol#206-207)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (MamaShiba.sol#212)
- dividendTracker.excludeFromDividends(pair) (MamaShiba.sol#306)
Event emitted after the call(s):
- SetAutomatedMarketMakerPair(pair,value) (MamaShiba.sol#309)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (MamaShiba.sol#212)
Reentrancy in MAMASHIBA.constructor() (MamaShiba.sol#187-247):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (MamaShiba.sol#206-207)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (MamaShiba.sol#212)
- dividendTracker.excludeFromDividends(pair) (MamaShiba.sol#306)
- dividendTracker.excludeFromDividends(address(dividendTracker)) (MamaShiba.sol#215)
- dividendTracker.excludeFromDividends(address(this)) (MamaShiba.sol#216)
- dividendTracker.excludeFromDividends(owner()) (MamaShiba.sol#217)
- dividendTracker.excludeFromDividends(address(_uniswapV2Router)) (MamaShiba.sol#218)
- dividendTracker.excludeFromDividends(0x000000000000000000000000000000000000dEaD) (MamaShiba.sol#219)
Event emitted after the call(s):
- ExcludeFromFees(account,excluded) (MamaShiba.sol#267)
- excludeFromFees(owner(),true) (MamaShiba.sol#222)
- ExcludeFromFees(account,excluded) (MamaShiba.sol#267)
- excludeFromFees(address(this),true) (MamaShiba.sol#224)
- ExcludeFromFees(account,excluded) (MamaShiba.sol#267)
- excludeFromFees(MarketingWallet,true) (MamaShiba.sol#223)
Reentrancy in MAMASHIBA.constructor() (MamaShiba.sol#187-247):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (MamaShiba.sol#206-207)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (MamaShiba.sol#212)
- dividendTracker.excludeFromDividends(pair) (MamaShiba.sol#306)
- dividendTracker.excludeFromDividends(address(dividendTracker)) (MamaShiba.sol#215)
- dividendTracker.excludeFromDividends(address(this)) (MamaShiba.sol#216)
- dividendTracker.excludeFromDividends(owner()) (MamaShiba.sol#217)
- dividendTracker.excludeFromDividends(address(_uniswapV2Router)) (MamaShiba.sol#218)
- dividendTracker.excludeFromDividends(0x000000000000000000000000000000000000dEaD) (MamaShiba.sol#219)
- pinkAntiBot.setTokenOwner(msg.sender) (MamaShiba.sol#236)
Event emitted after the call(s):
- Transfer(address(0),account,amount) (ERC20.sol#256)
- _mint(owner(),1000000000000 * (10 ** 18)) (MamaShiba.sol#246)
Reentrancy in MAMASHIBADividendTracker.processAccount(address,bool) (MAMASHIBADividendTracker.sol#218-228):
External calls:
- amount = _withdrawDividendOfUser(account) (MAMASHIBADividendTracker.sol#219)
- (success) = user.call{gas: 3000,value: _withdrawableDividend}() (DividendPayingToken.sol#95)
Event emitted after the call(s):
- Claim(account,amount,automatic) (MAMASHIBADividendTracker.sol#223)
Reentrancy in MAMASHIBA.processDividendTracker(uint256) (MamaShiba.sol#373-376):
External calls:
- (iterations,claims,lastProcessedIndex) = dividendTracker.process(gas) (MamaShiba.sol#374)
Event emitted after the call(s):
- ProcessedDividendTracker(iterations,claims,lastProcessedIndex,false,gas,tx.origin) (MamaShiba.sol#375)
Reentrancy in MAMASHIBA.swapAndLiquify(uint256) (MamaShiba.sol#542-573):
External calls:
- swapTokensForBnb(tokensForSwap,address(this)) (MamaShiba.sol#547)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,_to,block.timestamp) (MamaShiba.sol#597-603)
Event emitted after the call(s):
- liquidityGetBnb(amountBNBLiquidity) (MamaShiba.sol#562)
- marketingGetBnb(amountBNBMarketing) (MamaShiba.sol#561)
- rewardsGetBnb(amountBNBRewards) (MamaShiba.sol#560)
Reentrancy in MAMASHIBA.swapAndLiquify(uint256) (MamaShiba.sol#542-573):
External calls:
- swapTokensForBnb(tokensForSwap,address(this)) (MamaShiba.sol#547)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,_to,block.timestamp) (MamaShiba.sol#597-603)
- addLiquidity(tokensForLP,amountBNBLiquidity) (MamaShiba.sol#569)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (MamaShiba.sol#616-623)
External calls sending eth:
- MarketingWallet.transfer(amountBNBMarketing) (MamaShiba.sol#565)
- addLiquidity(tokensForLP,amountBNBLiquidity) (MamaShiba.sol#569)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (MamaShiba.sol#616-623)
Event emitted after the call(s):
- Approval(owner,spender,amount) (ERC20.sol#311)
- addLiquidity(tokensForLP,amountBNBLiquidity) (MamaShiba.sol#569)
- SwapAndLiquify(tokensForLP,totMarkRewardsLiquidity) (MamaShiba.sol#572)
Reentrancy in MAMASHIBA.swapAndLiquifyDividends() (MamaShiba.sol#576-584):
External calls:
- (success) = address(dividendTracker).call{value: dividends}() (MamaShiba.sol#578)
Event emitted after the call(s):
- SendDividends(nextTxSendDividends,dividends) (MamaShiba.sol#581)
Apply the check-effects-interactions pattern.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (IUniswapV2Router01.sol#11) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (IUniswapV2Router01.sol#12)
Variable DividendPayingToken._withdrawDividendOfUser(address)._withdrawableDividend (DividendPayingToken.sol#91) is too similar to MAMASHIBADividendTracker.getAccount(address).withdrawableDividends (MAMASHIBADividendTracker.sol#87)
Prevent variables from having similar names.
Additional information: link
MAMASHIBA.maxSellTransactionAmount (MamaShiba.sol#93) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
MAMASHIBA._transfer(address,address,uint256).lastProcessedIndex (MamaShiba.sol#533) is a local variable never initialized
MAMASHIBA._transfer(address,address,uint256).iterations (MamaShiba.sol#533) is a local variable never initialized
MAMASHIBA._transfer(address,address,uint256).claims (MamaShiba.sol#533) is a local variable never initialized
Initialize all the variables. If a variable is meant to be initialized to zero, explicitly set it to zero to improve code readability.
Additional information: link
MAMASHIBA.claim() (MamaShiba.sol#378-380) ignores return value by dividendTracker.processAccount(address(msg.sender),false) (MamaShiba.sol#379)
MAMASHIBA._transfer(address,address,uint256) (MamaShiba.sol#467-540) ignores return value by dividendTracker.process(gas) (MamaShiba.sol#533-538)
MAMASHIBA.addLiquidity(uint256,uint256) (MamaShiba.sol#613-625) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (MamaShiba.sol#616-623)
Ensure that all the return values of the function calls are used.
Additional information: link
DividendPayingToken.constructor(string,string)._name (DividendPayingToken.sol#47) shadows:
- ERC20._name (ERC20.sol#39) (state variable)
DividendPayingToken.constructor(string,string)._symbol (DividendPayingToken.sol#47) shadows:
- ERC20._symbol (ERC20.sol#40) (state variable)
Rename the local variables that shadow another component.
Additional information: link
MAMASHIBA.setMaxWallet(uint256) (MamaShiba.sol#170-172) should emit an event for:
- maxWalletAmount = _maxWalletAmount (MamaShiba.sol#171)
MAMASHIBA.setSWapToensAtAmount(uint256) (MamaShiba.sol#294-297) should emit an event for:
- swapTokensAtAmount = _newAmount (MamaShiba.sol#296)
MAMASHIBA.setBuyTaxes(uint256,uint256,uint256,uint256,uint256) (MamaShiba.sol#400-410) should emit an event for:
- _buyGameFee = newGameTax (MamaShiba.sol#406)
- _buyBurnFee = newBurnTax (MamaShiba.sol#407)
- _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyRewardsFee).add(_buyGameFee).add(_buyBurnFee) (MamaShiba.sol#409)
MAMASHIBA.setSellTaxes(uint256,uint256,uint256,uint256,uint256) (MamaShiba.sol#412-422) should emit an event for:
- _sellGameFee = newGameTax (MamaShiba.sol#418)
- _sellBurnFee = newBurnTax (MamaShiba.sol#419)
- _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellRewardsFee).add(_sellGameFee).add(_sellBurnFee) (MamaShiba.sol#421)
MAMASHIBA.setDistributionSettings(uint256,uint256,uint256) (MamaShiba.sol#424-433) should emit an event for:
- _liquidityShare = newLiquidityShare (MamaShiba.sol#428)
- _rewardsShare = newRewardsShare (MamaShiba.sol#430)
- _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_rewardsShare) (MamaShiba.sol#432)
Emit an event for critical parameter changes.
Additional information: link
DividendPayingToken._withdrawDividendOfUser(address) (DividendPayingToken.sol#90-106) has external calls inside a loop: (success) = user.call{gas: 3000,value: _withdrawableDividend}() (DividendPayingToken.sol#95)
Favor pull over push strategy for external calls.
Additional information: link
Variable 'MAMASHIBA._transfer(address,address,uint256).claims (MamaShiba.sol#533)' in MAMASHIBA._transfer(address,address,uint256) (MamaShiba.sol#467-540) potentially used before declaration: ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gas,tx.origin) (MamaShiba.sol#534)
Variable 'MAMASHIBA._transfer(address,address,uint256).lastProcessedIndex (MamaShiba.sol#533)' in MAMASHIBA._transfer(address,address,uint256) (MamaShiba.sol#467-540) potentially used before declaration: ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gas,tx.origin) (MamaShiba.sol#534)
Variable 'MAMASHIBA._transfer(address,address,uint256).iterations (MamaShiba.sol#533)' in MAMASHIBA._transfer(address,address,uint256) (MamaShiba.sol#467-540) potentially used before declaration: ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gas,tx.origin) (MamaShiba.sol#534)
Move all variable declarations prior to any usage of the variable, and ensure that reaching a variable declaration does not depend on some conditional if it is used unconditionally.
Additional information: link
Reentrancy in MAMASHIBA._transfer(address,address,uint256) (MamaShiba.sol#467-540):
External calls:
- pinkAntiBot.onPreTransferCheck(from,to,amount) (MamaShiba.sol#477)
State variables written after the call(s):
- super._transfer(from,to,0) (MamaShiba.sol#490)
- _balances[sender] = senderBalance - amount (ERC20.sol#231)
- _balances[recipient] += amount (ERC20.sol#233)
Reentrancy in MAMASHIBA._transfer(address,address,uint256) (MamaShiba.sol#467-540):
External calls:
- pinkAntiBot.onPreTransferCheck(from,to,amount) (MamaShiba.sol#477)
- swapAndLiquifyDividends() (MamaShiba.sol#505)
- (success) = address(dividendTracker).call{value: dividends}() (MamaShiba.sol#578)
External calls sending eth:
- swapAndLiquifyDividends() (MamaShiba.sol#505)
- (success) = address(dividendTracker).call{value: dividends}() (MamaShiba.sol#578)
State variables written after the call(s):
- swapAndLiquifyDividends() (MamaShiba.sol#505)
- inSwapAndLiquify = true (MamaShiba.sol#164)
- inSwapAndLiquify = false (MamaShiba.sol#166)
Reentrancy in MAMASHIBA._transfer(address,address,uint256) (MamaShiba.sol#467-540):
External calls:
- pinkAntiBot.onPreTransferCheck(from,to,amount) (MamaShiba.sol#477)
- swapAndLiquifyDividends() (MamaShiba.sol#505)
- (success) = address(dividendTracker).call{value: dividends}() (MamaShiba.sol#578)
- swapAndLiquify(contractTokenBalance) (MamaShiba.sol#515)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (MamaShiba.sol#616-623)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,_to,block.timestamp) (MamaShiba.sol#597-603)
External calls sending eth:
- swapAndLiquifyDividends() (MamaShiba.sol#505)
- (success) = address(dividendTracker).call{value: dividends}() (MamaShiba.sol#578)
- swapAndLiquify(contractTokenBalance) (MamaShiba.sol#515)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (MamaShiba.sol#616-623)
- MarketingWallet.transfer(amountBNBMarketing) (MamaShiba.sol#565)
State variables written after the call(s):
- amountToSend = takeFee(from,to,amount) (MamaShiba.sol#522)
- _totalSupply -= amount (ERC20.sol#282)
Reentrancy in MAMASHIBA.constructor() (MamaShiba.sol#187-247):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (MamaShiba.sol#206-207)
State variables written after the call(s):
- uniswapV2Pair = _uniswapV2Pair (MamaShiba.sol#210)
- uniswapV2Router = _uniswapV2Router (MamaShiba.sol#209)
Reentrancy in MAMASHIBA.constructor() (MamaShiba.sol#187-247):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (MamaShiba.sol#206-207)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (MamaShiba.sol#212)
- dividendTracker.excludeFromDividends(pair) (MamaShiba.sol#306)
- dividendTracker.excludeFromDividends(address(dividendTracker)) (MamaShiba.sol#215)
- dividendTracker.excludeFromDividends(address(this)) (MamaShiba.sol#216)
- dividendTracker.excludeFromDividends(owner()) (MamaShiba.sol#217)
- dividendTracker.excludeFromDividends(address(_uniswapV2Router)) (MamaShiba.sol#218)
- dividendTracker.excludeFromDividends(0x000000000000000000000000000000000000dEaD) (MamaShiba.sol#219)
State variables written after the call(s):
- excludeFromFees(owner(),true) (MamaShiba.sol#222)
- _isExcludedFromFees[account] = excluded (MamaShiba.sol#265)
- excludeFromFees(MarketingWallet,true) (MamaShiba.sol#223)
- _isExcludedFromFees[account] = excluded (MamaShiba.sol#265)
- excludeFromFees(address(this),true) (MamaShiba.sol#224)
- _isExcludedFromFees[account] = excluded (MamaShiba.sol#265)
- _isExcludedFromMaxTx[owner()] = true (MamaShiba.sol#227)
- _isExcludedFromMaxTx[address(this)] = true (MamaShiba.sol#228)
- _isExcludedFromMaxTx[MarketingWallet] = true (MamaShiba.sol#229)
- pinkAntiBot = IPinkAntiBot(0x8EFDb3b642eb2a20607ffe0A56CFefF6a95Df002) (MamaShiba.sol#233)
Reentrancy in MAMASHIBA.constructor() (MamaShiba.sol#187-247):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (MamaShiba.sol#206-207)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (MamaShiba.sol#212)
- dividendTracker.excludeFromDividends(pair) (MamaShiba.sol#306)
- dividendTracker.excludeFromDividends(address(dividendTracker)) (MamaShiba.sol#215)
- dividendTracker.excludeFromDividends(address(this)) (MamaShiba.sol#216)
- dividendTracker.excludeFromDividends(owner()) (MamaShiba.sol#217)
- dividendTracker.excludeFromDividends(address(_uniswapV2Router)) (MamaShiba.sol#218)
- dividendTracker.excludeFromDividends(0x000000000000000000000000000000000000dEaD) (MamaShiba.sol#219)
- pinkAntiBot.setTokenOwner(msg.sender) (MamaShiba.sol#236)
State variables written after the call(s):
- _mint(owner(),1000000000000 * (10 ** 18)) (MamaShiba.sol#246)
- _balances[account] += amount (ERC20.sol#255)
- _mint(owner(),1000000000000 * (10 ** 18)) (MamaShiba.sol#246)
- _totalSupply += amount (ERC20.sol#254)
- antiBotEnabled = true (MamaShiba.sol#238)
- isMarketPair[address(_uniswapV2Pair)] = true (MamaShiba.sol#239)
Reentrancy in MAMASHIBADividendTracker.processAccount(address,bool) (MAMASHIBADividendTracker.sol#218-228):
External calls:
- amount = _withdrawDividendOfUser(account) (MAMASHIBADividendTracker.sol#219)
- (success) = user.call{gas: 3000,value: _withdrawableDividend}() (DividendPayingToken.sol#95)
State variables written after the call(s):
- lastClaimTimes[account] = block.timestamp (MAMASHIBADividendTracker.sol#222)
Reentrancy in MAMASHIBA.swapAndLiquify(uint256) (MamaShiba.sol#542-573):
External calls:
- swapTokensForBnb(tokensForSwap,address(this)) (MamaShiba.sol#547)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,_to,block.timestamp) (MamaShiba.sol#597-603)
- addLiquidity(tokensForLP,amountBNBLiquidity) (MamaShiba.sol#569)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (MamaShiba.sol#616-623)
External calls sending eth:
- MarketingWallet.transfer(amountBNBMarketing) (MamaShiba.sol#565)
- addLiquidity(tokensForLP,amountBNBLiquidity) (MamaShiba.sol#569)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (MamaShiba.sol#616-623)
State variables written after the call(s):
- nextTxSendDividends = tokensForSwap (MamaShiba.sol#571)
Apply the check-effects-interactions pattern.
Additional information: link
MAMASHIBADividendTracker.getAccount(address) (MAMASHIBADividendTracker.sol#82-125) uses timestamp for comparisons
Dangerous comparisons:
- nextClaimTime > block.timestamp (MAMASHIBADividendTracker.sol#122-124)
MAMASHIBADividendTracker.canAutoClaim(uint256) (MAMASHIBADividendTracker.sol#146-152) uses timestamp for comparisons
Dangerous comparisons:
- lastClaimTime > block.timestamp (MAMASHIBADividendTracker.sol#147)
- block.timestamp.sub(lastClaimTime) >= claimWait (MAMASHIBADividendTracker.sol#151)
Avoid relying on block.timestamp.
Additional information: link
Context._msgData() (Context.sol#18-20) is never used and should be removed
DividendPayingToken._transfer(address,address,uint256) (DividendPayingToken.sol#146-152) is never used and should be removed
MAMASHIBA.swapAndSendBNBToMarketing(uint256) (MamaShiba.sol#608-610) is never used and should be removed
SafeCast.toInt128(int256) (SafeCast.sol#149-152) is never used and should be removed
SafeCast.toInt16(int256) (SafeCast.sol#203-206) is never used and should be removed
SafeCast.toInt32(int256) (SafeCast.sol#185-188) is never used and should be removed
SafeCast.toInt64(int256) (SafeCast.sol#167-170) is never used and should be removed
SafeCast.toInt8(int256) (SafeCast.sol#221-224) is never used and should be removed
SafeCast.toUint128(uint256) (SafeCast.sol#44-47) is never used and should be removed
SafeCast.toUint16(uint256) (SafeCast.sol#104-107) is never used and should be removed
SafeCast.toUint224(uint256) (SafeCast.sol#29-32) is never used and should be removed
SafeCast.toUint32(uint256) (SafeCast.sol#89-92) is never used and should be removed
SafeCast.toUint64(uint256) (SafeCast.sol#74-77) is never used and should be removed
SafeCast.toUint8(uint256) (SafeCast.sol#119-122) is never used and should be removed
SafeCast.toUint96(uint256) (SafeCast.sol#59-62) is never used and should be removed
SafeMath.div(uint256,uint256,string) (SafeMath.sol#188-197) is never used and should be removed
SafeMath.mod(uint256,uint256) (SafeMath.sol#148-150) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (SafeMath.sol#214-223) is never used and should be removed
SafeMath.sub(uint256,uint256,string) (SafeMath.sol#165-174) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (SafeMath.sol#19-25) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (SafeMath.sol#61-66) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (SafeMath.sol#73-78) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (SafeMath.sol#44-54) is never used and should be removed
SafeMath.trySub(uint256,uint256) (SafeMath.sol#32-37) is never used and should be removed
SignedSafeMath.div(int256,int256) (SignedSafeMath.sol#35-37) is never used and should be removed
SignedSafeMath.mul(int256,int256) (SignedSafeMath.sol#21-23) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.0 (Context.sol#2) allows old versions
Pragma version^0.8.0 (DividendPayingToken.sol#2) allows old versions
Pragma version^0.8.0 (DividendPayingTokenInterface.sol#2) allows old versions
Pragma version^0.8.0 (DividendPayingTokenOptionalInterface.sol#2) allows old versions
Pragma version^0.8.0 (ERC20.sol#2) allows old versions
Pragma version^0.8.0 (IERC20.sol#2) allows old versions
Pragma version^0.8.0 (IERC20Metadata.sol#2) allows old versions
Pragma version^0.8.0 (IPinkAntiBot.sol#1) allows old versions
Pragma version^0.8.0 (IUniswapV2Factory.sol#2) allows old versions
Pragma version^0.8.0 (IUniswapV2Router01.sol#2) allows old versions
Pragma version^0.8.0 (IUniswapV2Router02.sol#2) allows old versions
Pragma version^0.8.0 (IterableMapping.sol#2) allows old versions
Pragma version^0.8.0 (MAMASHIBADividendTracker.sol#2) allows old versions
Pragma version^0.8.0 (MamaShiba.sol#57) allows old versions
Pragma version^0.8.0 (Ownable.sol#2) allows old versions
Pragma version^0.8.0 (SafeCast.sol#2) allows old versions
Pragma version^0.8.0 (SafeMath.sol#2) allows old versions
Pragma version^0.8.0 (SafeToken.sol#2) allows old versions
Pragma version^0.8.0 (SignedSafeMath.sol#2) allows old versions
solc-0.8.11 is not recommended for deployment
Deploy with any of the following Solidity versions: 0.5.16 - 0.5.17, 0.6.11 - 0.6.12, 0.7.5 - 0.7.6 Use a simple pragma version that allows any of these versions. Consider using the latest version of Solidity for testing.
Additional information: link
Low level call in DividendPayingToken._withdrawDividendOfUser(address) (DividendPayingToken.sol#90-106):
- (success) = user.call{gas: 3000,value: _withdrawableDividend}() (DividendPayingToken.sol#95)
Low level call in MAMASHIBA.swapAndLiquifyDividends() (MamaShiba.sol#576-584):
- (success) = address(dividendTracker).call{value: dividends}() (MamaShiba.sol#578)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Parameter DividendPayingToken.dividendOf(address)._owner (DividendPayingToken.sol#112) is not in mixedCase
Parameter DividendPayingToken.withdrawableDividendOf(address)._owner (DividendPayingToken.sol#119) is not in mixedCase
Parameter DividendPayingToken.withdrawnDividendOf(address)._owner (DividendPayingToken.sol#126) is not in mixedCase
Parameter DividendPayingToken.accumulativeDividendOf(address)._owner (DividendPayingToken.sol#136) is not in mixedCase
Constant DividendPayingToken.magnitude (DividendPayingToken.sol#27) is not in UPPER_CASE_WITH_UNDERSCORES
Function IUniswapV2Router01.WETH() (IUniswapV2Router01.sol#6) is not in mixedCase
Function MAMASHIBADividendTracker._minimumTokenBalanceForReward(uint256) (MAMASHIBADividendTracker.sol#47-49) is not in mixedCase
Parameter MAMASHIBADividendTracker.getAccount(address)._account (MAMASHIBADividendTracker.sol#82) is not in mixedCase
Event MAMASHIBArewardsGetBnb(uint256) (MamaShiba.sol#182) is not in CapWords
Event MAMASHIBAmarketingGetBnb(uint256) (MamaShiba.sol#183) is not in CapWords
Event MAMASHIBAliquidityGetBnb(uint256) (MamaShiba.sol#184) is not in CapWords
Parameter MAMASHIBA.setMaxWallet(uint256)._maxWalletAmount (MamaShiba.sol#170) is not in mixedCase
Parameter MAMASHIBA.setMarketingWallet(address)._newMarketingWallet (MamaShiba.sol#174) is not in mixedCase
Parameter MAMASHIBA.setGameWallet(address)._newGameWallet (MamaShiba.sol#178) is not in mixedCase
Parameter MAMASHIBA.setExcludeFromMaxTx(address,bool)._address (MamaShiba.sol#270) is not in mixedCase
Parameter MAMASHIBA.setExcludeFromAll(address)._address (MamaShiba.sol#274) is not in mixedCase
Parameter MAMASHIBA.setSWapToensAtAmount(uint256)._newAmount (MamaShiba.sol#294) is not in mixedCase
Parameter MAMASHIBA.setSwapAndLiquifyEnabled(bool)._enabled (MamaShiba.sol#395) is not in mixedCase
Parameter MAMASHIBA.swapTokensForBnb(uint256,address)._to (MamaShiba.sol#586) is not in mixedCase
Variable MAMASHIBA.MarketingWallet (MamaShiba.sol#97) is not in mixedCase
Variable MAMASHIBA.GameWallet (MamaShiba.sol#98) is not in mixedCase
Variable MAMASHIBA.DeadWallet (MamaShiba.sol#99) is not in mixedCase
Variable MAMASHIBA._liquidityShare (MamaShiba.sol#101) is not in mixedCase
Variable MAMASHIBA._marketingShare (MamaShiba.sol#102) is not in mixedCase
Variable MAMASHIBA._rewardsShare (MamaShiba.sol#103) is not in mixedCase
Variable MAMASHIBA._buyLiquidityFee (MamaShiba.sol#105) is not in mixedCase
Variable MAMASHIBA._buyMarketingFee (MamaShiba.sol#106) is not in mixedCase
Variable MAMASHIBA._buyRewardsFee (MamaShiba.sol#107) is not in mixedCase
Variable MAMASHIBA._buyGameFee (MamaShiba.sol#108) is not in mixedCase
Variable MAMASHIBA._buyBurnFee (MamaShiba.sol#109) is not in mixedCase
Variable MAMASHIBA._sellLiquidityFee (MamaShiba.sol#111) is not in mixedCase
Variable MAMASHIBA._sellMarketingFee (MamaShiba.sol#112) is not in mixedCase
Variable MAMASHIBA._sellRewardsFee (MamaShiba.sol#113) is not in mixedCase
Variable MAMASHIBA._sellGameFee (MamaShiba.sol#114) is not in mixedCase
Variable MAMASHIBA._sellBurnFee (MamaShiba.sol#115) is not in mixedCase
Variable MAMASHIBA._totalTaxIfBuying (MamaShiba.sol#117) is not in mixedCase
Variable MAMASHIBA._totalTaxIfSelling (MamaShiba.sol#118) is not in mixedCase
Variable MAMASHIBA._totalDistributionShares (MamaShiba.sol#119) is not in mixedCase
Parameter SafeToken.setSafeManager(address)._safeManager (SafeToken.sol#19) is not in mixedCase
Parameter SafeToken.withdraw(address,uint256)._token (SafeToken.sol#23) is not in mixedCase
Parameter SafeToken.withdraw(address,uint256)._amount (SafeToken.sol#23) is not in mixedCase
Parameter SafeToken.withdrawBNB(uint256)._amount (SafeToken.sol#28) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Reentrancy in MAMASHIBA._transfer(address,address,uint256) (MamaShiba.sol#467-540):
External calls:
- swapAndLiquify(contractTokenBalance) (MamaShiba.sol#515)
- MarketingWallet.transfer(amountBNBMarketing) (MamaShiba.sol#565)
External calls sending eth:
- swapAndLiquifyDividends() (MamaShiba.sol#505)
- (success) = address(dividendTracker).call{value: dividends}() (MamaShiba.sol#578)
- swapAndLiquify(contractTokenBalance) (MamaShiba.sol#515)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (MamaShiba.sol#616-623)
- MarketingWallet.transfer(amountBNBMarketing) (MamaShiba.sol#565)
State variables written after the call(s):
- amountToSend = takeFee(from,to,amount) (MamaShiba.sol#522)
- _balances[account] = accountBalance - amount (ERC20.sol#280)
- _balances[sender] = senderBalance - amount (ERC20.sol#231)
- _balances[recipient] += amount (ERC20.sol#233)
- super._transfer(from,to,amountToSend) (MamaShiba.sol#525)
- _balances[sender] = senderBalance - amount (ERC20.sol#231)
- _balances[recipient] += amount (ERC20.sol#233)
- amountToSend = takeFee(from,to,amount) (MamaShiba.sol#522)
- _totalSupply -= amount (ERC20.sol#282)
Event emitted after the call(s):
- ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gas,tx.origin) (MamaShiba.sol#534)
- Transfer(account,address(0),amount) (ERC20.sol#284)
- amountToSend = takeFee(from,to,amount) (MamaShiba.sol#522)
- Transfer(sender,recipient,amount) (ERC20.sol#235)
- super._transfer(from,to,amountToSend) (MamaShiba.sol#525)
- Transfer(sender,recipient,amount) (ERC20.sol#235)
- amountToSend = takeFee(from,to,amount) (MamaShiba.sol#522)
Reentrancy in MAMASHIBA.swapAndLiquify(uint256) (MamaShiba.sol#542-573):
External calls:
- MarketingWallet.transfer(amountBNBMarketing) (MamaShiba.sol#565)
External calls sending eth:
- MarketingWallet.transfer(amountBNBMarketing) (MamaShiba.sol#565)
- addLiquidity(tokensForLP,amountBNBLiquidity) (MamaShiba.sol#569)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (MamaShiba.sol#616-623)
State variables written after the call(s):
- addLiquidity(tokensForLP,amountBNBLiquidity) (MamaShiba.sol#569)
- _allowances[owner][spender] = amount (ERC20.sol#310)
- nextTxSendDividends = tokensForSwap (MamaShiba.sol#571)
Event emitted after the call(s):
- Approval(owner,spender,amount) (ERC20.sol#311)
- addLiquidity(tokensForLP,amountBNBLiquidity) (MamaShiba.sol#569)
- SwapAndLiquify(tokensForLP,totMarkRewardsLiquidity) (MamaShiba.sol#572)
Apply the check-effects-interactions pattern.
Additional information: link
MAMASHIBADividendTracker.getAccountAtIndex(uint256) (MAMASHIBADividendTracker.sol#127-144) uses literals with too many digits:
- (0x0000000000000000000000000000000000000000,- 1,- 1,0,0,0,0,0) (MAMASHIBADividendTracker.sol#138)
MAMASHIBA.constructor() (MamaShiba.sol#187-247) uses literals with too many digits:
- DeadWallet = address(0x000000000000000000000000000000000000dEaD) (MamaShiba.sol#190)
MAMASHIBA.constructor() (MamaShiba.sol#187-247) uses literals with too many digits:
- dividendTracker.excludeFromDividends(0x000000000000000000000000000000000000dEaD) (MamaShiba.sol#219)
MAMASHIBA.constructor() (MamaShiba.sol#187-247) uses literals with too many digits:
- _mint(owner(),1000000000000 * (10 ** 18)) (MamaShiba.sol#246)
MAMASHIBA.updateGasForProcessing(uint256) (MamaShiba.sol#312-317) uses literals with too many digits:
- require(bool,string)(newValue >= 200000 && newValue <= 500000,MAMASHIBA: gasForProcessing must be between 200,000 and 500,000) (MamaShiba.sol#313)
MAMASHIBA._transfer(address,address,uint256) (MamaShiba.sol#467-540) uses literals with too many digits:
- to != owner() && to != address(this) && to != address(0x000000000000000000000000000000000000dEaD) && to != uniswapV2Pair && to != MarketingWallet && to != GameWallet (MamaShiba.sol#484)
MAMASHIBA.slitherConstructorVariables() (MamaShiba.sol#77-626) uses literals with too many digits:
- maxSellTransactionAmount = 10000000000 * (10 ** 18) (MamaShiba.sol#93)
MAMASHIBA.slitherConstructorVariables() (MamaShiba.sol#77-626) uses literals with too many digits:
- maxWalletAmount = 20000000000 * (10 ** 18) (MamaShiba.sol#94)
MAMASHIBA.slitherConstructorVariables() (MamaShiba.sol#77-626) uses literals with too many digits:
- swapTokensAtAmount = 200000000 * (10 ** 18) (MamaShiba.sol#95)
MAMASHIBA.slitherConstructorVariables() (MamaShiba.sol#77-626) uses literals with too many digits:
- gasForProcessing = 300000 (MamaShiba.sol#122)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
withdrawDividend() should be declared external:
- DividendPayingToken.withdrawDividend() (DividendPayingToken.sol#84-86)
- MAMASHIBADividendTracker.withdrawDividend() (MAMASHIBADividendTracker.sol#51-53)
dividendOf(address) should be declared external:
- DividendPayingToken.dividendOf(address) (DividendPayingToken.sol#112-114)
withdrawnDividendOf(address) should be declared external:
- DividendPayingToken.withdrawnDividendOf(address) (DividendPayingToken.sol#126-128)
name() should be declared external:
- ERC20.name() (ERC20.sol#59-61)
symbol() should be declared external:
- ERC20.symbol() (ERC20.sol#67-69)
decimals() should be declared external:
- ERC20.decimals() (ERC20.sol#84-86)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (ERC20.sol#110-113)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (ERC20.sol#129-132)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (ERC20.sol#147-161)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (ERC20.sol#175-178)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (ERC20.sol#194-202)
get(IterableMapping.Map,address) should be declared external:
- IterableMapping.get(IterableMapping.Map,address) (IterableMapping.sol#13-15)
getIndexOfKey(IterableMapping.Map,address) should be declared external:
- IterableMapping.getIndexOfKey(IterableMapping.Map,address) (IterableMapping.sol#17-22)
getKeyAtIndex(IterableMapping.Map,uint256) should be declared external:
- IterableMapping.getKeyAtIndex(IterableMapping.Map,uint256) (IterableMapping.sol#24-26)
size(IterableMapping.Map) should be declared external:
- IterableMapping.size(IterableMapping.Map) (IterableMapping.sol#30-32)
_minimumTokenBalanceForReward(uint256) should be declared external:
- MAMASHIBADividendTracker._minimumTokenBalanceForReward(uint256) (MAMASHIBADividendTracker.sol#47-49)
getAccountAtIndex(uint256) should be declared external:
- MAMASHIBADividendTracker.getAccountAtIndex(uint256) (MAMASHIBADividendTracker.sol#127-144)
process(uint256) should be declared external:
- MAMASHIBADividendTracker.process(uint256) (MAMASHIBADividendTracker.sol#171-216)
setMaxWallet(uint256) should be declared external:
- MAMASHIBA.setMaxWallet(uint256) (MamaShiba.sol#170-172)
setMarketingWallet(address) should be declared external:
- MAMASHIBA.setMarketingWallet(address) (MamaShiba.sol#174-176)
setGameWallet(address) should be declared external:
- MAMASHIBA.setGameWallet(address) (MamaShiba.sol#178-180)
updateUniswapV2Router(address) should be declared external:
- MAMASHIBA.updateUniswapV2Router(address) (MamaShiba.sol#257-261)
setExcludeFromMaxTx(address,bool) should be declared external:
- MAMASHIBA.setExcludeFromMaxTx(address,bool) (MamaShiba.sol#270-272)
setExcludeFromAll(address) should be declared external:
- MAMASHIBA.setExcludeFromAll(address) (MamaShiba.sol#274-278)
excludeMultipleAccountsFromFees(address[],bool) should be declared external:
- MAMASHIBA.excludeMultipleAccountsFromFees(address[],bool) (MamaShiba.sol#280-286)
setAutomatedMarketMakerPair(address,bool) should be declared external:
- MAMASHIBA.setAutomatedMarketMakerPair(address,bool) (MamaShiba.sol#288-292)
setSWapToensAtAmount(uint256) should be declared external:
- MAMASHIBA.setSWapToensAtAmount(uint256) (MamaShiba.sol#294-297)
updateGasForProcessing(uint256) should be declared external:
- MAMASHIBA.updateGasForProcessing(uint256) (MamaShiba.sol#312-317)
isExcludedFromFees(address) should be declared external:
- MAMASHIBA.isExcludedFromFees(address) (MamaShiba.sol#331-333)
isExcludedFromMaxTx(address) should be declared external:
- MAMASHIBA.isExcludedFromMaxTx(address) (MamaShiba.sol#335-337)
withdrawableDividendOf(address) should be declared external:
- MAMASHIBA.withdrawableDividendOf(address) (MamaShiba.sol#339-341)
dividendTokenBalanceOf(address) should be declared external:
- MAMASHIBA.dividendTokenBalanceOf(address) (MamaShiba.sol#343-345)
setSwapAndLiquifyEnabled(bool) should be declared external:
- MAMASHIBA.setSwapAndLiquifyEnabled(bool) (MamaShiba.sol#395-398)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (Ownable.sol#53-55)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (Ownable.sol#61-64)
setSafeManager(address) should be declared external:
- SafeToken.setSafeManager(address) (SafeToken.sol#19-21)
Use the external attribute for functions never called from the contract.
Additional information: link
Contract has 13% buy tax and 16% sell tax.
Taxes are suspiciously high (over 10%) and contract ownership is not renounced. Token has a high risk of becoming a honeypot.
Number of Binance Smart Chain (BSC) token holders is low.
Token is deployed only at one blockchain
Token has only one trading pair
Young tokens have high risks of scam / price dump / death
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Young tokens have high risks of price dump / death
Young tokens have high risks of price dump / death
Twitter account has relatively few followers
Unable to find Blog account (Reddit or Medium)