Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Chameleon.swapAndLiquify(uint256) (#795-817) sends eth to arbitrary user
Dangerous calls:
- marketingWallet.transfer(newBalance.div(allFee).mul(_marketingFee)) (#814)
- BuyBackWallet.transfer(newBalance.div(allFee).mul(_BuyBackFee)) (#816)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in Chameleon._transfer(address,address,uint256) (#776-791):
External calls:
- swapAndLiquify(contractTokenBalance) (#788)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#833)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#827)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#788)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#833)
- marketingWallet.transfer(newBalance.div(allFee).mul(_marketingFee)) (#814)
- BuyBackWallet.transfer(newBalance.div(allFee).mul(_BuyBackFee)) (#816)
State variables written after the call(s):
- _tokenTransfer(from,to,amount) (#790)
- _BuyBackFee = _previousBuyBackFee (#521)
- _BuyBackFee = 0 (#513)
- _tokenTransfer(from,to,amount) (#790)
- _liquidityFee = _previousLiquidityFee (#519)
- _liquidityFee = 0 (#511)
- _tokenTransfer(from,to,amount) (#790)
- _marketingFee = _previousMarketingFee (#520)
- _marketingFee = 0 (#512)
- _tokenTransfer(from,to,amount) (#790)
- _rOwned[marketingWallet] = _rOwned[marketingWallet].add(rFee) (#700)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#749)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#881)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#891)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#903)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#882)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#686)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#893)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#904)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#688)
- _tokenTransfer(from,to,amount) (#790)
- _tOwned[marketingWallet] = _tOwned[marketingWallet].add(tFee) (#701)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#751)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#685)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#902)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#892)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#687)
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.
Chameleon.swapAndLiquify(uint256) (#795-817) performs a multiplication on the result of a division:
-halfLiquidityTokens = contractTokenBalance.div(allFee).mul(_liquidityFee).div(2) (#799)
Chameleon.swapAndLiquify(uint256) (#795-817) performs a multiplication on the result of a division:
-ethForLiquidity = newBalance.div(allFee).mul(_liquidityFee).div(2) (#807)
Chameleon.swapAndLiquify(uint256) (#795-817) performs a multiplication on the result of a division:
-marketingWallet.transfer(newBalance.div(allFee).mul(_marketingFee)) (#814)
Chameleon.swapAndLiquify(uint256) (#795-817) performs a multiplication on the result of a division:
-BuyBackWallet.transfer(newBalance.div(allFee).mul(_BuyBackFee)) (#816)
Consider ordering multiplication before division.
Additional information: link
Chameleon.addLiquidity(uint256,uint256) (#830-834) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#833)
Ensure that all the return values of the function calls are used.
Additional information: link
Chameleon.allowance(address,address).owner (#597) shadows:
- Ownable.owner() (#152-154) (function)
Chameleon._approve(address,address,uint256).owner (#768) shadows:
- Ownable.owner() (#152-154) (function)
Rename the local variables that shadow another component.
Additional information: link
Chameleon.setAllBuyFees(uint256,uint256,uint256,uint256) (#525-538) should emit an event for:
- _taxFee = taxFee (#527)
- _previousTaxFee = taxFee (#528)
- _liquidityFee = liquidityFee (#529)
- _previousLiquidityFee = liquidityFee (#530)
- _marketingFee = marketingFee (#531)
- _previousMarketingFee = marketingFee (#532)
- _BuyBackFee = BuyBackFee (#533)
- _previousBuyBackFee = BuyBackFee (#534)
Emit an event for critical parameter changes.
Additional information: link
Chameleon.setmarketingWallet(address).newWallet (#927) lacks a zero-check on :
- marketingWallet = address(newWallet) (#929)
Chameleon.setBuyBackWallet(address).newWallet (#932) lacks a zero-check on :
- BuyBackWallet = address(newWallet) (#934)
Check that the address is not zero.
Additional information: link
Reentrancy in Chameleon._transfer(address,address,uint256) (#776-791):
External calls:
- swapAndLiquify(contractTokenBalance) (#788)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#833)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#827)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#788)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#833)
- marketingWallet.transfer(newBalance.div(allFee).mul(_marketingFee)) (#814)
- BuyBackWallet.transfer(newBalance.div(allFee).mul(_BuyBackFee)) (#816)
State variables written after the call(s):
- _tokenTransfer(from,to,amount) (#790)
- _taxFee = 0 (#510)
- _taxFee = _previousTaxFee (#518)
Reentrancy in Chameleon.constructor() (#487-506):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#491-492)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#494)
- _isExcludedFromFee[address(this)] = true (#495)
- _isExcludedFromWhale[owner()] = true (#498)
- _isExcludedFromWhale[address(this)] = true (#499)
- _isExcludedFromWhale[address(0)] = true (#500)
- _isExcludedFromWhale[marketingWallet] = true (#501)
- _isExcludedFromWhale[BuyBackWallet] = true (#502)
- _isExcludedFromWhale[uniswapV2Pair] = true (#503)
- uniswapV2Router = _uniswapV2Router (#493)
Reentrancy in Chameleon.swapAndLiquify(uint256) (#795-817):
External calls:
- swapTokensForEth(swapableTokens) (#804)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#827)
- addLiquidity(halfLiquidityTokens,ethForLiquidity) (#810)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#833)
External calls sending eth:
- addLiquidity(halfLiquidityTokens,ethForLiquidity) (#810)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#833)
State variables written after the call(s):
- addLiquidity(halfLiquidityTokens,ethForLiquidity) (#810)
- _allowances[owner][spender] = amount (#772)
Reentrancy in Chameleon.transferFrom(address,address,uint256) (#608-612):
External calls:
- _transfer(sender,recipient,amount) (#609)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#833)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#827)
External calls sending eth:
- _transfer(sender,recipient,amount) (#609)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#833)
- marketingWallet.transfer(newBalance.div(allFee).mul(_marketingFee)) (#814)
- BuyBackWallet.transfer(newBalance.div(allFee).mul(_BuyBackFee)) (#816)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#610)
- _allowances[owner][spender] = amount (#772)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in Chameleon._transfer(address,address,uint256) (#776-791):
External calls:
- swapAndLiquify(contractTokenBalance) (#788)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#833)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#827)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#788)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#833)
- marketingWallet.transfer(newBalance.div(allFee).mul(_marketingFee)) (#814)
- BuyBackWallet.transfer(newBalance.div(allFee).mul(_BuyBackFee)) (#816)
Event emitted after the call(s):
- Transfer(address(this),marketingWallet,tFee) (#702)
- _tokenTransfer(from,to,amount) (#790)
- Transfer(sender,recipient,tTransferAmount) (#885)
- _tokenTransfer(from,to,amount) (#790)
- Transfer(sender,recipient,tTransferAmount) (#907)
- _tokenTransfer(from,to,amount) (#790)
- Transfer(sender,recipient,tTransferAmount) (#896)
- _tokenTransfer(from,to,amount) (#790)
- Transfer(sender,recipient,tTransferAmount) (#691)
- _tokenTransfer(from,to,amount) (#790)
Reentrancy in Chameleon.constructor() (#487-506):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#491-492)
Event emitted after the call(s):
- Transfer(address(0),_msgSender(),_tTotal) (#505)
Reentrancy in Chameleon.swapAndLiquify(uint256) (#795-817):
External calls:
- swapTokensForEth(swapableTokens) (#804)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#827)
- addLiquidity(halfLiquidityTokens,ethForLiquidity) (#810)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#833)
External calls sending eth:
- addLiquidity(halfLiquidityTokens,ethForLiquidity) (#810)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#833)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#773)
- addLiquidity(halfLiquidityTokens,ethForLiquidity) (#810)
- SwapAndLiquify(halfLiquidityTokens,ethForLiquidity,halfLiquidityTokens) (#811)
Reentrancy in Chameleon.swapETHForTokens(uint256) (#955-967):
External calls:
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadWallet,block.timestamp.add(300)) (#962-965)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (#966)
Reentrancy in Chameleon.transferFrom(address,address,uint256) (#608-612):
External calls:
- _transfer(sender,recipient,amount) (#609)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#833)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#827)
External calls sending eth:
- _transfer(sender,recipient,amount) (#609)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#833)
- marketingWallet.transfer(newBalance.div(allFee).mul(_marketingFee)) (#814)
- BuyBackWallet.transfer(newBalance.div(allFee).mul(_BuyBackFee)) (#816)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#773)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#610)
Apply the check-effects-interactions pattern.
Additional information: link
Ownable.unlock() (#187-192) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp < _lockTime,Contract is locked until 7 days) (#189)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#83-88) uses assembly
- INLINE ASM (#86)
Address._functionCallWithValue(address,bytes,uint256,string) (#118-135) uses assembly
- INLINE ASM (#127-130)
Do not use evm assembly.
Additional information: link
Chameleon.includeInReward(address) (#670-681) has costly operations inside a loop:
- _excluded.pop() (#677)
Use a local variable to hold the loop computation result.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#118-135) is never used and should be removed
Address.functionCall(address,bytes) (#98-100) is never used and should be removed
Address.functionCall(address,bytes,string) (#103-105) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#108-110) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#113-116) is never used and should be removed
Address.isContract(address) (#83-88) is never used and should be removed
Address.sendValue(address,uint256) (#91-95) is never used and should be removed
Chameleon._beforeTokenTransfer(address,address,uint256) (#950-951) is never used and should be removed
Chameleon.swapETHForTokens(uint256) (#955-967) is never used and should be removed
Context._msgData() (#74-77) is never used and should be removed
SafeMath.mod(uint256,uint256) (#59-61) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#63-66) is never used and should be removed
Remove unused functions.
Additional information: link
Chameleon._rTotal (#431) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
Chameleon._previousTaxFee (#439) is set pre-construction with a non-constant function or state variable:
- _taxFee
Chameleon._previousLiquidityFee (#442) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
Chameleon._previousMarketingFee (#445) is set pre-construction with a non-constant function or state variable:
- _marketingFee
Chameleon._previousBuyBackFee (#449) is set pre-construction with a non-constant function or state variable:
- _BuyBackFee
Chameleon.totalBuyFee (#451) is set pre-construction with a non-constant function or state variable:
- _taxFee.add(_liquidityFee).add(_marketingFee).add(_BuyBackFee)
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.11 (#3) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
solc-0.8.11 is not recommended for deployment
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) (#91-95):
- (success) = recipient.call{value: amount}() (#93)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#118-135):
- (success,returndata) = target.call{value: weiValue}(data) (#121)
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() (#229) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#230) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#246) is not in mixedCase
Function IUniswapV2Router01.WETH() (#267) is not in mixedCase
Event ChameleonswapLog(address,uint256) (#407) is not in CapWords
Parameter Chameleon.setAllBuyFees(uint256,uint256,uint256,uint256).BuyBackFee (#525) is not in mixedCase
Parameter Chameleon.calculateTaxFee(uint256)._amount (#754) is not in mixedCase
Parameter Chameleon.calculateLiquidityFee(uint256)._amount (#758) is not in mixedCase
Parameter Chameleon.setExcludedFromWhale(address,bool)._enabled (#922) is not in mixedCase
Parameter Chameleon.setSwapAndLiquifyEnabled(bool)._enabled (#938) is not in mixedCase
Variable Chameleon._rewarded (#415) is not in mixedCase
Variable Chameleon._taxFee (#438) is not in mixedCase
Variable Chameleon._liquidityFee (#441) is not in mixedCase
Variable Chameleon._marketingFee (#444) is not in mixedCase
Variable Chameleon._BuyBackFee (#448) is not in mixedCase
Variable Chameleon.BuyBackWallet (#457) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#75)" inContext (#69-78)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Reentrancy in Chameleon._transfer(address,address,uint256) (#776-791):
External calls:
- swapAndLiquify(contractTokenBalance) (#788)
- marketingWallet.transfer(newBalance.div(allFee).mul(_marketingFee)) (#814)
- BuyBackWallet.transfer(newBalance.div(allFee).mul(_BuyBackFee)) (#816)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#788)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#833)
- marketingWallet.transfer(newBalance.div(allFee).mul(_marketingFee)) (#814)
- BuyBackWallet.transfer(newBalance.div(allFee).mul(_BuyBackFee)) (#816)
State variables written after the call(s):
- _tokenTransfer(from,to,amount) (#790)
- _BuyBackFee = _previousBuyBackFee (#521)
- _BuyBackFee = 0 (#513)
- _tokenTransfer(from,to,amount) (#790)
- _liquidityFee = _previousLiquidityFee (#519)
- _liquidityFee = 0 (#511)
- _tokenTransfer(from,to,amount) (#790)
- _marketingFee = _previousMarketingFee (#520)
- _marketingFee = 0 (#512)
- _tokenTransfer(from,to,amount) (#790)
- _rOwned[marketingWallet] = _rOwned[marketingWallet].add(rFee) (#700)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#749)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#881)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#891)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#903)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#882)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#686)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#893)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#904)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#688)
- _tokenTransfer(from,to,amount) (#790)
- _tOwned[marketingWallet] = _tOwned[marketingWallet].add(tFee) (#701)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#751)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#685)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#902)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#892)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#687)
- _tokenTransfer(from,to,amount) (#790)
- _taxFee = 0 (#510)
- _taxFee = _previousTaxFee (#518)
Event emitted after the call(s):
- Transfer(address(this),marketingWallet,tFee) (#702)
- _tokenTransfer(from,to,amount) (#790)
- Transfer(sender,recipient,tTransferAmount) (#885)
- _tokenTransfer(from,to,amount) (#790)
- Transfer(sender,recipient,tTransferAmount) (#907)
- _tokenTransfer(from,to,amount) (#790)
- Transfer(sender,recipient,tTransferAmount) (#896)
- _tokenTransfer(from,to,amount) (#790)
- Transfer(sender,recipient,tTransferAmount) (#691)
- _tokenTransfer(from,to,amount) (#790)
Reentrancy in Chameleon.transferFrom(address,address,uint256) (#608-612):
External calls:
- _transfer(sender,recipient,amount) (#609)
- marketingWallet.transfer(newBalance.div(allFee).mul(_marketingFee)) (#814)
- BuyBackWallet.transfer(newBalance.div(allFee).mul(_BuyBackFee)) (#816)
External calls sending eth:
- _transfer(sender,recipient,amount) (#609)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#833)
- marketingWallet.transfer(newBalance.div(allFee).mul(_marketingFee)) (#814)
- BuyBackWallet.transfer(newBalance.div(allFee).mul(_BuyBackFee)) (#816)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#610)
- _allowances[owner][spender] = amount (#772)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#773)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#610)
Apply the check-effects-interactions pattern.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#272) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#273)
Variable Chameleon._transferStandard(address,address,uint256).rTransferAmount (#880) is too similar to Chameleon._getValues(uint256).tTransferAmount (#708)
Variable Chameleon._transferToExcluded(address,address,uint256).rTransferAmount (#890) is too similar to Chameleon._getValues(uint256).tTransferAmount (#708)
Variable Chameleon._getValues(uint256).rTransferAmount (#709) is too similar to Chameleon._getValues(uint256).tTransferAmount (#708)
Variable Chameleon.reflectionFromToken(uint256,bool).rTransferAmount (#647) is too similar to Chameleon._getValues(uint256).tTransferAmount (#708)
Variable Chameleon._transferFromExcluded(address,address,uint256).rTransferAmount (#901) is too similar to Chameleon._getValues(uint256).tTransferAmount (#708)
Variable Chameleon._transferFromExcluded(address,address,uint256).rTransferAmount (#901) is too similar to Chameleon._transferFromExcluded(address,address,uint256).tTransferAmount (#901)
Variable Chameleon.reflectionFromToken(uint256,bool).rTransferAmount (#647) is too similar to Chameleon._transferBothExcluded(address,address,uint256).tTransferAmount (#684)
Variable Chameleon._transferFromExcluded(address,address,uint256).rTransferAmount (#901) is too similar to Chameleon._transferBothExcluded(address,address,uint256).tTransferAmount (#684)
Variable Chameleon._transferStandard(address,address,uint256).rTransferAmount (#880) is too similar to Chameleon._transferStandard(address,address,uint256).tTransferAmount (#880)
Variable Chameleon._getValues(uint256).rTransferAmount (#709) is too similar to Chameleon._getTValues(uint256).tTransferAmount (#717)
Variable Chameleon.reflectionFromToken(uint256,bool).rTransferAmount (#647) is too similar to Chameleon._getTValues(uint256).tTransferAmount (#717)
Variable Chameleon._transferFromExcluded(address,address,uint256).rTransferAmount (#901) is too similar to Chameleon._getTValues(uint256).tTransferAmount (#717)
Variable Chameleon._transferToExcluded(address,address,uint256).rTransferAmount (#890) is too similar to Chameleon._transferToExcluded(address,address,uint256).tTransferAmount (#890)
Variable Chameleon._getValues(uint256).rTransferAmount (#709) is too similar to Chameleon._transferToExcluded(address,address,uint256).tTransferAmount (#890)
Variable Chameleon._transferToExcluded(address,address,uint256).rTransferAmount (#890) is too similar to Chameleon._transferStandard(address,address,uint256).tTransferAmount (#880)
Variable Chameleon.reflectionFromToken(uint256,bool).rTransferAmount (#647) is too similar to Chameleon._transferToExcluded(address,address,uint256).tTransferAmount (#890)
Variable Chameleon._getValues(uint256).rTransferAmount (#709) is too similar to Chameleon._transferStandard(address,address,uint256).tTransferAmount (#880)
Variable Chameleon.reflectionFromToken(uint256,bool).rTransferAmount (#647) is too similar to Chameleon._transferStandard(address,address,uint256).tTransferAmount (#880)
Variable Chameleon._transferFromExcluded(address,address,uint256).rTransferAmount (#901) is too similar to Chameleon._transferToExcluded(address,address,uint256).tTransferAmount (#890)
Variable Chameleon._transferFromExcluded(address,address,uint256).rTransferAmount (#901) is too similar to Chameleon._transferStandard(address,address,uint256).tTransferAmount (#880)
Variable Chameleon._transferStandard(address,address,uint256).rTransferAmount (#880) is too similar to Chameleon._transferToExcluded(address,address,uint256).tTransferAmount (#890)
Variable Chameleon._transferBothExcluded(address,address,uint256).rTransferAmount (#684) is too similar to Chameleon._transferBothExcluded(address,address,uint256).tTransferAmount (#684)
Variable Chameleon._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#725) is too similar to Chameleon._transferToExcluded(address,address,uint256).tTransferAmount (#890)
Variable Chameleon._transferBothExcluded(address,address,uint256).rTransferAmount (#684) is too similar to Chameleon._getTValues(uint256).tTransferAmount (#717)
Variable Chameleon._transferToExcluded(address,address,uint256).rTransferAmount (#890) is too similar to Chameleon._transferFromExcluded(address,address,uint256).tTransferAmount (#901)
Variable Chameleon._transferStandard(address,address,uint256).rTransferAmount (#880) is too similar to Chameleon._transferFromExcluded(address,address,uint256).tTransferAmount (#901)
Variable Chameleon._transferBothExcluded(address,address,uint256).rTransferAmount (#684) is too similar to Chameleon._transferStandard(address,address,uint256).tTransferAmount (#880)
Variable Chameleon._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#725) is too similar to Chameleon._transferFromExcluded(address,address,uint256).tTransferAmount (#901)
Variable Chameleon._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#725) is too similar to Chameleon._getValues(uint256).tTransferAmount (#708)
Variable Chameleon._getValues(uint256).rTransferAmount (#709) is too similar to Chameleon._transferFromExcluded(address,address,uint256).tTransferAmount (#901)
Variable Chameleon._transferToExcluded(address,address,uint256).rTransferAmount (#890) is too similar to Chameleon._transferBothExcluded(address,address,uint256).tTransferAmount (#684)
Variable Chameleon._transferToExcluded(address,address,uint256).rTransferAmount (#890) is too similar to Chameleon._getTValues(uint256).tTransferAmount (#717)
Variable Chameleon._transferBothExcluded(address,address,uint256).rTransferAmount (#684) is too similar to Chameleon._transferToExcluded(address,address,uint256).tTransferAmount (#890)
Variable Chameleon._transferStandard(address,address,uint256).rTransferAmount (#880) is too similar to Chameleon._transferBothExcluded(address,address,uint256).tTransferAmount (#684)
Variable Chameleon._transferStandard(address,address,uint256).rTransferAmount (#880) is too similar to Chameleon._getTValues(uint256).tTransferAmount (#717)
Variable Chameleon._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#725) is too similar to Chameleon._transferBothExcluded(address,address,uint256).tTransferAmount (#684)
Variable Chameleon.reflectionFromToken(uint256,bool).rTransferAmount (#647) is too similar to Chameleon._transferFromExcluded(address,address,uint256).tTransferAmount (#901)
Variable Chameleon._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#725) is too similar to Chameleon._getTValues(uint256).tTransferAmount (#717)
Variable Chameleon._transferBothExcluded(address,address,uint256).rTransferAmount (#684) is too similar to Chameleon._transferFromExcluded(address,address,uint256).tTransferAmount (#901)
Variable Chameleon._getValues(uint256).rTransferAmount (#709) is too similar to Chameleon._transferBothExcluded(address,address,uint256).tTransferAmount (#684)
Variable Chameleon._transferBothExcluded(address,address,uint256).rTransferAmount (#684) is too similar to Chameleon._getValues(uint256).tTransferAmount (#708)
Variable Chameleon._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#725) is too similar to Chameleon._transferStandard(address,address,uint256).tTransferAmount (#880)
Prevent variables from having similar names.
Additional information: link
Chameleon.slitherConstructorVariables() (#402-972) uses literals with too many digits:
- deadWallet = 0x000000000000000000000000000000000000dEaD (#458)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Chameleon._decimals (#436) should be constant
Chameleon._name (#434) should be constant
Chameleon._symbol (#435) should be constant
Chameleon._tTotal (#430) should be constant
Chameleon.deadWallet (#458) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#162-165)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#168-172)
geUnlockTime() should be declared external:
- Ownable.geUnlockTime() (#174-176)
lock(uint256) should be declared external:
- Ownable.lock(uint256) (#179-184)
unlock() should be declared external:
- Ownable.unlock() (#187-192)
rewardedUpdate(address,bool) should be declared external:
- Chameleon.rewardedUpdate(address,bool) (#421-424)
setAllBuyFees(uint256,uint256,uint256,uint256) should be declared external:
- Chameleon.setAllBuyFees(uint256,uint256,uint256,uint256) (#525-538)
name() should be declared external:
- Chameleon.name() (#571-573)
symbol() should be declared external:
- Chameleon.symbol() (#575-577)
decimals() should be declared external:
- Chameleon.decimals() (#579-581)
totalSupply() should be declared external:
- Chameleon.totalSupply() (#583-585)
transfer(address,uint256) should be declared external:
- Chameleon.transfer(address,uint256) (#592-595)
allowance(address,address) should be declared external:
- Chameleon.allowance(address,address) (#597-599)
approve(address,uint256) should be declared external:
- Chameleon.approve(address,uint256) (#603-606)
transferFrom(address,address,uint256) should be declared external:
- Chameleon.transferFrom(address,address,uint256) (#608-612)
increaseAllowance(address,uint256) should be declared external:
- Chameleon.increaseAllowance(address,uint256) (#614-617)
decreaseAllowance(address,uint256) should be declared external:
- Chameleon.decreaseAllowance(address,uint256) (#619-622)
isExcludedFromReward(address) should be declared external:
- Chameleon.isExcludedFromReward(address) (#624-626)
totalFees() should be declared external:
- Chameleon.totalFees() (#628-630)
deliver(uint256) should be declared external:
- Chameleon.deliver(uint256) (#632-639)
reflectionFromToken(uint256,bool) should be declared external:
- Chameleon.reflectionFromToken(uint256,bool) (#641-650)
excludeFromReward(address) should be declared external:
- Chameleon.excludeFromReward(address) (#659-667)
isExcludedFromFee(address) should be declared external:
- Chameleon.isExcludedFromFee(address) (#764-766)
manualBurn(uint256) should be declared external:
- Chameleon.manualBurn(uint256) (#871-877)
excludeFromFee(address) should be declared external:
- Chameleon.excludeFromFee(address) (#910-913)
includeInFee(address) should be declared external:
- Chameleon.includeInFee(address) (#916-919)
setExcludedFromWhale(address,bool) should be declared external:
- Chameleon.setExcludedFromWhale(address,bool) (#922-925)
setNumTokensSellToAddToLiquidity(uint256) should be declared external:
- Chameleon.setNumTokensSellToAddToLiquidity(uint256) (#943-947)
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