Reentrancy in GoldCatToken._tokenTransfer(address,address,uint256) (#1280-1302):
External calls:
- swapAndLiquify(contractTokenBalance) (#1295)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1374-1381)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,recipient,block.timestamp) (#1360-1366)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1295)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1374-1381)
State variables written after the call(s):
- _balances[recipient] = _balances[recipient].add(recipientAmount) (#1300)
Apply the check-effects-interactions pattern.
Additional information: link
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Contract ownership is not renounced (belongs to a wallet)
GoldCatToken.addLiquidity(uint256,uint256) (#1369-1382) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1374-1381)
Ensure that all the return values of the function calls are used.
Additional information: link
ERC20.allowance(address,address).owner (#691) shadows:
- Ownable.owner() (#498-500) (function)
ERC20._approve(address,address,uint256).owner (#746) shadows:
- Ownable.owner() (#498-500) (function)
Rename the local variables that shadow another component.
Additional information: link
GoldCatToken.setAntiBotBlocks(uint256) (#1211-1214) should emit an event for:
- antiBotBlocks = blocks (#1212)
GoldCatToken.setTaxes(uint256,uint256,uint256) (#1229-1234) should emit an event for:
- recoveryTaxes = recovery (#1230)
- marketingTaxes = marketing (#1231)
- liquifyTaxes = liquify (#1232)
- totalTaxes = (recoveryTaxes + liquifyTaxes + marketingTaxes) (#1233)
Emit an event for critical parameter changes.
Additional information: link
Reentrancy in GoldCatToken.constructor() (#1161-1190):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(_self,_uniswapV2Router.WETH()) (#1170)
State variables written after the call(s):
- _allowances[_self][address(uniswapV2Router)] = _totalSupply (#1173)
- _allowances[_self][uniswapV2Pair] = _totalSupply (#1174)
- _allowances[msg.sender][address(uniswapV2Router)] = _totalSupply (#1175)
- _balances[projectAddress] = _totalSupply (#1188)
- setExcludedFee(msg.sender,1) (#1178)
- _isExcludedFee[account] = _enabled == 1 (#1196)
- setExcludedFee(_self,1) (#1179)
- _isExcludedFee[account] = _enabled == 1 (#1196)
- setExcludedFee(recoveryAddress,1) (#1180)
- _isExcludedFee[account] = _enabled == 1 (#1196)
- setExcludedFee(marketingAddress,1) (#1181)
- _isExcludedFee[account] = _enabled == 1 (#1196)
- setExcludedFee(projectAddress,1) (#1182)
- _isExcludedFee[account] = _enabled == 1 (#1196)
- setTradingPairs(uniswapV2Pair,1) (#1185)
- _tradingPairs[pair] = _enabled == 1 (#1226)
- uniswapV2Router = _uniswapV2Router (#1172)
Reentrancy in GoldCatToken.swapAndLiquify(uint256) (#1316-1348):
External calls:
- swapTokensForETH(marketingTokenBalance,marketingAddress) (#1334)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,recipient,block.timestamp) (#1360-1366)
- swapTokensForETH(recoveryTokenBalance,recoveryAddress) (#1335)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,recipient,block.timestamp) (#1360-1366)
State variables written after the call(s):
- swapTokensForETH(recoveryTokenBalance,recoveryAddress) (#1335)
- _allowances[owner][spender] = amount (#750)
Reentrancy in GoldCatToken.swapAndLiquify(uint256) (#1316-1348):
External calls:
- swapTokensForETH(marketingTokenBalance,marketingAddress) (#1334)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,recipient,block.timestamp) (#1360-1366)
- swapTokensForETH(recoveryTokenBalance,recoveryAddress) (#1335)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,recipient,block.timestamp) (#1360-1366)
- swapTokensForETH(tokenBalanceToLiquify,address(this)) (#1336)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,recipient,block.timestamp) (#1360-1366)
State variables written after the call(s):
- swapTokensForETH(tokenBalanceToLiquify,address(this)) (#1336)
- _allowances[owner][spender] = amount (#750)
Reentrancy in GoldCatToken.swapAndLiquify(uint256) (#1316-1348):
External calls:
- swapTokensForETH(marketingTokenBalance,marketingAddress) (#1334)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,recipient,block.timestamp) (#1360-1366)
- swapTokensForETH(recoveryTokenBalance,recoveryAddress) (#1335)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,recipient,block.timestamp) (#1360-1366)
- swapTokensForETH(tokenBalanceToLiquify,address(this)) (#1336)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,recipient,block.timestamp) (#1360-1366)
- addLiquidity(tokenBalanceToLiquify,bnbToLiquify) (#1345)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1374-1381)
External calls sending eth:
- addLiquidity(tokenBalanceToLiquify,bnbToLiquify) (#1345)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1374-1381)
State variables written after the call(s):
- addLiquidity(tokenBalanceToLiquify,bnbToLiquify) (#1345)
- _allowances[owner][spender] = amount (#750)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in GoldCatToken._tokenTransfer(address,address,uint256) (#1280-1302):
External calls:
- swapAndLiquify(contractTokenBalance) (#1295)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1374-1381)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,recipient,block.timestamp) (#1360-1366)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1295)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1374-1381)
Event emitted after the call(s):
- Transfer(sender,recipient,recipientAmount) (#1301)
Reentrancy in GoldCatToken.constructor() (#1161-1190):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(_self,_uniswapV2Router.WETH()) (#1170)
Event emitted after the call(s):
- Transfer(address(0),projectAddress,_totalSupply) (#1189)
Reentrancy in GoldCatToken.swapAndLiquify(uint256) (#1316-1348):
External calls:
- swapTokensForETH(marketingTokenBalance,marketingAddress) (#1334)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,recipient,block.timestamp) (#1360-1366)
- swapTokensForETH(recoveryTokenBalance,recoveryAddress) (#1335)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,recipient,block.timestamp) (#1360-1366)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#751)
- swapTokensForETH(recoveryTokenBalance,recoveryAddress) (#1335)
Reentrancy in GoldCatToken.swapAndLiquify(uint256) (#1316-1348):
External calls:
- swapTokensForETH(marketingTokenBalance,marketingAddress) (#1334)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,recipient,block.timestamp) (#1360-1366)
- swapTokensForETH(recoveryTokenBalance,recoveryAddress) (#1335)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,recipient,block.timestamp) (#1360-1366)
- swapTokensForETH(tokenBalanceToLiquify,address(this)) (#1336)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,recipient,block.timestamp) (#1360-1366)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#751)
- swapTokensForETH(tokenBalanceToLiquify,address(this)) (#1336)
Reentrancy in GoldCatToken.swapAndLiquify(uint256) (#1316-1348):
External calls:
- swapTokensForETH(marketingTokenBalance,marketingAddress) (#1334)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,recipient,block.timestamp) (#1360-1366)
- swapTokensForETH(recoveryTokenBalance,recoveryAddress) (#1335)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,recipient,block.timestamp) (#1360-1366)
- swapTokensForETH(tokenBalanceToLiquify,address(this)) (#1336)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,recipient,block.timestamp) (#1360-1366)
- addLiquidity(tokenBalanceToLiquify,bnbToLiquify) (#1345)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1374-1381)
External calls sending eth:
- addLiquidity(tokenBalanceToLiquify,bnbToLiquify) (#1345)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1374-1381)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#751)
- addLiquidity(tokenBalanceToLiquify,bnbToLiquify) (#1345)
- SwapAndLiquify(contractTokenBalance,bnbToLiquify,tokenBalanceToLiquify) (#1347)
Apply the check-effects-interactions pattern.
Additional information: link
Address.verifyCallResult(bool,bytes,string) (#426-446) uses assembly
- INLINE ASM (#438-441)
ERC20.isContract(address) (#758-764) uses assembly
- INLINE ASM (#760-762)
Do not use evm assembly.
Additional information: link
GoldCatToken.swapAndLiquify(uint256) (#1316-1348) performs a multiplication on the result of a division:
-recoveryTokenBalance = contractTokenBalance.div(totalTaxes).mul(recoveryTaxes) (#1318)
GoldCatToken.swapAndLiquify(uint256) (#1316-1348) performs a multiplication on the result of a division:
-marketingTokenBalance = contractTokenBalance.div(totalTaxes).mul(marketingTaxes) (#1319)
GoldCatToken.swapAndLiquify(uint256) (#1316-1348) performs a multiplication on the result of a division:
-liquidityTokenBalance = contractTokenBalance.div(totalTaxes).mul(liquifyTaxes) (#1320)
Consider ordering multiplication before division.
Additional information: link
GoldCatToken.setBulkBlacklist(address[],uint8).i (#1220) is a local variable never initialized
Initialize all the variables. If a variable is meant to be initialized to zero, explicitly set it to zero to improve code readability.
Additional information: link
Address.functionCall(address,bytes) (#310-312) is never used and should be removed
Address.functionCall(address,bytes,string) (#320-326) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#339-345) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#353-364) is never used and should be removed
Address.functionDelegateCall(address,bytes) (#399-401) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (#409-418) is never used and should be removed
Address.functionStaticCall(address,bytes) (#372-374) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (#382-391) is never used and should be removed
Address.isContract(address) (#261-267) is never used and should be removed
Address.sendValue(address,uint256) (#285-290) is never used and should be removed
Address.verifyCallResult(bool,bytes,string) (#426-446) is never used and should be removed
Context._msgData() (#466-468) is never used and should be removed
ERC20._percentage(uint256,uint256) (#755-757) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#191-200) is never used and should be removed
SafeMath.mod(uint256,uint256) (#151-153) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#217-226) is never used and should be removed
SafeMath.sub(uint256,uint256,string) (#168-177) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (#22-28) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (#64-69) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (#76-81) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (#47-57) is never used and should be removed
SafeMath.trySub(uint256,uint256) (#35-40) is never used and should be removed
Remove unused functions.
Additional information: link
GoldCatToken.totalTaxes (#1141) is set pre-construction with a non-constant function or state variable:
- (marketingTaxes + liquifyTaxes + recoveryTaxes)
Remove any initialization of state variables via non-constant state variables or function calls. If variables must be set upon contract deployment, locate initialization in the constructor instead.
Additional information: link
Pragma version^0.8.6<=0.9.6 (#2) is too complex
solc-0.8.8 is known to contain severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
Deploy with any of the following Solidity versions: 0.5.16 - 0.5.17, 0.6.11 - 0.6.12, 0.7.5 - 0.7.6 Use a simple pragma version that allows any of these versions. Consider using the latest version of Solidity for testing.
Additional information: link
Low level call in Address.sendValue(address,uint256) (#285-290):
- (success) = recipient.call{value: amount}() (#288)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (#353-364):
- (success,returndata) = target.call{value: value}(data) (#362)
Low level call in Address.functionStaticCall(address,bytes,string) (#382-391):
- (success,returndata) = target.staticcall(data) (#389)
Low level call in Address.functionDelegateCall(address,bytes,string) (#409-418):
- (success,returndata) = target.delegatecall(data) (#416)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Constant ERC20.deadAddress (#652) is not in UPPER_CASE_WITH_UNDERSCORES
Variable ERC20._totalSupply (#656) is not in mixedCase
Variable ERC20._balances (#658) is not in mixedCase
Variable ERC20._allowances (#659) is not in mixedCase
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#832) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#834) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#865) is not in mixedCase
Function IUniswapV2Router01.WETH() (#911) is not in mixedCase
Parameter GoldCatToken.setExcludedFee(address,uint8)._enabled (#1195) is not in mixedCase
Parameter GoldCatToken.setSwapEnabled(uint8)._enabled (#1203) is not in mixedCase
Parameter GoldCatToken.setTradingEnabled(uint8)._enabled (#1207) is not in mixedCase
Parameter GoldCatToken.setBlacklist(address,uint8)._enabled (#1216) is not in mixedCase
Parameter GoldCatToken.setBulkBlacklist(address[],uint8)._enabled (#1219) is not in mixedCase
Parameter GoldCatToken.setTradingPairs(address,uint8)._enabled (#1225) is not in mixedCase
Variable GoldCatToken._tradingPairs (#1131) is not in mixedCase
Variable GoldCatToken._isBlacklist (#1132) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#916) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#917)
Prevent variables from having similar names.
Additional information: link
GoldCatToken.constructor() (#1161-1190) uses literals with too many digits:
- _totalSupply = 1000000000000 * 10 ** decimals() (#1165)
GoldCatToken.slitherConstructorVariables() (#1123-1385) uses literals with too many digits:
- minBalance = (1000000000000000000) / 100000 (#1142)
GoldCatToken.slitherConstructorConstantVariables() (#1123-1385) uses literals with too many digits:
- deadAddress = 0x000000000000000000000000000000000000dEaD (#652)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
GoldCatToken.marketingAddress (#1128) should be constant
GoldCatToken.minBalance (#1142) should be constant
GoldCatToken.projectAddress (#1126) should be constant
GoldCatToken.recoveryAddress (#1127) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#517-519)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#525-528)
name() should be declared external:
- ERC20.name() (#668-670)
symbol() should be declared external:
- ERC20.symbol() (#672-674)
totalSupply() should be declared external:
- ERC20.totalSupply() (#680-682)
allowance(address,address) should be declared external:
- ERC20.allowance(address,address) (#691-693)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (#695-698)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (#700-703)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (#705-715)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (#717-720)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (#722-730)
isExcludedFee(address) should be declared external:
- GoldCatToken.isExcludedFee(address) (#1199-1201)
setSwapEnabled(uint8) should be declared external:
- GoldCatToken.setSwapEnabled(uint8) (#1203-1205)
setTradingEnabled(uint8) should be declared external:
- GoldCatToken.setTradingEnabled(uint8) (#1207-1209)
setAntiBotBlocks(uint256) should be declared external:
- GoldCatToken.setAntiBotBlocks(uint256) (#1211-1214)
setTaxes(uint256,uint256,uint256) should be declared external:
- GoldCatToken.setTaxes(uint256,uint256,uint256) (#1229-1234)
Use the external attribute for functions never called from the contract.
Additional information: link
Unable to find website, listings and other project-related information
Young tokens have high risks of scam / price dump / death
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Unable to find Telegram and Twitter accounts