Buy or donate food for your pets from Vending Machines with The Cat Inu Blockchain dApp App.
Aiming to implement a pet food vending machine system, which you can perform interactively with the crypto money in your blockchain-based secure wallet, It is a token created for commercial and donation purposes with a real project.
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
TheCatInu.addLiquidity(uint256,uint256) (#1081-1094) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1086-1093)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in TheCatInu._transfer(address,address,uint256) (#1011-1038):
External calls:
- swapAndLiquify(contractTokenBalance) (#1033)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1086-1093)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1072-1078)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1033)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1086-1093)
State variables written after the call(s):
- _tokenTransfer(from,to,amount) (#1037)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#959)
- _rOwned[deadAddress] = _rOwned[deadAddress].add(rBurn) (#1150)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1185)
- _rOwned[devWallet] = _rOwned[devWallet].add(rdev) (#1178)
- _rOwned[marketingWallet] = _rOwned[marketingWallet].add(rMarketing) (#1164)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1196)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#900)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1187)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1197)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#902)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1134)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1135)
- _tokenTransfer(from,to,amount) (#1037)
- _rTotal = _rTotal.sub(rFee) (#914)
- _tokenTransfer(from,to,amount) (#1037)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#961)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#899)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1195)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1186)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#901)
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.
Not a direct threat, but may indicate unreliable intentions of developer. Widespread names (e.g. Elon, King, Moon, Doge) are common among meme-tokens and scams. The allow to gain free hype and attract unexperienced investors.
TheCatInu._rTotal (#717) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
TheCatInu._previousDevFee (#730) is set pre-construction with a non-constant function or state variable:
- _devFee
TheCatInu._previousTaxFee (#733) is set pre-construction with a non-constant function or state variable:
- _taxFee
TheCatInu._previousLiquidityFee (#736) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
TheCatInu._previousBurnFee (#739) is set pre-construction with a non-constant function or state variable:
- _burnFee
TheCatInu._previousmarketingFee (#746) is set pre-construction with a non-constant function or state variable:
- _marketingFee
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) (#314-320):
- (success) = recipient.call{value: amount}() (#318)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#380-401):
- (success,returndata) = target.call{value: weiValue}(data) (#384)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
TheCatInu.takeBurn(address,uint256,uint256,uint256) (#1142-1153) performs a multiplication on the result of a division:
-tBurn = tAmount.div(100).mul(_burnFee) (#1146)
TheCatInu.takeMarketing(address,uint256,uint256,uint256) (#1156-1167) performs a multiplication on the result of a division:
-tMarketing = tAmount.div(100).mul(_marketingFee) (#1160)
TheCatInu.takeDev(address,uint256,uint256,uint256) (#1170-1181) performs a multiplication on the result of a division:
-tdev = tAmount.div(100).mul(_devFee) (#1174)
Consider ordering multiplication before division.
Additional information: link
TheCatInu.addLiquidity(uint256,uint256) (#1081-1094) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1086-1093)
Ensure that all the return values of the function calls are used.
Additional information: link
TheCatInu.allowance(address,address).owner (#816) shadows:
- Ownable.owner() (#435-437) (function)
TheCatInu._approve(address,address,uint256).owner (#1003) shadows:
- Ownable.owner() (#435-437) (function)
Rename the local variables that shadow another component.
Additional information: link
TheCatInu.setTaxFeePercent(uint256) (#1220-1222) should emit an event for:
- _taxFee = taxFee (#1221)
TheCatInu.setLiquidityFeePercent(uint256) (#1224-1226) should emit an event for:
- _liquidityFee = liquidityFee (#1225)
TheCatInu.setChartityFeePercent(uint256) (#1228-1230) should emit an event for:
- _marketingFee = marketingFee (#1229)
TheCatInu.setDevFeePercent(uint256) (#1232-1234) should emit an event for:
- _devFee = devFee (#1233)
TheCatInu.setBurnFeePercent(uint256) (#1235-1237) should emit an event for:
- _burnFee = burnFee (#1236)
TheCatInu.setNumTokensSellToAddToLiquidity(uint256,uint256) (#1239-1241) should emit an event for:
- numTokensSellToAddToLiquidity = newAmt * 10 ** decimal (#1240)
TheCatInu.setMaxTxAmount(uint256,uint256) (#1243-1246) should emit an event for:
- _maxTxAmount = maxTxAmount * 10 ** decimal (#1245)
Emit an event for critical parameter changes.
Additional information: link
TheCatInu.setmarketingWallet(address).newWallet (#1212) lacks a zero-check on :
- marketingWallet = newWallet (#1213)
TheCatInu.setdevWallet(address).newWallet (#1216) lacks a zero-check on :
- devWallet = newWallet (#1217)
Check that the address is not zero.
Additional information: link
Reentrancy in TheCatInu._transfer(address,address,uint256) (#1011-1038):
External calls:
- swapAndLiquify(contractTokenBalance) (#1033)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1086-1093)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1072-1078)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1033)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1086-1093)
State variables written after the call(s):
- _tokenTransfer(from,to,amount) (#1037)
- _burnFee = _previousBurnFee (#994)
- _burnFee = 0 (#987)
- _tokenTransfer(from,to,amount) (#1037)
- _devFee = _previousDevFee (#996)
- _devFee = 0 (#988)
- _tokenTransfer(from,to,amount) (#1037)
- _liquidityFee = _previousLiquidityFee (#993)
- _liquidityFee = 0 (#985)
- _tokenTransfer(from,to,amount) (#1037)
- _marketingFee = _previousmarketingFee (#995)
- _marketingFee = 0 (#986)
- _tokenTransfer(from,to,amount) (#1037)
- _previousBurnFee = _burnFee (#981)
- _tokenTransfer(from,to,amount) (#1037)
- _previousDevFee = _devFee (#983)
- _tokenTransfer(from,to,amount) (#1037)
- _previousLiquidityFee = _liquidityFee (#980)
- _tokenTransfer(from,to,amount) (#1037)
- _previousTaxFee = _taxFee (#979)
- _tokenTransfer(from,to,amount) (#1037)
- _previousmarketingFee = _marketingFee (#982)
- _tokenTransfer(from,to,amount) (#1037)
- _tFeeTotal = _tFeeTotal.add(tFee) (#915)
- _tokenTransfer(from,to,amount) (#1037)
- _taxFee = _previousTaxFee (#992)
- _taxFee = 0 (#984)
Reentrancy in TheCatInu.constructor() (#771-788):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#777-778)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#784)
- _isExcludedFromFee[address(this)] = true (#785)
- uniswapV2Router = _uniswapV2Router (#781)
Reentrancy in TheCatInu.setRouterAddress(address) (#1250-1254):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_newPancakeRouter.factory()).createPair(address(this),_newPancakeRouter.WETH()) (#1252)
State variables written after the call(s):
- uniswapV2Router = _newPancakeRouter (#1253)
Reentrancy in TheCatInu.swapAndLiquify(uint256) (#1040-1061):
External calls:
- swapTokensForEth(half) (#1052)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1072-1078)
- addLiquidity(otherHalf,newBalance) (#1058)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1086-1093)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1058)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1086-1093)
State variables written after the call(s):
- addLiquidity(otherHalf,newBalance) (#1058)
- _allowances[owner][spender] = amount (#1007)
Reentrancy in TheCatInu.transferFrom(address,address,uint256) (#825-829):
External calls:
- _transfer(sender,recipient,amount) (#826)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1086-1093)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1072-1078)
External calls sending eth:
- _transfer(sender,recipient,amount) (#826)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1086-1093)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#827)
- _allowances[owner][spender] = amount (#1007)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in TheCatInu._transfer(address,address,uint256) (#1011-1038):
External calls:
- swapAndLiquify(contractTokenBalance) (#1033)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1086-1093)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1072-1078)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1033)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1086-1093)
Event emitted after the call(s):
- Transfer(sender,deadAddress,tBurn) (#1151)
- _tokenTransfer(from,to,amount) (#1037)
- Transfer(sender,marketingWallet,tMarketing) (#1165)
- _tokenTransfer(from,to,amount) (#1037)
- Transfer(sender,devWallet,tdev) (#1179)
- _tokenTransfer(from,to,amount) (#1037)
- Transfer(sender,recipient,tTransferAmount) (#1200)
- _tokenTransfer(from,to,amount) (#1037)
- Transfer(sender,recipient,tTransferAmount) (#1190)
- _tokenTransfer(from,to,amount) (#1037)
- Transfer(sender,recipient,tTransferAmount) (#905)
- _tokenTransfer(from,to,amount) (#1037)
- Transfer(sender,recipient,tTransferAmount) (#1138)
- _tokenTransfer(from,to,amount) (#1037)
Reentrancy in TheCatInu.constructor() (#771-788):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#777-778)
Event emitted after the call(s):
- Transfer(address(0),_msgSender(),_tTotal) (#787)
Reentrancy in TheCatInu.swapAndLiquify(uint256) (#1040-1061):
External calls:
- swapTokensForEth(half) (#1052)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1072-1078)
- addLiquidity(otherHalf,newBalance) (#1058)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1086-1093)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1058)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1086-1093)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1008)
- addLiquidity(otherHalf,newBalance) (#1058)
- SwapAndLiquify(half,newBalance,otherHalf) (#1060)
Reentrancy in TheCatInu.transferFrom(address,address,uint256) (#825-829):
External calls:
- _transfer(sender,recipient,amount) (#826)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1086-1093)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1072-1078)
External calls sending eth:
- _transfer(sender,recipient,amount) (#826)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1086-1093)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1008)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#827)
Apply the check-effects-interactions pattern.
Additional information: link
Ownable.unlock() (#482-487) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp > _lockTime,Contract is locked until 7 days) (#484)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#287-296) uses assembly
- INLINE ASM (#294)
Address._functionCallWithValue(address,bytes,uint256,string) (#380-401) uses assembly
- INLINE ASM (#393-396)
Do not use evm assembly.
Additional information: link
TheCatInu.includeInReward(address) (#884-895) has costly operations inside a loop:
- _excluded.pop() (#891)
Use a local variable to hold the loop computation result.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#380-401) is never used and should be removed
Address.functionCall(address,bytes) (#340-342) is never used and should be removed
Address.functionCall(address,bytes,string) (#350-352) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#365-367) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#375-378) is never used and should be removed
Address.isContract(address) (#287-296) is never used and should be removed
Address.sendValue(address,uint256) (#314-320) is never used and should be removed
Context._msgData() (#259-262) is never used and should be removed
SafeMath.mod(uint256,uint256) (#232-234) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#248-251) is never used and should be removed
Remove unused functions.
Additional information: link
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#526) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#527) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#543) is not in mixedCase
Function IUniswapV2Router01.WETH() (#564) is not in mixedCase
Parameter TheCatInu.calculateTaxFee(uint256)._amount (#964) is not in mixedCase
Parameter TheCatInu.calculateLiquidityFee(uint256)._amount (#970) is not in mixedCase
Parameter TheCatInu.setSwapAndLiquifyEnabled(bool)._enabled (#1256) is not in mixedCase
Variable TheCatInu._devFee (#729) is not in mixedCase
Variable TheCatInu._taxFee (#732) is not in mixedCase
Variable TheCatInu._liquidityFee (#735) is not in mixedCase
Variable TheCatInu._burnFee (#738) is not in mixedCase
Variable TheCatInu._marketingFee (#742) is not in mixedCase
Variable TheCatInu._maxTxAmount (#755) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#260)" inContext (#254-263)
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 (#569) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#570)
Variable TheCatInu._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#935) is too similar to TheCatInu._getTValues(uint256).tTransferAmount (#927)
Variable TheCatInu._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#935) is too similar to TheCatInu._transferBothExcluded(address,address,uint256).tTransferAmount (#898)
Variable TheCatInu._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#935) is too similar to TheCatInu.takeMarketing(address,uint256,uint256,uint256).tTransferAmount (#1156)
Variable TheCatInu._transferFromExcluded(address,address,uint256).rTransferAmount (#1194) is too similar to TheCatInu._transferToExcluded(address,address,uint256).tTransferAmount (#1184)
Variable TheCatInu.takeDev(address,uint256,uint256,uint256).rTransferAmount (#1170) is too similar to TheCatInu._getValues(uint256).tTransferAmount (#919)
Variable TheCatInu.takeDev(address,uint256,uint256,uint256).rTransferAmount (#1170) is too similar to TheCatInu._transferFromExcluded(address,address,uint256).tTransferAmount (#1194)
Variable TheCatInu._getValues(uint256).rTransferAmount (#920) is too similar to TheCatInu._transferFromExcluded(address,address,uint256).tTransferAmount (#1194)
Variable TheCatInu.takeMarketing(address,uint256,uint256,uint256).rTransferAmount (#1156) is too similar to TheCatInu._getValues(uint256).tTransferAmount (#919)
Variable TheCatInu._transferBothExcluded(address,address,uint256).rTransferAmount (#898) is too similar to TheCatInu._transferBothExcluded(address,address,uint256).tTransferAmount (#898)
Variable TheCatInu._transferStandard(address,address,uint256).rTransferAmount (#1130) is too similar to TheCatInu.takeDev(address,uint256,uint256,uint256).tTransferAmount (#1170)
Variable TheCatInu._transferToExcluded(address,address,uint256).rTransferAmount (#1184) is too similar to TheCatInu._transferToExcluded(address,address,uint256).tTransferAmount (#1184)
Variable TheCatInu._transferStandard(address,address,uint256).rTransferAmount (#1130) is too similar to TheCatInu._transferStandard(address,address,uint256).tTransferAmount (#1130)
Variable TheCatInu.takeBurn(address,uint256,uint256,uint256).rTransferAmount (#1142) is too similar to TheCatInu._getValues(uint256).tTransferAmount (#919)
Variable TheCatInu.takeBurn(address,uint256,uint256,uint256).rTransferAmount (#1142) is too similar to TheCatInu._transferFromExcluded(address,address,uint256).tTransferAmount (#1194)
Variable TheCatInu.reflectionFromToken(uint256,bool).rTransferAmount (#864) is too similar to TheCatInu.takeDev(address,uint256,uint256,uint256).tTransferAmount (#1170)
Variable TheCatInu._transferStandard(address,address,uint256).rTransferAmount (#1130) is too similar to TheCatInu._transferBothExcluded(address,address,uint256).tTransferAmount (#898)
Variable TheCatInu.takeMarketing(address,uint256,uint256,uint256).rTransferAmount (#1156) is too similar to TheCatInu._transferFromExcluded(address,address,uint256).tTransferAmount (#1194)
Variable TheCatInu._transferBothExcluded(address,address,uint256).rTransferAmount (#898) is too similar to TheCatInu._transferToExcluded(address,address,uint256).tTransferAmount (#1184)
Variable TheCatInu._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#935) is too similar to TheCatInu._getValues(uint256).tTransferAmount (#919)
Variable TheCatInu._transferFromExcluded(address,address,uint256).rTransferAmount (#1194) is too similar to TheCatInu._transferFromExcluded(address,address,uint256).tTransferAmount (#1194)
Variable TheCatInu.takeDev(address,uint256,uint256,uint256).rTransferAmount (#1170) is too similar to TheCatInu._transferBothExcluded(address,address,uint256).tTransferAmount (#898)
Variable TheCatInu.takeBurn(address,uint256,uint256,uint256).rTransferAmount (#1142) is too similar to TheCatInu.takeDev(address,uint256,uint256,uint256).tTransferAmount (#1170)
Variable TheCatInu.reflectionFromToken(uint256,bool).rTransferAmount (#864) is too similar to TheCatInu._transferToExcluded(address,address,uint256).tTransferAmount (#1184)
Variable TheCatInu.reflectionFromToken(uint256,bool).rTransferAmount (#864) is too similar to TheCatInu._transferBothExcluded(address,address,uint256).tTransferAmount (#898)
Variable TheCatInu.takeBurn(address,uint256,uint256,uint256).rTransferAmount (#1142) is too similar to TheCatInu._transferStandard(address,address,uint256).tTransferAmount (#1130)
Variable TheCatInu.takeMarketing(address,uint256,uint256,uint256).rTransferAmount (#1156) is too similar to TheCatInu.takeDev(address,uint256,uint256,uint256).tTransferAmount (#1170)
Variable TheCatInu._transferToExcluded(address,address,uint256).rTransferAmount (#1184) is too similar to TheCatInu._transferFromExcluded(address,address,uint256).tTransferAmount (#1194)
Variable TheCatInu._transferStandard(address,address,uint256).rTransferAmount (#1130) is too similar to TheCatInu._transferToExcluded(address,address,uint256).tTransferAmount (#1184)
Variable TheCatInu._transferStandard(address,address,uint256).rTransferAmount (#1130) is too similar to TheCatInu._getTValues(uint256).tTransferAmount (#927)
Variable TheCatInu._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#935) is too similar to TheCatInu._transferStandard(address,address,uint256).tTransferAmount (#1130)
Variable TheCatInu._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#935) is too similar to TheCatInu._transferFromExcluded(address,address,uint256).tTransferAmount (#1194)
Variable TheCatInu._transferStandard(address,address,uint256).rTransferAmount (#1130) is too similar to TheCatInu.takeMarketing(address,uint256,uint256,uint256).tTransferAmount (#1156)
Variable TheCatInu.takeBurn(address,uint256,uint256,uint256).rTransferAmount (#1142) is too similar to TheCatInu._transferBothExcluded(address,address,uint256).tTransferAmount (#898)
Variable TheCatInu.takeBurn(address,uint256,uint256,uint256).rTransferAmount (#1142) is too similar to TheCatInu.takeMarketing(address,uint256,uint256,uint256).tTransferAmount (#1156)
Variable TheCatInu.takeDev(address,uint256,uint256,uint256).rTransferAmount (#1170) is too similar to TheCatInu._transferToExcluded(address,address,uint256).tTransferAmount (#1184)
Variable TheCatInu._getValues(uint256).rTransferAmount (#920) is too similar to TheCatInu._transferToExcluded(address,address,uint256).tTransferAmount (#1184)
Variable TheCatInu.takeMarketing(address,uint256,uint256,uint256).rTransferAmount (#1156) is too similar to TheCatInu._transferToExcluded(address,address,uint256).tTransferAmount (#1184)
Variable TheCatInu.takeMarketing(address,uint256,uint256,uint256).rTransferAmount (#1156) is too similar to TheCatInu._getTValues(uint256).tTransferAmount (#927)
Variable TheCatInu.takeMarketing(address,uint256,uint256,uint256).rTransferAmount (#1156) is too similar to TheCatInu._transferBothExcluded(address,address,uint256).tTransferAmount (#898)
Variable TheCatInu._transferBothExcluded(address,address,uint256).rTransferAmount (#898) is too similar to TheCatInu._getValues(uint256).tTransferAmount (#919)
Variable TheCatInu._transferBothExcluded(address,address,uint256).rTransferAmount (#898) is too similar to TheCatInu._transferFromExcluded(address,address,uint256).tTransferAmount (#1194)
Variable TheCatInu._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#935) is too similar to TheCatInu.takeDev(address,uint256,uint256,uint256).tTransferAmount (#1170)
Variable TheCatInu.reflectionFromToken(uint256,bool).rTransferAmount (#864) is too similar to TheCatInu._getValues(uint256).tTransferAmount (#919)
Variable TheCatInu.reflectionFromToken(uint256,bool).rTransferAmount (#864) is too similar to TheCatInu._transferFromExcluded(address,address,uint256).tTransferAmount (#1194)
Variable TheCatInu.takeBurn(address,uint256,uint256,uint256).rTransferAmount (#1142) is too similar to TheCatInu._transferToExcluded(address,address,uint256).tTransferAmount (#1184)
Variable TheCatInu._transferBothExcluded(address,address,uint256).rTransferAmount (#898) is too similar to TheCatInu.takeDev(address,uint256,uint256,uint256).tTransferAmount (#1170)
Variable TheCatInu.takeBurn(address,uint256,uint256,uint256).rTransferAmount (#1142) is too similar to TheCatInu._getTValues(uint256).tTransferAmount (#927)
Variable TheCatInu._transferStandard(address,address,uint256).rTransferAmount (#1130) is too similar to TheCatInu._getValues(uint256).tTransferAmount (#919)
Variable TheCatInu._transferStandard(address,address,uint256).rTransferAmount (#1130) is too similar to TheCatInu._transferFromExcluded(address,address,uint256).tTransferAmount (#1194)
Variable TheCatInu._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#935) is too similar to TheCatInu._transferToExcluded(address,address,uint256).tTransferAmount (#1184)
Variable TheCatInu.takeDev(address,uint256,uint256,uint256).rTransferAmount (#1170) is too similar to TheCatInu._transferStandard(address,address,uint256).tTransferAmount (#1130)
Variable TheCatInu._transferFromExcluded(address,address,uint256).rTransferAmount (#1194) is too similar to TheCatInu._transferBothExcluded(address,address,uint256).tTransferAmount (#898)
Variable TheCatInu.takeMarketing(address,uint256,uint256,uint256).rTransferAmount (#1156) is too similar to TheCatInu.takeBurn(address,uint256,uint256,uint256).tTransferAmount (#1142)
Variable TheCatInu._transferFromExcluded(address,address,uint256).rTransferAmount (#1194) is too similar to TheCatInu._getTValues(uint256).tTransferAmount (#927)
Variable TheCatInu.takeDev(address,uint256,uint256,uint256).rTransferAmount (#1170) is too similar to TheCatInu._getTValues(uint256).tTransferAmount (#927)
Variable TheCatInu._transferToExcluded(address,address,uint256).rTransferAmount (#1184) is too similar to TheCatInu.takeDev(address,uint256,uint256,uint256).tTransferAmount (#1170)
Variable TheCatInu._getValues(uint256).rTransferAmount (#920) is too similar to TheCatInu.takeDev(address,uint256,uint256,uint256).tTransferAmount (#1170)
Variable TheCatInu._transferBothExcluded(address,address,uint256).rTransferAmount (#898) is too similar to TheCatInu.takeBurn(address,uint256,uint256,uint256).tTransferAmount (#1142)
Variable TheCatInu._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#935) is too similar to TheCatInu.takeBurn(address,uint256,uint256,uint256).tTransferAmount (#1142)
Variable TheCatInu._transferToExcluded(address,address,uint256).rTransferAmount (#1184) is too similar to TheCatInu._getValues(uint256).tTransferAmount (#919)
Variable TheCatInu.takeMarketing(address,uint256,uint256,uint256).rTransferAmount (#1156) is too similar to TheCatInu._transferStandard(address,address,uint256).tTransferAmount (#1130)
Variable TheCatInu._getValues(uint256).rTransferAmount (#920) is too similar to TheCatInu._getValues(uint256).tTransferAmount (#919)
Variable TheCatInu._transferFromExcluded(address,address,uint256).rTransferAmount (#1194) is too similar to TheCatInu._transferStandard(address,address,uint256).tTransferAmount (#1130)
Variable TheCatInu._transferToExcluded(address,address,uint256).rTransferAmount (#1184) is too similar to TheCatInu.takeMarketing(address,uint256,uint256,uint256).tTransferAmount (#1156)
Variable TheCatInu._getValues(uint256).rTransferAmount (#920) is too similar to TheCatInu.takeMarketing(address,uint256,uint256,uint256).tTransferAmount (#1156)
Variable TheCatInu._transferBothExcluded(address,address,uint256).rTransferAmount (#898) is too similar to TheCatInu.takeMarketing(address,uint256,uint256,uint256).tTransferAmount (#1156)
Variable TheCatInu._transferToExcluded(address,address,uint256).rTransferAmount (#1184) is too similar to TheCatInu._transferBothExcluded(address,address,uint256).tTransferAmount (#898)
Variable TheCatInu.reflectionFromToken(uint256,bool).rTransferAmount (#864) is too similar to TheCatInu.takeBurn(address,uint256,uint256,uint256).tTransferAmount (#1142)
Variable TheCatInu.takeBurn(address,uint256,uint256,uint256).rTransferAmount (#1142) is too similar to TheCatInu.takeBurn(address,uint256,uint256,uint256).tTransferAmount (#1142)
Variable TheCatInu._transferBothExcluded(address,address,uint256).rTransferAmount (#898) is too similar to TheCatInu._getTValues(uint256).tTransferAmount (#927)
Variable TheCatInu._transferToExcluded(address,address,uint256).rTransferAmount (#1184) is too similar to TheCatInu.takeBurn(address,uint256,uint256,uint256).tTransferAmount (#1142)
Variable TheCatInu._getValues(uint256).rTransferAmount (#920) is too similar to TheCatInu.takeBurn(address,uint256,uint256,uint256).tTransferAmount (#1142)
Variable TheCatInu.reflectionFromToken(uint256,bool).rTransferAmount (#864) is too similar to TheCatInu.takeMarketing(address,uint256,uint256,uint256).tTransferAmount (#1156)
Variable TheCatInu._transferFromExcluded(address,address,uint256).rTransferAmount (#1194) is too similar to TheCatInu.takeDev(address,uint256,uint256,uint256).tTransferAmount (#1170)
Variable TheCatInu.takeDev(address,uint256,uint256,uint256).rTransferAmount (#1170) is too similar to TheCatInu.takeDev(address,uint256,uint256,uint256).tTransferAmount (#1170)
Variable TheCatInu.takeDev(address,uint256,uint256,uint256).rTransferAmount (#1170) is too similar to TheCatInu.takeBurn(address,uint256,uint256,uint256).tTransferAmount (#1142)
Variable TheCatInu._transferFromExcluded(address,address,uint256).rTransferAmount (#1194) is too similar to TheCatInu._getValues(uint256).tTransferAmount (#919)
Variable TheCatInu._transferToExcluded(address,address,uint256).rTransferAmount (#1184) is too similar to TheCatInu._transferStandard(address,address,uint256).tTransferAmount (#1130)
Variable TheCatInu._transferFromExcluded(address,address,uint256).rTransferAmount (#1194) is too similar to TheCatInu.takeMarketing(address,uint256,uint256,uint256).tTransferAmount (#1156)
Variable TheCatInu._transferBothExcluded(address,address,uint256).rTransferAmount (#898) is too similar to TheCatInu._transferStandard(address,address,uint256).tTransferAmount (#1130)
Variable TheCatInu.takeDev(address,uint256,uint256,uint256).rTransferAmount (#1170) is too similar to TheCatInu.takeMarketing(address,uint256,uint256,uint256).tTransferAmount (#1156)
Variable TheCatInu._getValues(uint256).rTransferAmount (#920) is too similar to TheCatInu._transferBothExcluded(address,address,uint256).tTransferAmount (#898)
Variable TheCatInu.reflectionFromToken(uint256,bool).rTransferAmount (#864) is too similar to TheCatInu._getTValues(uint256).tTransferAmount (#927)
Variable TheCatInu._transferToExcluded(address,address,uint256).rTransferAmount (#1184) is too similar to TheCatInu._getTValues(uint256).tTransferAmount (#927)
Variable TheCatInu._getValues(uint256).rTransferAmount (#920) is too similar to TheCatInu._getTValues(uint256).tTransferAmount (#927)
Variable TheCatInu._transferStandard(address,address,uint256).rTransferAmount (#1130) is too similar to TheCatInu.takeBurn(address,uint256,uint256,uint256).tTransferAmount (#1142)
Variable TheCatInu._transferFromExcluded(address,address,uint256).rTransferAmount (#1194) is too similar to TheCatInu.takeBurn(address,uint256,uint256,uint256).tTransferAmount (#1142)
Variable TheCatInu.takeMarketing(address,uint256,uint256,uint256).rTransferAmount (#1156) is too similar to TheCatInu.takeMarketing(address,uint256,uint256,uint256).tTransferAmount (#1156)
Variable TheCatInu.reflectionFromToken(uint256,bool).rTransferAmount (#864) is too similar to TheCatInu._transferStandard(address,address,uint256).tTransferAmount (#1130)
Variable TheCatInu._getValues(uint256).rTransferAmount (#920) is too similar to TheCatInu._transferStandard(address,address,uint256).tTransferAmount (#1130)
Prevent variables from having similar names.
Additional information: link
TheCatInu.slitherConstructorVariables() (#702-1262) uses literals with too many digits:
- _tTotal = 200000000000000 * 10 ** 18 (#716)
TheCatInu.slitherConstructorVariables() (#702-1262) uses literals with too many digits:
- deadAddress = 0x000000000000000000000000000000000000dEaD (#740)
TheCatInu.slitherConstructorVariables() (#702-1262) uses literals with too many digits:
- numTokensSellToAddToLiquidity = 50000000000 * 10 ** 18 (#754)
TheCatInu.slitherConstructorVariables() (#702-1262) uses literals with too many digits:
- _maxTxAmount = 200000000000000 * 10 ** 18 (#755)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
TheCatInu._decimals (#722) should be constant
TheCatInu._name (#720) should be constant
TheCatInu._symbol (#721) should be constant
TheCatInu._tTotal (#716) should be constant
TheCatInu.deadAddress (#740) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#454-457)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#463-467)
geUnlockTime() should be declared external:
- Ownable.geUnlockTime() (#469-471)
lock(uint256) should be declared external:
- Ownable.lock(uint256) (#474-479)
unlock() should be declared external:
- Ownable.unlock() (#482-487)
name() should be declared external:
- TheCatInu.name() (#790-792)
symbol() should be declared external:
- TheCatInu.symbol() (#794-796)
decimals() should be declared external:
- TheCatInu.decimals() (#798-800)
totalSupply() should be declared external:
- TheCatInu.totalSupply() (#802-804)
transfer(address,uint256) should be declared external:
- TheCatInu.transfer(address,uint256) (#811-814)
allowance(address,address) should be declared external:
- TheCatInu.allowance(address,address) (#816-818)
approve(address,uint256) should be declared external:
- TheCatInu.approve(address,uint256) (#820-823)
transferFrom(address,address,uint256) should be declared external:
- TheCatInu.transferFrom(address,address,uint256) (#825-829)
increaseAllowance(address,uint256) should be declared external:
- TheCatInu.increaseAllowance(address,uint256) (#831-834)
decreaseAllowance(address,uint256) should be declared external:
- TheCatInu.decreaseAllowance(address,uint256) (#836-839)
isExcludedFromReward(address) should be declared external:
- TheCatInu.isExcludedFromReward(address) (#841-843)
totalFees() should be declared external:
- TheCatInu.totalFees() (#845-847)
deliver(uint256) should be declared external:
- TheCatInu.deliver(uint256) (#849-856)
reflectionFromToken(uint256,bool) should be declared external:
- TheCatInu.reflectionFromToken(uint256,bool) (#858-867)
excludeFromReward(address) should be declared external:
- TheCatInu.excludeFromReward(address) (#875-882)
isExcludedFromFee(address) should be declared external:
- TheCatInu.isExcludedFromFee(address) (#999-1001)
excludeFromFee(address) should be declared external:
- TheCatInu.excludeFromFee(address) (#1204-1206)
includeInFee(address) should be declared external:
- TheCatInu.includeInFee(address) (#1208-1210)
setRouterAddress(address) should be declared external:
- TheCatInu.setRouterAddress(address) (#1250-1254)
setSwapAndLiquifyEnabled(bool) should be declared external:
- TheCatInu.setSwapAndLiquifyEnabled(bool) (#1256-1259)
Use the external attribute for functions never called from the contract.
Additional information: link
Young tokens have high risks of scam / price dump / death
Young tokens have high risks of scam / price dump / death
Young tokens have high risks of scam / price dump / death
Young tokens have high risks of scam / price dump / death
Token has no active CoinGecko listing / rank
Alexa traffic rank is relatively low
Additional information: link
Young tokens have high risks of price dump / death
Token has relatively low CoinMarketCap rank
Unable to find Blog account (Reddit or Medium)
Unable to find Youtube account
Unable to find Discord account