Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Reentrancy in Chick._transfer(address,address,uint256) (#538-562):
External calls:
- swapTokens(balanceOf(address(this))) (#553)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#582-588)
External calls sending eth:
- swapTokens(balanceOf(address(this))) (#553)
- swapTokenAddress.transfer(address(this).balance) (#570)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#561)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#711)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#627)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#636)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#647)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#657)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#628)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#638)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#648)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#659)
- _tokenTransfer(from,to,amount,takeFee) (#561)
- _rTotal = _rTotal.sub(rFee) (#666)
- _tokenTransfer(from,to,amount,takeFee) (#561)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#713)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#656)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#646)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#637)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#658)
- marketRewardFlag = marketRewardFlag + 1 (#554)
Apply the check-effects-interactions pattern.
Additional information: link
Chick.addLiquidity(uint256,uint256) (#592-605) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#597-604)
Ensure that all the return values of the function calls are used.
Additional information: link
Chick.allowance(address,address).owner (#485) shadows:
- Ownable.owner() (#160-162) (function)
Chick._approve(address,address,uint256).owner (#530) shadows:
- Ownable.owner() (#160-162) (function)
Rename the local variables that shadow another component.
Additional information: link
Chick.setMaxWalletAmount(uint256) (#743-745) should emit an event for:
- _maxWalletTotal = amount (#744)
Chick.setTaxFeePercent(uint256) (#759-761) should emit an event for:
- _taxFee = taxFee (#760)
Chick.setLiquidityFeePercent(uint256) (#763-765) should emit an event for:
- _liquidityFee = liquidityFee (#764)
Emit an event for critical parameter changes.
Additional information: link
Reentrancy in Chick._transfer(address,address,uint256) (#538-562):
External calls:
- swapTokens(balanceOf(address(this))) (#553)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#582-588)
External calls sending eth:
- swapTokens(balanceOf(address(this))) (#553)
- swapTokenAddress.transfer(address(this).balance) (#570)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#561)
- _liquidityFee = _previousLiquidityFee (#740)
- _liquidityFee = 0 (#735)
- _tokenTransfer(from,to,amount,takeFee) (#561)
- _previousLiquidityFee = _liquidityFee (#732)
- _tokenTransfer(from,to,amount,takeFee) (#561)
- _previousTaxFee = _taxFee (#731)
- _tokenTransfer(from,to,amount,takeFee) (#561)
- _tFeeTotal = _tFeeTotal.add(tFee) (#667)
- _tokenTransfer(from,to,amount,takeFee) (#561)
- _taxFee = _previousTaxFee (#739)
- _taxFee = 0 (#734)
Reentrancy in Chick.constructor() (#447-458):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#451-452)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#454)
- _isExcludedFromFee[address(this)] = true (#455)
- _liquidityFee = 8 (#456)
- _taxFee = 2 (#457)
- uniswapV2Router = _uniswapV2Router (#453)
Reentrancy in Chick.transferFrom(address,address,uint256) (#494-498):
External calls:
- _transfer(sender,recipient,amount) (#495)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#582-588)
External calls sending eth:
- _transfer(sender,recipient,amount) (#495)
- swapTokenAddress.transfer(address(this).balance) (#570)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#496)
- _allowances[owner][spender] = amount (#534)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in Chick._transfer(address,address,uint256) (#538-562):
External calls:
- swapTokens(balanceOf(address(this))) (#553)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#582-588)
External calls sending eth:
- swapTokens(balanceOf(address(this))) (#553)
- swapTokenAddress.transfer(address(this).balance) (#570)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#631)
- _tokenTransfer(from,to,amount,takeFee) (#561)
- Transfer(sender,recipient,tTransferAmount) (#641)
- _tokenTransfer(from,to,amount,takeFee) (#561)
- Transfer(sender,recipient,tTransferAmount) (#651)
- _tokenTransfer(from,to,amount,takeFee) (#561)
- Transfer(sender,recipient,tTransferAmount) (#662)
- _tokenTransfer(from,to,amount,takeFee) (#561)
Reentrancy in Chick.swapTokensForEth(uint256) (#573-591):
External calls:
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#582-588)
Event emitted after the call(s):
- SwapTokensForETH(tokenAmount,path) (#590)
Reentrancy in Chick.transferFrom(address,address,uint256) (#494-498):
External calls:
- _transfer(sender,recipient,amount) (#495)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#582-588)
External calls sending eth:
- _transfer(sender,recipient,amount) (#495)
- swapTokenAddress.transfer(address(this).balance) (#570)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#535)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#496)
Apply the check-effects-interactions pattern.
Additional information: link
Address.isContract(address) (#90-99) uses assembly
- INLINE ASM (#97)
Address._functionCallWithValue(address,bytes,uint256,string) (#127-144) uses assembly
- INLINE ASM (#136-139)
Do not use evm assembly.
Additional information: link
Chick.includeInReward(address) (#517-528) has costly operations inside a loop:
- _excluded.pop() (#524)
Use a local variable to hold the loop computation result.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#127-144) is never used and should be removed
Address.functionCall(address,bytes) (#110-112) is never used and should be removed
Address.functionCall(address,bytes,string) (#114-116) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#118-120) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#122-125) is never used and should be removed
Address.isContract(address) (#90-99) is never used and should be removed
Address.sendValue(address,uint256) (#101-107) is never used and should be removed
Chick.addLiquidity(uint256,uint256) (#592-605) is never used and should be removed
Chick.transferToAddressETH(address,uint256) (#766-768) is never used and should be removed
Context._msgData() (#13-16) is never used and should be removed
SafeMath.mod(uint256,uint256) (#78-80) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#82-85) is never used and should be removed
Remove unused functions.
Additional information: link
Chick._rTotal (#408) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
Chick._previousTaxFee (#418) is set pre-construction with a non-constant function or state variable:
- _taxFee
Chick._previousLiquidityFee (#421) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
Remove any initialization of state variables via non-constant state variables or function calls. If variables must be set upon contract deployment, locate initialization in the constructor instead.
Additional information: link
Low level call in Address.sendValue(address,uint256) (#101-107):
- (success) = recipient.call{value: amount}() (#105)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#127-144):
- (success,returndata) = target.call{value: weiValue}(data) (#130)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#217) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#218) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#234) is not in mixedCase
Function IUniswapV2Router01.WETH() (#255) is not in mixedCase
Parameter Chick.calculateTaxFee(uint256)._amount (#716) is not in mixedCase
Parameter Chick.calculateLiquidityFee(uint256)._amount (#722) is not in mixedCase
Parameter Chick.setMarketingAddress(address[])._marketingAddress (#755) is not in mixedCase
Variable Chick._maxWalletTotal (#409) is not in mixedCase
Variable Chick._taxFee (#417) is not in mixedCase
Variable Chick._liquidityFee (#420) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#14)" inContext (#8-17)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Reentrancy in Chick._transfer(address,address,uint256) (#538-562):
External calls:
- swapTokens(balanceOf(address(this))) (#553)
- swapTokenAddress.transfer(address(this).balance) (#570)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#561)
- _liquidityFee = _previousLiquidityFee (#740)
- _liquidityFee = 0 (#735)
- _tokenTransfer(from,to,amount,takeFee) (#561)
- _previousLiquidityFee = _liquidityFee (#732)
- _tokenTransfer(from,to,amount,takeFee) (#561)
- _previousTaxFee = _taxFee (#731)
- _tokenTransfer(from,to,amount,takeFee) (#561)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#711)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#627)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#636)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#647)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#657)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#628)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#638)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#648)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#659)
- _tokenTransfer(from,to,amount,takeFee) (#561)
- _rTotal = _rTotal.sub(rFee) (#666)
- _tokenTransfer(from,to,amount,takeFee) (#561)
- _tFeeTotal = _tFeeTotal.add(tFee) (#667)
- _tokenTransfer(from,to,amount,takeFee) (#561)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#713)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#656)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#646)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#637)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#658)
- _tokenTransfer(from,to,amount,takeFee) (#561)
- _taxFee = _previousTaxFee (#739)
- _taxFee = 0 (#734)
- marketRewardFlag = marketRewardFlag + 1 (#554)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#631)
- _tokenTransfer(from,to,amount,takeFee) (#561)
- Transfer(sender,recipient,tTransferAmount) (#651)
- _tokenTransfer(from,to,amount,takeFee) (#561)
- Transfer(sender,recipient,tTransferAmount) (#641)
- _tokenTransfer(from,to,amount,takeFee) (#561)
- Transfer(sender,recipient,tTransferAmount) (#662)
- _tokenTransfer(from,to,amount,takeFee) (#561)
Reentrancy in Chick.transferFrom(address,address,uint256) (#494-498):
External calls:
- _transfer(sender,recipient,amount) (#495)
- swapTokenAddress.transfer(address(this).balance) (#570)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#496)
- _allowances[owner][spender] = amount (#534)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#535)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#496)
Apply the check-effects-interactions pattern.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#260) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#261)
Variable Chick._transferBothExcluded(address,address,uint256).rTransferAmount (#655) is too similar to Chick._transferBothExcluded(address,address,uint256).tTransferAmount (#655)
Variable Chick._transferStandard(address,address,uint256).rTransferAmount (#626) is too similar to Chick._getValues(uint256).tTransferAmount (#671)
Variable Chick._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#687) is too similar to Chick._transferToExcluded(address,address,uint256).tTransferAmount (#635)
Variable Chick._transferToExcluded(address,address,uint256).rTransferAmount (#635) is too similar to Chick._transferToExcluded(address,address,uint256).tTransferAmount (#635)
Variable Chick._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#687) is too similar to Chick._getTValues(uint256).tTransferAmount (#679)
Variable Chick._transferStandard(address,address,uint256).rTransferAmount (#626) is too similar to Chick._transferStandard(address,address,uint256).tTransferAmount (#626)
Variable Chick._transferBothExcluded(address,address,uint256).rTransferAmount (#655) is too similar to Chick._transferToExcluded(address,address,uint256).tTransferAmount (#635)
Variable Chick._transferBothExcluded(address,address,uint256).rTransferAmount (#655) is too similar to Chick._getTValues(uint256).tTransferAmount (#679)
Variable Chick._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#687) is too similar to Chick._getValues(uint256).tTransferAmount (#671)
Variable Chick._transferFromExcluded(address,address,uint256).rTransferAmount (#645) is too similar to Chick._transferFromExcluded(address,address,uint256).tTransferAmount (#645)
Variable Chick._transferFromExcluded(address,address,uint256).rTransferAmount (#645) is too similar to Chick._transferBothExcluded(address,address,uint256).tTransferAmount (#655)
Variable Chick._transferBothExcluded(address,address,uint256).rTransferAmount (#655) is too similar to Chick._getValues(uint256).tTransferAmount (#671)
Variable Chick._getValues(uint256).rTransferAmount (#672) is too similar to Chick._transferToExcluded(address,address,uint256).tTransferAmount (#635)
Variable Chick._transferStandard(address,address,uint256).rTransferAmount (#626) is too similar to Chick._transferFromExcluded(address,address,uint256).tTransferAmount (#645)
Variable Chick._getValues(uint256).rTransferAmount (#672) is too similar to Chick._getTValues(uint256).tTransferAmount (#679)
Variable Chick._transferFromExcluded(address,address,uint256).rTransferAmount (#645) is too similar to Chick._transferToExcluded(address,address,uint256).tTransferAmount (#635)
Variable Chick._transferFromExcluded(address,address,uint256).rTransferAmount (#645) is too similar to Chick._getTValues(uint256).tTransferAmount (#679)
Variable Chick._transferStandard(address,address,uint256).rTransferAmount (#626) is too similar to Chick._transferBothExcluded(address,address,uint256).tTransferAmount (#655)
Variable Chick._transferStandard(address,address,uint256).rTransferAmount (#626) is too similar to Chick._transferToExcluded(address,address,uint256).tTransferAmount (#635)
Variable Chick._transferFromExcluded(address,address,uint256).rTransferAmount (#645) is too similar to Chick._getValues(uint256).tTransferAmount (#671)
Variable Chick._transferStandard(address,address,uint256).rTransferAmount (#626) is too similar to Chick._getTValues(uint256).tTransferAmount (#679)
Variable Chick._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#687) is too similar to Chick._transferFromExcluded(address,address,uint256).tTransferAmount (#645)
Variable Chick._transferBothExcluded(address,address,uint256).rTransferAmount (#655) is too similar to Chick._transferFromExcluded(address,address,uint256).tTransferAmount (#645)
Variable Chick._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#687) is too similar to Chick._transferBothExcluded(address,address,uint256).tTransferAmount (#655)
Variable Chick._transferToExcluded(address,address,uint256).rTransferAmount (#635) is too similar to Chick._getValues(uint256).tTransferAmount (#671)
Variable Chick._transferToExcluded(address,address,uint256).rTransferAmount (#635) is too similar to Chick._transferStandard(address,address,uint256).tTransferAmount (#626)
Variable Chick._getValues(uint256).rTransferAmount (#672) is too similar to Chick._transferBothExcluded(address,address,uint256).tTransferAmount (#655)
Variable Chick._transferToExcluded(address,address,uint256).rTransferAmount (#635) is too similar to Chick._transferBothExcluded(address,address,uint256).tTransferAmount (#655)
Variable Chick._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#687) is too similar to Chick._transferStandard(address,address,uint256).tTransferAmount (#626)
Variable Chick._getValues(uint256).rTransferAmount (#672) is too similar to Chick._transferFromExcluded(address,address,uint256).tTransferAmount (#645)
Variable Chick._getValues(uint256).rTransferAmount (#672) is too similar to Chick._getValues(uint256).tTransferAmount (#671)
Variable Chick._transferFromExcluded(address,address,uint256).rTransferAmount (#645) is too similar to Chick._transferStandard(address,address,uint256).tTransferAmount (#626)
Variable Chick._getValues(uint256).rTransferAmount (#672) is too similar to Chick._transferStandard(address,address,uint256).tTransferAmount (#626)
Variable Chick._transferToExcluded(address,address,uint256).rTransferAmount (#635) is too similar to Chick._transferFromExcluded(address,address,uint256).tTransferAmount (#645)
Variable Chick._transferToExcluded(address,address,uint256).rTransferAmount (#635) is too similar to Chick._getTValues(uint256).tTransferAmount (#679)
Variable Chick._transferBothExcluded(address,address,uint256).rTransferAmount (#655) is too similar to Chick._transferStandard(address,address,uint256).tTransferAmount (#626)
Prevent variables from having similar names.
Additional information: link
Chick.slitherConstructorVariables() (#392-779) uses literals with too many digits:
- deadAddress = 0x000000000000000000000000000000000000dEaD (#397)
Chick.slitherConstructorVariables() (#392-779) uses literals with too many digits:
- _tTotal = 1000000000000 * 10 ** 9 (#407)
Chick.slitherConstructorVariables() (#392-779) uses literals with too many digits:
- _maxWalletTotal = 1000000000000 * 10 ** 9 (#409)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Ownable._previousOwner (#149) is never used in Chick (#392-779)
Ownable._lockTime (#150) is never used in Chick (#392-779)
Chick.deadAddress (#397) is never used in Chick (#392-779)
Remove unused state variables.
Additional information: link
Chick._decimals (#414) should be constant
Chick._name (#412) should be constant
Chick._symbol (#413) should be constant
Chick._tTotal (#407) should be constant
Ownable._lockTime (#150) should be constant
Ownable._previousOwner (#149) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#169-172)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#174-178)
name() should be declared external:
- Chick.name() (#460-462)
symbol() should be declared external:
- Chick.symbol() (#464-466)
decimals() should be declared external:
- Chick.decimals() (#468-470)
totalSupply() should be declared external:
- Chick.totalSupply() (#471-473)
transfer(address,uint256) should be declared external:
- Chick.transfer(address,uint256) (#480-483)
allowance(address,address) should be declared external:
- Chick.allowance(address,address) (#485-487)
approve(address,uint256) should be declared external:
- Chick.approve(address,uint256) (#489-492)
transferFrom(address,address,uint256) should be declared external:
- Chick.transferFrom(address,address,uint256) (#494-498)
excludeFromReward(address) should be declared external:
- Chick.excludeFromReward(address) (#507-515)
setMaxWalletAmount(uint256) should be declared external:
- Chick.setMaxWalletAmount(uint256) (#743-745)
excludeFromFee(address) should be declared external:
- Chick.excludeFromFee(address) (#747-749)
includeInFee(address) should be declared external:
- Chick.includeInFee(address) (#751-753)
isExcludedFromFee(address) should be declared external:
- Chick.isExcludedFromFee(address) (#769-771)
isExcludedFromReward(address) should be declared external:
- Chick.isExcludedFromReward(address) (#772-774)
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 Twitter account
Unable to find Blog account (Reddit or Medium)
Unable to find Youtube account
Unable to find Discord account