Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Reentrancy in token._transfer(address,address,uint256) (#1133-1174):
External calls:
- swapAndLiquify(contractTokenBalance) (#1161)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,devLpAddress,block.timestamp) (#874-881)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1213-1219)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1232-1238)
- IERC20(husdtToken).transfer(address(devAddress),dividends) (#1240)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1161)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,devLpAddress,block.timestamp) (#874-881)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1173)
- _devFee = _previousDevFee (#1118)
- _devFee = 0 (#1111)
- _tokenTransfer(from,to,amount,takeFee) (#1173)
- _liquidityFee = _previousLiquidityFee (#1116)
- _liquidityFee = 0 (#1109)
- _tokenTransfer(from,to,amount,takeFee) (#1173)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#1072)
- _rOwned[burnAddress] = _rOwned[burnAddress].add(rBurn) (#953)
- _rOwned[devAddress] = _rOwned[devAddress].add(rDev) (#963)
- _rOwned[address(this)] = _rOwned[address(this)].add(rDev) (#965)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#897)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#898)
- _tokenTransfer(from,to,amount,takeFee) (#1173)
- _rTotal = _rTotal.sub(rFee) (#1016)
Apply the check-effects-interactions pattern.
Additional information: link
token.swapTokensForDividendToken(uint256) (#1222-1242) ignores return value by IERC20(husdtToken).transfer(address(devAddress),dividends) (#1240)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
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.
Contract ticker (Dual Olympic City) 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 (Dual Olympic City) has length of 17 chars.
Not a direct threat, but may indicate unreliable intentions of developer.
token.swapAndLiquify(uint256) (#1176-1201) performs a multiplication on the result of a division:
-addHl = uint256(100).mul(_liquidityFee).div(_liquidityFee.add(lsDevFee)) (#1181)
-addNumber = contractTokenBalance.mul(addHl).div(100) (#1182)
Consider ordering multiplication before division.
Additional information: link
PancakeLibrary.getAmountsOut(address,uint256,address[]).i (#734) 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) (#869-882) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,devLpAddress,block.timestamp) (#874-881)
Ensure that all the return values of the function calls are used.
Additional information: link
token.allowance(address,address).owner (#865) shadows:
- Ownable.owner() (#403-405) (function)
token._approve(address,address,uint256).owner (#1125) shadows:
- Ownable.owner() (#403-405) (function)
Rename the local variables that shadow another component.
Additional information: link
token.setTaxFeePercent(uint256) (#978-980) should emit an event for:
- _taxFee = taxFee (#979)
token.setLiquidityFeePercent(uint256) (#982-984) should emit an event for:
- _liquidityFee = liquidityFee (#983)
token.setBurnFeePercent(uint256) (#986-988) should emit an event for:
- _burnFee = burnFee (#987)
token.setNumTokenPercent(uint256) (#990-992) should emit an event for:
- numTokensSellToAddToLiquidity = numToken (#991)
token.setDevFeePercent(uint256) (#994-996) should emit an event for:
- _devFee = devFee (#995)
token.setMaxTxPercent(uint256) (#998-1000) should emit an event for:
- _maxTxAmount = maxTxPercent (#999)
Emit an event for critical parameter changes.
Additional information: link
Reentrancy in token._transfer(address,address,uint256) (#1133-1174):
External calls:
- swapAndLiquify(contractTokenBalance) (#1161)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,devLpAddress,block.timestamp) (#874-881)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1213-1219)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1232-1238)
- IERC20(husdtToken).transfer(address(devAddress),dividends) (#1240)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1161)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,devLpAddress,block.timestamp) (#874-881)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1173)
- _burnFee = _previousBurnFee (#1117)
- _burnFee = 0 (#1110)
- _tokenTransfer(from,to,amount,takeFee) (#1173)
- _previousBurnFee = _burnFee (#1105)
- _tokenTransfer(from,to,amount,takeFee) (#1173)
- _previousDevFee = _devFee (#1106)
- _tokenTransfer(from,to,amount,takeFee) (#1173)
- _previousLiquidityFee = _liquidityFee (#1104)
- _tokenTransfer(from,to,amount,takeFee) (#1173)
- _previousTaxFee = _taxFee (#1103)
- _tokenTransfer(from,to,amount,takeFee) (#1173)
- _tFeeTotal = _tFeeTotal.add(tFee) (#1017)
- _tokenTransfer(from,to,amount,takeFee) (#1173)
- _taxFee = _previousTaxFee (#1115)
- _taxFee = 0 (#1108)
Reentrancy in token.constructor() (#820-838):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#825-826)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#832)
- _isExcludedFromFee[ownerAddres] = true (#833)
- _isExcludedFromFee[burnAddress] = true (#834)
- _isExcludedFromFee[address(this)] = true (#835)
- uniswapV2Router = _uniswapV2Router (#829)
Reentrancy in token.swapAndLiquify(uint256) (#1176-1201):
External calls:
- swapTokensForEth(half) (#1190)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1213-1219)
- addLiquidity(otherHalf,newBalance) (#1196)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,devLpAddress,block.timestamp) (#874-881)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1196)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,devLpAddress,block.timestamp) (#874-881)
State variables written after the call(s):
- addLiquidity(otherHalf,newBalance) (#1196)
- _allowances[owner][spender] = amount (#1129)
Reentrancy in token.swapAndLiquify(uint256) (#1176-1201):
External calls:
- swapTokensForEth(half) (#1190)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1213-1219)
- addLiquidity(otherHalf,newBalance) (#1196)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,devLpAddress,block.timestamp) (#874-881)
- swapTokensForDividendToken(devNumber) (#1198)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1232-1238)
- IERC20(husdtToken).transfer(address(devAddress),dividends) (#1240)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1196)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,devLpAddress,block.timestamp) (#874-881)
State variables written after the call(s):
- swapTokensForDividendToken(devNumber) (#1198)
- _allowances[owner][spender] = amount (#1129)
Reentrancy in token.transferFrom(address,address,uint256) (#912-916):
External calls:
- _transfer(sender,recipient,amount) (#913)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,devLpAddress,block.timestamp) (#874-881)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1213-1219)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1232-1238)
- IERC20(husdtToken).transfer(address(devAddress),dividends) (#1240)
External calls sending eth:
- _transfer(sender,recipient,amount) (#913)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,devLpAddress,block.timestamp) (#874-881)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#914)
- _allowances[owner][spender] = amount (#1129)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in token._transfer(address,address,uint256) (#1133-1174):
External calls:
- swapAndLiquify(contractTokenBalance) (#1161)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,devLpAddress,block.timestamp) (#874-881)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1213-1219)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1232-1238)
- IERC20(husdtToken).transfer(address(devAddress),dividends) (#1240)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1161)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,devLpAddress,block.timestamp) (#874-881)
Event emitted after the call(s):
- Transfer(sender,burnAddress,tBurn) (#955)
- _tokenTransfer(from,to,amount,takeFee) (#1173)
- Transfer(sender,recipient,tTransferAmount) (#904)
- _tokenTransfer(from,to,amount,takeFee) (#1173)
Reentrancy in token.constructor() (#820-838):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#825-826)
Event emitted after the call(s):
- Transfer(address(0),ownerAddres,_tTotal) (#837)
Reentrancy in token.swapAndLiquify(uint256) (#1176-1201):
External calls:
- swapTokensForEth(half) (#1190)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1213-1219)
- addLiquidity(otherHalf,newBalance) (#1196)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,devLpAddress,block.timestamp) (#874-881)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1196)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,devLpAddress,block.timestamp) (#874-881)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1130)
- addLiquidity(otherHalf,newBalance) (#1196)
Reentrancy in token.swapAndLiquify(uint256) (#1176-1201):
External calls:
- swapTokensForEth(half) (#1190)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1213-1219)
- addLiquidity(otherHalf,newBalance) (#1196)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,devLpAddress,block.timestamp) (#874-881)
- swapTokensForDividendToken(devNumber) (#1198)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1232-1238)
- IERC20(husdtToken).transfer(address(devAddress),dividends) (#1240)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1196)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,devLpAddress,block.timestamp) (#874-881)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1130)
- swapTokensForDividendToken(devNumber) (#1198)
- SwapAndLiquify(half,newBalance,otherHalf) (#1200)
Reentrancy in token.transferFrom(address,address,uint256) (#912-916):
External calls:
- _transfer(sender,recipient,amount) (#913)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,devLpAddress,block.timestamp) (#874-881)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1213-1219)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1232-1238)
- IERC20(husdtToken).transfer(address(devAddress),dividends) (#1240)
External calls sending eth:
- _transfer(sender,recipient,amount) (#913)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,devLpAddress,block.timestamp) (#874-881)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1130)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#914)
Apply the check-effects-interactions pattern.
Additional information: link
Ownable.unlock() (#450-455) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(now > _lockTime,Contract is locked until 7 days) (#452)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#255-264) uses assembly
- INLINE ASM (#262)
Address._functionCallWithValue(address,bytes,uint256,string) (#348-369) uses assembly
- INLINE ASM (#361-364)
Do not use evm assembly.
Additional information: link
Different versions of Solidity is used:
- Version used: ['>=0.5.0', '^0.6.12']
- ^0.6.12 (#10)
- >=0.5.0 (#651)
- >=0.5.0 (#670)
Use one Solidity version.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#348-369) is never used and should be removed
Address.functionCall(address,bytes) (#308-310) is never used and should be removed
Address.functionCall(address,bytes,string) (#318-320) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#333-335) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#343-346) is never used and should be removed
Address.isContract(address) (#255-264) is never used and should be removed
Address.sendValue(address,uint256) (#282-288) is never used and should be removed
Context._msgData() (#227-230) is never used and should be removed
PancakeLibrary.getAmountIn(uint256,uint256,uint256) (#721-727) is never used and should be removed
PancakeLibrary.getAmountOut(uint256,uint256,uint256) (#711-718) is never used and should be removed
PancakeLibrary.getAmountsIn(address,uint256,address[]) (#741-749) is never used and should be removed
PancakeLibrary.getAmountsOut(address,uint256,address[]) (#730-738) is never used and should be removed
PancakeLibrary.getReserves(address,address,address) (#696-701) is never used and should be removed
PancakeLibrary.pairFor(address,address,address) (#685-693) is never used and should be removed
PancakeLibrary.quote(uint256,uint256,uint256) (#704-708) is never used and should be removed
PancakeLibrary.sortTokens(address,address) (#678-682) is never used and should be removed
SafeMath.mod(uint256,uint256) (#133-135) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#149-152) is never used and should be removed
Remove unused functions.
Additional information: link
token._rTotal (#769) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
token._previousTaxFee (#777) is set pre-construction with a non-constant function or state variable:
- _taxFee
token._previousLiquidityFee (#780) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
token._previousBurnFee (#783) is set pre-construction with a non-constant function or state variable:
- _burnFee
token._previousDevFee (#786) 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
Pragma version>=0.5.0 (#651) allows old versions
Pragma version>=0.5.0 (#670) 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 Address.sendValue(address,uint256) (#282-288):
- (success) = recipient.call{value: amount}() (#286)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#348-369):
- (success,returndata) = target.call{value: weiValue}(data) (#352)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IPancakeRouter01.WETH() (#462) is not in mixedCase
Function IPancakePair.DOMAIN_SEPARATOR() (#615) is not in mixedCase
Function IPancakePair.PERMIT_TYPEHASH() (#616) is not in mixedCase
Function IPancakePair.MINIMUM_LIQUIDITY() (#633) is not in mixedCase
Contract token (#757-1244) is not in CapWords
Parameter token.setSwapAndLiquifyEnabled(bool)._enabled (#1002) is not in mixedCase
Parameter token.setSwapDevEnabled(bool)._enabled (#1007) is not in mixedCase
Parameter token.calculateTaxFee(uint256)._amount (#1075) is not in mixedCase
Parameter token.calculateLiquidityFee(uint256)._amount (#1081) is not in mixedCase
Parameter token.calculateBurnFee(uint256)._amount (#1087) is not in mixedCase
Parameter token.calculateDevFee(uint256)._amount (#1093) is not in mixedCase
Variable token._taxFee (#776) is not in mixedCase
Variable token._liquidityFee (#779) is not in mixedCase
Variable token._burnFee (#782) is not in mixedCase
Variable token._devFee (#785) is not in mixedCase
Variable token._maxTxAmount (#803) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#228)" inContext (#222-231)
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 (#467) is too similar to IPancakeRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#468)
Variable token._getRValues(token.TData,uint256).rTransferAmount (#1052) is too similar to token._getTValues(uint256).tTransferAmount (#1040)
Variable token._transferStandard(address,address,uint256).rTransferAmount (#896) is too similar to token._getTValues(uint256).tTransferAmount (#1040)
Variable token._transferStandard(address,address,uint256).rTransferAmount (#896) is too similar to token._transferStandard(address,address,uint256).tTransferAmount (#896)
Variable token._getValues(uint256).rTransferAmount (#1031) is too similar to token._getTValues(uint256).tTransferAmount (#1040)
Variable token._getValues(uint256).rTransferAmount (#1031) is too similar to token._transferStandard(address,address,uint256).tTransferAmount (#896)
Variable token.reflectionFromToken(uint256,bool).rTransferAmount (#939) is too similar to token._transferStandard(address,address,uint256).tTransferAmount (#896)
Variable token._transferStandard(address,address,uint256).rTransferAmount (#896) is too similar to token._getValues(uint256).tTransferAmount (#1029)
Variable token.reflectionFromToken(uint256,bool).rTransferAmount (#939) is too similar to token._getTValues(uint256).tTransferAmount (#1040)
Variable token._getRValues(token.TData,uint256).rTransferAmount (#1052) is too similar to token._getValues(uint256).tTransferAmount (#1029)
Variable token._getValues(uint256).rTransferAmount (#1031) is too similar to token._getValues(uint256).tTransferAmount (#1029)
Variable token.reflectionFromToken(uint256,bool).rTransferAmount (#939) is too similar to token._getValues(uint256).tTransferAmount (#1029)
Variable token._getRValues(token.TData,uint256).rTransferAmount (#1052) is too similar to token._transferStandard(address,address,uint256).tTransferAmount (#896)
Prevent variables from having similar names.
Additional information: link
token.slitherConstructorVariables() (#757-1244) uses literals with too many digits:
- burnAddress = address(0x000000000000000000000000000000000000dEaD) (#788)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
token._tOwned (#762) is never used in token (#757-1244)
Remove unused state variables.
Additional information: link
token._decimals (#774) should be constant
token._name (#772) should be constant
token._symbol (#773) should be constant
token._tTotal (#768) should be constant
token.burnAddress (#788) should be constant
token.devAddress (#790) should be constant
token.devLpAddress (#791) should be constant
token.hbtcToken (#793) should be constant
token.husdtToken (#794) should be constant
token.ownerAddres (#789) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#422-425)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#431-435)
geUnlockTime() should be declared external:
- Ownable.geUnlockTime() (#437-439)
lock(uint256) should be declared external:
- Ownable.lock(uint256) (#442-447)
unlock() should be declared external:
- Ownable.unlock() (#450-455)
name() should be declared external:
- token.name() (#840-842)
symbol() should be declared external:
- token.symbol() (#844-846)
decimals() should be declared external:
- token.decimals() (#848-850)
totalSupply() should be declared external:
- token.totalSupply() (#852-854)
transfer(address,uint256) should be declared external:
- token.transfer(address,uint256) (#860-863)
allowance(address,address) should be declared external:
- token.allowance(address,address) (#865-867)
approve(address,uint256) should be declared external:
- token.approve(address,uint256) (#907-910)
transferFrom(address,address,uint256) should be declared external:
- token.transferFrom(address,address,uint256) (#912-916)
increaseAllowance(address,uint256) should be declared external:
- token.increaseAllowance(address,uint256) (#918-921)
decreaseAllowance(address,uint256) should be declared external:
- token.decreaseAllowance(address,uint256) (#923-926)
totalFees() should be declared external:
- token.totalFees() (#929-931)
reflectionFromToken(uint256,bool) should be declared external:
- token.reflectionFromToken(uint256,bool) (#933-942)
excludeFromFee(address) should be declared external:
- token.excludeFromFee(address) (#970-972)
includeInFee(address) should be declared external:
- token.includeInFee(address) (#974-976)
setSwapAndLiquifyEnabled(bool) should be declared external:
- token.setSwapAndLiquifyEnabled(bool) (#1002-1005)
setSwapDevEnabled(bool) should be declared external:
- token.setSwapDevEnabled(bool) (#1007-1009)
isExcludedFromFee(address) should be declared external:
- token.isExcludedFromFee(address) (#1121-1123)
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