LuckyShibaInu.withdrawForeignToken(address) (#637-640) ignores return value by IERC20(address(token)).transfer(msg.sender,IERC20(token).balanceOf(address(this))) (#639)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
LuckyShibaInu.swapBNBForTokens(uint256) (#1256-1268) sends eth to arbitrary user
Dangerous calls:
- _pancakeswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,_burnAddress,block.timestamp.add(300)) (#1262-1267)
LuckyShibaInu.addLiquidity(uint256,uint256) (#1273-1287) sends eth to arbitrary user
Dangerous calls:
- _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
LuckyShibaInu.random() (#859-864) uses a weak PRNG: "r = uint256(uint256(keccak256(bytes)(abi.encodePacked(block.difficulty,block.timestamp,_nonce))) % 1000) (#860)"
Do not use block.timestamp, now or blockhash as a source of randomness
Additional information: link
Reentrancy in LuckyShibaInu._transfer(address,address,uint256) (#999-1111):
External calls:
- pinkAntiBot.onPreTransferCheck(from,to,amount) (#1006)
- swapAndLiquify(tokenBalance) (#1036)
- _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
- _pancakeswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1244-1250)
- buyBackTokens(balance.mul(_buybackBNBPercentage).div(100)) (#1052)
- _pancakeswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,_burnAddress,block.timestamp.add(300)) (#1262-1267)
External calls sending eth:
- swapAndLiquify(tokenBalance) (#1036)
- recipient.transfer(amount) (#646)
- _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
- buyBackTokens(balance.mul(_buybackBNBPercentage).div(100)) (#1052)
- _pancakeswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,_burnAddress,block.timestamp.add(300)) (#1262-1267)
State variables written after the call(s):
- _tokenTransfer(from,to,amount) (#1099)
- _lotteryPool = _lotteryPool.add(rLottery) (#1186)
- _tokenTransfer(from,to,amount) (#1099)
- _rOwned[_burnAddress] = _rOwned[_burnAddress].add(rFee) (#1158)
- _rOwned[address(this)] = _rOwned[address(this)].add(rTakeAmount) (#1179)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1125)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1130)
- _tokenTransfer(from,to,amount) (#1099)
- _rTotal = _rTotal.sub(rFee) (#1169)
- _tokenTransfer(from,to,amount) (#1099)
- _tOwned[_burnAddress] = _tOwned[_burnAddress].add(tFee) (#1160)
- _tOwned[address(this)] = _tOwned[address(this)].add(tTakeAmount) (#1181)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1123)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1128)
- buyBackTokens(balance.mul(_buybackBNBPercentage).div(100)) (#1052)
- currentlySwapping = true (#513)
- currentlySwapping = false (#515)
Apply the check-effects-interactions pattern.
Additional information: link
Unable to verify that contract auditor is trusted: Certik, Quantstamp, Hacken, Solidity, Paladinsec, Openzeppelin, Verichains
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.
Not a direct threat, but may indicate unreliable intentions of developer. Widespread names (e.g. Elon, King, Moon, Doge) are common among meme-tokens and scams. The allow to gain free hype and attract unexperienced investors.
LuckyShibaInu._rTotal (#540) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
Remove any initialization of state variables via non-constant state variables or function calls. If variables must be set upon contract deployment, locate initialization in the constructor instead.
Additional information: link
LuckyShibaInu._tokenTransfer(address,address,uint256) (#1116-1151) performs a multiplication on the result of a division:
-tPortion = tFee.div(_taxFee) (#1134)
-tLotteryPortion = tPortion.mul(_lotteryPortionMultiply) (#1143)
LuckyShibaInu.swapAndLiquify(uint256) (#1201-1230) performs a multiplication on the result of a division:
-marketingBNB = receivedBNB.div(7).mul(4) (#1224)
Consider ordering multiplication before division.
Additional information: link
LuckyShibaInu.addLiquidity(uint256,uint256) (#1273-1287) ignores return value by _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
Ensure that all the return values of the function calls are used.
Additional information: link
LuckyShibaInu.allowance(address,address).owner (#692) shadows:
- Ownable.owner() (#244-246) (function)
LuckyShibaInu._approve(address,address,uint256).owner (#717) shadows:
- Ownable.owner() (#244-246) (function)
Rename the local variables that shadow another component.
Additional information: link
LuckyShibaInu.setTaxFeePercent(uint256) (#761-763) should emit an event for:
- _taxFee = taxFee (#762)
LuckyShibaInu.setSellTaxFeePerecent(uint256) (#765-767) should emit an event for:
- _sellTaxFee = taxFee (#766)
LuckyShibaInu.setWhaleSellTaxFeePerecent(uint256) (#769-771) should emit an event for:
- _whaleSellTaxFee = taxFee (#770)
LuckyShibaInu.setMaxTxAmount(uint256) (#773-775) should emit an event for:
- _maxTxAmount = maxTxAmount (#774)
LuckyShibaInu.setTokenSwapThreshold(uint256) (#777-779) should emit an event for:
- _tokenSwapThreshold = tokenSwapThreshold (#778)
LuckyShibaInu.setBuybackBNBThreshold(uint256) (#789-791) should emit an event for:
- _buybackBNBThreshold = bnbAmount (#790)
LuckyShibaInu.setBuybackUpperLimit(uint256) (#793-795) should emit an event for:
- _buybackUpperLimit = buybackLimit (#794)
LuckyShibaInu.setBuybackBNBPercentage(uint256) (#797-799) should emit an event for:
- _buybackBNBPercentage = percentage (#798)
LuckyShibaInu.setWhaleSellThreshold(uint256) (#805-807) should emit an event for:
- _whaleSellThreshold = amount (#806)
LuckyShibaInu.setWhaleSellTimer(uint256) (#809-811) should emit an event for:
- _whaleSellTimer = time (#810)
LuckyShibaInu.setLotteryChance(uint256) (#817-819) should emit an event for:
- _lotteryChance = chance (#818)
LuckyShibaInu.setLotteryThreshold(uint256) (#821-823) should emit an event for:
- _lotteryThreshold = threshold (#822)
LuckyShibaInu.setLotteryMinimumSpend(uint256) (#825-827) should emit an event for:
- _lotteryMinimumSpend = minimumSpend (#826)
LuckyShibaInu.setLotteryPortionMultiply(uint256) (#829-831) should emit an event for:
- _lotteryPortionMultiply = lotteryPortionMultiply (#830)
Emit an event for critical parameter changes.
Additional information: link
LuckyShibaInu.setMarketingAddress(address).marketingAddress (#781) lacks a zero-check on :
- _marketingAddress = address(marketingAddress) (#782)
Check that the address is not zero.
Additional information: link
Reentrancy in LuckyShibaInu._transfer(address,address,uint256) (#999-1111):
External calls:
- pinkAntiBot.onPreTransferCheck(from,to,amount) (#1006)
State variables written after the call(s):
- lotteryReward = calculateLotteryReward() (#1017)
- _lastRoll = random() (#892)
- _lotteryTransfer(to,lotteryReward) (#1019)
- _lotteryPool = 0 (#987)
- lotteryReward = calculateLotteryReward() (#1017)
- _nonce ++ (#862)
- _lotteryTransfer(to,lotteryReward) (#1019)
- _previousWinTime = block.timestamp (#991)
- _lotteryTransfer(to,lotteryReward) (#1019)
- _previousWinner = winner (#988)
- _lotteryTransfer(to,lotteryReward) (#1019)
- _previousWonAmount = tAmount (#989)
- _lotteryTransfer(to,lotteryReward) (#1019)
- _rOwned[winner] = _rOwned[winner].add(_lotteryPool) (#986)
- _lotteryTransfer(to,lotteryReward) (#1019)
- _tOwned[winner] = _tOwned[winner].add(tAmount) (#984)
- _lotteryTransfer(to,lotteryReward) (#1019)
- _totalLotteryWon = _totalLotteryWon.add(_previousWonAmount) (#990)
Reentrancy in LuckyShibaInu._transfer(address,address,uint256) (#999-1111):
External calls:
- pinkAntiBot.onPreTransferCheck(from,to,amount) (#1006)
- swapAndLiquify(tokenBalance) (#1036)
- _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
- _pancakeswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1244-1250)
External calls sending eth:
- swapAndLiquify(tokenBalance) (#1036)
- recipient.transfer(amount) (#646)
- _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
State variables written after the call(s):
- swapAndLiquify(tokenBalance) (#1036)
- _allowances[owner][spender] = amount (#721)
Reentrancy in LuckyShibaInu._transfer(address,address,uint256) (#999-1111):
External calls:
- pinkAntiBot.onPreTransferCheck(from,to,amount) (#1006)
- swapAndLiquify(tokenBalance) (#1036)
- _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
- _pancakeswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1244-1250)
- buyBackTokens(balance.mul(_buybackBNBPercentage).div(100)) (#1052)
- _pancakeswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,_burnAddress,block.timestamp.add(300)) (#1262-1267)
External calls sending eth:
- swapAndLiquify(tokenBalance) (#1036)
- recipient.transfer(amount) (#646)
- _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
- buyBackTokens(balance.mul(_buybackBNBPercentage).div(100)) (#1052)
- _pancakeswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,_burnAddress,block.timestamp.add(300)) (#1262-1267)
State variables written after the call(s):
- _amountSold[from] = newTotal (#1078)
- _amountSold[from] = newTotal (#1081)
- _amountSold[from] = amount (#1085)
- _previousTaxFee = _taxFee (#1089)
- removeAllFees() (#1095)
- _previousTaxFee = _taxFee (#872)
- _taxFee = fee (#1090)
- removeAllFees() (#1095)
- _taxFee = 0 (#873)
- restoreAllFees() (#1103)
- _taxFee = _previousTaxFee (#880)
- _taxFee = _previousTaxFee (#1108)
- _timeSinceFirstSell[from] = block.timestamp (#1084)
- _tokenTransfer(from,to,amount) (#1099)
- _totalReflections = _totalReflections.add(tFee) (#1170)
Reentrancy in LuckyShibaInu.constructor(address) (#591-613):
External calls:
- _pancakeswapV2LiquidityPair = IUniswapV2Factory(pancakeswapV2Router.factory()).createPair(address(this),pancakeswapV2Router.WETH()) (#601-602)
State variables written after the call(s):
- _pancakeswapV2Router = pancakeswapV2Router (#603)
- pinkAntiBot = IPinkAntiBot(pinkAntiBot_) (#606)
Reentrancy in LuckyShibaInu.constructor(address) (#591-613):
External calls:
- _pancakeswapV2LiquidityPair = IUniswapV2Factory(pancakeswapV2Router.factory()).createPair(address(this),pancakeswapV2Router.WETH()) (#601-602)
- pinkAntiBot.setTokenOwner(msg.sender) (#608)
State variables written after the call(s):
- antiBotEnabled = true (#610)
Reentrancy in LuckyShibaInu.setRouterAddress(address) (#652-664):
External calls:
- newPair = IUniswapV2Factory(newPancakeSwapRouter.factory()).createPair(address(this),newPancakeSwapRouter.WETH()) (#659)
State variables written after the call(s):
- _pancakeswapV2LiquidityPair = newPair (#661)
- _pancakeswapV2Router = newPancakeSwapRouter (#663)
Reentrancy in LuckyShibaInu.swapAndLiquify(uint256) (#1201-1230):
External calls:
- swapTokensForBNB(swapAmount) (#1211)
- _pancakeswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1244-1250)
- addLiquidity(eigth,liquidityBNB) (#1220)
- _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
External calls sending eth:
- addLiquidity(eigth,liquidityBNB) (#1220)
- _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
State variables written after the call(s):
- addLiquidity(eigth,liquidityBNB) (#1220)
- _allowances[owner][spender] = amount (#721)
Reentrancy in LuckyShibaInu.transferFrom(address,address,uint256) (#701-705):
External calls:
- _transfer(sender,recipient,amount) (#702)
- _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
- _pancakeswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,_burnAddress,block.timestamp.add(300)) (#1262-1267)
- pinkAntiBot.onPreTransferCheck(from,to,amount) (#1006)
- _pancakeswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1244-1250)
External calls sending eth:
- _transfer(sender,recipient,amount) (#702)
- recipient.transfer(amount) (#646)
- _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
- _pancakeswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,_burnAddress,block.timestamp.add(300)) (#1262-1267)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#703)
- _allowances[owner][spender] = amount (#721)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in LuckyShibaInu._transfer(address,address,uint256) (#999-1111):
External calls:
- pinkAntiBot.onPreTransferCheck(from,to,amount) (#1006)
Event emitted after the call(s):
- LotteryAward(winner,tAmount,block.timestamp) (#992)
- _lotteryTransfer(to,lotteryReward) (#1019)
- Transfer(address(this),winner,tAmount) (#993)
- _lotteryTransfer(to,lotteryReward) (#1019)
Reentrancy in LuckyShibaInu._transfer(address,address,uint256) (#999-1111):
External calls:
- pinkAntiBot.onPreTransferCheck(from,to,amount) (#1006)
- swapAndLiquify(tokenBalance) (#1036)
- _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
- _pancakeswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1244-1250)
External calls sending eth:
- swapAndLiquify(tokenBalance) (#1036)
- recipient.transfer(amount) (#646)
- _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#722)
- swapAndLiquify(tokenBalance) (#1036)
- SwapAndLiquify(swapAmount,liquidityBNB,eigth) (#1229)
- swapAndLiquify(tokenBalance) (#1036)
Reentrancy in LuckyShibaInu._transfer(address,address,uint256) (#999-1111):
External calls:
- pinkAntiBot.onPreTransferCheck(from,to,amount) (#1006)
- swapAndLiquify(tokenBalance) (#1036)
- _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
- _pancakeswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1244-1250)
- buyBackTokens(balance.mul(_buybackBNBPercentage).div(100)) (#1052)
- _pancakeswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,_burnAddress,block.timestamp.add(300)) (#1262-1267)
External calls sending eth:
- swapAndLiquify(tokenBalance) (#1036)
- recipient.transfer(amount) (#646)
- _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
- buyBackTokens(balance.mul(_buybackBNBPercentage).div(100)) (#1052)
- _pancakeswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,_burnAddress,block.timestamp.add(300)) (#1262-1267)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#1150)
- _tokenTransfer(from,to,amount) (#1099)
Reentrancy in LuckyShibaInu.constructor(address) (#591-613):
External calls:
- _pancakeswapV2LiquidityPair = IUniswapV2Factory(pancakeswapV2Router.factory()).createPair(address(this),pancakeswapV2Router.WETH()) (#601-602)
- pinkAntiBot.setTokenOwner(msg.sender) (#608)
Event emitted after the call(s):
- Transfer(address(0),_msgSender(),_tTotal) (#612)
Reentrancy in LuckyShibaInu.swapAndLiquify(uint256) (#1201-1230):
External calls:
- swapTokensForBNB(swapAmount) (#1211)
- _pancakeswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1244-1250)
- addLiquidity(eigth,liquidityBNB) (#1220)
- _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
External calls sending eth:
- addLiquidity(eigth,liquidityBNB) (#1220)
- _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#722)
- addLiquidity(eigth,liquidityBNB) (#1220)
Reentrancy in LuckyShibaInu.swapAndLiquify(uint256) (#1201-1230):
External calls:
- swapTokensForBNB(swapAmount) (#1211)
- _pancakeswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1244-1250)
- addLiquidity(eigth,liquidityBNB) (#1220)
- _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
External calls sending eth:
- addLiquidity(eigth,liquidityBNB) (#1220)
- _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
- transferBNBToAddress(_marketingAddress,marketingBNB) (#1227)
- recipient.transfer(amount) (#646)
Event emitted after the call(s):
- SwapAndLiquify(swapAmount,liquidityBNB,eigth) (#1229)
Reentrancy in LuckyShibaInu.transferFrom(address,address,uint256) (#701-705):
External calls:
- _transfer(sender,recipient,amount) (#702)
- _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
- _pancakeswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,_burnAddress,block.timestamp.add(300)) (#1262-1267)
- pinkAntiBot.onPreTransferCheck(from,to,amount) (#1006)
- _pancakeswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1244-1250)
External calls sending eth:
- _transfer(sender,recipient,amount) (#702)
- recipient.transfer(amount) (#646)
- _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
- _pancakeswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,_burnAddress,block.timestamp.add(300)) (#1262-1267)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#722)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#703)
Apply the check-effects-interactions pattern.
Additional information: link
LuckyShibaInu.calculateLotteryReward() (#886-898) uses timestamp for comparisons
Dangerous comparisons:
- _lastRoll <= _lotteryChance (#893)
LuckyShibaInu._transfer(address,address,uint256) (#999-1111) uses timestamp for comparisons
Dangerous comparisons:
- delta > 0 && delta < _whaleSellTimer && _timeSinceFirstSell[from] != 0 (#1074)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#123-133) uses assembly
- INLINE ASM (#129-131)
Address._verifyCallResult(bool,bytes,string) (#205-225) uses assembly
- INLINE ASM (#217-220)
Do not use evm assembly.
Additional information: link
LuckyShibaInu.includeInReward(address) (#966-977) has costly operations inside a loop:
- _excluded.pop() (#973)
Use a local variable to hold the loop computation result.
Additional information: link
Address._verifyCallResult(bool,bytes,string) (#205-225) is never used and should be removed
Address.functionCall(address,bytes) (#142-144) is never used and should be removed
Address.functionCall(address,bytes,string) (#146-152) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#154-160) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#162-173) is never used and should be removed
Address.functionDelegateCall(address,bytes) (#190-192) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (#194-203) is never used and should be removed
Address.functionStaticCall(address,bytes) (#175-177) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (#179-188) is never used and should be removed
Address.isContract(address) (#123-133) is never used and should be removed
Address.sendValue(address,uint256) (#135-140) is never used and should be removed
Context._msgData() (#62-64) is never used and should be removed
SafeMath.mod(uint256,uint256) (#111-113) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#115-118) is never used and should be removed
Remove unused functions.
Additional information: link
Low level call in Address.sendValue(address,uint256) (#135-140):
- (success) = recipient.call{value: amount}() (#138)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (#162-173):
- (success,returndata) = target.call{value: value}(data) (#171)
Low level call in Address.functionStaticCall(address,bytes,string) (#179-188):
- (success,returndata) = target.staticcall(data) (#186)
Low level call in Address.functionDelegateCall(address,bytes,string) (#194-203):
- (success,returndata) = target.delegatecall(data) (#201)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#316) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#317) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#334) is not in mixedCase
Function IUniswapV2Router01.WETH() (#355) is not in mixedCase
Parameter LuckyShibaInu.setEnableAntiBot(bool)._enable (#622) is not in mixedCase
Variable LuckyShibaInu._pancakeswapV2Router (#507) is not in mixedCase
Variable LuckyShibaInu._pancakeswapV2LiquidityPair (#508) is not in mixedCase
Variable LuckyShibaInu._marketingAddress (#524) is not in mixedCase
Variable LuckyShibaInu._burnAddress (#525) is not in mixedCase
Variable LuckyShibaInu._taxFee (#544) is not in mixedCase
Variable LuckyShibaInu._sellTaxFee (#545) is not in mixedCase
Variable LuckyShibaInu._whaleSellTaxFee (#546) is not in mixedCase
Variable LuckyShibaInu._lotteryPortionMultiply (#548) is not in mixedCase
Variable LuckyShibaInu._maxTxAmount (#551) is not in mixedCase
Variable LuckyShibaInu._tokenSwapThreshold (#552) is not in mixedCase
Variable LuckyShibaInu._whaleSellThreshold (#558) is not in mixedCase
Variable LuckyShibaInu._whaleSellTimer (#559) is not in mixedCase
Variable LuckyShibaInu._enableBuyback (#564) is not in mixedCase
Variable LuckyShibaInu._buybackBNBThreshold (#565) is not in mixedCase
Variable LuckyShibaInu._buybackUpperLimit (#566) is not in mixedCase
Variable LuckyShibaInu._buybackBNBPercentage (#567) is not in mixedCase
Variable LuckyShibaInu._enableLiquidity (#570) is not in mixedCase
Variable LuckyShibaInu._enableLottery (#573) is not in mixedCase
Variable LuckyShibaInu._lotteryChance (#575) is not in mixedCase
Variable LuckyShibaInu._lotteryThreshold (#576) is not in mixedCase
Variable LuckyShibaInu._lotteryMinimumSpend (#577) is not in mixedCase
Variable LuckyShibaInu._previousWinner (#578) is not in mixedCase
Variable LuckyShibaInu._previousWonAmount (#579) is not in mixedCase
Variable LuckyShibaInu._previousWinTime (#580) is not in mixedCase
Variable LuckyShibaInu._lastRoll (#581) is not in mixedCase
Variable LuckyShibaInu._totalLotteryWon (#583) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Reentrancy in LuckyShibaInu._transfer(address,address,uint256) (#999-1111):
External calls:
- swapAndLiquify(tokenBalance) (#1036)
- recipient.transfer(amount) (#646)
External calls sending eth:
- swapAndLiquify(tokenBalance) (#1036)
- recipient.transfer(amount) (#646)
- _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
- buyBackTokens(balance.mul(_buybackBNBPercentage).div(100)) (#1052)
- _pancakeswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,_burnAddress,block.timestamp.add(300)) (#1262-1267)
State variables written after the call(s):
- _amountSold[from] = newTotal (#1078)
- _amountSold[from] = newTotal (#1081)
- _amountSold[from] = amount (#1085)
- _tokenTransfer(from,to,amount) (#1099)
- _lotteryPool = _lotteryPool.add(rLottery) (#1186)
- _previousTaxFee = _taxFee (#1089)
- removeAllFees() (#1095)
- _previousTaxFee = _taxFee (#872)
- _tokenTransfer(from,to,amount) (#1099)
- _rOwned[_burnAddress] = _rOwned[_burnAddress].add(rFee) (#1158)
- _rOwned[address(this)] = _rOwned[address(this)].add(rTakeAmount) (#1179)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1125)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1130)
- _tokenTransfer(from,to,amount) (#1099)
- _rTotal = _rTotal.sub(rFee) (#1169)
- _tokenTransfer(from,to,amount) (#1099)
- _tOwned[_burnAddress] = _tOwned[_burnAddress].add(tFee) (#1160)
- _tOwned[address(this)] = _tOwned[address(this)].add(tTakeAmount) (#1181)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1123)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1128)
- _taxFee = fee (#1090)
- removeAllFees() (#1095)
- _taxFee = 0 (#873)
- restoreAllFees() (#1103)
- _taxFee = _previousTaxFee (#880)
- _taxFee = _previousTaxFee (#1108)
- _timeSinceFirstSell[from] = block.timestamp (#1084)
- _tokenTransfer(from,to,amount) (#1099)
- _totalReflections = _totalReflections.add(tFee) (#1170)
- buyBackTokens(balance.mul(_buybackBNBPercentage).div(100)) (#1052)
- currentlySwapping = true (#513)
- currentlySwapping = false (#515)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#1150)
- _tokenTransfer(from,to,amount) (#1099)
Reentrancy in LuckyShibaInu.swapAndLiquify(uint256) (#1201-1230):
External calls:
- transferBNBToAddress(_marketingAddress,marketingBNB) (#1227)
- recipient.transfer(amount) (#646)
External calls sending eth:
- addLiquidity(eigth,liquidityBNB) (#1220)
- _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
- transferBNBToAddress(_marketingAddress,marketingBNB) (#1227)
- recipient.transfer(amount) (#646)
Event emitted after the call(s):
- SwapAndLiquify(swapAmount,liquidityBNB,eigth) (#1229)
Reentrancy in LuckyShibaInu.transferFrom(address,address,uint256) (#701-705):
External calls:
- _transfer(sender,recipient,amount) (#702)
- recipient.transfer(amount) (#646)
External calls sending eth:
- _transfer(sender,recipient,amount) (#702)
- recipient.transfer(amount) (#646)
- _pancakeswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp.add(300)) (#1279-1286)
- _pancakeswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,_burnAddress,block.timestamp.add(300)) (#1262-1267)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#703)
- _allowances[owner][spender] = amount (#721)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#722)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#703)
Apply the check-effects-interactions pattern.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#360) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#361)
Variable LuckyShibaInu._getRValues(uint256,uint256,uint256).rTransferAmount (#924) is too similar to LuckyShibaInu._tokenTransfer(address,address,uint256).tTransferAmount (#1118)
Variable LuckyShibaInu.reflectionFromToken(uint256,bool).rTransferAmount (#842) is too similar to LuckyShibaInu._tokenTransfer(address,address,uint256).tTransferAmount (#1118)
Variable LuckyShibaInu._getRValues(uint256,uint256,uint256).rTransferAmount (#924) is too similar to LuckyShibaInu._getValues(uint256).tTransferAmount (#904)
Variable LuckyShibaInu._getValues(uint256).rTransferAmount (#905) is too similar to LuckyShibaInu._tokenTransfer(address,address,uint256).tTransferAmount (#1118)
Variable LuckyShibaInu._takeTokens(uint256,uint256).rTakeAmount (#1178) is too similar to LuckyShibaInu._takeTokens(uint256,uint256).tTakeAmount (#1176)
Variable LuckyShibaInu.reflectionFromToken(uint256,bool).rTransferAmount (#842) is too similar to LuckyShibaInu._getValues(uint256).tTransferAmount (#904)
Variable LuckyShibaInu._tokenTransfer(address,address,uint256).rTransferAmount (#1119) is too similar to LuckyShibaInu._getTValues(uint256).tTransferAmount (#914)
Variable LuckyShibaInu._tokenTransfer(address,address,uint256).rTransferAmount (#1119) is too similar to LuckyShibaInu._tokenTransfer(address,address,uint256).tTransferAmount (#1118)
Variable LuckyShibaInu._getValues(uint256).rTransferAmount (#905) is too similar to LuckyShibaInu._getValues(uint256).tTransferAmount (#904)
Variable LuckyShibaInu._tokenTransfer(address,address,uint256).rTransferAmount (#1119) is too similar to LuckyShibaInu._getValues(uint256).tTransferAmount (#904)
Variable LuckyShibaInu.reflectionFromToken(uint256,bool).rTransferAmount (#842) is too similar to LuckyShibaInu._getTValues(uint256).tTransferAmount (#914)
Variable LuckyShibaInu._getValues(uint256).rTransferAmount (#905) is too similar to LuckyShibaInu._getTValues(uint256).tTransferAmount (#914)
Variable LuckyShibaInu._getRValues(uint256,uint256,uint256).rTransferAmount (#924) is too similar to LuckyShibaInu._getTValues(uint256).tTransferAmount (#914)
Prevent variables from having similar names.
Additional information: link
LuckyShibaInu.slitherConstructorVariables() (#492-1300) uses literals with too many digits:
- _burnAddress = address(0x000000000000000000000000000000000000dEaD) (#525)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
LuckyShibaInu._burnAddress (#525) should be constant
LuckyShibaInu._decimals (#504) should be constant
LuckyShibaInu._name (#502) should be constant
LuckyShibaInu._symbol (#503) should be constant
LuckyShibaInu._tTotal (#539) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#263-265)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#271-274)
withdrawBNB(uint256) should be declared external:
- LuckyShibaInu.withdrawBNB(uint256) (#629-632)
withdrawForeignToken(address) should be declared external:
- LuckyShibaInu.withdrawForeignToken(address) (#637-640)
setRouterAddress(address) should be declared external:
- LuckyShibaInu.setRouterAddress(address) (#652-664)
reflectionFromToken(uint256,bool) should be declared external:
- LuckyShibaInu.reflectionFromToken(uint256,bool) (#836-845)
reflect(uint256) should be declared external:
- LuckyShibaInu.reflect(uint256) (#1292-1298)
Use the external attribute for functions never called from the contract.
Additional information: link
BscScan page for the token does not contain additional info: website, socials, description, etc.
Additional information: link
Unable to find token on CoinGecko
Additional information: link
Unable to find token on CoinMarketCap
Additional information: link
Unable to find code repository for the project
Alexa traffic rank is very low
Additional information: link
Young tokens have high risks of 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
Telegram account link seems to be invalid
Unable to find Youtube account
Unable to find Discord account