CatCoin - ✔ World's Best Community Driven Coin ✔ Verified contract source
✔ Ownership renounced or source does not contain an owner contract
✔ Creator not authorized for special permission
✔ Tokens locked (1.19%)
✔ Creator wallet contains less than 5% of token supply (< 0.01%)
✔ All other holders possess less than 5% of the token supply
Catcoin.swapAndLiquify(uint256) (#767-813) sends eth to arbitrary user
Dangerous calls:
- address(withdrawcontract).transfer(marketingAmt) (#801)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in Catcoin._transfer(address,address,uint256) (#738-765):
External calls:
- swapAndLiquify(contractTokenBalance) (#757)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,withdrawcontract,block.timestamp) (#833-840)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#822-828)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#757)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,withdrawcontract,block.timestamp) (#833-840)
- address(withdrawcontract).transfer(marketingAmt) (#801)
- address(_devwallet).transfer(devAmt) (#805)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#764)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#662)
- _rOwned[address(this)] = _rOwned[address(this)].add(rWallet) (#670)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#882)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#906)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#931)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#955)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#883)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#908)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#932)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#957)
- _tokenTransfer(from,to,amount,takeFee) (#764)
- _rTotal = _rTotal.sub(rFee) (#592)
- _tokenTransfer(from,to,amount,takeFee) (#764)
- _tOwned[address(this)] = _tOwned[address(this)].add(tWallet) (#672)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#664)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#954)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#930)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#907)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#956)
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.
Catcoin.swapAndLiquify(uint256) (#767-813) performs a multiplication on the result of a division:
-unitBalance = deltaBalance / (denominator - (buyFee.liquidity + sellFee.liquidity)) (#784-785)
-unitBalance * 2 * (buyFee.dev + sellFee.dev) > address(this).balance (#795-798)
Catcoin.swapAndLiquify(uint256) (#767-813) performs a multiplication on the result of a division:
-unitBalance = deltaBalance / (denominator - (buyFee.liquidity + sellFee.liquidity)) (#784-785)
-marketingAmt = unitBalance * 2 * (buyFee.marketing + sellFee.marketing) (#792-794)
Catcoin.swapAndLiquify(uint256) (#767-813) performs a multiplication on the result of a division:
-unitBalance = deltaBalance / (denominator - (buyFee.liquidity + sellFee.liquidity)) (#784-785)
-devAmt = unitBalance * 2 * (buyFee.dev + sellFee.dev) (#795-798)
Catcoin.swapAndLiquify(uint256) (#767-813) performs a multiplication on the result of a division:
-unitBalance = deltaBalance / (denominator - (buyFee.liquidity + sellFee.liquidity)) (#784-785)
-bnbToAddLiquidityWith = unitBalance * (buyFee.liquidity + sellFee.liquidity) (#786-787)
Consider ordering multiplication before division.
Additional information: link
Address.sendValue(address,uint256) (#97-107) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#121-133) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#69-76) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#134-145) is never used and should be removed
Context._msgData() (#83-86) is never used and should be removed
SafeMath.mod(uint256,uint256) (#66-68) is never used and should be removed
Address._functionCallWithValue(address,bytes,uint256,string) (#147-169) is never used and should be removed
Address.isContract(address) (#89-96) is never used and should be removed
Address.functionCall(address,bytes,string) (#114-120) is never used and should be removed
Address.functionCall(address,bytes) (#108-113) is never used and should be removed
Remove unused functions.
Additional information: link
Redundant expression "this (#84)" inContext (#79-87)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Ownable._previousOwner (#173) should be constant
Ownable._lockTime (#174) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
Catcoin._approve(address,address,uint256).owner (#716) shadows:
- Ownable.owner() (#184-186) (function)
Catcoin.allowance(address,address).owner (#393) shadows:
- Ownable.owner() (#184-186) (function)
Rename the local variables that shadow another component.
Additional information: link
Address.isContract(address) (#89-96) uses assembly
- INLINE ASM (#92-94)
Address._functionCallWithValue(address,bytes,uint256,string) (#147-169) uses assembly
- INLINE ASM (#161-164)
Do not use evm assembly.
Additional information: link
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#147-169):
- (success,returndata) = target.call{value: weiValue}(data) (#154-156)
Low level call in Address.sendValue(address,uint256) (#97-107):
- (success) = recipient.call{value: amount}() (#102)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
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.
Catcoin.swapTokensForEth(uint256) (#815-829) has external calls inside a loop: path[1] = uniswapV2Router.WETH() (#818)
Catcoin.swapTokensForEth(uint256) (#815-829) has external calls inside a loop: uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#822-828)
Catcoin.swapAndLiquify(uint256) (#767-813) has external calls inside a loop: address(withdrawcontract).transfer(marketingAmt) (#801)
Catcoin.swapAndLiquify(uint256) (#767-813) has external calls inside a loop: address(_devwallet).transfer(devAmt) (#805)
Catcoin.addLiquidity(uint256,uint256) (#831-841) has external calls inside a loop: uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,withdrawcontract,block.timestamp) (#833-840)
Favor pull over push strategy for external calls.
Additional information: link
Parameter Catcoin.calculateTaxFee(uint256)._amount (#675) is not in mixedCase
Constant Catcoin._tTotal (#265) is not in UPPER_CASE_WITH_UNDERSCORES
Event CatcoinexcludeUserFromReward(address) (#310) is not in CapWords
Parameter Catcoin.calculateMarketingFee(uint256)._amount (#683) is not in mixedCase
Parameter Catcoin.setFees(uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16).sell_marketing (#550) is not in mixedCase
Parameter Catcoin.setFees(uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16).buy_liquidity (#545) is not in mixedCase
Event CatcoinincludeUserInFees(address) (#313) is not in CapWords
Parameter Catcoin.calculateLiquidityFee(uint256)._amount (#679) is not in mixedCase
Variable Catcoin._isBlackListedBot (#261) is not in mixedCase
Parameter Catcoin.setFees(uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16).buy_tax (#544) is not in mixedCase
Parameter Catcoin.openTrading(address)._withdrawcontract (#723) is not in mixedCase
Constant Catcoin._name (#251) is not in UPPER_CASE_WITH_UNDERSCORES
Parameter Catcoin.calculateDevFee(uint256)._amount (#687) is not in mixedCase
Parameter Catcoin.setSwapAndLiquifyEnabled(bool)._enabled (#584) is not in mixedCase
Event CatcoinexcludeUserFromFees(address) (#312) is not in CapWords
Parameter Catcoin.setFees(uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16).sell_dev (#551) is not in mixedCase
Variable Catcoin._isExcluded (#259) is not in mixedCase
Parameter Catcoin.setFees(uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16).sell_tax (#548) is not in mixedCase
Constant Catcoin._symbol (#252) is not in UPPER_CASE_WITH_UNDERSCORES
Event CatcoinbotRemovedFromBlacklist(address) (#306) is not in CapWords
Constant Catcoin._decimals (#253) is not in UPPER_CASE_WITH_UNDERSCORES
Event CatcoinincludeUserInReward(address) (#311) is not in CapWords
Function IUniswapV2Router01.WETH() (#219) is not in mixedCase
Variable Catcoin._isExcludedFromFee (#258) is not in mixedCase
Event CatcoinbotAddedToBlacklist(address) (#305) is not in CapWords
Parameter Catcoin.setFees(uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16).sell_liquidity (#549) is not in mixedCase
Parameter Catcoin.setMultisig(address)._multisig (#385) is not in mixedCase
Parameter Catcoin.setFees(uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16).buy_marketing (#546) is not in mixedCase
Parameter Catcoin.setFees(uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16).buy_dev (#547) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Catcoin.addLiquidity(uint256,uint256) (#831-841) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,withdrawcontract,block.timestamp) (#833-840)
Ensure that all the return values of the function calls are used.
Additional information: link
Catcoin.setMultisig(address)._multisig (#385) lacks a zero-check on :
- multisig = _multisig (#386)
Catcoin.openTrading(address)._withdrawcontract (#723) lacks a zero-check on :
- withdrawcontract = _withdrawcontract (#734)
Check that the address is not zero.
Additional information: link
Catcoin._transfer(address,address,uint256) (#738-765) uses tx.origin for authorization: require(bool,string)(! _isBlackListedBot[tx.origin],blacklisted) (#745)
Do not use tx.origin for authorization.
Additional information: link
reflectionFromToken(uint256,bool) should be declared external:
- Catcoin.reflectionFromToken(uint256,bool) (#447-464)
totalFees() should be declared external:
- Catcoin.totalFees() (#437-439)
isExcludedFromReward(address) should be declared external:
- Catcoin.isExcludedFromReward(address) (#433-435)
multiSendTokens(address[],uint256[]) should be declared external:
- Catcoin.multiSendTokens(address[],uint256[]) (#964-970)
allowance(address,address) should be declared external:
- Catcoin.allowance(address,address) (#393-394)
isExcludedFromFee(address) should be declared external:
- Catcoin.isExcludedFromFee(address) (#712-714)
setSwapTreshold(uint256) should be declared external:
- Catcoin.setSwapTreshold(uint256) (#441-445)
Use the external attribute for functions never called from the contract.
Additional information: link
Variable Catcoin._transferStandard(address,address,uint256).rTransferAmount (#874) is too similar to Catcoin._transferBothExcluded(address,address,uint256).tTransferAmount (#941)
Variable Catcoin._transferToExcluded(address,address,uint256).rTransferAmount (#898) is too similar to Catcoin._transferFromExcluded(address,address,uint256).tTransferAmount (#917)
Variable Catcoin._transferBothExcluded(address,address,uint256).rTransferAmount (#946) is too similar to Catcoin._getTValues(uint256).tTransferAmount (#607)
Variable Catcoin._transferFromExcluded(address,address,uint256).rTransferAmount (#922) is too similar to Catcoin._transferBothExcluded(address,address,uint256).tTransferAmount (#941)
Variable Catcoin._transferStandard(address,address,uint256).rTransferAmount (#874) is too similar to Catcoin._getTValues(uint256).tTransferAmount (#607)
Variable Catcoin._transferBothExcluded(address,address,uint256).rTransferAmount (#946) is too similar to Catcoin._transferToExcluded(address,address,uint256).tTransferAmount (#893)
Variable Catcoin._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#632-635) is too similar to Catcoin._transferStandard(address,address,uint256).tTransferAmount (#869)
Variable Catcoin.reflectionFromToken(uint256,bool).rTransferAmount (#451) is too similar to Catcoin._transferFromExcluded(address,address,uint256).tTransferAmount (#917)
Variable Catcoin.reflectionFromToken(uint256,bool).rTransferAmount (#451) is too similar to Catcoin._transferBothExcluded(address,address,uint256).tTransferAmount (#941)
Variable Catcoin._transferFromExcluded(address,address,uint256).rTransferAmount (#922) is too similar to Catcoin._transferToExcluded(address,address,uint256).tTransferAmount (#893)
Variable Catcoin._transferStandard(address,address,uint256).rTransferAmount (#874) is too similar to Catcoin._transferToExcluded(address,address,uint256).tTransferAmount (#893)
Variable Catcoin._transferFromExcluded(address,address,uint256).rTransferAmount (#922) is too similar to Catcoin._getTValues(uint256).tTransferAmount (#607)
Variable Catcoin._transferFromExcluded(address,address,uint256).rTransferAmount (#922) is too similar to Catcoin._transferFromExcluded(address,address,uint256).tTransferAmount (#917)
Variable Catcoin._transferBothExcluded(address,address,uint256).rTransferAmount (#946) is too similar to Catcoin._transferFromExcluded(address,address,uint256).tTransferAmount (#917)
Variable Catcoin.reflectionFromToken(uint256,bool).rTransferAmount (#451) is too similar to Catcoin._getTValues(uint256).tTransferAmount (#607)
Variable Catcoin._transferFromExcluded(address,address,uint256).rTransferAmount (#922) is too similar to Catcoin._transferStandard(address,address,uint256).tTransferAmount (#869)
Variable Catcoin._transferToExcluded(address,address,uint256).rTransferAmount (#898) is too similar to Catcoin._transferStandard(address,address,uint256).tTransferAmount (#869)
Variable Catcoin.reflectionFromToken(uint256,bool).rTransferAmount (#451) is too similar to Catcoin._transferToExcluded(address,address,uint256).tTransferAmount (#893)
Variable Catcoin._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#632-635) is too similar to Catcoin._getTValues(uint256).tTransferAmount (#607)
Variable Catcoin._transferToExcluded(address,address,uint256).rTransferAmount (#898) is too similar to Catcoin._getTValues(uint256).tTransferAmount (#607)
Variable Catcoin._transferStandard(address,address,uint256).rTransferAmount (#874) is too similar to Catcoin._transferStandard(address,address,uint256).tTransferAmount (#869)
Variable Catcoin._transferBothExcluded(address,address,uint256).rTransferAmount (#946) is too similar to Catcoin._transferStandard(address,address,uint256).tTransferAmount (#869)
Variable Catcoin._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#632-635) is too similar to Catcoin._transferFromExcluded(address,address,uint256).tTransferAmount (#917)
Variable Catcoin._transferBothExcluded(address,address,uint256).rTransferAmount (#946) is too similar to Catcoin._transferBothExcluded(address,address,uint256).tTransferAmount (#941)
Variable Catcoin._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#632-635) is too similar to Catcoin._transferToExcluded(address,address,uint256).tTransferAmount (#893)
Variable Catcoin._transferStandard(address,address,uint256).rTransferAmount (#874) is too similar to Catcoin._transferFromExcluded(address,address,uint256).tTransferAmount (#917)
Variable Catcoin.reflectionFromToken(uint256,bool).rTransferAmount (#451) is too similar to Catcoin._transferStandard(address,address,uint256).tTransferAmount (#869)
Variable Catcoin._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#632-635) is too similar to Catcoin._transferBothExcluded(address,address,uint256).tTransferAmount (#941)
Variable Catcoin._transferToExcluded(address,address,uint256).rTransferAmount (#898) is too similar to Catcoin._transferBothExcluded(address,address,uint256).tTransferAmount (#941)
Variable Catcoin._transferToExcluded(address,address,uint256).rTransferAmount (#898) is too similar to Catcoin._transferToExcluded(address,address,uint256).tTransferAmount (#893)
Prevent variables from having similar names.
Additional information: link
solc-0.8.10 is not recommended for deployment
Pragma version=0.8.10 (#1) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
Deploy with any of the following Solidity versions: 0.5.16 - 0.5.17, 0.6.11 - 0.6.12, 0.7.5 - 0.7.6 Use a simple pragma version that allows any of these versions. Consider using the latest version of Solidity for testing.
Additional information: link
Ownable._lockTime (#174) is never used in Catcoin (#246-972)
Ownable._previousOwner (#173) is never used in Catcoin (#246-972)
Remove unused state variables.
Additional information: link
Catcoin.removeAllFee() (#691-696) has costly operations inside a loop:
- _liquidityFee = 0 (#693)
Catcoin.setSell() (#705-710) has costly operations inside a loop:
- _liquidityFee = sellFee.liquidity (#707)
Catcoin.removeAllFee() (#691-696) has costly operations inside a loop:
- _devFee = 0 (#695)
Catcoin.setBuy() (#698-703) has costly operations inside a loop:
- _devFee = buyFee.dev (#702)
Catcoin.lockTheSwap() (#332-336) has costly operations inside a loop:
- inSwapAndLiquify = true (#333)
Catcoin.setSell() (#705-710) has costly operations inside a loop:
- _taxFee = sellFee.tax (#706)
Catcoin.setBuy() (#698-703) has costly operations inside a loop:
- _taxFee = buyFee.tax (#699)
Catcoin.setBuy() (#698-703) has costly operations inside a loop:
- _liquidityFee = buyFee.liquidity (#700)
Catcoin.removeBotFromBlacklist(address) (#494-507) has costly operations inside a loop:
- _blackListedBots.pop() (#502)
Catcoin.setSell() (#705-710) has costly operations inside a loop:
- _devFee = sellFee.dev (#709)
Catcoin._reflectFee(uint256,uint256) (#591-594) has costly operations inside a loop:
- _rTotal = _rTotal.sub(rFee) (#592)
Catcoin.includeInReward(address) (#519-531) has costly operations inside a loop:
- _excluded.pop() (#526)
Catcoin.setBuy() (#698-703) has costly operations inside a loop:
- _marketingFee = buyFee.marketing (#701)
Catcoin.removeAllFee() (#691-696) has costly operations inside a loop:
- _taxFee = 0 (#692)
Catcoin._reflectFee(uint256,uint256) (#591-594) has costly operations inside a loop:
- _tFeeTotal = _tFeeTotal.add(tFee) (#593)
Catcoin.removeAllFee() (#691-696) has costly operations inside a loop:
- _marketingFee = 0 (#694)
Catcoin.lockTheSwap() (#332-336) has costly operations inside a loop:
- inSwapAndLiquify = false (#335)
Catcoin.setSell() (#705-710) has costly operations inside a loop:
- _marketingFee = sellFee.marketing (#708)
Use a local variable to hold the loop computation result.
Additional information: link
Reentrancy in Catcoin.transferFrom(address,address,uint256) (#399-410):
External calls:
- _transfer(sender,recipient,amount) (#400)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,withdrawcontract,block.timestamp) (#833-840)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#822-828)
External calls sending eth:
- _transfer(sender,recipient,amount) (#400)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,withdrawcontract,block.timestamp) (#833-840)
- address(withdrawcontract).transfer(marketingAmt) (#801)
- address(_devwallet).transfer(devAmt) (#805)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#401-408)
- _allowances[owner][spender] = amount (#719)
Reentrancy in Catcoin._transfer(address,address,uint256) (#738-765):
External calls:
- swapAndLiquify(contractTokenBalance) (#757)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,withdrawcontract,block.timestamp) (#833-840)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#822-828)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#757)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,withdrawcontract,block.timestamp) (#833-840)
- address(withdrawcontract).transfer(marketingAmt) (#801)
- address(_devwallet).transfer(devAmt) (#805)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#764)
- _devFee = sellFee.dev (#709)
- _devFee = 0 (#695)
- _devFee = buyFee.dev (#702)
- _tokenTransfer(from,to,amount,takeFee) (#764)
- _liquidityFee = 0 (#693)
- _liquidityFee = buyFee.liquidity (#700)
- _liquidityFee = sellFee.liquidity (#707)
- _tokenTransfer(from,to,amount,takeFee) (#764)
- _marketingFee = sellFee.marketing (#708)
- _marketingFee = 0 (#694)
- _marketingFee = buyFee.marketing (#701)
- _tokenTransfer(from,to,amount,takeFee) (#764)
- _tFeeTotal = _tFeeTotal.add(tFee) (#593)
- _tokenTransfer(from,to,amount,takeFee) (#764)
- _taxFee = 0 (#692)
- _taxFee = buyFee.tax (#699)
- _taxFee = sellFee.tax (#706)
Reentrancy in Catcoin.swapAndLiquify(uint256) (#767-813):
External calls:
- swapTokensForEth(toSwap) (#781)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#822-828)
- addLiquidity(tokensToAddLiquidityWith,bnbToAddLiquidityWith) (#790)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,withdrawcontract,block.timestamp) (#833-840)
External calls sending eth:
- addLiquidity(tokensToAddLiquidityWith,bnbToAddLiquidityWith) (#790)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,withdrawcontract,block.timestamp) (#833-840)
State variables written after the call(s):
- addLiquidity(tokensToAddLiquidityWith,bnbToAddLiquidityWith) (#790)
- _allowances[owner][spender] = amount (#719)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in Catcoin.swapAndLiquify(uint256) (#767-813):
External calls:
- swapTokensForEth(toSwap) (#781)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#822-828)
- addLiquidity(tokensToAddLiquidityWith,bnbToAddLiquidityWith) (#790)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,withdrawcontract,block.timestamp) (#833-840)
External calls sending eth:
- addLiquidity(tokensToAddLiquidityWith,bnbToAddLiquidityWith) (#790)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,withdrawcontract,block.timestamp) (#833-840)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#720)
- addLiquidity(tokensToAddLiquidityWith,bnbToAddLiquidityWith) (#790)
Reentrancy in Catcoin.transferFrom(address,address,uint256) (#399-410):
External calls:
- _transfer(sender,recipient,amount) (#400)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,withdrawcontract,block.timestamp) (#833-840)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#822-828)
External calls sending eth:
- _transfer(sender,recipient,amount) (#400)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,withdrawcontract,block.timestamp) (#833-840)
- address(withdrawcontract).transfer(marketingAmt) (#801)
- address(_devwallet).transfer(devAmt) (#805)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#720)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#401-408)
Reentrancy in Catcoin._transfer(address,address,uint256) (#738-765):
External calls:
- swapAndLiquify(contractTokenBalance) (#757)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,withdrawcontract,block.timestamp) (#833-840)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#822-828)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#757)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,withdrawcontract,block.timestamp) (#833-840)
- address(withdrawcontract).transfer(marketingAmt) (#801)
- address(_devwallet).transfer(devAmt) (#805)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#887)
- _tokenTransfer(from,to,amount,takeFee) (#764)
- Transfer(sender,recipient,tTransferAmount) (#912)
- _tokenTransfer(from,to,amount,takeFee) (#764)
- Transfer(sender,recipient,tTransferAmount) (#936)
- _tokenTransfer(from,to,amount,takeFee) (#764)
- Transfer(sender,recipient,tTransferAmount) (#961)
- _tokenTransfer(from,to,amount,takeFee) (#764)
Reentrancy in Catcoin.swapAndLiquify(uint256) (#767-813):
External calls:
- swapTokensForEth(toSwap) (#781)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#822-828)
- addLiquidity(tokensToAddLiquidityWith,bnbToAddLiquidityWith) (#790)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,withdrawcontract,block.timestamp) (#833-840)
External calls sending eth:
- addLiquidity(tokensToAddLiquidityWith,bnbToAddLiquidityWith) (#790)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,withdrawcontract,block.timestamp) (#833-840)
- address(withdrawcontract).transfer(marketingAmt) (#801)
- address(_devwallet).transfer(devAmt) (#805)
Event emitted after the call(s):
- SwapAndLiquify(toSwap,deltaBalance,tokensToAddLiquidityWith) (#808-812)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in Catcoin._transfer(address,address,uint256) (#738-765):
External calls:
- swapAndLiquify(contractTokenBalance) (#757)
- address(withdrawcontract).transfer(marketingAmt) (#801)
- address(_devwallet).transfer(devAmt) (#805)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#757)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,withdrawcontract,block.timestamp) (#833-840)
- address(withdrawcontract).transfer(marketingAmt) (#801)
- address(_devwallet).transfer(devAmt) (#805)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#764)
- _devFee = sellFee.dev (#709)
- _devFee = 0 (#695)
- _devFee = buyFee.dev (#702)
- _tokenTransfer(from,to,amount,takeFee) (#764)
- _liquidityFee = 0 (#693)
- _liquidityFee = buyFee.liquidity (#700)
- _liquidityFee = sellFee.liquidity (#707)
- _tokenTransfer(from,to,amount,takeFee) (#764)
- _marketingFee = sellFee.marketing (#708)
- _marketingFee = 0 (#694)
- _marketingFee = buyFee.marketing (#701)
- _tokenTransfer(from,to,amount,takeFee) (#764)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#662)
- _rOwned[address(this)] = _rOwned[address(this)].add(rWallet) (#670)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#882)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#906)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#931)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#955)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#883)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#908)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#932)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#957)
- _tokenTransfer(from,to,amount,takeFee) (#764)
- _rTotal = _rTotal.sub(rFee) (#592)
- _tokenTransfer(from,to,amount,takeFee) (#764)
- _tFeeTotal = _tFeeTotal.add(tFee) (#593)
- _tokenTransfer(from,to,amount,takeFee) (#764)
- _tOwned[address(this)] = _tOwned[address(this)].add(tWallet) (#672)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#664)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#954)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#930)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#907)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#956)
- _tokenTransfer(from,to,amount,takeFee) (#764)
- _taxFee = 0 (#692)
- _taxFee = buyFee.tax (#699)
- _taxFee = sellFee.tax (#706)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#887)
- _tokenTransfer(from,to,amount,takeFee) (#764)
- Transfer(sender,recipient,tTransferAmount) (#936)
- _tokenTransfer(from,to,amount,takeFee) (#764)
- Transfer(sender,recipient,tTransferAmount) (#912)
- _tokenTransfer(from,to,amount,takeFee) (#764)
- Transfer(sender,recipient,tTransferAmount) (#961)
- _tokenTransfer(from,to,amount,takeFee) (#764)
Reentrancy in Catcoin.swapAndLiquify(uint256) (#767-813):
External calls:
- address(withdrawcontract).transfer(marketingAmt) (#801)
- address(_devwallet).transfer(devAmt) (#805)
External calls sending eth:
- addLiquidity(tokensToAddLiquidityWith,bnbToAddLiquidityWith) (#790)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,withdrawcontract,block.timestamp) (#833-840)
- address(withdrawcontract).transfer(marketingAmt) (#801)
- address(_devwallet).transfer(devAmt) (#805)
Event emitted after the call(s):
- SwapAndLiquify(toSwap,deltaBalance,tokensToAddLiquidityWith) (#808-812)
Reentrancy in Catcoin.transferFrom(address,address,uint256) (#399-410):
External calls:
- _transfer(sender,recipient,amount) (#400)
- address(withdrawcontract).transfer(marketingAmt) (#801)
- address(_devwallet).transfer(devAmt) (#805)
External calls sending eth:
- _transfer(sender,recipient,amount) (#400)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,withdrawcontract,block.timestamp) (#833-840)
- address(withdrawcontract).transfer(marketingAmt) (#801)
- address(_devwallet).transfer(devAmt) (#805)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#401-408)
- _allowances[owner][spender] = amount (#719)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#720)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#401-408)
Reentrancy in Catcoin.excessFundWithdrawal() (#576-582):
External calls:
- address(withdrawcontract).transfer(amountBNB) (#579)
Event emitted after the call(s):
- RecoverFunds() (#580)
Apply the check-effects-interactions pattern.
Additional information: link
Token has no active CoinGecko listing / rank
Twitter account link seems to be invalid