Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Reentrancy in Catspy._transfer(address,address,uint256) (#614-644):
External calls:
- swapAndLiquify(contractTokenBalance) (#637)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#669-676)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#659-665)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#637)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#669-676)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#643)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#565)
- _rOwned[_HoldersMarketing] = _rOwned[_HoldersMarketing].add(rHolders) (#572)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#706)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#697)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#510)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#717)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#698)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#718)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#708)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#512)
- _tokenTransfer(from,to,amount,takeFee) (#643)
- _rTotalSupply = _rTotalSupply.sub(rFee) (#524)
- _tokenTransfer(from,to,amount,takeFee) (#643)
- _tOwned[_HoldersMarketing] = _tOwned[_HoldersMarketing].add(tHolders) (#574)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#567)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#509)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#716)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#707)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#511)
Apply the check-effects-interactions pattern.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#240) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#241)
Variable Catspy._rTotalSupply (#378) is too similar to Catspy._tTotalSupply (#377)
Variable Catspy._transferBothExcluded(address,address,uint256).rTransferAmount (#508) is too similar to Catspy._transferFromExcluded(address,address,uint256).tTransferAmount (#715)
Variable Catspy._transferFromExcluded(address,address,uint256).rTransferAmount (#715) is too similar to Catspy._transferFromExcluded(address,address,uint256).tTransferAmount (#715)
Variable Catspy._transferBothExcluded(address,address,uint256).rTransferAmount (#508) is too similar to Catspy._getValues(uint256).tTransferAmount (#528)
Variable Catspy._transferFromExcluded(address,address,uint256).rTransferAmount (#715) is too similar to Catspy._transferStandard(address,address,uint256).tTransferAmount (#696)
Variable Catspy._transferToExcluded(address,address,uint256).rTransferAmount (#705) is too similar to Catspy._transferToExcluded(address,address,uint256).tTransferAmount (#705)
Variable Catspy._transferToExcluded(address,address,uint256).rTransferAmount (#705) is too similar to Catspy._getTValues(uint256).tTransferAmount (#536)
Variable Catspy._transferStandard(address,address,uint256).rTransferAmount (#696) is too similar to Catspy._getTValues(uint256).tTransferAmount (#536)
Variable Catspy._getValues(uint256).rTransferAmount (#529) is too similar to Catspy._transferStandard(address,address,uint256).tTransferAmount (#696)
Variable Catspy._getValues(uint256).rTransferAmount (#529) is too similar to Catspy._transferFromExcluded(address,address,uint256).tTransferAmount (#715)
Variable Catspy._transferBothExcluded(address,address,uint256).rTransferAmount (#508) is too similar to Catspy._transferStandard(address,address,uint256).tTransferAmount (#696)
Variable Catspy._transferToExcluded(address,address,uint256).rTransferAmount (#705) is too similar to Catspy._transferFromExcluded(address,address,uint256).tTransferAmount (#715)
Variable Catspy._transferToExcluded(address,address,uint256).rTransferAmount (#705) is too similar to Catspy._transferStandard(address,address,uint256).tTransferAmount (#696)
Variable Catspy._transferStandard(address,address,uint256).rTransferAmount (#696) is too similar to Catspy._transferStandard(address,address,uint256).tTransferAmount (#696)
Variable Catspy._transferStandard(address,address,uint256).rTransferAmount (#696) is too similar to Catspy._transferFromExcluded(address,address,uint256).tTransferAmount (#715)
Variable Catspy._transferBothExcluded(address,address,uint256).rTransferAmount (#508) is too similar to Catspy._transferToExcluded(address,address,uint256).tTransferAmount (#705)
Variable Catspy._transferBothExcluded(address,address,uint256).rTransferAmount (#508) is too similar to Catspy._getTValues(uint256).tTransferAmount (#536)
Variable Catspy._transferFromExcluded(address,address,uint256).rTransferAmount (#715) is too similar to Catspy._transferToExcluded(address,address,uint256).tTransferAmount (#705)
Variable Catspy._transferFromExcluded(address,address,uint256).rTransferAmount (#715) is too similar to Catspy._getTValues(uint256).tTransferAmount (#536)
Variable Catspy._transferBothExcluded(address,address,uint256).rTransferAmount (#508) is too similar to Catspy._transferBothExcluded(address,address,uint256).tTransferAmount (#508)
Variable Catspy._getValues(uint256).rTransferAmount (#529) is too similar to Catspy._transferToExcluded(address,address,uint256).tTransferAmount (#705)
Variable Catspy._getValues(uint256).rTransferAmount (#529) is too similar to Catspy._getTValues(uint256).tTransferAmount (#536)
Variable Catspy.reflectionFromToken(uint256,bool).rTransferAmount (#478) is too similar to Catspy._getTValues(uint256).tTransferAmount (#536)
Variable Catspy._getValues(uint256).rTransferAmount (#529) is too similar to Catspy._getValues(uint256).tTransferAmount (#528)
Variable Catspy._transferFromExcluded(address,address,uint256).rTransferAmount (#715) is too similar to Catspy._transferBothExcluded(address,address,uint256).tTransferAmount (#508)
Variable Catspy._transferStandard(address,address,uint256).rTransferAmount (#696) is too similar to Catspy._transferBothExcluded(address,address,uint256).tTransferAmount (#508)
Variable Catspy._transferStandard(address,address,uint256).rTransferAmount (#696) is too similar to Catspy._getValues(uint256).tTransferAmount (#528)
Variable Catspy._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#544) is too similar to Catspy._transferToExcluded(address,address,uint256).tTransferAmount (#705)
Variable Catspy._transferFromExcluded(address,address,uint256).rTransferAmount (#715) is too similar to Catspy._getValues(uint256).tTransferAmount (#528)
Variable Catspy.reflectionFromToken(uint256,bool).rTransferAmount (#478) is too similar to Catspy._transferToExcluded(address,address,uint256).tTransferAmount (#705)
Variable Catspy._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#544) is too similar to Catspy._transferStandard(address,address,uint256).tTransferAmount (#696)
Variable Catspy.reflectionFromToken(uint256,bool).rTransferAmount (#478) is too similar to Catspy._transferStandard(address,address,uint256).tTransferAmount (#696)
Variable Catspy._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#544) is too similar to Catspy._transferBothExcluded(address,address,uint256).tTransferAmount (#508)
Variable Catspy.reflectionFromToken(uint256,bool).rTransferAmount (#478) is too similar to Catspy._transferBothExcluded(address,address,uint256).tTransferAmount (#508)
Variable Catspy._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#544) is too similar to Catspy._transferFromExcluded(address,address,uint256).tTransferAmount (#715)
Variable Catspy._transferToExcluded(address,address,uint256).rTransferAmount (#705) is too similar to Catspy._transferBothExcluded(address,address,uint256).tTransferAmount (#508)
Variable Catspy.reflectionFromToken(uint256,bool).rTransferAmount (#478) is too similar to Catspy._transferFromExcluded(address,address,uint256).tTransferAmount (#715)
Variable Catspy._transferStandard(address,address,uint256).rTransferAmount (#696) is too similar to Catspy._transferToExcluded(address,address,uint256).tTransferAmount (#705)
Variable Catspy._getValues(uint256).rTransferAmount (#529) is too similar to Catspy._transferBothExcluded(address,address,uint256).tTransferAmount (#508)
Variable Catspy._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#544) is too similar to Catspy._getValues(uint256).tTransferAmount (#528)
Variable Catspy._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#544) is too similar to Catspy._getTValues(uint256).tTransferAmount (#536)
Variable Catspy.reflectionFromToken(uint256,bool).rTransferAmount (#478) is too similar to Catspy._getValues(uint256).tTransferAmount (#528)
Variable Catspy._transferToExcluded(address,address,uint256).rTransferAmount (#705) is too similar to Catspy._getValues(uint256).tTransferAmount (#528)
Prevent variables from having similar names.
Additional information: link
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#203) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#204) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#218) is not in mixedCase
Function IUniswapV2Router01.WETH() (#236) is not in mixedCase
Parameter Catspy.setSwapAndLiquifyEnabled(bool)._enabled (#518) is not in mixedCase
Parameter Catspy.calculateReflections(uint256)._amount (#576) is not in mixedCase
Parameter Catspy.calculateHoldersFee(uint256)._amount (#581) is not in mixedCase
Parameter Catspy.calculateBurnedLiquidityFee(uint256)._amount (#586) is not in mixedCase
Variable Catspy._HoldersMarketing (#375) is not in mixedCase
Variable Catspy._Reflections (#383) is not in mixedCase
Variable Catspy._HoldersFee (#385) is not in mixedCase
Variable Catspy._BurnedliquidityFee (#387) is not in mixedCase
Variable Catspy._maxTxAmount (#389) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#96)" inContext (#91-99)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Catspy.slitherConstructorVariables() (#366-725) uses literals with too many digits:
- _tTotalSupply = 1000000000000 * 10 ** 18 (#377)
Catspy.slitherConstructorVariables() (#366-725) uses literals with too many digits:
- _maxTxAmount = 28000000000 * 10 ** 18 (#389)
Catspy.slitherConstructorVariables() (#366-725) uses literals with too many digits:
- numTokensSellToAddToLiquidity = 28000000000 * 10 ** 18 (#395)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Catspy.addLiquidity(uint256,uint256) (#667-677) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#669-676)
Ensure that all the return values of the function calls are used.
Additional information: link
Catspy.allowance(address,address).owner (#438) shadows:
- Ownable.owner() (#166-168) (function)
Catspy._approve(address,address,uint256).owner (#608) shadows:
- Ownable.owner() (#166-168) (function)
Rename the local variables that shadow another component.
Additional information: link
Reentrancy in Catspy._transfer(address,address,uint256) (#614-644):
External calls:
- swapAndLiquify(contractTokenBalance) (#637)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#669-676)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#659-665)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#637)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#669-676)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#643)
- _BurnedliquidityFee = _previousBurnedLiquidityFee (#603)
- _BurnedliquidityFee = 0 (#598)
- _tokenTransfer(from,to,amount,takeFee) (#643)
- _HoldersFee = _previousHoldersFee (#602)
- _HoldersFee = 0 (#597)
- _tokenTransfer(from,to,amount,takeFee) (#643)
- _Reflections = _previousReflections (#601)
- _Reflections = 0 (#596)
- _tokenTransfer(from,to,amount,takeFee) (#643)
- _previousBurnedLiquidityFee = _BurnedliquidityFee (#595)
- _tokenTransfer(from,to,amount,takeFee) (#643)
- _previousHoldersFee = _HoldersFee (#594)
- _tokenTransfer(from,to,amount,takeFee) (#643)
- _previousReflections = _Reflections (#593)
- _tokenTransfer(from,to,amount,takeFee) (#643)
- _tFeeTotal = _tFeeTotal.add(tFee) (#525)
Reentrancy in Catspy.constructor() (#408-417):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#411-412)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#414)
- _isExcludedFromFee[address(this)] = true (#415)
- uniswapV2Router = _uniswapV2Router (#413)
Reentrancy in Catspy.swapAndLiquify(uint256) (#645-653):
External calls:
- swapTokensForEth(half) (#649)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#659-665)
- addLiquidity(otherHalf,newBalance) (#651)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#669-676)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#651)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#669-676)
State variables written after the call(s):
- addLiquidity(otherHalf,newBalance) (#651)
- _allowances[owner][spender] = amount (#611)
Reentrancy in Catspy.transferFrom(address,address,uint256) (#445-449):
External calls:
- _transfer(sender,recipient,amount) (#446)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#669-676)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#659-665)
External calls sending eth:
- _transfer(sender,recipient,amount) (#446)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#669-676)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#447)
- _allowances[owner][spender] = amount (#611)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in Catspy._transfer(address,address,uint256) (#614-644):
External calls:
- swapAndLiquify(contractTokenBalance) (#637)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#669-676)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#659-665)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#637)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#669-676)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#702)
- _tokenTransfer(from,to,amount,takeFee) (#643)
- Transfer(sender,recipient,tTransferAmount) (#722)
- _tokenTransfer(from,to,amount,takeFee) (#643)
- Transfer(sender,recipient,tTransferAmount) (#712)
- _tokenTransfer(from,to,amount,takeFee) (#643)
- Transfer(sender,recipient,tTransferAmount) (#516)
- _tokenTransfer(from,to,amount,takeFee) (#643)
Reentrancy in Catspy.constructor() (#408-417):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#411-412)
Event emitted after the call(s):
- Transfer(address(0),owner(),_tTotalSupply) (#416)
Reentrancy in Catspy.swapAndLiquify(uint256) (#645-653):
External calls:
- swapTokensForEth(half) (#649)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#659-665)
- addLiquidity(otherHalf,newBalance) (#651)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#669-676)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#651)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#669-676)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#612)
- addLiquidity(otherHalf,newBalance) (#651)
- SwapAndLiquify(half,newBalance,otherHalf) (#652)
Reentrancy in Catspy.transferFrom(address,address,uint256) (#445-449):
External calls:
- _transfer(sender,recipient,amount) (#446)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#669-676)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#659-665)
External calls sending eth:
- _transfer(sender,recipient,amount) (#446)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#669-676)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#612)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#447)
Apply the check-effects-interactions pattern.
Additional information: link
Address.isContract(address) (#102-106) uses assembly
- INLINE ASM (#104)
Address._verifyCallResult(bool,bytes,string) (#143-156) uses assembly
- INLINE ASM (#148-151)
Do not use evm assembly.
Additional information: link
Catspy.includeInReward(address) (#495-506) has costly operations inside a loop:
- _excluded.pop() (#502)
Use a local variable to hold the loop computation result.
Additional information: link
Address._verifyCallResult(bool,bytes,string) (#143-156) is never used and should be removed
Address.functionCall(address,bytes) (#112-114) is never used and should be removed
Address.functionCall(address,bytes,string) (#115-117) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#118-120) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#121-126) is never used and should be removed
Address.functionDelegateCall(address,bytes) (#135-137) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (#138-142) is never used and should be removed
Address.functionStaticCall(address,bytes) (#127-129) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (#130-134) is never used and should be removed
Address.isContract(address) (#102-106) is never used and should be removed
Address.sendValue(address,uint256) (#107-111) is never used and should be removed
Context._msgData() (#95-98) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#77-82) is never used and should be removed
SafeMath.mod(uint256,uint256) (#68-70) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#83-88) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (#23-29) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (#44-49) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (#50-55) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (#36-43) is never used and should be removed
SafeMath.trySub(uint256,uint256) (#30-35) is never used and should be removed
Remove unused functions.
Additional information: link
Catspy._rTotalSupply (#378) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotalSupply))
Catspy._previousReflections (#384) is set pre-construction with a non-constant function or state variable:
- _Reflections
Catspy._previousHoldersFee (#386) is set pre-construction with a non-constant function or state variable:
- _HoldersFee
Catspy._previousBurnedLiquidityFee (#388) is set pre-construction with a non-constant function or state variable:
- _BurnedliquidityFee
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) (#107-111):
- (success) = recipient.call{value: amount}() (#109)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (#121-126):
- (success,returndata) = target.call{value: value}(data) (#124)
Low level call in Address.functionStaticCall(address,bytes,string) (#130-134):
- (success,returndata) = target.staticcall(data) (#132)
Low level call in Address.functionDelegateCall(address,bytes,string) (#138-142):
- (success,returndata) = target.delegatecall(data) (#140)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Catspy._HoldersMarketing (#375) should be constant
Catspy._decimals (#382) should be constant
Catspy._maxTxAmount (#389) should be constant
Catspy._tTotalSupply (#377) should be constant
Catspy._tokenname (#380) should be constant
Catspy._tokensymbol (#381) should be constant
Catspy.numTokensSellToAddToLiquidity (#395) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#173-176)
name() should be declared external:
- Catspy.name() (#418-420)
symbol() should be declared external:
- Catspy.symbol() (#421-423)
decimals() should be declared external:
- Catspy.decimals() (#424-426)
totalSupply() should be declared external:
- Catspy.totalSupply() (#427-429)
transfer(address,uint256) should be declared external:
- Catspy.transfer(address,uint256) (#434-437)
allowance(address,address) should be declared external:
- Catspy.allowance(address,address) (#438-440)
approve(address,uint256) should be declared external:
- Catspy.approve(address,uint256) (#441-444)
transferFrom(address,address,uint256) should be declared external:
- Catspy.transferFrom(address,address,uint256) (#445-449)
increaseAllowance(address,uint256) should be declared external:
- Catspy.increaseAllowance(address,uint256) (#450-453)
decreaseAllowance(address,uint256) should be declared external:
- Catspy.decreaseAllowance(address,uint256) (#454-457)
isExcludedFromReward(address) should be declared external:
- Catspy.isExcludedFromReward(address) (#458-460)
totalFees() should be declared external:
- Catspy.totalFees() (#461-463)
deliver(uint256) should be declared external:
- Catspy.deliver(uint256) (#464-471)
reflectionFromToken(uint256,bool) should be declared external:
- Catspy.reflectionFromToken(uint256,bool) (#472-481)
excludeFromReward(address) should be declared external:
- Catspy.excludeFromReward(address) (#487-494)
setSwapAndLiquifyEnabled(bool) should be declared external:
- Catspy.setSwapAndLiquifyEnabled(bool) (#518-521)
isExcludedFromFee(address) should be declared external:
- Catspy.isExcludedFromFee(address) (#605-607)
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