OwnableUpgradeable.__gap (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#87) shadows:
- ContextUpgradeable.__gap (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#36)
ERC20Upgradeable.__gap (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#394) shadows:
- ContextUpgradeable.__gap (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#36)
Remove the state variable shadowing.
Additional information: link
BABYTOKEN.swapAndSendToFee(uint256) (contracts/BABYTOKEN.sol#468-474) ignores return value by IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (contracts/BABYTOKEN.sol#472)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
BABYTOKEN.addLiquidity(uint256,uint256) (contracts/BABYTOKEN.sol#530-543) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Reentrancy in BABYTOKEN._transfer(address,address,uint256) (contracts/BABYTOKEN.sol#355-466):
External calls:
- swapAndSendToFee(AmountMarketingFee) (contracts/BABYTOKEN.sol#381)
- IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (contracts/BABYTOKEN.sol#472)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#521-527)
- swapAndLiquify(AmountLiquidityFee) (contracts/BABYTOKEN.sol#382)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#504-510)
- swapAndSendDividends(AmountTokenRewardsFee) (contracts/BABYTOKEN.sol#383)
- success = IERC20(rewardToken).transfer(address(dividendTracker),dividends) (contracts/BABYTOKEN.sol#549)
- dividendTracker.distributeCAKEDividends(dividends) (contracts/BABYTOKEN.sol#551)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#521-527)
External calls sending eth:
- swapAndLiquify(AmountLiquidityFee) (contracts/BABYTOKEN.sol#382)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
State variables written after the call(s):
- AmountLiquidityFee += LFee (contracts/BABYTOKEN.sol#429)
- AmountLiquidityFee += LFee (contracts/BABYTOKEN.sol#439)
- AmountMarketingFee += MFee (contracts/BABYTOKEN.sol#433)
- AmountMarketingFee += MFee (contracts/BABYTOKEN.sol#443)
- AmountTokenRewardsFee += RFee (contracts/BABYTOKEN.sol#431)
- AmountTokenRewardsFee += RFee (contracts/BABYTOKEN.sol#441)
- super._transfer(address(this),_defaultWalletAddress,amount.mul(10).div(100)) (contracts/BABYTOKEN.sol#410)
- _balances[from] = fromBalance - amount (@openzeppelin/contracts/token/ERC20/ERC20.sol#239)
- _balances[to] += amount (@openzeppelin/contracts/token/ERC20/ERC20.sol#241)
- super._transfer(address(this),_defaultWalletAddress,1000 * 10 ** 26) (contracts/BABYTOKEN.sol#415)
- _balances[from] = fromBalance - amount (@openzeppelin/contracts/token/ERC20/ERC20.sol#239)
- _balances[to] += amount (@openzeppelin/contracts/token/ERC20/ERC20.sol#241)
- super._transfer(address(this),parentAddr[to],amount.mul(10).div(100)) (contracts/BABYTOKEN.sol#420)
- _balances[from] = fromBalance - amount (@openzeppelin/contracts/token/ERC20/ERC20.sol#239)
- _balances[to] += amount (@openzeppelin/contracts/token/ERC20/ERC20.sol#241)
- super._transfer(address(this),parentAddr[to],1000 * 10 ** 26) (contracts/BABYTOKEN.sol#425)
- _balances[from] = fromBalance - amount (@openzeppelin/contracts/token/ERC20/ERC20.sol#239)
- _balances[to] += amount (@openzeppelin/contracts/token/ERC20/ERC20.sol#241)
- super._transfer(from,deadWallet,DFee) (contracts/BABYTOKEN.sol#448)
- _balances[from] = fromBalance - amount (@openzeppelin/contracts/token/ERC20/ERC20.sol#239)
- _balances[to] += amount (@openzeppelin/contracts/token/ERC20/ERC20.sol#241)
- super._transfer(from,address(this),fees.sub(DFee)) (contracts/BABYTOKEN.sol#449)
- _balances[from] = fromBalance - amount (@openzeppelin/contracts/token/ERC20/ERC20.sol#239)
- _balances[to] += amount (@openzeppelin/contracts/token/ERC20/ERC20.sol#241)
- super._transfer(from,to,amount) (contracts/BABYTOKEN.sol#452)
- _balances[from] = fromBalance - amount (@openzeppelin/contracts/token/ERC20/ERC20.sol#239)
- _balances[to] += amount (@openzeppelin/contracts/token/ERC20/ERC20.sol#241)
- swapping = false (contracts/BABYTOKEN.sol#384)
Apply the check-effects-interactions pattern.
Additional information: link
Too many vulnerabilities (Unchecked transfer, Reentrancy vulnerability, etc.). High risk of a scam. DYOR & manual audit are advised.
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.
Reentrancy in BABYTOKEN._setAutomatedMarketMakerPair(address,bool) (contracts/BABYTOKEN.sol#214-222):
External calls:
- dividendTracker.excludeFromDividends(pair) (contracts/BABYTOKEN.sol#219)
Event emitted after the call(s):
- SetAutomatedMarketMakerPair(pair,value) (contracts/BABYTOKEN.sol#221)
Reentrancy in BABYTOKEN._transfer(address,address,uint256) (contracts/BABYTOKEN.sol#355-466):
External calls:
- swapAndSendToFee(AmountMarketingFee) (contracts/BABYTOKEN.sol#381)
- IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (contracts/BABYTOKEN.sol#472)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#521-527)
- swapAndLiquify(AmountLiquidityFee) (contracts/BABYTOKEN.sol#382)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#504-510)
External calls sending eth:
- swapAndLiquify(AmountLiquidityFee) (contracts/BABYTOKEN.sol#382)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
Event emitted after the call(s):
- Approval(owner,spender,amount) (@openzeppelin/contracts/token/ERC20/ERC20.sol#319)
- swapAndLiquify(AmountLiquidityFee) (contracts/BABYTOKEN.sol#382)
- SwapAndLiquify(half,newBalance,otherHalf) (contracts/BABYTOKEN.sol#492)
- swapAndLiquify(AmountLiquidityFee) (contracts/BABYTOKEN.sol#382)
Reentrancy in BABYTOKEN._transfer(address,address,uint256) (contracts/BABYTOKEN.sol#355-466):
External calls:
- swapAndSendToFee(AmountMarketingFee) (contracts/BABYTOKEN.sol#381)
- IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (contracts/BABYTOKEN.sol#472)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#521-527)
- swapAndLiquify(AmountLiquidityFee) (contracts/BABYTOKEN.sol#382)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#504-510)
- swapAndSendDividends(AmountTokenRewardsFee) (contracts/BABYTOKEN.sol#383)
- success = IERC20(rewardToken).transfer(address(dividendTracker),dividends) (contracts/BABYTOKEN.sol#549)
- dividendTracker.distributeCAKEDividends(dividends) (contracts/BABYTOKEN.sol#551)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#521-527)
External calls sending eth:
- swapAndLiquify(AmountLiquidityFee) (contracts/BABYTOKEN.sol#382)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
Event emitted after the call(s):
- Approval(owner,spender,amount) (@openzeppelin/contracts/token/ERC20/ERC20.sol#319)
- swapAndSendDividends(AmountTokenRewardsFee) (contracts/BABYTOKEN.sol#383)
- SendDividends(tokens,dividends) (contracts/BABYTOKEN.sol#552)
- swapAndSendDividends(AmountTokenRewardsFee) (contracts/BABYTOKEN.sol#383)
- Transfer(from,to,amount) (@openzeppelin/contracts/token/ERC20/ERC20.sol#243)
- super._transfer(address(this),_defaultWalletAddress,1000 * 10 ** 26) (contracts/BABYTOKEN.sol#415)
- Transfer(from,to,amount) (@openzeppelin/contracts/token/ERC20/ERC20.sol#243)
- super._transfer(address(this),parentAddr[to],amount.mul(10).div(100)) (contracts/BABYTOKEN.sol#420)
- Transfer(from,to,amount) (@openzeppelin/contracts/token/ERC20/ERC20.sol#243)
- super._transfer(address(this),parentAddr[to],1000 * 10 ** 26) (contracts/BABYTOKEN.sol#425)
- Transfer(from,to,amount) (@openzeppelin/contracts/token/ERC20/ERC20.sol#243)
- super._transfer(from,address(this),fees.sub(DFee)) (contracts/BABYTOKEN.sol#449)
- Transfer(from,to,amount) (@openzeppelin/contracts/token/ERC20/ERC20.sol#243)
- super._transfer(from,to,amount) (contracts/BABYTOKEN.sol#452)
- Transfer(from,to,amount) (@openzeppelin/contracts/token/ERC20/ERC20.sol#243)
- super._transfer(from,deadWallet,DFee) (contracts/BABYTOKEN.sol#448)
- Transfer(from,to,amount) (@openzeppelin/contracts/token/ERC20/ERC20.sol#243)
- super._transfer(address(this),_defaultWalletAddress,amount.mul(10).div(100)) (contracts/BABYTOKEN.sol#410)
Reentrancy in BABYTOKEN._transfer(address,address,uint256) (contracts/BABYTOKEN.sol#355-466):
External calls:
- swapAndSendToFee(AmountMarketingFee) (contracts/BABYTOKEN.sol#381)
- IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (contracts/BABYTOKEN.sol#472)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#521-527)
- swapAndLiquify(AmountLiquidityFee) (contracts/BABYTOKEN.sol#382)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#504-510)
- swapAndSendDividends(AmountTokenRewardsFee) (contracts/BABYTOKEN.sol#383)
- success = IERC20(rewardToken).transfer(address(dividendTracker),dividends) (contracts/BABYTOKEN.sol#549)
- dividendTracker.distributeCAKEDividends(dividends) (contracts/BABYTOKEN.sol#551)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#521-527)
- dividendTracker.setBalance(address(from),balanceOf(from)) (contracts/BABYTOKEN.sol#454)
- dividendTracker.setBalance(address(to),balanceOf(to)) (contracts/BABYTOKEN.sol#455)
- dividendTracker.process(gas) (contracts/BABYTOKEN.sol#460-464)
External calls sending eth:
- swapAndLiquify(AmountLiquidityFee) (contracts/BABYTOKEN.sol#382)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
Event emitted after the call(s):
- ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gas,tx.origin) (contracts/BABYTOKEN.sol#461)
Reentrancy in BABYTOKEN.constructor(string,string,uint256,address[4],uint256[4],uint256[4],uint256) (contracts/BABYTOKEN.sol#90-153):
External calls:
- dividendTracker.initialize(rewardToken,tokenBalanceForReward_) (contracts/BABYTOKEN.sol#125-128)
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (contracts/BABYTOKEN.sol#131-132)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (contracts/BABYTOKEN.sol#137)
- dividendTracker.excludeFromDividends(pair) (contracts/BABYTOKEN.sol#219)
Event emitted after the call(s):
- SetAutomatedMarketMakerPair(pair,value) (contracts/BABYTOKEN.sol#221)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (contracts/BABYTOKEN.sol#137)
Reentrancy in BABYTOKEN.constructor(string,string,uint256,address[4],uint256[4],uint256[4],uint256) (contracts/BABYTOKEN.sol#90-153):
External calls:
- dividendTracker.initialize(rewardToken,tokenBalanceForReward_) (contracts/BABYTOKEN.sol#125-128)
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (contracts/BABYTOKEN.sol#131-132)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (contracts/BABYTOKEN.sol#137)
- dividendTracker.excludeFromDividends(pair) (contracts/BABYTOKEN.sol#219)
- dividendTracker.excludeFromDividends(address(dividendTracker)) (contracts/BABYTOKEN.sol#140)
- dividendTracker.excludeFromDividends(address(this)) (contracts/BABYTOKEN.sol#141)
- dividendTracker.excludeFromDividends(owner()) (contracts/BABYTOKEN.sol#142)
- dividendTracker.excludeFromDividends(deadWallet) (contracts/BABYTOKEN.sol#143)
- dividendTracker.excludeFromDividends(address(_uniswapV2Router)) (contracts/BABYTOKEN.sol#144)
Event emitted after the call(s):
- ExcludeFromFees(account,excluded) (contracts/BABYTOKEN.sol#189)
- excludeFromFees(address(this),true) (contracts/BABYTOKEN.sol#149)
- ExcludeFromFees(account,excluded) (contracts/BABYTOKEN.sol#189)
- excludeFromFees(_marketingWalletAddress,true) (contracts/BABYTOKEN.sol#148)
- ExcludeFromFees(account,excluded) (contracts/BABYTOKEN.sol#189)
- excludeFromFees(owner(),true) (contracts/BABYTOKEN.sol#147)
- Transfer(address(0),account,amount) (@openzeppelin/contracts/token/ERC20/ERC20.sol#264)
- _mint(owner(),totalSupply) (contracts/BABYTOKEN.sol#151)
Reentrancy in BABYTOKENDividendTracker.processAccount(address,bool) (contracts/BABYTOKENDividendTracker.sol#529-543):
External calls:
- amount = _withdrawDividendOfUser(account) (contracts/BABYTOKENDividendTracker.sol#534)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (contracts/BABYTOKENDividendTracker.sol#153-156)
Event emitted after the call(s):
- Claim(account,amount,automatic) (contracts/BABYTOKENDividendTracker.sol#538)
Reentrancy in BABYTOKEN.processDividendTracker(uint256) (contracts/BABYTOKEN.sol#290-293):
External calls:
- (iterations,claims,lastProcessedIndex) = dividendTracker.process(gas) (contracts/BABYTOKEN.sol#291)
Event emitted after the call(s):
- ProcessedDividendTracker(iterations,claims,lastProcessedIndex,false,gas,tx.origin) (contracts/BABYTOKEN.sol#292)
Reentrancy in BABYTOKEN.swapAndLiquify(uint256) (contracts/BABYTOKEN.sol#476-493):
External calls:
- swapTokensForEth(half) (contracts/BABYTOKEN.sol#484)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#504-510)
- addLiquidity(otherHalf,newBalance) (contracts/BABYTOKEN.sol#490)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (contracts/BABYTOKEN.sol#490)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
Event emitted after the call(s):
- Approval(owner,spender,amount) (@openzeppelin/contracts/token/ERC20/ERC20.sol#319)
- addLiquidity(otherHalf,newBalance) (contracts/BABYTOKEN.sol#490)
- SwapAndLiquify(half,newBalance,otherHalf) (contracts/BABYTOKEN.sol#492)
Reentrancy in BABYTOKEN.swapAndSendDividends(uint256) (contracts/BABYTOKEN.sol#545-554):
External calls:
- swapTokensForCake(tokens) (contracts/BABYTOKEN.sol#546)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#521-527)
- success = IERC20(rewardToken).transfer(address(dividendTracker),dividends) (contracts/BABYTOKEN.sol#549)
- dividendTracker.distributeCAKEDividends(dividends) (contracts/BABYTOKEN.sol#551)
Event emitted after the call(s):
- SendDividends(tokens,dividends) (contracts/BABYTOKEN.sol#552)
Reentrancy in BABYTOKEN.swapManual() (contracts/BABYTOKEN.sol#307-315):
External calls:
- swapAndLiquify(AmountLiquidityFee) (contracts/BABYTOKEN.sol#311)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#504-510)
- swapAndSendDividends(AmountTokenRewardsFee) (contracts/BABYTOKEN.sol#312)
- success = IERC20(rewardToken).transfer(address(dividendTracker),dividends) (contracts/BABYTOKEN.sol#549)
- dividendTracker.distributeCAKEDividends(dividends) (contracts/BABYTOKEN.sol#551)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#521-527)
External calls sending eth:
- swapAndLiquify(AmountLiquidityFee) (contracts/BABYTOKEN.sol#311)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
Event emitted after the call(s):
- Approval(owner,spender,amount) (@openzeppelin/contracts/token/ERC20/ERC20.sol#319)
- swapAndSendDividends(AmountTokenRewardsFee) (contracts/BABYTOKEN.sol#312)
- SendDividends(tokens,dividends) (contracts/BABYTOKEN.sol#552)
- swapAndSendDividends(AmountTokenRewardsFee) (contracts/BABYTOKEN.sol#312)
Reentrancy in BABYTOKEN.swapManual() (contracts/BABYTOKEN.sol#307-315):
External calls:
- swapAndLiquify(AmountLiquidityFee) (contracts/BABYTOKEN.sol#311)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#504-510)
- swapAndSendDividends(AmountTokenRewardsFee) (contracts/BABYTOKEN.sol#312)
- success = IERC20(rewardToken).transfer(address(dividendTracker),dividends) (contracts/BABYTOKEN.sol#549)
- dividendTracker.distributeCAKEDividends(dividends) (contracts/BABYTOKEN.sol#551)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#521-527)
- swapAndSendToFee(AmountMarketingFee) (contracts/BABYTOKEN.sol#313)
- IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (contracts/BABYTOKEN.sol#472)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#521-527)
External calls sending eth:
- swapAndLiquify(AmountLiquidityFee) (contracts/BABYTOKEN.sol#311)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
Event emitted after the call(s):
- Approval(owner,spender,amount) (@openzeppelin/contracts/token/ERC20/ERC20.sol#319)
- swapAndSendToFee(AmountMarketingFee) (contracts/BABYTOKEN.sol#313)
Apply the check-effects-interactions pattern.
Additional information: link
Contract name (BNB2.0) contains non-alphanumeric characters.
Not a direct threat, but may indicate unreliable intentions of developer. Non-alphanumeric chars (,.;!#*&") are extremely rare among low risk tokens.
Contract ticker (BNB2.0) contains non-alphanumeric characters.
Not a direct threat, but may indicate unreliable intentions of developer. Non-alphanumeric chars (,.;!#*&") are extremely rare among low risk tokens.
Reentrancy in DividendPayingToken._withdrawDividendOfUser(address) (contracts/BABYTOKENDividendTracker.sol#143-169):
External calls:
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (contracts/BABYTOKENDividendTracker.sol#153-156)
State variables written after the call(s):
- withdrawnDividends[user] = withdrawnDividends[user].sub(_withdrawableDividend) (contracts/BABYTOKENDividendTracker.sol#159-161)
Apply the check-effects-interactions pattern.
Additional information: link
BABYTOKEN._transfer(address,address,uint256).iterations (contracts/BABYTOKEN.sol#460) is a local variable never initialized
BABYTOKEN._transfer(address,address,uint256).claims (contracts/BABYTOKEN.sol#460) is a local variable never initialized
BABYTOKEN._transfer(address,address,uint256).lastProcessedIndex (contracts/BABYTOKEN.sol#460) is a local variable never initialized
BABYTOKEN._transfer(address,address,uint256).DFee (contracts/BABYTOKEN.sol#400) is a local variable never initialized
BABYTOKEN._transfer(address,address,uint256).fees (contracts/BABYTOKEN.sol#396) 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
BABYTOKEN.claim() (contracts/BABYTOKEN.sol#295-297) ignores return value by dividendTracker.processAccount(address(msg.sender),false) (contracts/BABYTOKEN.sol#296)
BABYTOKEN._transfer(address,address,uint256) (contracts/BABYTOKEN.sol#355-466) ignores return value by dividendTracker.process(gas) (contracts/BABYTOKEN.sol#460-464)
BABYTOKEN.addLiquidity(uint256,uint256) (contracts/BABYTOKEN.sol#530-543) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
Ensure that all the return values of the function calls are used.
Additional information: link
BABYTOKEN.constructor(string,string,uint256,address[4],uint256[4],uint256[4],uint256).totalSupply (contracts/BABYTOKEN.sol#115) shadows:
- ERC20.totalSupply() (@openzeppelin/contracts/token/ERC20/ERC20.sol#94-96) (function)
- IERC20.totalSupply() (@openzeppelin/contracts/token/ERC20/IERC20.sol#13) (function)
DividendPayingToken.__DividendPayingToken_init(address,string,string)._name (contracts/BABYTOKENDividendTracker.sol#114) shadows:
- ERC20Upgradeable._name (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#43) (state variable)
DividendPayingToken.__DividendPayingToken_init(address,string,string)._symbol (contracts/BABYTOKENDividendTracker.sol#115) shadows:
- ERC20Upgradeable._symbol (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#44) (state variable)
DividendPayingToken.dividendOf(address)._owner (contracts/BABYTOKENDividendTracker.sol#174) shadows:
- OwnableUpgradeable._owner (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#22) (state variable)
DividendPayingToken.withdrawableDividendOf(address)._owner (contracts/BABYTOKENDividendTracker.sol#181) shadows:
- OwnableUpgradeable._owner (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#22) (state variable)
DividendPayingToken.withdrawnDividendOf(address)._owner (contracts/BABYTOKENDividendTracker.sol#193) shadows:
- OwnableUpgradeable._owner (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#22) (state variable)
DividendPayingToken.accumulativeDividendOf(address)._owner (contracts/BABYTOKENDividendTracker.sol#207) shadows:
- OwnableUpgradeable._owner (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#22) (state variable)
Rename the local variables that shadow another component.
Additional information: link
BABYTOKEN.setSwapTokensAtAmount(uint256) (contracts/BABYTOKEN.sol#320-322) should emit an event for:
- swapTokensAtAmount = amount (contracts/BABYTOKEN.sol#321)
BABYTOKEN.setBuyTaxes(uint256,uint256,uint256,uint256) (contracts/BABYTOKEN.sol#329-336) should emit an event for:
- buyTokenRewardsFee = rewardsFee (contracts/BABYTOKEN.sol#331)
- buyLiquidityFee = liquidity (contracts/BABYTOKEN.sol#332)
- buyMarketingFee = marketingFee (contracts/BABYTOKEN.sol#333)
- buyDeadFee = deadFee (contracts/BABYTOKEN.sol#334)
BABYTOKEN.setSelTaxes(uint256,uint256,uint256,uint256) (contracts/BABYTOKEN.sol#347-353) should emit an event for:
- sellTokenRewardsFee = rewardsFee (contracts/BABYTOKEN.sol#349)
- sellLiquidityFee = liquidity (contracts/BABYTOKEN.sol#350)
- sellMarketingFee = marketingFee (contracts/BABYTOKEN.sol#351)
- sellDeadFee = deadFee (contracts/BABYTOKEN.sol#352)
Emit an event for critical parameter changes.
Additional information: link
BABYTOKEN.constructor(string,string,uint256,address[4],uint256[4],uint256[4],uint256)._uniswapV2Pair (contracts/BABYTOKEN.sol#131-132) lacks a zero-check on :
- uniswapPair = _uniswapV2Pair (contracts/BABYTOKEN.sol#135)
BABYTOKEN.updateUniswapV2Router(address)._uniswapV2Pair (contracts/BABYTOKEN.sol#181-182) lacks a zero-check on :
- uniswapPair = _uniswapV2Pair (contracts/BABYTOKEN.sol#183)
BABYTOKEN.setMarketingWallet(address).wallet (contracts/BABYTOKEN.sol#201) lacks a zero-check on :
- _marketingWalletAddress = wallet (contracts/BABYTOKEN.sol#202)
BABYTOKEN.setDefaultWallet(address).wallet (contracts/BABYTOKEN.sol#205) lacks a zero-check on :
- _defaultWalletAddress = wallet (contracts/BABYTOKEN.sol#206)
BABYTOKEN.setDeadWallet(address).addr (contracts/BABYTOKEN.sol#324) lacks a zero-check on :
- deadWallet = addr (contracts/BABYTOKEN.sol#325)
Check that the address is not zero.
Additional information: link
BABYTOKEN.migrateParent(address[]) (contracts/BABYTOKEN.sol#338-345) has external calls inside a loop: temp = IBABYTOKEN(0x17C87C346788728Cd064F3adFE6f4Bf250765F88).parentAddr(addrs[i]) (contracts/BABYTOKEN.sol#340)
DividendPayingToken._withdrawDividendOfUser(address) (contracts/BABYTOKENDividendTracker.sol#143-169) has external calls inside a loop: success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (contracts/BABYTOKENDividendTracker.sol#153-156)
Favor pull over push strategy for external calls.
Additional information: link
Variable 'BABYTOKEN._transfer(address,address,uint256).claims (contracts/BABYTOKEN.sol#460)' in BABYTOKEN._transfer(address,address,uint256) (contracts/BABYTOKEN.sol#355-466) potentially used before declaration: ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gas,tx.origin) (contracts/BABYTOKEN.sol#461)
Variable 'BABYTOKEN._transfer(address,address,uint256).lastProcessedIndex (contracts/BABYTOKEN.sol#460)' in BABYTOKEN._transfer(address,address,uint256) (contracts/BABYTOKEN.sol#355-466) potentially used before declaration: ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gas,tx.origin) (contracts/BABYTOKEN.sol#461)
Variable 'BABYTOKEN._transfer(address,address,uint256).iterations (contracts/BABYTOKEN.sol#460)' in BABYTOKEN._transfer(address,address,uint256) (contracts/BABYTOKEN.sol#355-466) potentially used before declaration: ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gas,tx.origin) (contracts/BABYTOKEN.sol#461)
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 BABYTOKEN._transfer(address,address,uint256) (contracts/BABYTOKEN.sol#355-466):
External calls:
- swapAndSendToFee(AmountMarketingFee) (contracts/BABYTOKEN.sol#381)
- IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (contracts/BABYTOKEN.sol#472)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#521-527)
- swapAndLiquify(AmountLiquidityFee) (contracts/BABYTOKEN.sol#382)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#504-510)
External calls sending eth:
- swapAndLiquify(AmountLiquidityFee) (contracts/BABYTOKEN.sol#382)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
State variables written after the call(s):
- swapAndLiquify(AmountLiquidityFee) (contracts/BABYTOKEN.sol#382)
- _allowances[owner][spender] = amount (@openzeppelin/contracts/token/ERC20/ERC20.sol#318)
Reentrancy in BABYTOKEN._transfer(address,address,uint256) (contracts/BABYTOKEN.sol#355-466):
External calls:
- swapAndSendToFee(AmountMarketingFee) (contracts/BABYTOKEN.sol#381)
- IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (contracts/BABYTOKEN.sol#472)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#521-527)
- swapAndLiquify(AmountLiquidityFee) (contracts/BABYTOKEN.sol#382)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#504-510)
- swapAndSendDividends(AmountTokenRewardsFee) (contracts/BABYTOKEN.sol#383)
- success = IERC20(rewardToken).transfer(address(dividendTracker),dividends) (contracts/BABYTOKEN.sol#549)
- dividendTracker.distributeCAKEDividends(dividends) (contracts/BABYTOKEN.sol#551)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#521-527)
External calls sending eth:
- swapAndLiquify(AmountLiquidityFee) (contracts/BABYTOKEN.sol#382)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
State variables written after the call(s):
- swapAndSendDividends(AmountTokenRewardsFee) (contracts/BABYTOKEN.sol#383)
- _allowances[owner][spender] = amount (@openzeppelin/contracts/token/ERC20/ERC20.sol#318)
- isGive[_defaultWalletAddress] = true (contracts/BABYTOKEN.sol#413)
- isGive[parentAddr[to]] = true (contracts/BABYTOKEN.sol#423)
- parentAddr[to] = from (contracts/BABYTOKEN.sol#405)
- teamAmount[_defaultWalletAddress] += amount (contracts/BABYTOKEN.sol#411)
- teamAmount[parentAddr[to]] += amount (contracts/BABYTOKEN.sol#421)
Reentrancy in BABYTOKEN.constructor(string,string,uint256,address[4],uint256[4],uint256[4],uint256) (contracts/BABYTOKEN.sol#90-153):
External calls:
- dividendTracker.initialize(rewardToken,tokenBalanceForReward_) (contracts/BABYTOKEN.sol#125-128)
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (contracts/BABYTOKEN.sol#131-132)
State variables written after the call(s):
- uniswapPair = _uniswapV2Pair (contracts/BABYTOKEN.sol#135)
- uniswapV2Router = _uniswapV2Router (contracts/BABYTOKEN.sol#134)
Reentrancy in BABYTOKEN.constructor(string,string,uint256,address[4],uint256[4],uint256[4],uint256) (contracts/BABYTOKEN.sol#90-153):
External calls:
- dividendTracker.initialize(rewardToken,tokenBalanceForReward_) (contracts/BABYTOKEN.sol#125-128)
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (contracts/BABYTOKEN.sol#131-132)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (contracts/BABYTOKEN.sol#137)
- dividendTracker.excludeFromDividends(pair) (contracts/BABYTOKEN.sol#219)
- dividendTracker.excludeFromDividends(address(dividendTracker)) (contracts/BABYTOKEN.sol#140)
- dividendTracker.excludeFromDividends(address(this)) (contracts/BABYTOKEN.sol#141)
- dividendTracker.excludeFromDividends(owner()) (contracts/BABYTOKEN.sol#142)
- dividendTracker.excludeFromDividends(deadWallet) (contracts/BABYTOKEN.sol#143)
- dividendTracker.excludeFromDividends(address(_uniswapV2Router)) (contracts/BABYTOKEN.sol#144)
State variables written after the call(s):
- _mint(owner(),totalSupply) (contracts/BABYTOKEN.sol#151)
- _balances[account] += amount (@openzeppelin/contracts/token/ERC20/ERC20.sol#263)
- excludeFromFees(owner(),true) (contracts/BABYTOKEN.sol#147)
- _isExcludedFromFees[account] = excluded (contracts/BABYTOKEN.sol#188)
- excludeFromFees(_marketingWalletAddress,true) (contracts/BABYTOKEN.sol#148)
- _isExcludedFromFees[account] = excluded (contracts/BABYTOKEN.sol#188)
- excludeFromFees(address(this),true) (contracts/BABYTOKEN.sol#149)
- _isExcludedFromFees[account] = excluded (contracts/BABYTOKEN.sol#188)
- _mint(owner(),totalSupply) (contracts/BABYTOKEN.sol#151)
- _totalSupply += amount (@openzeppelin/contracts/token/ERC20/ERC20.sol#262)
Reentrancy in BABYTOKENDividendTracker.processAccount(address,bool) (contracts/BABYTOKENDividendTracker.sol#529-543):
External calls:
- amount = _withdrawDividendOfUser(account) (contracts/BABYTOKENDividendTracker.sol#534)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (contracts/BABYTOKENDividendTracker.sol#153-156)
State variables written after the call(s):
- lastClaimTimes[account] = block.timestamp (contracts/BABYTOKENDividendTracker.sol#537)
Reentrancy in BABYTOKEN.swapAndLiquify(uint256) (contracts/BABYTOKEN.sol#476-493):
External calls:
- swapTokensForEth(half) (contracts/BABYTOKEN.sol#484)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#504-510)
- addLiquidity(otherHalf,newBalance) (contracts/BABYTOKEN.sol#490)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (contracts/BABYTOKEN.sol#490)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
State variables written after the call(s):
- AmountLiquidityFee = AmountLiquidityFee - tokens (contracts/BABYTOKEN.sol#491)
- addLiquidity(otherHalf,newBalance) (contracts/BABYTOKEN.sol#490)
- _allowances[owner][spender] = amount (@openzeppelin/contracts/token/ERC20/ERC20.sol#318)
Reentrancy in BABYTOKEN.swapAndSendDividends(uint256) (contracts/BABYTOKEN.sol#545-554):
External calls:
- swapTokensForCake(tokens) (contracts/BABYTOKEN.sol#546)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#521-527)
State variables written after the call(s):
- AmountTokenRewardsFee = AmountTokenRewardsFee - tokens (contracts/BABYTOKEN.sol#547)
Reentrancy in BABYTOKEN.swapAndSendToFee(uint256) (contracts/BABYTOKEN.sol#468-474):
External calls:
- swapTokensForCake(tokens) (contracts/BABYTOKEN.sol#470)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#521-527)
- IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (contracts/BABYTOKEN.sol#472)
State variables written after the call(s):
- AmountMarketingFee = AmountMarketingFee - tokens (contracts/BABYTOKEN.sol#473)
Reentrancy in BABYTOKEN.swapManual() (contracts/BABYTOKEN.sol#307-315):
External calls:
- swapAndLiquify(AmountLiquidityFee) (contracts/BABYTOKEN.sol#311)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#504-510)
- swapAndSendDividends(AmountTokenRewardsFee) (contracts/BABYTOKEN.sol#312)
- success = IERC20(rewardToken).transfer(address(dividendTracker),dividends) (contracts/BABYTOKEN.sol#549)
- dividendTracker.distributeCAKEDividends(dividends) (contracts/BABYTOKEN.sol#551)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#521-527)
External calls sending eth:
- swapAndLiquify(AmountLiquidityFee) (contracts/BABYTOKEN.sol#311)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
State variables written after the call(s):
- swapAndSendDividends(AmountTokenRewardsFee) (contracts/BABYTOKEN.sol#312)
- _allowances[owner][spender] = amount (@openzeppelin/contracts/token/ERC20/ERC20.sol#318)
Reentrancy in BABYTOKEN.swapManual() (contracts/BABYTOKEN.sol#307-315):
External calls:
- swapAndLiquify(AmountLiquidityFee) (contracts/BABYTOKEN.sol#311)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#504-510)
- swapAndSendDividends(AmountTokenRewardsFee) (contracts/BABYTOKEN.sol#312)
- success = IERC20(rewardToken).transfer(address(dividendTracker),dividends) (contracts/BABYTOKEN.sol#549)
- dividendTracker.distributeCAKEDividends(dividends) (contracts/BABYTOKEN.sol#551)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#521-527)
- swapAndSendToFee(AmountMarketingFee) (contracts/BABYTOKEN.sol#313)
- IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (contracts/BABYTOKEN.sol#472)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/BABYTOKEN.sol#521-527)
External calls sending eth:
- swapAndLiquify(AmountLiquidityFee) (contracts/BABYTOKEN.sol#311)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (contracts/BABYTOKEN.sol#534-541)
State variables written after the call(s):
- swapAndSendToFee(AmountMarketingFee) (contracts/BABYTOKEN.sol#313)
- _allowances[owner][spender] = amount (@openzeppelin/contracts/token/ERC20/ERC20.sol#318)
- swapping = false (contracts/BABYTOKEN.sol#314)
Reentrancy in BABYTOKEN.updateUniswapV2Router(address) (contracts/BABYTOKEN.sol#177-184):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this),uniswapV2Router.WETH()) (contracts/BABYTOKEN.sol#181-182)
State variables written after the call(s):
- uniswapPair = _uniswapV2Pair (contracts/BABYTOKEN.sol#183)
Apply the check-effects-interactions pattern.
Additional information: link
BABYTOKENDividendTracker.getAccount(address) (contracts/BABYTOKENDividendTracker.sol#378-425) uses timestamp for comparisons
Dangerous comparisons:
- nextClaimTime > block.timestamp (contracts/BABYTOKENDividendTracker.sol#422-424)
BABYTOKENDividendTracker.canAutoClaim(uint256) (contracts/BABYTOKENDividendTracker.sol#450-456) uses timestamp for comparisons
Dangerous comparisons:
- lastClaimTime > block.timestamp (contracts/BABYTOKENDividendTracker.sol#451)
- block.timestamp.sub(lastClaimTime) >= claimWait (contracts/BABYTOKENDividendTracker.sol#455)
Avoid relying on block.timestamp.
Additional information: link
AddressUpgradeable.verifyCallResult(bool,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#174-194) uses assembly
- INLINE ASM (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#186-189)
Clones.clone(address) (@openzeppelin/contracts/proxy/Clones.sol#25-34) uses assembly
- INLINE ASM (@openzeppelin/contracts/proxy/Clones.sol#26-32)
Clones.cloneDeterministic(address,bytes32) (@openzeppelin/contracts/proxy/Clones.sol#43-52) uses assembly
- INLINE ASM (@openzeppelin/contracts/proxy/Clones.sol#44-50)
Clones.predictDeterministicAddress(address,bytes32,address) (@openzeppelin/contracts/proxy/Clones.sol#57-72) uses assembly
- INLINE ASM (@openzeppelin/contracts/proxy/Clones.sol#62-71)
Do not use evm assembly.
Additional information: link
Different versions of Solidity is used:
- Version used: ['=0.8.4', '>=0.5.0', '>=0.6.2', '^0.8.0', '^0.8.1', '^0.8.2']
- ^0.8.0 (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#4)
- ^0.8.2 (@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol#4)
- ^0.8.0 (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#4)
- ^0.8.0 (@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol#4)
- ^0.8.0 (@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol#4)
- ^0.8.1 (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#4)
- ^0.8.0 (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#4)
- ^0.8.0 (@openzeppelin/contracts/access/Ownable.sol#4)
- ^0.8.0 (@openzeppelin/contracts/proxy/Clones.sol#4)
- ^0.8.0 (@openzeppelin/contracts/token/ERC20/ERC20.sol#4)
- ^0.8.0 (@openzeppelin/contracts/token/ERC20/IERC20.sol#4)
- ^0.8.0 (@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol#4)
- ^0.8.0 (@openzeppelin/contracts/utils/Context.sol#4)
- ^0.8.0 (@openzeppelin/contracts/utils/math/SafeMath.sol#4)
- ^0.8.0 (contracts/BABYTOKEN.sol#6)
- =0.8.4 (contracts/BABYTOKENDividendTracker.sol#2)
- ^0.8.0 (contracts/interface/IBABYTOKEN.sol#2)
- >=0.5.0 (contracts/interface/IUniswapV2Factory.sol#2)
- >=0.5.0 (contracts/interface/IUniswapV2Pair.sol#2)
- >=0.6.2 (contracts/interface/IUniswapV2Router02.sol#2)
- =0.8.4 (contracts/libs/IterableMapping.sol#2)
- =0.8.4 (contracts/libs/SafeMathInt.sol#2)
- =0.8.4 (contracts/libs/SafeMathUint.sol#2)
Use one Solidity version.
Additional information: link
AddressUpgradeable.functionCall(address,bytes) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#85-87) is never used and should be removed
AddressUpgradeable.functionCall(address,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#95-101) is never used and should be removed
AddressUpgradeable.functionCallWithValue(address,bytes,uint256) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#114-120) is never used and should be removed
AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#128-139) is never used and should be removed
AddressUpgradeable.functionStaticCall(address,bytes) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#147-149) is never used and should be removed
AddressUpgradeable.functionStaticCall(address,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#157-166) is never used and should be removed
AddressUpgradeable.sendValue(address,uint256) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#60-65) is never used and should be removed
AddressUpgradeable.verifyCallResult(bool,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#174-194) is never used and should be removed
Clones.cloneDeterministic(address,bytes32) (@openzeppelin/contracts/proxy/Clones.sol#43-52) is never used and should be removed
Clones.predictDeterministicAddress(address,bytes32) (@openzeppelin/contracts/proxy/Clones.sol#77-83) is never used and should be removed
Clones.predictDeterministicAddress(address,bytes32,address) (@openzeppelin/contracts/proxy/Clones.sol#57-72) is never used and should be removed
Context._msgData() (@openzeppelin/contracts/utils/Context.sol#21-23) is never used and should be removed
ContextUpgradeable.__Context_init() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#18-19) is never used and should be removed
ContextUpgradeable.__Context_init_unchained() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#21-22) is never used and should be removed
ContextUpgradeable._msgData() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#27-29) is never used and should be removed
DividendPayingToken._transfer(address,address,uint256) (contracts/BABYTOKENDividendTracker.sol#226-241) is never used and should be removed
ERC20._burn(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#280-295) is never used and should be removed
ERC20Upgradeable._transfer(address,address,uint256) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#231-251) is never used and should be removed
Initializable._disableInitializers() (@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol#129-131) is never used and should be removed
SafeMath.div(uint256,uint256,string) (@openzeppelin/contracts/utils/math/SafeMath.sol#191-200) is never used and should be removed
SafeMath.mod(uint256,uint256) (@openzeppelin/contracts/utils/math/SafeMath.sol#151-153) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (@openzeppelin/contracts/utils/math/SafeMath.sol#217-226) is never used and should be removed
SafeMath.sub(uint256,uint256,string) (@openzeppelin/contracts/utils/math/SafeMath.sol#168-177) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (@openzeppelin/contracts/utils/math/SafeMath.sol#22-28) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (@openzeppelin/contracts/utils/math/SafeMath.sol#64-69) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (@openzeppelin/contracts/utils/math/SafeMath.sol#76-81) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (@openzeppelin/contracts/utils/math/SafeMath.sol#47-57) is never used and should be removed
SafeMath.trySub(uint256,uint256) (@openzeppelin/contracts/utils/math/SafeMath.sol#35-40) is never used and should be removed
SafeMathInt.abs(int256) (contracts/libs/SafeMathInt.sol#56-59) is never used and should be removed
SafeMathInt.div(int256,int256) (contracts/libs/SafeMathInt.sol#27-33) is never used and should be removed
SafeMathInt.mul(int256,int256) (contracts/libs/SafeMathInt.sol#15-22) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.0 (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#4) allows old versions
Pragma version^0.8.2 (@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol#4) allows old versions
Pragma version^0.8.1 (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/access/Ownable.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/proxy/Clones.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/ERC20.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/IERC20.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/Context.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/math/SafeMath.sol#4) allows old versions
Pragma version^0.8.0 (contracts/BABYTOKEN.sol#6) allows old versions
Pragma version^0.8.0 (contracts/interface/IBABYTOKEN.sol#2) allows old versions
Pragma version>=0.5.0 (contracts/interface/IUniswapV2Factory.sol#2) allows old versions
Pragma version>=0.5.0 (contracts/interface/IUniswapV2Pair.sol#2) allows old versions
Pragma version>=0.6.2 (contracts/interface/IUniswapV2Router02.sol#2) allows old versions
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 AddressUpgradeable.sendValue(address,uint256) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#60-65):
- (success) = recipient.call{value: amount}() (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#63)
Low level call in AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#128-139):
- (success,returndata) = target.call{value: value}(data) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#137)
Low level call in AddressUpgradeable.functionStaticCall(address,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#157-166):
- (success,returndata) = target.staticcall(data) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#164)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function OwnableUpgradeable.__Ownable_init() (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#29-31) is not in mixedCase
Function OwnableUpgradeable.__Ownable_init_unchained() (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#33-35) is not in mixedCase
Variable OwnableUpgradeable.__gap (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#87) is not in mixedCase
Function ERC20Upgradeable.__ERC20_init(string,string) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#55-57) is not in mixedCase
Function ERC20Upgradeable.__ERC20_init_unchained(string,string) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#59-62) is not in mixedCase
Variable ERC20Upgradeable.__gap (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#394) is not in mixedCase
Function ContextUpgradeable.__Context_init() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#18-19) is not in mixedCase
Function ContextUpgradeable.__Context_init_unchained() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#21-22) is not in mixedCase
Variable ContextUpgradeable.__gap (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#36) is not in mixedCase
Parameter BABYTOKEN.setSwapAndLiquifyEnabled(bool)._enabled (contracts/BABYTOKEN.sol#317) is not in mixedCase
Variable BABYTOKEN.AmountLiquidityFee (contracts/BABYTOKEN.sol#33) is not in mixedCase
Variable BABYTOKEN.AmountTokenRewardsFee (contracts/BABYTOKEN.sol#34) is not in mixedCase
Variable BABYTOKEN.AmountMarketingFee (contracts/BABYTOKEN.sol#35) is not in mixedCase
Variable BABYTOKEN._marketingWalletAddress (contracts/BABYTOKEN.sol#37) is not in mixedCase
Variable BABYTOKEN._isBlacklisted (contracts/BABYTOKEN.sol#42) is not in mixedCase
Function DividendPayingToken.__DividendPayingToken_init(address,string,string) (contracts/BABYTOKENDividendTracker.sol#112-120) is not in mixedCase
Parameter DividendPayingToken.__DividendPayingToken_init(address,string,string)._rewardToken (contracts/BABYTOKENDividendTracker.sol#113) is not in mixedCase
Parameter DividendPayingToken.__DividendPayingToken_init(address,string,string)._name (contracts/BABYTOKENDividendTracker.sol#114) is not in mixedCase
Parameter DividendPayingToken.__DividendPayingToken_init(address,string,string)._symbol (contracts/BABYTOKENDividendTracker.sol#115) is not in mixedCase
Parameter DividendPayingToken.dividendOf(address)._owner (contracts/BABYTOKENDividendTracker.sol#174) is not in mixedCase
Parameter DividendPayingToken.withdrawableDividendOf(address)._owner (contracts/BABYTOKENDividendTracker.sol#181) is not in mixedCase
Parameter DividendPayingToken.withdrawnDividendOf(address)._owner (contracts/BABYTOKENDividendTracker.sol#193) is not in mixedCase
Parameter DividendPayingToken.accumulativeDividendOf(address)._owner (contracts/BABYTOKENDividendTracker.sol#207) is not in mixedCase
Constant DividendPayingToken.magnitude (contracts/BABYTOKENDividendTracker.sol#92) is not in UPPER_CASE_WITH_UNDERSCORES
Parameter BABYTOKENDividendTracker.getAccount(address)._account (contracts/BABYTOKENDividendTracker.sol#378) is not in mixedCase
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (contracts/interface/IUniswapV2Pair.sol#19) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (contracts/interface/IUniswapV2Pair.sol#20) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (contracts/interface/IUniswapV2Pair.sol#37) is not in mixedCase
Function IUniswapV2Router01.WETH() (contracts/interface/IUniswapV2Router02.sol#7) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable ERC20._totalSupply (@openzeppelin/contracts/token/ERC20/ERC20.sol#40) is too similar to BABYTOKEN.constructor(string,string,uint256,address[4],uint256[4],uint256[4],uint256).totalSupply_ (contracts/BABYTOKEN.sol#93)
Variable DividendPayingToken.__DividendPayingToken_init(address,string,string)._rewardToken (contracts/BABYTOKENDividendTracker.sol#113) is too similar to BABYTOKENDividendTracker.initialize(address,uint256).rewardToken_ (contracts/BABYTOKENDividendTracker.sol#305)
Variable DividendPayingToken._withdrawDividendOfUser(address)._withdrawableDividend (contracts/BABYTOKENDividendTracker.sol#147) is too similar to BABYTOKENDividendTracker.getAccount(address).withdrawableDividends (contracts/BABYTOKENDividendTracker.sol#385)
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (contracts/interface/IUniswapV2Router02.sol#12) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (contracts/interface/IUniswapV2Router02.sol#13)
Prevent variables from having similar names.
Additional information: link
Clones.clone(address) (@openzeppelin/contracts/proxy/Clones.sol#25-34) uses literals with too many digits:
- mstore(uint256,uint256)(ptr_clone_asm_0,0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000) (@openzeppelin/contracts/proxy/Clones.sol#28)
Clones.clone(address) (@openzeppelin/contracts/proxy/Clones.sol#25-34) uses literals with too many digits:
- mstore(uint256,uint256)(ptr_clone_asm_0 + 0x28,0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000) (@openzeppelin/contracts/proxy/Clones.sol#30)
Clones.cloneDeterministic(address,bytes32) (@openzeppelin/contracts/proxy/Clones.sol#43-52) uses literals with too many digits:
- mstore(uint256,uint256)(ptr_cloneDeterministic_asm_0,0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000) (@openzeppelin/contracts/proxy/Clones.sol#46)
Clones.cloneDeterministic(address,bytes32) (@openzeppelin/contracts/proxy/Clones.sol#43-52) uses literals with too many digits:
- mstore(uint256,uint256)(ptr_cloneDeterministic_asm_0 + 0x28,0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000) (@openzeppelin/contracts/proxy/Clones.sol#48)
Clones.predictDeterministicAddress(address,bytes32,address) (@openzeppelin/contracts/proxy/Clones.sol#57-72) uses literals with too many digits:
- mstore(uint256,uint256)(ptr_predictDeterministicAddress_asm_0,0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000) (@openzeppelin/contracts/proxy/Clones.sol#64)
Clones.predictDeterministicAddress(address,bytes32,address) (@openzeppelin/contracts/proxy/Clones.sol#57-72) uses literals with too many digits:
- mstore(uint256,uint256)(ptr_predictDeterministicAddress_asm_0 + 0x28,0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000) (@openzeppelin/contracts/proxy/Clones.sol#66)
BABYTOKEN.constructor(string,string,uint256,address[4],uint256[4],uint256[4],uint256) (contracts/BABYTOKEN.sol#90-153) uses literals with too many digits:
- gasForProcessing = 300000 (contracts/BABYTOKEN.sol#119)
BABYTOKEN.updateGasForProcessing(uint256) (contracts/BABYTOKEN.sol#225-230) uses literals with too many digits:
- require(bool,string)(newValue >= 200000 && newValue <= 500000,GasForProcessing must be between 200,000 and 500,000) (contracts/BABYTOKEN.sol#226)
BABYTOKEN.slitherConstructorVariables() (contracts/BABYTOKEN.sol#11-556) uses literals with too many digits:
- deadWallet = 0x000000000000000000000000000000000000dEaD (contracts/BABYTOKEN.sol#41)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
OwnableUpgradeable.__gap (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#87) is never used in BABYTOKENDividendTracker (contracts/BABYTOKENDividendTracker.sol#280-545)
SafeMathInt.MAX_INT256 (contracts/libs/SafeMathInt.sol#10) is never used in SafeMathInt (contracts/libs/SafeMathInt.sol#8-66)
Remove unused state variables.
Additional information: link
renounceOwnership() should be declared external:
- OwnableUpgradeable.renounceOwnership() (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#59-61)
transferOwnership(address) should be declared external:
- OwnableUpgradeable.transferOwnership(address) (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#67-70)
name() should be declared external:
- ERC20Upgradeable.name() (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#67-69)
symbol() should be declared external:
- ERC20Upgradeable.symbol() (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#75-77)
decimals() should be declared external:
- ERC20Upgradeable.decimals() (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#92-94)
transfer(address,uint256) should be declared external:
- ERC20Upgradeable.transfer(address,uint256) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#118-122)
approve(address,uint256) should be declared external:
- ERC20Upgradeable.approve(address,uint256) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#141-145)
transferFrom(address,address,uint256) should be declared external:
- ERC20Upgradeable.transferFrom(address,address,uint256) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#163-172)
increaseAllowance(address,uint256) should be declared external:
- ERC20Upgradeable.increaseAllowance(address,uint256) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#186-190)
decreaseAllowance(address,uint256) should be declared external:
- ERC20Upgradeable.decreaseAllowance(address,uint256) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#206-215)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (@openzeppelin/contracts/access/Ownable.sol#54-56)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (@openzeppelin/contracts/access/Ownable.sol#62-65)
name() should be declared external:
- ERC20.name() (@openzeppelin/contracts/token/ERC20/ERC20.sol#62-64)
symbol() should be declared external:
- ERC20.symbol() (@openzeppelin/contracts/token/ERC20/ERC20.sol#70-72)
decimals() should be declared external:
- ERC20.decimals() (@openzeppelin/contracts/token/ERC20/ERC20.sol#87-89)
totalSupply() should be declared external:
- ERC20.totalSupply() (@openzeppelin/contracts/token/ERC20/ERC20.sol#94-96)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#113-117)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#136-140)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#158-167)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#181-185)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#201-210)
updateMinimumTokenBalanceForDividends(uint256) should be declared external:
- BABYTOKEN.updateMinimumTokenBalanceForDividends(uint256) (contracts/BABYTOKEN.sol#157-159)
multipleBotlistAddress(address[],bool) should be declared external:
- BABYTOKEN.multipleBotlistAddress(address[],bool) (contracts/BABYTOKEN.sol#162-166)
updateUniswapV2Router(address) should be declared external:
- BABYTOKEN.updateUniswapV2Router(address) (contracts/BABYTOKEN.sol#177-184)
excludeMultipleAccountsFromFees(address[],bool) should be declared external:
- BABYTOKEN.excludeMultipleAccountsFromFees(address[],bool) (contracts/BABYTOKEN.sol#193-199)
setAutomatedMarketMakerPair(address,bool) should be declared external:
- BABYTOKEN.setAutomatedMarketMakerPair(address,bool) (contracts/BABYTOKEN.sol#209-212)
updateGasForProcessing(uint256) should be declared external:
- BABYTOKEN.updateGasForProcessing(uint256) (contracts/BABYTOKEN.sol#225-230)
isExcludedFromFees(address) should be declared external:
- BABYTOKEN.isExcludedFromFees(address) (contracts/BABYTOKEN.sol#244-246)
withdrawableDividendOf(address) should be declared external:
- BABYTOKEN.withdrawableDividendOf(address) (contracts/BABYTOKEN.sol#248-250)
dividendTokenBalanceOf(address) should be declared external:
- BABYTOKEN.dividendTokenBalanceOf(address) (contracts/BABYTOKEN.sol#252-254)
isExcludedFromDividends(address) should be declared external:
- BABYTOKEN.isExcludedFromDividends(address) (contracts/BABYTOKEN.sol#260-262)
swapManual() should be declared external:
- BABYTOKEN.swapManual() (contracts/BABYTOKEN.sol#307-315)
setSwapAndLiquifyEnabled(bool) should be declared external:
- BABYTOKEN.setSwapAndLiquifyEnabled(bool) (contracts/BABYTOKEN.sol#317-319)
setSwapTokensAtAmount(uint256) should be declared external:
- BABYTOKEN.setSwapTokensAtAmount(uint256) (contracts/BABYTOKEN.sol#320-322)
setDeadWallet(address) should be declared external:
- BABYTOKEN.setDeadWallet(address) (contracts/BABYTOKEN.sol#324-326)
distributeCAKEDividends(uint256) should be declared external:
- DividendPayingToken.distributeCAKEDividends(uint256) (contracts/BABYTOKENDividendTracker.sol#122-133)
withdrawDividend() should be declared external:
- BABYTOKENDividendTracker.withdrawDividend() (contracts/BABYTOKENDividendTracker.sol#325-330)
- DividendPayingToken.withdrawDividend() (contracts/BABYTOKENDividendTracker.sol#137-139)
dividendOf(address) should be declared external:
- DividendPayingToken.dividendOf(address) (contracts/BABYTOKENDividendTracker.sol#174-176)
withdrawnDividendOf(address) should be declared external:
- DividendPayingToken.withdrawnDividendOf(address) (contracts/BABYTOKENDividendTracker.sol#193-200)
isExcludedFromDividends(address) should be declared external:
- BABYTOKENDividendTracker.isExcludedFromDividends(address) (contracts/BABYTOKENDividendTracker.sol#342-348)
getAccountAtIndex(uint256) should be declared external:
- BABYTOKENDividendTracker.getAccountAtIndex(uint256) (contracts/BABYTOKENDividendTracker.sol#427-448)
process(uint256) should be declared external:
- BABYTOKENDividendTracker.process(uint256) (contracts/BABYTOKENDividendTracker.sol#475-527)
get(IterableMapping.Map,address) should be declared external:
- IterableMapping.get(IterableMapping.Map,address) (contracts/libs/IterableMapping.sol#13-15)
getIndexOfKey(IterableMapping.Map,address) should be declared external:
- IterableMapping.getIndexOfKey(IterableMapping.Map,address) (contracts/libs/IterableMapping.sol#17-26)
getKeyAtIndex(IterableMapping.Map,uint256) should be declared external:
- IterableMapping.getKeyAtIndex(IterableMapping.Map,uint256) (contracts/libs/IterableMapping.sol#28-34)
size(IterableMapping.Map) should be declared external:
- IterableMapping.size(IterableMapping.Map) (contracts/libs/IterableMapping.sol#36-38)
Use the external attribute for functions never called from the contract.
Additional information: link
Unable to find website, listings and other project-related information
Young tokens have high risks of scam / price dump / death
Token is marked as scam (rug pull, honeypot, phishing, etc.)
Additional information: link
Young tokens have high risks of scam / price dump / death
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Unable to find Blog account (Reddit or Medium)
Unable to find Youtube account
Unable to find Discord account