Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Reentrancy in token._transfer(address,address,uint256) (#1125-1166):
External calls:
- swapAndLiquify(contractTokenBalance) (#1153)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#871-878)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1205-1211)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1224-1230)
- IERC20(husdtToken).transfer(address(devAddress),dividends) (#1232)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1153)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#871-878)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1165)
- _devFee = _previousDevFee (#1110)
- _devFee = 0 (#1103)
- _tokenTransfer(from,to,amount,takeFee) (#1165)
- _liquidityFee = _previousLiquidityFee (#1108)
- _liquidityFee = 0 (#1101)
- _tokenTransfer(from,to,amount,takeFee) (#1165)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#1064)
- _rOwned[burnAddress] = _rOwned[burnAddress].add(rBurn) (#950)
- _rOwned[devAddress] = _rOwned[devAddress].add(rDev) (#960)
- _rOwned[address(this)] = _rOwned[address(this)].add(rDev) (#962)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#894)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#895)
- _tokenTransfer(from,to,amount,takeFee) (#1165)
- _rTotal = _rTotal.sub(rFee) (#1009)
Apply the check-effects-interactions pattern.
Additional information: link
token.swapTokensForDividendToken(uint256) (#1214-1234) ignores return value by IERC20(husdtToken).transfer(address(devAddress),dividends) (#1232)
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.
token._rTotal (#764) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
token._previousTaxFee (#772) is set pre-construction with a non-constant function or state variable:
- _taxFee
token._previousLiquidityFee (#775) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
token._previousBurnFee (#778) is set pre-construction with a non-constant function or state variable:
- _burnFee
token._previousDevFee (#781) 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 (#646) allows old versions
Pragma version>=0.5.0 (#665) 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) (#277-283):
- (success) = recipient.call{value: amount}() (#281)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#343-364):
- (success,returndata) = target.call{value: weiValue}(data) (#347)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
token.swapAndLiquify(uint256) (#1168-1193) performs a multiplication on the result of a division:
-addHl = uint256(100).mul(_liquidityFee).div(_liquidityFee.add(lsDevFee)) (#1173)
-addNumber = contractTokenBalance.mul(addHl).div(100) (#1174)
Consider ordering multiplication before division.
Additional information: link
PancakeLibrary.getAmountsOut(address,uint256,address[]).i (#729) 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) (#866-879) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#871-878)
Ensure that all the return values of the function calls are used.
Additional information: link
token.allowance(address,address).owner (#862) shadows:
- Ownable.owner() (#398-400) (function)
token._approve(address,address,uint256).owner (#1117) shadows:
- Ownable.owner() (#398-400) (function)
Rename the local variables that shadow another component.
Additional information: link
token.setTaxFeePercent(uint256) (#975-977) should emit an event for:
- _taxFee = taxFee (#976)
token.setLiquidityFeePercent(uint256) (#979-981) should emit an event for:
- _liquidityFee = liquidityFee (#980)
token.setBurnFeePercent(uint256) (#983-985) should emit an event for:
- _burnFee = burnFee (#984)
token.setDevFeePercent(uint256) (#987-989) should emit an event for:
- _devFee = devFee (#988)
token.setMaxTxPercent(uint256) (#991-993) should emit an event for:
- _maxTxAmount = maxTxPercent (#992)
Emit an event for critical parameter changes.
Additional information: link
Reentrancy in token._transfer(address,address,uint256) (#1125-1166):
External calls:
- swapAndLiquify(contractTokenBalance) (#1153)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#871-878)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1205-1211)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1224-1230)
- IERC20(husdtToken).transfer(address(devAddress),dividends) (#1232)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1153)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#871-878)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1165)
- _burnFee = _previousBurnFee (#1109)
- _burnFee = 0 (#1102)
- _tokenTransfer(from,to,amount,takeFee) (#1165)
- _previousBurnFee = _burnFee (#1097)
- _tokenTransfer(from,to,amount,takeFee) (#1165)
- _previousDevFee = _devFee (#1098)
- _tokenTransfer(from,to,amount,takeFee) (#1165)
- _previousLiquidityFee = _liquidityFee (#1096)
- _tokenTransfer(from,to,amount,takeFee) (#1165)
- _previousTaxFee = _taxFee (#1095)
- _tokenTransfer(from,to,amount,takeFee) (#1165)
- _tFeeTotal = _tFeeTotal.add(tFee) (#1010)
- _tokenTransfer(from,to,amount,takeFee) (#1165)
- _taxFee = _previousTaxFee (#1107)
- _taxFee = 0 (#1100)
Reentrancy in token.constructor() (#814-835):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#822-823)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#829)
- _isExcludedFromFee[ownerAddres] = true (#830)
- _isExcludedFromFee[burnAddress] = true (#831)
- _isExcludedFromFee[address(this)] = true (#832)
- uniswapV2Router = _uniswapV2Router (#826)
Reentrancy in token.swapAndLiquify(uint256) (#1168-1193):
External calls:
- swapTokensForEth(half) (#1182)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1205-1211)
- addLiquidity(otherHalf,newBalance) (#1188)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#871-878)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1188)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#871-878)
State variables written after the call(s):
- addLiquidity(otherHalf,newBalance) (#1188)
- _allowances[owner][spender] = amount (#1121)
Reentrancy in token.swapAndLiquify(uint256) (#1168-1193):
External calls:
- swapTokensForEth(half) (#1182)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1205-1211)
- addLiquidity(otherHalf,newBalance) (#1188)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#871-878)
- swapTokensForDividendToken(devNumber) (#1190)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1224-1230)
- IERC20(husdtToken).transfer(address(devAddress),dividends) (#1232)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1188)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#871-878)
State variables written after the call(s):
- swapTokensForDividendToken(devNumber) (#1190)
- _allowances[owner][spender] = amount (#1121)
Reentrancy in token.transferFrom(address,address,uint256) (#909-913):
External calls:
- _transfer(sender,recipient,amount) (#910)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#871-878)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1205-1211)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1224-1230)
- IERC20(husdtToken).transfer(address(devAddress),dividends) (#1232)
External calls sending eth:
- _transfer(sender,recipient,amount) (#910)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#871-878)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#911)
- _allowances[owner][spender] = amount (#1121)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in token._transfer(address,address,uint256) (#1125-1166):
External calls:
- swapAndLiquify(contractTokenBalance) (#1153)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#871-878)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1205-1211)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1224-1230)
- IERC20(husdtToken).transfer(address(devAddress),dividends) (#1232)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1153)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#871-878)
Event emitted after the call(s):
- Transfer(sender,burnAddress,tBurn) (#952)
- _tokenTransfer(from,to,amount,takeFee) (#1165)
- Transfer(sender,recipient,tTransferAmount) (#901)
- _tokenTransfer(from,to,amount,takeFee) (#1165)
Reentrancy in token.constructor() (#814-835):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#822-823)
Event emitted after the call(s):
- Transfer(address(0),ownerAddres,_tTotal) (#834)
Reentrancy in token.swapAndLiquify(uint256) (#1168-1193):
External calls:
- swapTokensForEth(half) (#1182)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1205-1211)
- addLiquidity(otherHalf,newBalance) (#1188)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#871-878)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1188)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#871-878)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1122)
- addLiquidity(otherHalf,newBalance) (#1188)
Reentrancy in token.swapAndLiquify(uint256) (#1168-1193):
External calls:
- swapTokensForEth(half) (#1182)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1205-1211)
- addLiquidity(otherHalf,newBalance) (#1188)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#871-878)
- swapTokensForDividendToken(devNumber) (#1190)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1224-1230)
- IERC20(husdtToken).transfer(address(devAddress),dividends) (#1232)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1188)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#871-878)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1122)
- swapTokensForDividendToken(devNumber) (#1190)
- SwapAndLiquify(half,newBalance,otherHalf) (#1192)
Reentrancy in token.transferFrom(address,address,uint256) (#909-913):
External calls:
- _transfer(sender,recipient,amount) (#910)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#871-878)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1205-1211)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1224-1230)
- IERC20(husdtToken).transfer(address(devAddress),dividends) (#1232)
External calls sending eth:
- _transfer(sender,recipient,amount) (#910)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#871-878)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1122)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#911)
Apply the check-effects-interactions pattern.
Additional information: link
Ownable.unlock() (#445-450) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(now > _lockTime,Contract is locked until 7 days) (#447)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#250-259) uses assembly
- INLINE ASM (#257)
Address._functionCallWithValue(address,bytes,uint256,string) (#343-364) uses assembly
- INLINE ASM (#356-359)
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 (#5)
- >=0.5.0 (#646)
- >=0.5.0 (#665)
Use one Solidity version.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#343-364) is never used and should be removed
Address.functionCall(address,bytes) (#303-305) is never used and should be removed
Address.functionCall(address,bytes,string) (#313-315) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#328-330) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#338-341) is never used and should be removed
Address.isContract(address) (#250-259) is never used and should be removed
Address.sendValue(address,uint256) (#277-283) is never used and should be removed
Context._msgData() (#222-225) is never used and should be removed
PancakeLibrary.getAmountIn(uint256,uint256,uint256) (#716-722) is never used and should be removed
PancakeLibrary.getAmountOut(uint256,uint256,uint256) (#706-713) is never used and should be removed
PancakeLibrary.getAmountsIn(address,uint256,address[]) (#736-744) is never used and should be removed
PancakeLibrary.getAmountsOut(address,uint256,address[]) (#725-733) is never used and should be removed
PancakeLibrary.getReserves(address,address,address) (#691-696) is never used and should be removed
PancakeLibrary.pairFor(address,address,address) (#680-688) is never used and should be removed
PancakeLibrary.quote(uint256,uint256,uint256) (#699-703) is never used and should be removed
PancakeLibrary.sortTokens(address,address) (#673-677) is never used and should be removed
SafeMath.mod(uint256,uint256) (#128-130) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#144-147) is never used and should be removed
Remove unused functions.
Additional information: link
Function IPancakeRouter01.WETH() (#457) is not in mixedCase
Function IPancakePair.DOMAIN_SEPARATOR() (#610) is not in mixedCase
Function IPancakePair.PERMIT_TYPEHASH() (#611) is not in mixedCase
Function IPancakePair.MINIMUM_LIQUIDITY() (#628) is not in mixedCase
Contract token (#752-1236) is not in CapWords
Parameter token.setSwapAndLiquifyEnabled(bool)._enabled (#995) is not in mixedCase
Parameter token.setSwapDevEnabled(bool)._enabled (#1000) is not in mixedCase
Parameter token.calculateTaxFee(uint256)._amount (#1067) is not in mixedCase
Parameter token.calculateLiquidityFee(uint256)._amount (#1073) is not in mixedCase
Parameter token.calculateBurnFee(uint256)._amount (#1079) is not in mixedCase
Parameter token.calculateDevFee(uint256)._amount (#1085) is not in mixedCase
Variable token._taxFee (#771) is not in mixedCase
Variable token._liquidityFee (#774) is not in mixedCase
Variable token._burnFee (#777) is not in mixedCase
Variable token._devFee (#780) is not in mixedCase
Variable token._maxTxAmount (#797) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#223)" inContext (#217-226)
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 (#462) is too similar to IPancakeRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#463)
Variable token._getRValues(token.TData,uint256).rTransferAmount (#1044) is too similar to token._transferStandard(address,address,uint256).tTransferAmount (#893)
Variable token._getValues(uint256).rTransferAmount (#1024) is too similar to token._getTValues(uint256).tTransferAmount (#1033)
Variable token._transferStandard(address,address,uint256).rTransferAmount (#893) is too similar to token._transferStandard(address,address,uint256).tTransferAmount (#893)
Variable token._getRValues(token.TData,uint256).rTransferAmount (#1044) is too similar to token._getTValues(uint256).tTransferAmount (#1033)
Variable token._getValues(uint256).rTransferAmount (#1024) is too similar to token._transferStandard(address,address,uint256).tTransferAmount (#893)
Variable token._transferStandard(address,address,uint256).rTransferAmount (#893) is too similar to token._getTValues(uint256).tTransferAmount (#1033)
Variable token._getRValues(token.TData,uint256).rTransferAmount (#1044) is too similar to token._getValues(uint256).tTransferAmount (#1022)
Variable token.reflectionFromToken(uint256,bool).rTransferAmount (#936) is too similar to token._getValues(uint256).tTransferAmount (#1022)
Variable token._transferStandard(address,address,uint256).rTransferAmount (#893) is too similar to token._getValues(uint256).tTransferAmount (#1022)
Variable token.reflectionFromToken(uint256,bool).rTransferAmount (#936) is too similar to token._transferStandard(address,address,uint256).tTransferAmount (#893)
Variable token.reflectionFromToken(uint256,bool).rTransferAmount (#936) is too similar to token._getTValues(uint256).tTransferAmount (#1033)
Variable token._getValues(uint256).rTransferAmount (#1024) is too similar to token._getValues(uint256).tTransferAmount (#1022)
Prevent variables from having similar names.
Additional information: link
token.slitherConstructorVariables() (#752-1236) uses literals with too many digits:
- _tTotal = 1000000000 * 10 ** 18 (#763)
token.slitherConstructorVariables() (#752-1236) uses literals with too many digits:
- burnAddress = address(0x000000000000000000000000000000000000dEaD) (#783)
token.slitherConstructorVariables() (#752-1236) uses literals with too many digits:
- _maxTxAmount = 1000000000 * 10 ** 18 (#797)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
token._tOwned (#757) is never used in token (#752-1236)
Remove unused state variables.
Additional information: link
token._decimals (#769) should be constant
token._name (#767) should be constant
token._symbol (#768) should be constant
token._tTotal (#763) should be constant
token.burnAddress (#783) should be constant
token.devAddress (#785) should be constant
token.hbtcToken (#787) should be constant
token.husdtToken (#788) should be constant
token.numTokensSellToAddToLiquidity (#798) should be constant
token.ownerAddres (#784) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#417-420)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#426-430)
geUnlockTime() should be declared external:
- Ownable.geUnlockTime() (#432-434)
lock(uint256) should be declared external:
- Ownable.lock(uint256) (#437-442)
unlock() should be declared external:
- Ownable.unlock() (#445-450)
name() should be declared external:
- token.name() (#837-839)
symbol() should be declared external:
- token.symbol() (#841-843)
decimals() should be declared external:
- token.decimals() (#845-847)
totalSupply() should be declared external:
- token.totalSupply() (#849-851)
transfer(address,uint256) should be declared external:
- token.transfer(address,uint256) (#857-860)
allowance(address,address) should be declared external:
- token.allowance(address,address) (#862-864)
approve(address,uint256) should be declared external:
- token.approve(address,uint256) (#904-907)
transferFrom(address,address,uint256) should be declared external:
- token.transferFrom(address,address,uint256) (#909-913)
increaseAllowance(address,uint256) should be declared external:
- token.increaseAllowance(address,uint256) (#915-918)
decreaseAllowance(address,uint256) should be declared external:
- token.decreaseAllowance(address,uint256) (#920-923)
totalFees() should be declared external:
- token.totalFees() (#926-928)
reflectionFromToken(uint256,bool) should be declared external:
- token.reflectionFromToken(uint256,bool) (#930-939)
excludeFromFee(address) should be declared external:
- token.excludeFromFee(address) (#967-969)
includeInFee(address) should be declared external:
- token.includeInFee(address) (#971-973)
setSwapAndLiquifyEnabled(bool) should be declared external:
- token.setSwapAndLiquifyEnabled(bool) (#995-998)
setSwapDevEnabled(bool) should be declared external:
- token.setSwapDevEnabled(bool) (#1000-1002)
isExcludedFromFee(address) should be declared external:
- token.isExcludedFromFee(address) (#1113-1115)
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