CATGIRL¢ is an NFT focused, community driven crypto currency, with real world use.
CatGirlCoin.addLiquidity(uint256,uint256) (#1164-1176) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
CatGirlCoin._takeDev(uint256) (#990-1002) sends eth to arbitrary user
Dangerous calls:
- _devWallet.transfer(address(this).balance) (#996)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in CatGirlCoin._transferToExcluded(address,address,uint256) (#1207-1217):
External calls:
- _takeDev(tDev) (#1214)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
External calls sending eth:
- _takeDev(tDev) (#1214)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- _reflectFee(rFee,tFee) (#1215)
- _rTotal = _rTotal.sub(rFee) (#905)
Reentrancy in CatGirlCoin._tokenTransfer(address,address,uint256,bool) (#1178-1196):
External calls:
- _transferFromExcluded(sender,recipient,amount) (#1183)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
- _transferToExcluded(sender,recipient,amount) (#1185)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
- _transferStandard(sender,recipient,amount) (#1187)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
- _transferBothExcluded(sender,recipient,amount) (#1189)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
- _transferStandard(sender,recipient,amount) (#1191)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
External calls sending eth:
- _transferFromExcluded(sender,recipient,amount) (#1183)
- _devWallet.transfer(address(this).balance) (#996)
- _transferToExcluded(sender,recipient,amount) (#1185)
- _devWallet.transfer(address(this).balance) (#996)
- _transferStandard(sender,recipient,amount) (#1187)
- _devWallet.transfer(address(this).balance) (#996)
- _transferBothExcluded(sender,recipient,amount) (#1189)
- _devWallet.transfer(address(this).balance) (#996)
- _transferStandard(sender,recipient,amount) (#1191)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- restoreAllFee() (#1195)
- _devFee = _previousDevFee (#1053)
- restoreAllFee() (#1195)
- _liquidityFee = _previousLiquidityFee (#1054)
- restoreAllFee() (#1195)
- _lottoFee = _previousLottoFee (#1052)
- restoreAllFee() (#1195)
- _taxFee = _previousTaxFee (#1051)
Reentrancy in CatGirlCoin._transfer(address,address,uint256) (#1067-1130):
External calls:
- swapAndLiquify(contractTokenBalance) (#1105)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
- drawLotto(lottoBalance) (#1114)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1105)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- drawLotto(lottoBalance) (#1114)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- _devWallet.transfer(address(this).balance) (#996)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _devFee = _previousDevFee (#1053)
- _devFee = 0 (#1046)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _liquidityFee = _previousLiquidityFee (#1054)
- _liquidityFee = 0 (#1047)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _lottoFee = _previousLottoFee (#1052)
- _lottoFee = 0 (#1045)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _previousDevFee = _devFee (#1041)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _previousLiquidityFee = _liquidityFee (#1042)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _previousLottoFee = _lottoFee (#1040)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _previousTaxFee = _taxFee (#1039)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#1007)
- _rOwned[_lottoPotAddress] = _rOwned[_lottoPotAddress].add(rLotto) (#976)
- _rOwned[_devWallet] = _rOwned[_devWallet].add(rDev) (#998)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1209)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1199)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#828)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1200)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1221)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1222)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1211)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#830)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _rTotal = _rTotal.sub(rFee) (#905)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _tFeeTotal = _tFeeTotal.add(tFee) (#906)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#1009)
- _tOwned[_lottoPotAddress] = _tOwned[_lottoPotAddress].add(tLotto) (#978)
- _tOwned[_devWallet] = _tOwned[_devWallet].add(tDev) (#1000)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1220)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#827)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1210)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#829)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _taxFee = _previousTaxFee (#1051)
- _taxFee = 0 (#1044)
Reentrancy in CatGirlCoin.drawLotto(uint256) (#981-988):
External calls:
- _transfer(_lottoPotAddress,_lottoWalletAddress,amount) (#983)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
External calls sending eth:
- _transfer(_lottoPotAddress,_lottoWalletAddress,amount) (#983)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- ++ _lottoDrawCount (#986)
- _totalLottoPrize = _totalLottoPrize.add(amount) (#985)
Reentrancy in CatGirlCoin._transferFromExcluded(address,address,uint256) (#1218-1228):
External calls:
- _takeDev(tDev) (#1225)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
External calls sending eth:
- _takeDev(tDev) (#1225)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- _reflectFee(rFee,tFee) (#1226)
- _rTotal = _rTotal.sub(rFee) (#905)
Reentrancy in CatGirlCoin._transfer(address,address,uint256) (#1067-1130):
External calls:
- swapAndLiquify(contractTokenBalance) (#1105)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
- drawLotto(lottoBalance) (#1114)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1105)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- drawLotto(lottoBalance) (#1114)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- addAddress(from) (#1125)
- _AddressExists[adr] = true (#953)
- addAddress(to) (#1126)
- _AddressExists[adr] = true (#953)
- addAddress(from) (#1125)
- _addressList.push(adr) (#954)
- addAddress(to) (#1126)
- _addressList.push(adr) (#954)
- drawLotto(lottoBalance) (#1114)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#1007)
- _rOwned[_lottoPotAddress] = _rOwned[_lottoPotAddress].add(rLotto) (#976)
- _rOwned[_devWallet] = _rOwned[_devWallet].add(rDev) (#998)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1209)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1199)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#828)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1221)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1200)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1222)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1211)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#830)
- drawLotto(lottoBalance) (#1114)
- _rTotal = _rTotal.sub(rFee) (#905)
- drawLotto(lottoBalance) (#1114)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#1009)
- _tOwned[_lottoPotAddress] = _tOwned[_lottoPotAddress].add(tLotto) (#978)
- _tOwned[_devWallet] = _tOwned[_devWallet].add(tDev) (#1000)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1220)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#827)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1210)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#829)
- drawLotto(lottoBalance) (#1114)
- inSwapAndLiquify = true (#690)
- inSwapAndLiquify = false (#692)
Reentrancy in CatGirlCoin._transferStandard(address,address,uint256) (#1197-1206):
External calls:
- _takeDev(tDev) (#1203)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
External calls sending eth:
- _takeDev(tDev) (#1203)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- _reflectFee(rFee,tFee) (#1204)
- _rTotal = _rTotal.sub(rFee) (#905)
Reentrancy in CatGirlCoin._transferBothExcluded(address,address,uint256) (#825-836):
External calls:
- _takeDev(tDev) (#833)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
External calls sending eth:
- _takeDev(tDev) (#833)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- _reflectFee(rFee,tFee) (#834)
- _rTotal = _rTotal.sub(rFee) (#905)
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.
Contract ownership is not renounced (belongs to a wallet)
Ownable.unlock() (#417-422) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp > _lockTime,Contract is locked until 7 days) (#419)
Avoid relying on block.timestamp.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#326-345) uses assembly
- INLINE ASM (#337-340)
Address.isContract(address) (#240-249) uses assembly
- INLINE ASM (#247)
Do not use evm assembly.
Additional information: link
Variable CatGirlCoin._transferBothExcluded(address,address,uint256).rTransferAmount (#826) is too similar to CatGirlCoin._transferFromExcluded(address,address,uint256).tTransferAmount (#1219)
Variable CatGirlCoin._transferToExcluded(address,address,uint256).rTransferAmount (#1208) is too similar to CatGirlCoin._getTValues(uint256).tTransferAmount (#922)
Variable CatGirlCoin._transferToExcluded(address,address,uint256).rTransferAmount (#1208) is too similar to CatGirlCoin._transferToExcluded(address,address,uint256).tTransferAmount (#1208)
Variable CatGirlCoin._getRValues(CatGirlCoin.TData).rTransferAmount (#931) is too similar to CatGirlCoin._transferToExcluded(address,address,uint256).tTransferAmount (#1208)
Variable CatGirlCoin._getRValues(CatGirlCoin.TData).rTransferAmount (#931) is too similar to CatGirlCoin._getTValues(uint256).tTransferAmount (#922)
Variable CatGirlCoin._getValues(uint256).rTransferAmount (#912) is too similar to CatGirlCoin._transferBothExcluded(address,address,uint256).tTransferAmount (#826)
Variable CatGirlCoin._transferStandard(address,address,uint256).rTransferAmount (#1198) is too similar to CatGirlCoin._transferStandard(address,address,uint256).tTransferAmount (#1198)
Variable CatGirlCoin._transferStandard(address,address,uint256).rTransferAmount (#1198) is too similar to CatGirlCoin._getValues(uint256).tTransferAmount (#909)
Variable CatGirlCoin._transferStandard(address,address,uint256).rTransferAmount (#1198) is too similar to CatGirlCoin._transferToExcluded(address,address,uint256).tTransferAmount (#1208)
Variable CatGirlCoin.reflectionFromToken(uint256,bool).rTransferAmount (#794) is too similar to CatGirlCoin._transferBothExcluded(address,address,uint256).tTransferAmount (#826)
Variable CatGirlCoin._transferBothExcluded(address,address,uint256).rTransferAmount (#826) is too similar to CatGirlCoin._transferStandard(address,address,uint256).tTransferAmount (#1198)
Variable CatGirlCoin._transferStandard(address,address,uint256).rTransferAmount (#1198) is too similar to CatGirlCoin._transferBothExcluded(address,address,uint256).tTransferAmount (#826)
Variable CatGirlCoin._transferFromExcluded(address,address,uint256).rTransferAmount (#1219) is too similar to CatGirlCoin._getValues(uint256).tTransferAmount (#909)
Variable CatGirlCoin._getValues(uint256).rTransferAmount (#912) is too similar to CatGirlCoin._transferFromExcluded(address,address,uint256).tTransferAmount (#1219)
Variable CatGirlCoin._transferFromExcluded(address,address,uint256).rTransferAmount (#1219) is too similar to CatGirlCoin._transferStandard(address,address,uint256).tTransferAmount (#1198)
Variable CatGirlCoin.reflectionFromToken(uint256,bool).rTransferAmount (#794) is too similar to CatGirlCoin._transferStandard(address,address,uint256).tTransferAmount (#1198)
Variable CatGirlCoin._transferFromExcluded(address,address,uint256).rTransferAmount (#1219) is too similar to CatGirlCoin._transferToExcluded(address,address,uint256).tTransferAmount (#1208)
Variable CatGirlCoin._transferToExcluded(address,address,uint256).rTransferAmount (#1208) is too similar to CatGirlCoin._transferFromExcluded(address,address,uint256).tTransferAmount (#1219)
Variable CatGirlCoin.reflectionFromToken(uint256,bool).rTransferAmount (#794) is too similar to CatGirlCoin._transferToExcluded(address,address,uint256).tTransferAmount (#1208)
Variable CatGirlCoin._transferFromExcluded(address,address,uint256).rTransferAmount (#1219) is too similar to CatGirlCoin._transferBothExcluded(address,address,uint256).tTransferAmount (#826)
Variable CatGirlCoin._transferBothExcluded(address,address,uint256).rTransferAmount (#826) is too similar to CatGirlCoin._transferToExcluded(address,address,uint256).tTransferAmount (#1208)
Variable CatGirlCoin._getRValues(CatGirlCoin.TData).rTransferAmount (#931) is too similar to CatGirlCoin._transferFromExcluded(address,address,uint256).tTransferAmount (#1219)
Variable CatGirlCoin._getRValues(CatGirlCoin.TData).rTransferAmount (#931) is too similar to CatGirlCoin._transferStandard(address,address,uint256).tTransferAmount (#1198)
Variable CatGirlCoin._getValues(uint256).rTransferAmount (#912) is too similar to CatGirlCoin._getTValues(uint256).tTransferAmount (#922)
Variable CatGirlCoin.reflectionFromToken(uint256,bool).rTransferAmount (#794) is too similar to CatGirlCoin._transferFromExcluded(address,address,uint256).tTransferAmount (#1219)
Variable CatGirlCoin.reflectionFromToken(uint256,bool).rTransferAmount (#794) is too similar to CatGirlCoin._getTValues(uint256).tTransferAmount (#922)
Variable CatGirlCoin._getValues(uint256).rTransferAmount (#912) is too similar to CatGirlCoin._transferStandard(address,address,uint256).tTransferAmount (#1198)
Variable CatGirlCoin._transferFromExcluded(address,address,uint256).rTransferAmount (#1219) is too similar to CatGirlCoin._transferFromExcluded(address,address,uint256).tTransferAmount (#1219)
Variable CatGirlCoin.reflectionFromToken(uint256,bool).rTransferAmount (#794) is too similar to CatGirlCoin._getValues(uint256).tTransferAmount (#909)
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#486) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#487)
Variable CatGirlCoin._transferBothExcluded(address,address,uint256).rTransferAmount (#826) is too similar to CatGirlCoin._getValues(uint256).tTransferAmount (#909)
Variable CatGirlCoin._getValues(uint256).rTransferAmount (#912) is too similar to CatGirlCoin._getValues(uint256).tTransferAmount (#909)
Variable CatGirlCoin._transferBothExcluded(address,address,uint256).rTransferAmount (#826) is too similar to CatGirlCoin._getTValues(uint256).tTransferAmount (#922)
Variable CatGirlCoin._getRValues(CatGirlCoin.TData).rTransferAmount (#931) is too similar to CatGirlCoin._transferBothExcluded(address,address,uint256).tTransferAmount (#826)
Variable CatGirlCoin._transferStandard(address,address,uint256).rTransferAmount (#1198) is too similar to CatGirlCoin._getTValues(uint256).tTransferAmount (#922)
Variable CatGirlCoin._transferFromExcluded(address,address,uint256).rTransferAmount (#1219) is too similar to CatGirlCoin._getTValues(uint256).tTransferAmount (#922)
Variable CatGirlCoin._getRValues(CatGirlCoin.TData).rTransferAmount (#931) is too similar to CatGirlCoin._getValues(uint256).tTransferAmount (#909)
Variable CatGirlCoin._getValues(uint256).rTransferAmount (#912) is too similar to CatGirlCoin._transferToExcluded(address,address,uint256).tTransferAmount (#1208)
Variable CatGirlCoin._transferToExcluded(address,address,uint256).rTransferAmount (#1208) is too similar to CatGirlCoin._getValues(uint256).tTransferAmount (#909)
Variable CatGirlCoin._transferToExcluded(address,address,uint256).rTransferAmount (#1208) is too similar to CatGirlCoin._transferStandard(address,address,uint256).tTransferAmount (#1198)
Variable CatGirlCoin._transferBothExcluded(address,address,uint256).rTransferAmount (#826) is too similar to CatGirlCoin._transferBothExcluded(address,address,uint256).tTransferAmount (#826)
Variable CatGirlCoin._transferToExcluded(address,address,uint256).rTransferAmount (#1208) is too similar to CatGirlCoin._transferBothExcluded(address,address,uint256).tTransferAmount (#826)
Variable CatGirlCoin._transferStandard(address,address,uint256).rTransferAmount (#1198) is too similar to CatGirlCoin._transferFromExcluded(address,address,uint256).tTransferAmount (#1219)
Prevent variables from having similar names.
Additional information: link
CatGirlCoin.slitherConstructorVariables() (#611-1231) uses literals with too many digits:
- _minLottoBalance = 1000000000 * 10 ** 9 (#631)
CatGirlCoin.slitherConstructorVariables() (#611-1231) uses literals with too many digits:
- _maxTxAmount = 100000 * 10 ** 12 * 10 ** 9 (#664)
CatGirlCoin.slitherConstructorVariables() (#611-1231) uses literals with too many digits:
- _tTotal = 100000 * 10 ** 12 * 10 ** 9 (#635)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Redundant expression "this (#215)" inContext (#210-218)
Remove redundant statements if they congest code but offer no value.
Additional information: link
CatGirlCoin.addLiquidity(uint256,uint256) (#1164-1176) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
Ensure that all the return values of the function calls are used.
Additional information: link
CatGirlCoin._approve(address,address,uint256).owner (#1061) shadows:
- Ownable.owner() (#375-377) (function)
CatGirlCoin.allowance(address,address).owner (#751) shadows:
- Ownable.owner() (#375-377) (function)
Rename the local variables that shadow another component.
Additional information: link
CatGirlCoin.setUniswapPair(address).p (#843) lacks a zero-check on :
- uniswapV2Pair = p (#844)
CatGirlCoin.setDevAddress(address).dev (#872) lacks a zero-check on :
- _devWallet = dev (#873)
Check that the address is not zero.
Additional information: link
Variable CatGirlCoin._lottoFee (#649) is not in mixedCase
Variable CatGirlCoin._taxFee (#643) is not in mixedCase
Variable CatGirlCoin._lottoDrawCount (#629) is not in mixedCase
Variable CatGirlCoin._AddressExists (#620) is not in mixedCase
Variable CatGirlCoin._antiWhaleThreshold (#669) is not in mixedCase
Variable CatGirlCoin._liquidityFee (#646) is not in mixedCase
Parameter CatGirlCoin.calculateTaxFee(uint256)._amount (#1025) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#450) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#464) is not in mixedCase
Variable CatGirlCoin._isAntiWhaleEnabled (#668) is not in mixedCase
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#449) is not in mixedCase
Parameter CatGirlCoin.calculateDevFee(uint256)._amount (#1019) is not in mixedCase
Parameter CatGirlCoin.calculateLottoFee(uint256)._amount (#1013) is not in mixedCase
Variable CatGirlCoin._shouldSwapToBNB (#662) is not in mixedCase
Variable CatGirlCoin._devFee (#652) is not in mixedCase
Parameter CatGirlCoin.calculateLiquidityFee(uint256)._amount (#1030) is not in mixedCase
Variable CatGirlCoin._totalLottoPrize (#628) is not in mixedCase
Variable CatGirlCoin._isExcludedFromAntiWhale (#619) is not in mixedCase
Function IUniswapV2Router01.WETH() (#482) is not in mixedCase
Variable CatGirlCoin._lastLottoWinnerAmount (#627) is not in mixedCase
Parameter CatGirlCoin.setSwapAndLiquifyEnabled(bool)._enabled (#889) is not in mixedCase
Variable CatGirlCoin._maxTxAmount (#664) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
CatGirlCoin._tTotal (#635) should be constant
CatGirlCoin._decimals (#641) should be constant
CatGirlCoin._name (#639) should be constant
CatGirlCoin.numTokensSellToAddToLiquidity (#665) should be constant
CatGirlCoin._symbol (#640) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
setLotteryThresHold(uint256) should be declared external:
- CatGirlCoin.setLotteryThresHold(uint256) (#878-880)
approve(address,uint256) should be declared external:
- CatGirlCoin.approve(address,uint256) (#754-757)
includeInFee(address) should be declared external:
- CatGirlCoin.includeInFee(address) (#850-852)
setshouldSwapToBNB(bool) should be declared external:
- CatGirlCoin.setshouldSwapToBNB(bool) (#866-868)
setDevAddress(address) should be declared external:
- CatGirlCoin.setDevAddress(address) (#872-874)
isExcludedFromReward(address) should be declared external:
- CatGirlCoin.isExcludedFromReward(address) (#771-773)
reflectionFromToken(uint256,bool) should be declared external:
- CatGirlCoin.reflectionFromToken(uint256,bool) (#788-797)
totalFees() should be declared external:
- CatGirlCoin.totalFees() (#777-779)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#392-395)
transferFrom(address,address,uint256) should be declared external:
- CatGirlCoin.transferFrom(address,address,uint256) (#758-762)
currentLottoPool() should be declared external:
- CatGirlCoin.currentLottoPool() (#740-742)
name() should be declared external:
- CatGirlCoin.name() (#725-727)
setLottoEnabled(bool) should be declared external:
- CatGirlCoin.setLottoEnabled(bool) (#869-871)
minLottoBalance() should be declared external:
- CatGirlCoin.minLottoBalance() (#737-739)
isExcludedFromFee(address) should be declared external:
- CatGirlCoin.isExcludedFromFee(address) (#1057-1059)
setSwapAndLiquifyEnabled(bool) should be declared external:
- CatGirlCoin.setSwapAndLiquifyEnabled(bool) (#889-892)
excludeFromReward(address) should be declared external:
- CatGirlCoin.excludeFromReward(address) (#803-811)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#400-404)
allowance(address,address) should be declared external:
- CatGirlCoin.allowance(address,address) (#751-753)
geUnlockTime() should be declared external:
- Ownable.geUnlockTime() (#405-407)
totalSupply() should be declared external:
- CatGirlCoin.totalSupply() (#734-736)
decreaseAllowance(address,uint256) should be declared external:
- CatGirlCoin.decreaseAllowance(address,uint256) (#767-770)
excludeFromFee(address) should be declared external:
- CatGirlCoin.excludeFromFee(address) (#846-848)
transfer(address,uint256) should be declared external:
- CatGirlCoin.transfer(address,uint256) (#747-750)
unlock() should be declared external:
- Ownable.unlock() (#417-422)
symbol() should be declared external:
- CatGirlCoin.symbol() (#728-730)
isIncludeFromLotto(address) should be declared external:
- CatGirlCoin.isIncludeFromLotto(address) (#774-776)
setMinLottoBalance(uint256) should be declared external:
- CatGirlCoin.setMinLottoBalance(uint256) (#875-877)
decimals() should be declared external:
- CatGirlCoin.decimals() (#731-733)
lock(uint256) should be declared external:
- Ownable.lock(uint256) (#409-414)
increaseAllowance(address,uint256) should be declared external:
- CatGirlCoin.increaseAllowance(address,uint256) (#763-766)
deliver(uint256) should be declared external:
- CatGirlCoin.deliver(uint256) (#780-787)
Use the external attribute for functions never called from the contract.
Additional information: link
CatGirlCoin.includeInReward(address) (#812-823) has costly operations inside a loop:
- _excluded.pop() (#819)
Use a local variable to hold the loop computation result.
Additional information: link
CatGirlCoin._previousLiquidityFee (#647) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
CatGirlCoin._rTotal (#636) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
CatGirlCoin._previousDevFee (#653) is set pre-construction with a non-constant function or state variable:
- _devFee
CatGirlCoin._previousTaxFee (#644) is set pre-construction with a non-constant function or state variable:
- _taxFee
CatGirlCoin._previousLottoFee (#650) is set pre-construction with a non-constant function or state variable:
- _lottoFee
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._functionCallWithValue(address,bytes,uint256,string) (#326-345):
- (success,returndata) = target.call{value: weiValue}(data) (#329)
Low level call in Address.sendValue(address,uint256) (#266-271):
- (success) = recipient.call{value: amount}() (#269)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
CatGirlCoin.setDevFeePercent(uint256) (#862-864) should emit an event for:
- _devFee = devFee (#863)
CatGirlCoin.setAntiWhaleThreshold(uint256) (#896-898) should emit an event for:
- _antiWhaleThreshold = amount (#897)
CatGirlCoin.setLottoFeePercent(uint256) (#858-860) should emit an event for:
- _lottoFee = lottoFee (#859)
CatGirlCoin.setLotteryThresHold(uint256) (#878-880) should emit an event for:
- lotteryThreshold = threshold (#879)
CatGirlCoin.setMaxTxPercent(uint256) (#884-888) should emit an event for:
- _maxTxAmount = _tTotal.mul(maxTxPercent).div(10 ** 2) (#885-887)
CatGirlCoin.setTaxFeePercent(uint256) (#854-856) should emit an event for:
- _taxFee = taxFee (#855)
CatGirlCoin.setLiquidityFeePercent(uint256) (#881-883) should emit an event for:
- _liquidityFee = liquidityFee (#882)
CatGirlCoin.setMinLottoBalance(uint256) (#875-877) should emit an event for:
- _minLottoBalance = minBalance (#876)
Emit an event for critical parameter changes.
Additional information: link
Reentrancy in CatGirlCoin.transferFrom(address,address,uint256) (#758-762):
External calls:
- _transfer(sender,recipient,amount) (#759)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
External calls sending eth:
- _transfer(sender,recipient,amount) (#759)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- _devWallet.transfer(address(this).balance) (#996)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1065)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,BEP20: transfer amount exceeds allowance)) (#760)
Reentrancy in CatGirlCoin._transferBothExcluded(address,address,uint256) (#825-836):
External calls:
- _takeDev(tDev) (#833)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
External calls sending eth:
- _takeDev(tDev) (#833)
- _devWallet.transfer(address(this).balance) (#996)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#835)
Reentrancy in CatGirlCoin._transferFromExcluded(address,address,uint256) (#1218-1228):
External calls:
- _takeDev(tDev) (#1225)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
External calls sending eth:
- _takeDev(tDev) (#1225)
- _devWallet.transfer(address(this).balance) (#996)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#1227)
Reentrancy in CatGirlCoin._transfer(address,address,uint256) (#1067-1130):
External calls:
- swapAndLiquify(contractTokenBalance) (#1105)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
- drawLotto(lottoBalance) (#1114)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1105)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- drawLotto(lottoBalance) (#1114)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- _devWallet.transfer(address(this).balance) (#996)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _devWallet.transfer(address(this).balance) (#996)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1065)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- Transfer(sender,recipient,tTransferAmount) (#1205)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- Transfer(sender,recipient,tTransferAmount) (#1227)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- Transfer(sender,recipient,tTransferAmount) (#1216)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- Transfer(sender,recipient,tTransferAmount) (#835)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
Reentrancy in CatGirlCoin.drawLotto(uint256) (#981-988):
External calls:
- _transfer(_lottoPotAddress,_lottoWalletAddress,amount) (#983)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
External calls sending eth:
- _transfer(_lottoPotAddress,_lottoWalletAddress,amount) (#983)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- _devWallet.transfer(address(this).balance) (#996)
Event emitted after the call(s):
- DrawLotto(amount,_lottoDrawCount) (#987)
Reentrancy in CatGirlCoin._transferToExcluded(address,address,uint256) (#1207-1217):
External calls:
- _takeDev(tDev) (#1214)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
External calls sending eth:
- _takeDev(tDev) (#1214)
- _devWallet.transfer(address(this).balance) (#996)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#1216)
Reentrancy in CatGirlCoin.swapAndLiquify(uint256) (#1131-1148):
External calls:
- swapTokensForEth(half) (#1141)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
- addLiquidity(otherHalf,newBalance) (#1145)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1145)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1065)
- addLiquidity(otherHalf,newBalance) (#1145)
- SwapAndLiquify(half,newBalance,otherHalf) (#1147)
Reentrancy in CatGirlCoin._transferStandard(address,address,uint256) (#1197-1206):
External calls:
- _takeDev(tDev) (#1203)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
External calls sending eth:
- _takeDev(tDev) (#1203)
- _devWallet.transfer(address(this).balance) (#996)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#1205)
Reentrancy in CatGirlCoin._transfer(address,address,uint256) (#1067-1130):
External calls:
- swapAndLiquify(contractTokenBalance) (#1105)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
- drawLotto(lottoBalance) (#1114)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1105)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- drawLotto(lottoBalance) (#1114)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- _devWallet.transfer(address(this).balance) (#996)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1065)
- drawLotto(lottoBalance) (#1114)
- DrawLotto(amount,_lottoDrawCount) (#987)
- drawLotto(lottoBalance) (#1114)
- SwapAndLiquify(half,newBalance,otherHalf) (#1147)
- drawLotto(lottoBalance) (#1114)
- Transfer(sender,recipient,tTransferAmount) (#1205)
- drawLotto(lottoBalance) (#1114)
- Transfer(sender,recipient,tTransferAmount) (#1216)
- drawLotto(lottoBalance) (#1114)
- Transfer(sender,recipient,tTransferAmount) (#1227)
- drawLotto(lottoBalance) (#1114)
- Transfer(sender,recipient,tTransferAmount) (#835)
- drawLotto(lottoBalance) (#1114)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in CatGirlCoin._transferBothExcluded(address,address,uint256) (#825-836):
External calls:
- _takeDev(tDev) (#833)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
External calls sending eth:
- _takeDev(tDev) (#833)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- _reflectFee(rFee,tFee) (#834)
- _tFeeTotal = _tFeeTotal.add(tFee) (#906)
Reentrancy in CatGirlCoin._transfer(address,address,uint256) (#1067-1130):
External calls:
- swapAndLiquify(contractTokenBalance) (#1105)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
- drawLotto(lottoBalance) (#1114)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1105)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- drawLotto(lottoBalance) (#1114)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- drawLotto(lottoBalance) (#1114)
- _allowances[owner][spender] = amount (#1064)
- drawLotto(lottoBalance) (#1114)
- _lastLottoWinnerAmount = amount (#984)
Reentrancy in CatGirlCoin.drawLotto(uint256) (#981-988):
External calls:
- _transfer(_lottoPotAddress,_lottoWalletAddress,amount) (#983)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
External calls sending eth:
- _transfer(_lottoPotAddress,_lottoWalletAddress,amount) (#983)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- _lastLottoWinnerAmount = amount (#984)
Reentrancy in CatGirlCoin.swapAndLiquify(uint256) (#1131-1148):
External calls:
- swapTokensForEth(half) (#1141)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
- addLiquidity(otherHalf,newBalance) (#1145)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1145)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
State variables written after the call(s):
- addLiquidity(otherHalf,newBalance) (#1145)
- _allowances[owner][spender] = amount (#1064)
Reentrancy in CatGirlCoin._transferToExcluded(address,address,uint256) (#1207-1217):
External calls:
- _takeDev(tDev) (#1214)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
External calls sending eth:
- _takeDev(tDev) (#1214)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- _reflectFee(rFee,tFee) (#1215)
- _tFeeTotal = _tFeeTotal.add(tFee) (#906)
Reentrancy in CatGirlCoin._transfer(address,address,uint256) (#1067-1130):
External calls:
- swapAndLiquify(contractTokenBalance) (#1105)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
- drawLotto(lottoBalance) (#1114)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1105)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- drawLotto(lottoBalance) (#1114)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- _devWallet.transfer(address(this).balance) (#996)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _allowances[owner][spender] = amount (#1064)
Reentrancy in CatGirlCoin.transferFrom(address,address,uint256) (#758-762):
External calls:
- _transfer(sender,recipient,amount) (#759)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
External calls sending eth:
- _transfer(sender,recipient,amount) (#759)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,BEP20: transfer amount exceeds allowance)) (#760)
- _allowances[owner][spender] = amount (#1064)
Reentrancy in CatGirlCoin._transferFromExcluded(address,address,uint256) (#1218-1228):
External calls:
- _takeDev(tDev) (#1225)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
External calls sending eth:
- _takeDev(tDev) (#1225)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- _reflectFee(rFee,tFee) (#1226)
- _tFeeTotal = _tFeeTotal.add(tFee) (#906)
Reentrancy in CatGirlCoin._transferStandard(address,address,uint256) (#1197-1206):
External calls:
- _takeDev(tDev) (#1203)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1156-1162)
External calls sending eth:
- _takeDev(tDev) (#1203)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- _reflectFee(rFee,tFee) (#1204)
- _tFeeTotal = _tFeeTotal.add(tFee) (#906)
Apply the check-effects-interactions pattern.
Additional information: link
Address.sendValue(address,uint256) (#266-271) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#313-315) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#322-325) is never used and should be removed
Context._msgData() (#214-217) is never used and should be removed
Address._functionCallWithValue(address,bytes,uint256,string) (#326-345) is never used and should be removed
Address.isContract(address) (#240-249) is never used and should be removed
Address.functionCall(address,bytes,string) (#299-301) is never used and should be removed
Address.functionCall(address,bytes) (#290-292) is never used and should be removed
Remove unused functions.
Additional information: link
Reentrancy in CatGirlCoin._transfer(address,address,uint256) (#1067-1130):
External calls:
- drawLotto(lottoBalance) (#1114)
- _devWallet.transfer(address(this).balance) (#996)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _devWallet.transfer(address(this).balance) (#996)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1105)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- drawLotto(lottoBalance) (#1114)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- _devWallet.transfer(address(this).balance) (#996)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _allowances[owner][spender] = amount (#1064)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _devFee = _previousDevFee (#1053)
- _devFee = 0 (#1046)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _liquidityFee = _previousLiquidityFee (#1054)
- _liquidityFee = 0 (#1047)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _lottoFee = _previousLottoFee (#1052)
- _lottoFee = 0 (#1045)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _previousDevFee = _devFee (#1041)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _previousLiquidityFee = _liquidityFee (#1042)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _previousLottoFee = _lottoFee (#1040)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _previousTaxFee = _taxFee (#1039)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#1007)
- _rOwned[_lottoPotAddress] = _rOwned[_lottoPotAddress].add(rLotto) (#976)
- _rOwned[_devWallet] = _rOwned[_devWallet].add(rDev) (#998)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1209)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1199)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#828)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1200)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1221)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1222)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1211)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#830)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _rTotal = _rTotal.sub(rFee) (#905)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _tFeeTotal = _tFeeTotal.add(tFee) (#906)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#1009)
- _tOwned[_lottoPotAddress] = _tOwned[_lottoPotAddress].add(tLotto) (#978)
- _tOwned[_devWallet] = _tOwned[_devWallet].add(tDev) (#1000)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1220)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#827)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1210)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#829)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- _taxFee = _previousTaxFee (#1051)
- _taxFee = 0 (#1044)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1065)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- Transfer(sender,recipient,tTransferAmount) (#1205)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- Transfer(sender,recipient,tTransferAmount) (#1216)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- Transfer(sender,recipient,tTransferAmount) (#1227)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
- Transfer(sender,recipient,tTransferAmount) (#835)
- _tokenTransfer(from,to,amount,takeFee) (#1129)
Reentrancy in CatGirlCoin._transfer(address,address,uint256) (#1067-1130):
External calls:
- drawLotto(lottoBalance) (#1114)
- _devWallet.transfer(address(this).balance) (#996)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1105)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- drawLotto(lottoBalance) (#1114)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- addAddress(from) (#1125)
- _AddressExists[adr] = true (#953)
- addAddress(to) (#1126)
- _AddressExists[adr] = true (#953)
- addAddress(from) (#1125)
- _addressList.push(adr) (#954)
- addAddress(to) (#1126)
- _addressList.push(adr) (#954)
Reentrancy in CatGirlCoin.drawLotto(uint256) (#981-988):
External calls:
- _transfer(_lottoPotAddress,_lottoWalletAddress,amount) (#983)
- _devWallet.transfer(address(this).balance) (#996)
External calls sending eth:
- _transfer(_lottoPotAddress,_lottoWalletAddress,amount) (#983)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- _lastLottoWinnerAmount = amount (#984)
- ++ _lottoDrawCount (#986)
- _totalLottoPrize = _totalLottoPrize.add(amount) (#985)
Event emitted after the call(s):
- DrawLotto(amount,_lottoDrawCount) (#987)
Reentrancy in CatGirlCoin._transferBothExcluded(address,address,uint256) (#825-836):
External calls:
- _takeDev(tDev) (#833)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- _reflectFee(rFee,tFee) (#834)
- _rTotal = _rTotal.sub(rFee) (#905)
- _reflectFee(rFee,tFee) (#834)
- _tFeeTotal = _tFeeTotal.add(tFee) (#906)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#835)
Reentrancy in CatGirlCoin.transferFrom(address,address,uint256) (#758-762):
External calls:
- _transfer(sender,recipient,amount) (#759)
- _devWallet.transfer(address(this).balance) (#996)
External calls sending eth:
- _transfer(sender,recipient,amount) (#759)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1168-1175)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,BEP20: transfer amount exceeds allowance)) (#760)
- _allowances[owner][spender] = amount (#1064)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1065)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,BEP20: transfer amount exceeds allowance)) (#760)
Reentrancy in CatGirlCoin._transferFromExcluded(address,address,uint256) (#1218-1228):
External calls:
- _takeDev(tDev) (#1225)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- _reflectFee(rFee,tFee) (#1226)
- _rTotal = _rTotal.sub(rFee) (#905)
- _reflectFee(rFee,tFee) (#1226)
- _tFeeTotal = _tFeeTotal.add(tFee) (#906)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#1227)
Reentrancy in CatGirlCoin._tokenTransfer(address,address,uint256,bool) (#1178-1196):
External calls:
- _transferFromExcluded(sender,recipient,amount) (#1183)
- _devWallet.transfer(address(this).balance) (#996)
- _transferToExcluded(sender,recipient,amount) (#1185)
- _devWallet.transfer(address(this).balance) (#996)
- _transferStandard(sender,recipient,amount) (#1187)
- _devWallet.transfer(address(this).balance) (#996)
- _transferBothExcluded(sender,recipient,amount) (#1189)
- _devWallet.transfer(address(this).balance) (#996)
- _transferStandard(sender,recipient,amount) (#1191)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- restoreAllFee() (#1195)
- _devFee = _previousDevFee (#1053)
- restoreAllFee() (#1195)
- _liquidityFee = _previousLiquidityFee (#1054)
- restoreAllFee() (#1195)
- _lottoFee = _previousLottoFee (#1052)
- restoreAllFee() (#1195)
- _taxFee = _previousTaxFee (#1051)
Reentrancy in CatGirlCoin._transferStandard(address,address,uint256) (#1197-1206):
External calls:
- _takeDev(tDev) (#1203)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- _reflectFee(rFee,tFee) (#1204)
- _rTotal = _rTotal.sub(rFee) (#905)
- _reflectFee(rFee,tFee) (#1204)
- _tFeeTotal = _tFeeTotal.add(tFee) (#906)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#1205)
Reentrancy in CatGirlCoin._transferToExcluded(address,address,uint256) (#1207-1217):
External calls:
- _takeDev(tDev) (#1214)
- _devWallet.transfer(address(this).balance) (#996)
State variables written after the call(s):
- _reflectFee(rFee,tFee) (#1215)
- _rTotal = _rTotal.sub(rFee) (#905)
- _reflectFee(rFee,tFee) (#1215)
- _tFeeTotal = _tFeeTotal.add(tFee) (#906)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#1216)
Apply the check-effects-interactions pattern.
Additional information: link
Unable to find whitepaper link on the website
Token has no active CoinGecko listing / rank
Twitter account link seems to be invalid
Unable to find Youtube account