Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Reentrancy in Token._transfer(address,address,uint256) (#767-798):
External calls:
- swapAndLiquify(contractTokenBalance) (#785)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#522-529)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#836-842)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#854-860)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#785)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#522-529)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#797)
- _devFee = _previousDevFee (#748)
- _devFee = 0 (#741)
- _tokenTransfer(from,to,amount,takeFee) (#797)
- _liquidityFee = _previousLiquidityFee (#746)
- _liquidityFee = 0 (#739)
- _tokenTransfer(from,to,amount,takeFee) (#797)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#711)
- _rOwned[burnAddress] = _rOwned[burnAddress].add(rBurn) (#600)
- _rOwned[devAddress] = _rOwned[devAddress].add(rDev) (#610)
- _rOwned[address(this)] = _rOwned[address(this)].add(rDev) (#612)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#545)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#546)
- _tokenTransfer(from,to,amount,takeFee) (#797)
- _rTotal = _rTotal.sub(rFee) (#656)
Apply the check-effects-interactions pattern.
Additional information: link
Contract ticker (Doge King girl) 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.
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.
Token.swapAndLiquify(uint256) (#800-825) performs a multiplication on the result of a division:
-addHl = uint256(100).mul(_liquidityFee).div(_liquidityFee.add(lsDevFee)) (#805)
-addNumber = contractTokenBalance.mul(addHl).div(100) (#806)
Consider ordering multiplication before division.
Additional information: link
PancakeLibrary.getAmountsOut(address,uint256,address[]).i (#394) 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
Token.addLiquidity(uint256,uint256) (#517-530) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#522-529)
Ensure that all the return values of the function calls are used.
Additional information: link
Token.allowance(address,address).owner (#513) shadows:
- Ownable.owner() (#91-93) (function)
Token._approve(address,address,uint256).owner (#759) shadows:
- Ownable.owner() (#91-93) (function)
Rename the local variables that shadow another component.
Additional information: link
Token.setTaxFeePercent(uint256) (#628-630) should emit an event for:
- _taxFee = taxFee (#629)
Token.setLiquidityFeePercent(uint256) (#632-634) should emit an event for:
- _liquidityFee = liquidityFee (#633)
Token.setBurnFeePercent(uint256) (#636-638) should emit an event for:
- _burnFee = burnFee (#637)
Token.setDevFeePercent(uint256) (#640-642) should emit an event for:
- _devFee = devFee (#641)
Emit an event for critical parameter changes.
Additional information: link
Reentrancy in Token._transfer(address,address,uint256) (#767-798):
External calls:
- swapAndLiquify(contractTokenBalance) (#785)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#522-529)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#836-842)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#854-860)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#785)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#522-529)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#797)
- _burnFee = _previousBurnFee (#747)
- _burnFee = 0 (#740)
- _tokenTransfer(from,to,amount,takeFee) (#797)
- _previousBurnFee = _burnFee (#735)
- _tokenTransfer(from,to,amount,takeFee) (#797)
- _previousDevFee = _devFee (#736)
- _tokenTransfer(from,to,amount,takeFee) (#797)
- _previousLiquidityFee = _liquidityFee (#734)
- _tokenTransfer(from,to,amount,takeFee) (#797)
- _previousTaxFee = _taxFee (#733)
- _tokenTransfer(from,to,amount,takeFee) (#797)
- _tFeeTotal = _tFeeTotal.add(tFee) (#657)
- _tokenTransfer(from,to,amount,takeFee) (#797)
- _taxFee = _previousTaxFee (#745)
- _taxFee = 0 (#738)
Reentrancy in Token.constructor() (#471-486):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#476)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#480)
- _isExcludedFromFee[ownerAddres] = true (#481)
- _isExcludedFromFee[burnAddress] = true (#482)
- _isExcludedFromFee[address(this)] = true (#483)
- uniswapV2Router = _uniswapV2Router (#477)
Reentrancy in Token.swapAndLiquify(uint256) (#800-825):
External calls:
- swapTokensForEth(half) (#814)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#836-842)
- addLiquidity(otherHalf,newBalance) (#820)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#522-529)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#820)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#522-529)
State variables written after the call(s):
- addLiquidity(otherHalf,newBalance) (#820)
- _allowances[owner][spender] = amount (#763)
Reentrancy in Token.swapAndLiquify(uint256) (#800-825):
External calls:
- swapTokensForEth(half) (#814)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#836-842)
- addLiquidity(otherHalf,newBalance) (#820)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#522-529)
- swapTokensForDividendToken(devNumber) (#822)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#854-860)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#820)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#522-529)
State variables written after the call(s):
- swapTokensForDividendToken(devNumber) (#822)
- _allowances[owner][spender] = amount (#763)
Reentrancy in Token.transferFrom(address,address,uint256) (#560-564):
External calls:
- _transfer(sender,recipient,amount) (#561)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#522-529)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#836-842)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#854-860)
External calls sending eth:
- _transfer(sender,recipient,amount) (#561)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#522-529)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#562)
- _allowances[owner][spender] = amount (#763)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in Token._transfer(address,address,uint256) (#767-798):
External calls:
- swapAndLiquify(contractTokenBalance) (#785)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#522-529)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#836-842)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#854-860)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#785)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#522-529)
Event emitted after the call(s):
- Transfer(sender,burnAddress,tBurn) (#602)
- _tokenTransfer(from,to,amount,takeFee) (#797)
- Transfer(sender,recipient,tTransferAmount) (#552)
- _tokenTransfer(from,to,amount,takeFee) (#797)
Reentrancy in Token.constructor() (#471-486):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#476)
Event emitted after the call(s):
- Transfer(address(0),ownerAddres,_tTotal) (#485)
Reentrancy in Token.swapAndLiquify(uint256) (#800-825):
External calls:
- swapTokensForEth(half) (#814)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#836-842)
- addLiquidity(otherHalf,newBalance) (#820)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#522-529)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#820)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#522-529)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#764)
- addLiquidity(otherHalf,newBalance) (#820)
Reentrancy in Token.swapAndLiquify(uint256) (#800-825):
External calls:
- swapTokensForEth(half) (#814)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#836-842)
- addLiquidity(otherHalf,newBalance) (#820)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#522-529)
- swapTokensForDividendToken(devNumber) (#822)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#854-860)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#820)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#522-529)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#764)
- swapTokensForDividendToken(devNumber) (#822)
- SwapAndLiquify(half,newBalance,otherHalf) (#824)
Reentrancy in Token.transferFrom(address,address,uint256) (#560-564):
External calls:
- _transfer(sender,recipient,amount) (#561)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#522-529)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#836-842)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#854-860)
External calls sending eth:
- _transfer(sender,recipient,amount) (#561)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#522-529)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#764)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#562)
Apply the check-effects-interactions pattern.
Additional information: link
Ownable.unlock() (#124-129) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(now > _lockTime,Contract is locked until 7 days) (#126)
Avoid relying on block.timestamp.
Additional information: link
Context._msgData() (#72-75) is never used and should be removed
PancakeLibrary.getAmountIn(uint256,uint256,uint256) (#381-387) is never used and should be removed
PancakeLibrary.getAmountOut(uint256,uint256,uint256) (#371-378) is never used and should be removed
PancakeLibrary.getAmountsIn(address,uint256,address[]) (#401-409) is never used and should be removed
PancakeLibrary.getAmountsOut(address,uint256,address[]) (#390-398) is never used and should be removed
PancakeLibrary.getReserves(address,address,address) (#356-361) is never used and should be removed
PancakeLibrary.pairFor(address,address,address) (#345-353) is never used and should be removed
PancakeLibrary.quote(uint256,uint256,uint256) (#364-368) is never used and should be removed
PancakeLibrary.sortTokens(address,address) (#338-342) is never used and should be removed
SafeMath.mod(uint256,uint256) (#46-48) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#50-53) is never used and should be removed
Remove unused functions.
Additional information: link
Token._rTotal (#423) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
Token._previousTaxFee (#431) is set pre-construction with a non-constant function or state variable:
- _taxFee
Token._previousLiquidityFee (#434) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
Token._previousBurnFee (#437) is set pre-construction with a non-constant function or state variable:
- _burnFee
Token._previousDevFee (#440) is set pre-construction with a non-constant function or state variable:
- _devFee
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
Function IPancakeRouter01.WETH() (#134) is not in mixedCase
Function IPancakePair.DOMAIN_SEPARATOR() (#282) is not in mixedCase
Function IPancakePair.PERMIT_TYPEHASH() (#283) is not in mixedCase
Function IPancakePair.MINIMUM_LIQUIDITY() (#300) is not in mixedCase
Parameter Token.setSwapAndLiquifyEnabled(bool)._enabled (#644) is not in mixedCase
Parameter Token.setSwapDevEnabled(bool)._enabled (#649) is not in mixedCase
Parameter Token.calculateTaxFee(uint256)._amount (#714) is not in mixedCase
Parameter Token.calculateLiquidityFee(uint256)._amount (#718) is not in mixedCase
Parameter Token.calculateBurnFee(uint256)._amount (#722) is not in mixedCase
Parameter Token.calculateDevFee(uint256)._amount (#726) is not in mixedCase
Variable Token._taxFee (#430) is not in mixedCase
Variable Token._liquidityFee (#433) is not in mixedCase
Variable Token._burnFee (#436) is not in mixedCase
Variable Token._devFee (#439) is not in mixedCase
Variable Token._isWhitelisted (#442) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#73)" inContext (#67-76)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Variable IPancakeRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#139) is too similar to IPancakeRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#140)
Variable Token._transferStandard(address,address,uint256).rTransferAmount (#544) is too similar to Token._transferStandard(address,address,uint256).tTransferAmount (#544)
Variable Token._getValues(uint256).rTransferAmount (#671) is too similar to Token._transferStandard(address,address,uint256).tTransferAmount (#544)
Variable Token._getRValues(Token.TData,uint256).rTransferAmount (#691) is too similar to Token._transferStandard(address,address,uint256).tTransferAmount (#544)
Variable Token._getValues(uint256).rTransferAmount (#671) is too similar to Token._getValues(uint256).tTransferAmount (#669)
Variable Token.reflectionFromToken(uint256,bool).rTransferAmount (#586) is too similar to Token._transferStandard(address,address,uint256).tTransferAmount (#544)
Variable Token._getRValues(Token.TData,uint256).rTransferAmount (#691) is too similar to Token._getTValues(uint256).tTransferAmount (#680)
Variable Token._getValues(uint256).rTransferAmount (#671) is too similar to Token._getTValues(uint256).tTransferAmount (#680)
Variable Token.reflectionFromToken(uint256,bool).rTransferAmount (#586) is too similar to Token._getTValues(uint256).tTransferAmount (#680)
Variable Token._transferStandard(address,address,uint256).rTransferAmount (#544) is too similar to Token._getTValues(uint256).tTransferAmount (#680)
Variable Token._getRValues(Token.TData,uint256).rTransferAmount (#691) is too similar to Token._getValues(uint256).tTransferAmount (#669)
Variable Token.reflectionFromToken(uint256,bool).rTransferAmount (#586) is too similar to Token._getValues(uint256).tTransferAmount (#669)
Variable Token._transferStandard(address,address,uint256).rTransferAmount (#544) is too similar to Token._getValues(uint256).tTransferAmount (#669)
Prevent variables from having similar names.
Additional information: link
Token.slitherConstructorVariables() (#412-864) uses literals with too many digits:
- _tTotal = 100000000000 * 10 ** 18 (#422)
Token.slitherConstructorVariables() (#412-864) uses literals with too many digits:
- burnAddress = address(0x000000000000000000000000000000000000dEaD) (#444)
Token.slitherConstructorVariables() (#412-864) uses literals with too many digits:
- numTokensSellToAddToLiquidity = 50000000000 * 10 ** 18 (#455)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Token._tOwned (#416) is never used in Token (#412-864)
Remove unused state variables.
Additional information: link
Token._name (#426) should be constant
Token._symbol (#427) should be constant
Token._tTotal (#422) should be constant
Token.burnAddress (#444) should be constant
Token.devAddress (#446) should be constant
Token.numTokensSellToAddToLiquidity (#455) should be constant
Token.ownerAddres (#445) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#100-103)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#105-109)
geUnlockTime() should be declared external:
- Ownable.geUnlockTime() (#111-113)
lock(uint256) should be declared external:
- Ownable.lock(uint256) (#116-121)
unlock() should be declared external:
- Ownable.unlock() (#124-129)
name() should be declared external:
- Token.name() (#488-490)
symbol() should be declared external:
- Token.symbol() (#492-494)
decimals() should be declared external:
- Token.decimals() (#496-498)
totalSupply() should be declared external:
- Token.totalSupply() (#500-502)
transfer(address,uint256) should be declared external:
- Token.transfer(address,uint256) (#508-511)
allowance(address,address) should be declared external:
- Token.allowance(address,address) (#513-515)
approve(address,uint256) should be declared external:
- Token.approve(address,uint256) (#555-558)
transferFrom(address,address,uint256) should be declared external:
- Token.transferFrom(address,address,uint256) (#560-564)
increaseAllowance(address,uint256) should be declared external:
- Token.increaseAllowance(address,uint256) (#566-569)
decreaseAllowance(address,uint256) should be declared external:
- Token.decreaseAllowance(address,uint256) (#571-574)
totalFees() should be declared external:
- Token.totalFees() (#576-578)
reflectionFromToken(uint256,bool) should be declared external:
- Token.reflectionFromToken(uint256,bool) (#580-589)
excludeFromFee(address) should be declared external:
- Token.excludeFromFee(address) (#616-618)
includeInFee(address) should be declared external:
- Token.includeInFee(address) (#624-626)
setSwapAndLiquifyEnabled(bool) should be declared external:
- Token.setSwapAndLiquifyEnabled(bool) (#644-647)
setSwapDevEnabled(bool) should be declared external:
- Token.setSwapDevEnabled(bool) (#649-651)
isExcludedFromFee(address) should be declared external:
- Token.isExcludedFromFee(address) (#751-753)
isWhitelisteds(address) should be declared external:
- Token.isWhitelisteds(address) (#755-757)
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 has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Unable to find Telegram and Twitter accounts