Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
TOKEN.addLiquidity(uint256,uint256) (#1355-1365) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_burnAddress,block.timestamp) (#1357-1364)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in TOKEN._transfer(address,address,uint256) (#1252-1315):
External calls:
- swapAndLiquify(contractTokenBalance) (#1286)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_burnAddress,block.timestamp) (#1357-1364)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1346-1352)
- (success) = address(_marketingWalletAddress).call{gas: 30000,value: marketingFunds}() (#1331-1334)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1286)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_burnAddress,block.timestamp) (#1357-1364)
- (success) = address(_marketingWalletAddress).call{gas: 30000,value: marketingFunds}() (#1331-1334)
State variables written after the call(s):
- _liquidityFee = _buyLiquidityFee (#1296)
- _liquidityFee = _sellLiquidityFee (#1302)
- _liquidityFee = _buyLiquidityFee (#1308)
- _tokenTransfer(from,to,amount,takeFee) (#1314)
- _liquidityFee = _previousLiquidityFee (#1232)
- _liquidityFee = 0 (#1225)
- _marketingFee = _buyMarketingFee (#1297)
- _marketingFee = _sellMarketingFee (#1303)
- _marketingFee = _buyMarketingFee (#1309)
- _tokenTransfer(from,to,amount,takeFee) (#1314)
- _marketingFee = _previousMarketingFee (#1231)
- _marketingFee = 0 (#1224)
- _tokenTransfer(from,to,amount,takeFee) (#1314)
- _rOwned[_charityWalletAddress] = _rOwned[_charityWalletAddress].add(rCharity) (#1188-1190)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidityAndMarketing) (#1176-1178)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1426)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1404)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1405)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#977)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1450)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1428)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1451)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#979)
- _tokenTransfer(from,to,amount,takeFee) (#1314)
- _rTotal = _rTotal.sub(rFee) (#1064)
- _tokenTransfer(from,to,amount,takeFee) (#1314)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidityAndMarketing) (#1180-1182)
- _tOwned[_charityWalletAddress] = _tOwned[_charityWalletAddress].add(tCharity) (#1192-1194)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#976)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1449)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1427)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#978)
Apply the check-effects-interactions pattern.
Additional information: link
Combination 1: Reentrancy vulnerabilities + Functions that send Ether to arbitraty destination. Usual for scams. May be justified by some complex mechanics (e.g. rebase, reflections). DYOR & manual audit are advised.
TOKEN.swapAndLiquify(uint256) (#1317-1339) performs a multiplication on the result of a division:
-marketingTokens = contractTokenBalance.div(tFee).mul(_marketingFee) (#1319-1321)
TOKEN.swapAndLiquify(uint256) (#1317-1339) performs a multiplication on the result of a division:
-marketingFunds = newBalance.div(tFee).mul(_marketingFee) (#1330)
TOKEN.swapAndLiquify(uint256) (#1317-1339) performs a multiplication on the result of a division:
-halfFunds = newBalance.div(tFee).mul(_liquidityFee.div(2)) (#1336)
Consider ordering multiplication before division.
Additional information: link
TOKEN.addLiquidity(uint256,uint256) (#1355-1365) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_burnAddress,block.timestamp) (#1357-1364)
Ensure that all the return values of the function calls are used.
Additional information: link
TOKEN.allowance(address,address).owner (#828) shadows:
- Ownable.owner() (#309-311) (function)
TOKEN._approve(address,address,uint256).owner (#1241) shadows:
- Ownable.owner() (#309-311) (function)
Rename the local variables that shadow another component.
Additional information: link
TOKEN.setSellFeePercent(uint256,uint256,uint256,uint256) (#994-1004) should emit an event for:
- _sellTaxFee = tFee (#1000)
- _sellLiquidityFee = lFee (#1001)
- _sellMarketingFee = mFee (#1002)
- _sellCharityFee = cFee (#1003)
TOKEN.setBuyFeePercent(uint256,uint256,uint256,uint256) (#1006-1016) should emit an event for:
- _buyTaxFee = tFee (#1012)
- _buyLiquidityFee = lFee (#1013)
- _buyMarketingFee = mFee (#1014)
- _buyChairtyFee = cFee (#1015)
TOKEN.setMaxTxPercent(uint256) (#1018-1020) should emit an event for:
- _maxTxAmount = maxTxPercent * 10 ** _decimals (#1019)
TOKEN.setMaxBalance(uint256) (#1022-1024) should emit an event for:
- _maxWalletBalance = maxBalancePercent * 10 ** _decimals (#1023)
TOKEN.setNumTokensSellToAddToLiquidity(uint256) (#1034-1039) should emit an event for:
- numTokensSellToAddToLiquidity = amount * 10 ** _decimals (#1038)
Emit an event for critical parameter changes.
Additional information: link
TOKEN.setMarketingWalletAddress(address)._addr (#1026) lacks a zero-check on :
- _marketingWalletAddress = _addr (#1027)
TOKEN.setCharityWalletAddress(address)._addr (#1030) lacks a zero-check on :
- _charityWalletAddress = _addr (#1031)
Check that the address is not zero.
Additional information: link
Reentrancy in TOKEN._transfer(address,address,uint256) (#1252-1315):
External calls:
- swapAndLiquify(contractTokenBalance) (#1286)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_burnAddress,block.timestamp) (#1357-1364)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1346-1352)
- (success) = address(_marketingWalletAddress).call{gas: 30000,value: marketingFunds}() (#1331-1334)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1286)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_burnAddress,block.timestamp) (#1357-1364)
- (success) = address(_marketingWalletAddress).call{gas: 30000,value: marketingFunds}() (#1331-1334)
State variables written after the call(s):
- _charityFee = _buyChairtyFee (#1298)
- _charityFee = _sellCharityFee (#1304)
- _charityFee = _buyChairtyFee (#1310)
- _tokenTransfer(from,to,amount,takeFee) (#1314)
- _charityFee = _previousCharityFee (#1233)
- _charityFee = 0 (#1226)
- _tokenTransfer(from,to,amount,takeFee) (#1314)
- _previousCharityFee = _charityFee (#1221)
- _tokenTransfer(from,to,amount,takeFee) (#1314)
- _previousLiquidityFee = _liquidityFee (#1220)
- _tokenTransfer(from,to,amount,takeFee) (#1314)
- _previousMarketingFee = _marketingFee (#1219)
- _tokenTransfer(from,to,amount,takeFee) (#1314)
- _previousTaxFee = _taxFee (#1218)
- _tokenTransfer(from,to,amount,takeFee) (#1314)
- _tFeeTotal = _tFeeTotal.add(tFee) (#1065)
- _taxFee = _buyTaxFee (#1295)
- _taxFee = _sellTaxFee (#1301)
- _taxFee = _buyTaxFee (#1307)
- _tokenTransfer(from,to,amount,takeFee) (#1314)
- _taxFee = _previousTaxFee (#1230)
- _taxFee = 0 (#1223)
Reentrancy in TOKEN.constructor() (#761-796):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#779-780)
State variables written after the call(s):
- _isExcluded[_burnAddress] = true (#791)
- _isExcluded[uniswapV2Pair] = true (#792)
- _isExcludedFromFee[_msgSender()] = true (#786)
- _isExcludedFromFee[address(this)] = true (#787)
- _isExcludedFromFee[_charityWalletAddress] = true (#788)
- _owner = _msgSender() (#794)
- uniswapV2Router = _uniswapV2Router (#783)
Reentrancy in TOKEN.setRouterAddress(address) (#1041-1046):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#1043-1044)
State variables written after the call(s):
- uniswapV2Router = _uniswapV2Router (#1045)
Reentrancy in TOKEN.swapAndLiquify(uint256) (#1317-1339):
External calls:
- swapTokensForEth(swapTokens) (#1328)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1346-1352)
- (success) = address(_marketingWalletAddress).call{gas: 30000,value: marketingFunds}() (#1331-1334)
- addLiquidity(otherHalf,halfFunds) (#1337)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_burnAddress,block.timestamp) (#1357-1364)
External calls sending eth:
- (success) = address(_marketingWalletAddress).call{gas: 30000,value: marketingFunds}() (#1331-1334)
- addLiquidity(otherHalf,halfFunds) (#1337)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_burnAddress,block.timestamp) (#1357-1364)
State variables written after the call(s):
- addLiquidity(otherHalf,halfFunds) (#1337)
- _allowances[owner][spender] = amount (#1248)
Reentrancy in TOKEN.transferFrom(address,address,uint256) (#846-861):
External calls:
- _transfer(sender,recipient,amount) (#851)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_burnAddress,block.timestamp) (#1357-1364)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1346-1352)
- (success) = address(_marketingWalletAddress).call{gas: 30000,value: marketingFunds}() (#1331-1334)
External calls sending eth:
- _transfer(sender,recipient,amount) (#851)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_burnAddress,block.timestamp) (#1357-1364)
- (success) = address(_marketingWalletAddress).call{gas: 30000,value: marketingFunds}() (#1331-1334)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#852-859)
- _allowances[owner][spender] = amount (#1248)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in TOKEN._transfer(address,address,uint256) (#1252-1315):
External calls:
- swapAndLiquify(contractTokenBalance) (#1286)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_burnAddress,block.timestamp) (#1357-1364)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1346-1352)
- (success) = address(_marketingWalletAddress).call{gas: 30000,value: marketingFunds}() (#1331-1334)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1286)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_burnAddress,block.timestamp) (#1357-1364)
- (success) = address(_marketingWalletAddress).call{gas: 30000,value: marketingFunds}() (#1331-1334)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#1409)
- _tokenTransfer(from,to,amount,takeFee) (#1314)
- Transfer(sender,recipient,tTransferAmount) (#1432)
- _tokenTransfer(from,to,amount,takeFee) (#1314)
- Transfer(sender,recipient,tTransferAmount) (#1455)
- _tokenTransfer(from,to,amount,takeFee) (#1314)
- Transfer(sender,recipient,tTransferAmount) (#983)
- _tokenTransfer(from,to,amount,takeFee) (#1314)
Reentrancy in TOKEN.constructor() (#761-796):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#779-780)
Event emitted after the call(s):
- Transfer(address(0),_msgSender(),_tTotal) (#795)
Reentrancy in TOKEN.swapAndLiquify(uint256) (#1317-1339):
External calls:
- swapTokensForEth(swapTokens) (#1328)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1346-1352)
- (success) = address(_marketingWalletAddress).call{gas: 30000,value: marketingFunds}() (#1331-1334)
- addLiquidity(otherHalf,halfFunds) (#1337)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_burnAddress,block.timestamp) (#1357-1364)
External calls sending eth:
- (success) = address(_marketingWalletAddress).call{gas: 30000,value: marketingFunds}() (#1331-1334)
- addLiquidity(otherHalf,halfFunds) (#1337)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_burnAddress,block.timestamp) (#1357-1364)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1249)
- addLiquidity(otherHalf,halfFunds) (#1337)
- SwapAndLiquify(half,halfFunds,otherHalf) (#1338)
Reentrancy in TOKEN.transferFrom(address,address,uint256) (#846-861):
External calls:
- _transfer(sender,recipient,amount) (#851)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_burnAddress,block.timestamp) (#1357-1364)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1346-1352)
- (success) = address(_marketingWalletAddress).call{gas: 30000,value: marketingFunds}() (#1331-1334)
External calls sending eth:
- _transfer(sender,recipient,amount) (#851)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_burnAddress,block.timestamp) (#1357-1364)
- (success) = address(_marketingWalletAddress).call{gas: 30000,value: marketingFunds}() (#1331-1334)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1249)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#852-859)
Apply the check-effects-interactions pattern.
Additional information: link
Ownable.unlock() (#341-349) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp > _lockTime,Contract is locked.) (#346)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#163-169) uses assembly
- INLINE ASM (#165-167)
Address._verifyCallResult(bool,bytes,string) (#274-291) uses assembly
- INLINE ASM (#283-286)
Do not use evm assembly.
Additional information: link
TOKEN.includeInReward(address) (#949-960) has costly operations inside a loop:
- _excluded.pop() (#956)
Use a local variable to hold the loop computation result.
Additional information: link
Address._verifyCallResult(bool,bytes,string) (#274-291) is never used and should be removed
Address.functionCall(address,bytes) (#183-188) is never used and should be removed
Address.functionCall(address,bytes,string) (#190-196) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#198-210) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#212-227) is never used and should be removed
Address.functionDelegateCall(address,bytes) (#252-262) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (#264-272) is never used and should be removed
Address.functionStaticCall(address,bytes) (#229-240) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (#242-250) is never used and should be removed
Address.isContract(address) (#163-169) is never used and should be removed
Address.sendValue(address,uint256) (#171-181) is never used and should be removed
Context._msgData() (#156-159) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#128-137) is never used and should be removed
SafeMath.mod(uint256,uint256) (#113-115) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#139-148) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (#36-46) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (#75-84) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (#86-95) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (#59-73) is never used and should be removed
SafeMath.trySub(uint256,uint256) (#48-57) is never used and should be removed
Remove unused functions.
Additional information: link
TOKEN._taxFee (#730) is set pre-construction with a non-constant function or state variable:
- _buyTaxFee
TOKEN._liquidityFee (#731) is set pre-construction with a non-constant function or state variable:
- _buyLiquidityFee
TOKEN._marketingFee (#732) is set pre-construction with a non-constant function or state variable:
- _buyMarketingFee
TOKEN._charityFee (#733) is set pre-construction with a non-constant function or state variable:
- _buyChairtyFee
TOKEN._previousTaxFee (#735) is set pre-construction with a non-constant function or state variable:
- _taxFee
TOKEN._previousMarketingFee (#736) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
TOKEN._previousLiquidityFee (#737) is set pre-construction with a non-constant function or state variable:
- _marketingFee
TOKEN._previousCharityFee (#738) is set pre-construction with a non-constant function or state variable:
- _charityFee
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
Low level call in Address.sendValue(address,uint256) (#171-181):
- (success) = recipient.call{value: amount}() (#176)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (#212-227):
- (success,returndata) = target.call{value: value}(data) (#223-225)
Low level call in Address.functionStaticCall(address,bytes,string) (#242-250):
- (success,returndata) = target.staticcall(data) (#248)
Low level call in Address.functionDelegateCall(address,bytes,string) (#264-272):
- (success,returndata) = target.delegatecall(data) (#270)
Low level call in TOKEN.withdrawStuckedFunds(uint256) (#1057-1061):
- (sent) = _owner.call{value: amount}() (#1059)
Low level call in TOKEN.swapAndLiquify(uint256) (#1317-1339):
- (success) = address(_marketingWalletAddress).call{gas: 30000,value: marketingFunds}() (#1331-1334)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Variable Ownable._owner (#295) is not in mixedCase
Variable Ownable._lockTime (#297) is not in mixedCase
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#415) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#417) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#448) is not in mixedCase
Function IUniswapV2Router01.WETH() (#494) is not in mixedCase
Parameter TOKEN.setMarketingWalletAddress(address)._addr (#1026) is not in mixedCase
Parameter TOKEN.setCharityWalletAddress(address)._addr (#1030) is not in mixedCase
Parameter TOKEN.setSwapAndLiquifyEnabled(bool)._enabled (#1048) is not in mixedCase
Parameter TOKEN.calculateTaxFee(uint256)._amount (#1197) is not in mixedCase
Parameter TOKEN.calculateCharityFee(uint256)._amount (#1201) is not in mixedCase
Parameter TOKEN.calculateLiquidityAndMarketingFee(uint256)._amount (#1209) is not in mixedCase
Variable TOKEN._marketingWalletAddress (#707) is not in mixedCase
Variable TOKEN._charityWalletAddress (#708) is not in mixedCase
Variable TOKEN._burnAddress (#709) is not in mixedCase
Variable TOKEN._taxFee (#730) is not in mixedCase
Variable TOKEN._liquidityFee (#731) is not in mixedCase
Variable TOKEN._marketingFee (#732) is not in mixedCase
Variable TOKEN._charityFee (#733) is not in mixedCase
Variable TOKEN._maxTxAmount (#744) is not in mixedCase
Variable TOKEN._maxWalletBalance (#745) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#157)" inContext (#151-160)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#499) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#500)
Variable TOKEN._transferFromExcluded(address,address,uint256).rTransferAmount (#1442) is too similar to TOKEN._getTValues(uint256).tTransferAmount (#1118-1120)
Variable TOKEN.reflectionFromToken(uint256,bool).rTransferAmount (#922) is too similar to TOKEN._transferStandard(address,address,uint256).tTransferAmount (#1399)
Variable TOKEN._transferToExcluded(address,address,uint256).rTransferAmount (#1419) is too similar to TOKEN._getValues(uint256).tTransferAmount (#1082)
Variable TOKEN._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#1143-1145) is too similar to TOKEN._getTValues(uint256).tTransferAmount (#1118-1120)
Variable TOKEN._transferBothExcluded(address,address,uint256).rTransferAmount (#969) is too similar to TOKEN._getTValues(uint256).tTransferAmount (#1118-1120)
Variable TOKEN._transferFromExcluded(address,address,uint256).rTransferAmount (#1442) is too similar to TOKEN._getValues(uint256).tTransferAmount (#1082)
Variable TOKEN._transferBothExcluded(address,address,uint256).rTransferAmount (#969) is too similar to TOKEN._transferBothExcluded(address,address,uint256).tTransferAmount (#971)
Variable TOKEN._transferToExcluded(address,address,uint256).rTransferAmount (#1419) is too similar to TOKEN._transferToExcluded(address,address,uint256).tTransferAmount (#1421)
Variable TOKEN._transferToExcluded(address,address,uint256).rTransferAmount (#1419) is too similar to TOKEN._transferStandard(address,address,uint256).tTransferAmount (#1399)
Variable TOKEN._getValues(uint256).rTransferAmount (#1087) is too similar to TOKEN._getTValues(uint256).tTransferAmount (#1118-1120)
Variable TOKEN._transferToExcluded(address,address,uint256).rTransferAmount (#1419) is too similar to TOKEN._transferFromExcluded(address,address,uint256).tTransferAmount (#1444)
Variable TOKEN._transferBothExcluded(address,address,uint256).rTransferAmount (#969) is too similar to TOKEN._getValues(uint256).tTransferAmount (#1082)
Variable TOKEN._transferFromExcluded(address,address,uint256).rTransferAmount (#1442) is too similar to TOKEN._transferToExcluded(address,address,uint256).tTransferAmount (#1421)
Variable TOKEN._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#1143-1145) is too similar to TOKEN._getValues(uint256).tTransferAmount (#1082)
Variable TOKEN._transferStandard(address,address,uint256).rTransferAmount (#1397) is too similar to TOKEN._transferStandard(address,address,uint256).tTransferAmount (#1399)
Variable TOKEN._transferFromExcluded(address,address,uint256).rTransferAmount (#1442) is too similar to TOKEN._transferStandard(address,address,uint256).tTransferAmount (#1399)
Variable TOKEN._transferFromExcluded(address,address,uint256).rTransferAmount (#1442) is too similar to TOKEN._transferFromExcluded(address,address,uint256).tTransferAmount (#1444)
Variable TOKEN.reflectionFromToken(uint256,bool).rTransferAmount (#922) is too similar to TOKEN._getTValues(uint256).tTransferAmount (#1118-1120)
Variable TOKEN._transferBothExcluded(address,address,uint256).rTransferAmount (#969) is too similar to TOKEN._transferToExcluded(address,address,uint256).tTransferAmount (#1421)
Variable TOKEN._transferBothExcluded(address,address,uint256).rTransferAmount (#969) is too similar to TOKEN._transferStandard(address,address,uint256).tTransferAmount (#1399)
Variable TOKEN._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#1143-1145) is too similar to TOKEN._transferStandard(address,address,uint256).tTransferAmount (#1399)
Variable TOKEN._transferBothExcluded(address,address,uint256).rTransferAmount (#969) is too similar to TOKEN._transferFromExcluded(address,address,uint256).tTransferAmount (#1444)
Variable TOKEN._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#1143-1145) is too similar to TOKEN._transferFromExcluded(address,address,uint256).tTransferAmount (#1444)
Variable TOKEN._getValues(uint256).rTransferAmount (#1087) is too similar to TOKEN._transferStandard(address,address,uint256).tTransferAmount (#1399)
Variable TOKEN._transferToExcluded(address,address,uint256).rTransferAmount (#1419) is too similar to TOKEN._getTValues(uint256).tTransferAmount (#1118-1120)
Variable TOKEN._takeLiquidityAndMarketing(uint256).rLiquidityAndMarketing (#1173-1175) is too similar to TOKEN._takeLiquidityAndMarketing(uint256).tLiquidityAndMarketing (#1169)
Variable TOKEN._transferToExcluded(address,address,uint256).rTransferAmount (#1419) is too similar to TOKEN._transferBothExcluded(address,address,uint256).tTransferAmount (#971)
Variable TOKEN.reflectionFromToken(uint256,bool).rTransferAmount (#922) is too similar to TOKEN._transferToExcluded(address,address,uint256).tTransferAmount (#1421)
Variable TOKEN._transferStandard(address,address,uint256).rTransferAmount (#1397) is too similar to TOKEN._transferBothExcluded(address,address,uint256).tTransferAmount (#971)
Variable TOKEN._getValues(uint256).rTransferAmount (#1087) is too similar to TOKEN._transferToExcluded(address,address,uint256).tTransferAmount (#1421)
Variable TOKEN._transferFromExcluded(address,address,uint256).rTransferAmount (#1442) is too similar to TOKEN._transferBothExcluded(address,address,uint256).tTransferAmount (#971)
Variable TOKEN.reflectionFromToken(uint256,bool).rTransferAmount (#922) is too similar to TOKEN._transferFromExcluded(address,address,uint256).tTransferAmount (#1444)
Variable TOKEN._getValues(uint256).rTransferAmount (#1087) is too similar to TOKEN._transferFromExcluded(address,address,uint256).tTransferAmount (#1444)
Variable TOKEN.reflectionFromToken(uint256,bool).rTransferAmount (#922) is too similar to TOKEN._getValues(uint256).tTransferAmount (#1082)
Variable TOKEN._getValues(uint256).rTransferAmount (#1087) is too similar to TOKEN._getValues(uint256).tTransferAmount (#1082)
Variable TOKEN.reflectionFromToken(uint256,bool).rTransferAmount (#922) is too similar to TOKEN._transferBothExcluded(address,address,uint256).tTransferAmount (#971)
Variable TOKEN._getValues(uint256).rTransferAmount (#1087) is too similar to TOKEN._transferBothExcluded(address,address,uint256).tTransferAmount (#971)
Variable TOKEN._transferStandard(address,address,uint256).rTransferAmount (#1397) is too similar to TOKEN._getTValues(uint256).tTransferAmount (#1118-1120)
Variable TOKEN._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#1143-1145) is too similar to TOKEN._transferToExcluded(address,address,uint256).tTransferAmount (#1421)
Variable TOKEN._transferStandard(address,address,uint256).rTransferAmount (#1397) is too similar to TOKEN._transferToExcluded(address,address,uint256).tTransferAmount (#1421)
Variable TOKEN._transferStandard(address,address,uint256).rTransferAmount (#1397) is too similar to TOKEN._getValues(uint256).tTransferAmount (#1082)
Variable TOKEN._transferStandard(address,address,uint256).rTransferAmount (#1397) is too similar to TOKEN._transferFromExcluded(address,address,uint256).tTransferAmount (#1444)
Variable TOKEN._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#1143-1145) is too similar to TOKEN._transferBothExcluded(address,address,uint256).tTransferAmount (#971)
Prevent variables from having similar names.
Additional information: link
TOKEN.constructor() (#761-796) uses literals with too many digits:
- _tTotal = 100000000000000000 * 10 ** _decimals (#765)
TOKEN.constructor() (#761-796) uses literals with too many digits:
- _maxTxAmount = 500000000000000 * 10 ** _decimals (#767)
TOKEN.constructor() (#761-796) uses literals with too many digits:
- _maxWalletBalance = 4000000000000000 * 10 ** _decimals (#768)
TOKEN.constructor() (#761-796) uses literals with too many digits:
- numTokensSellToAddToLiquidity = 10000000000000 * 10 ** _decimals (#769)
TOKEN.slitherConstructorVariables() (#697-1458) uses literals with too many digits:
- _burnAddress = 0x000000000000000000000000000000000000dEaD (#709)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
TOKEN._burnAddress (#709) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#318-321)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#323-330)
lock(uint256) should be declared external:
- Ownable.lock(uint256) (#333-338)
unlock() should be declared external:
- Ownable.unlock() (#341-349)
name() should be declared external:
- TOKEN.name() (#798-800)
symbol() should be declared external:
- TOKEN.symbol() (#802-804)
decimals() should be declared external:
- TOKEN.decimals() (#806-808)
totalSupply() should be declared external:
- TOKEN.totalSupply() (#810-812)
transfer(address,uint256) should be declared external:
- TOKEN.transfer(address,uint256) (#819-826)
allowance(address,address) should be declared external:
- TOKEN.allowance(address,address) (#828-835)
approve(address,uint256) should be declared external:
- TOKEN.approve(address,uint256) (#837-844)
transferFrom(address,address,uint256) should be declared external:
- TOKEN.transferFrom(address,address,uint256) (#846-861)
increaseAllowance(address,uint256) should be declared external:
- TOKEN.increaseAllowance(address,uint256) (#863-874)
decreaseAllowance(address,uint256) should be declared external:
- TOKEN.decreaseAllowance(address,uint256) (#876-890)
isExcludedFromReward(address) should be declared external:
- TOKEN.isExcludedFromReward(address) (#892-894)
totalFees() should be declared external:
- TOKEN.totalFees() (#896-898)
deliver(uint256) should be declared external:
- TOKEN.deliver(uint256) (#900-910)
reflectionFromToken(uint256,bool) should be declared external:
- TOKEN.reflectionFromToken(uint256,bool) (#912-925)
excludeFromReward(address) should be declared external:
- TOKEN.excludeFromReward(address) (#940-947)
excludeFromFee(address) should be declared external:
- TOKEN.excludeFromFee(address) (#986-988)
includeInFee(address) should be declared external:
- TOKEN.includeInFee(address) (#990-992)
isExcludedFromFee(address) should be declared external:
- TOKEN.isExcludedFromFee(address) (#1236-1238)
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