ECOIN is a decentralized & deflationary BEP-20 token that aims to be an online payment platform replacing conventional fiat currency through our integrated debit card.
Reentrancy in ECOIN._transfer(address,address,uint256) (#1115-1162):
External calls:
- swapAndLiquify(contractTokenBalance) (#1149)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1216-1223)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1199-1205)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1149)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1216-1223)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1161)
- _rOwned[_charityWalletAddress] = _rOwned[_charityWalletAddress].add(rCharity) (#1058)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#1050)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1257)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1247)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1248)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#968)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1269)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1270)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1259)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#970)
- _tokenTransfer(from,to,amount,takeFee) (#1161)
- _rTotal = _rTotal.sub(rFee) (#1002)
- _tokenTransfer(from,to,amount,takeFee) (#1161)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#1052)
- _tOwned[_charityWalletAddress] = _tOwned[_charityWalletAddress].add(tCharity) (#1060)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1268)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#967)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1258)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#969)
Apply the check-effects-interactions pattern.
Additional information: link
ECOIN._isExcluded (#806) is never initialized. It is used in:
- ECOIN.balanceOf(address) (#896-899)
- ECOIN.deliver(uint256) (#937-944)
- ECOIN._takeLiquidity(uint256) (#1047-1053)
- ECOIN._takeCharity(uint256) (#1055-1061)
- ECOIN._tokenTransfer(address,address,uint256,bool) (#1227-1243)
ECOIN._excluded (#807) is never initialized. It is used in:
- ECOIN._getCurrentSupply() (#1034-1044)
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
Contract ownership is not renounced (belongs to a wallet)
Contract name (E-COIN Finance) contains non-alphanumeric characters.
Not a direct threat, but may indicate unreliable intentions of developer. Non-alphanumeric chars (,.;!#*&") are extremely rare among low risk tokens.
Low level call in Address.sendValue(address,uint256) (#380-386):
- (success) = recipient.call{value: amount}() (#384)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (#441-448):
- (success,returndata) = target.call{value: value}(data) (#446)
Low level call in Address.functionStaticCall(address,bytes,string) (#466-472):
- (success,returndata) = target.staticcall(data) (#470)
Low level call in Address.functionDelegateCall(address,bytes,string) (#490-496):
- (success,returndata) = target.delegatecall(data) (#494)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
ECOIN.setMaxTxPercent(uint256) (#977-981) should emit an event for:
- _maxTxAmount = _tTotal.mul(maxTxPercent).div(10 ** 2) (#978-980)
Emit an event for critical parameter changes.
Additional information: link
ECOIN.addLiquidity(uint256,uint256) (#1211-1224) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1216-1223)
Ensure that all the return values of the function calls are used.
Additional information: link
ECOIN.allowance(address,address).owner (#906) shadows:
- Ownable.owner() (#550-552) (function)
ECOIN._approve(address,address,uint256).owner (#1107) shadows:
- Ownable.owner() (#550-552) (function)
Rename the local variables that shadow another component.
Additional information: link
ECOIN.setCharityAddress(address).getCharityAddress (#983) lacks a zero-check on :
- _charityWalletAddress = getCharityAddress (#984)
Check that the address is not zero.
Additional information: link
Reentrancy in ECOIN._transfer(address,address,uint256) (#1115-1162):
External calls:
- swapAndLiquify(contractTokenBalance) (#1149)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1216-1223)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1199-1205)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1149)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1216-1223)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1161)
- _charityFee = _previousCharityFee (#1097)
- _charityFee = 0 (#1090)
- _tokenTransfer(from,to,amount,takeFee) (#1161)
- _liquidityFee = _previousLiquidityFee (#1098)
- _liquidityFee = 0 (#1091)
- _tokenTransfer(from,to,amount,takeFee) (#1161)
- _previousCharityFee = _charityFee (#1086)
- _tokenTransfer(from,to,amount,takeFee) (#1161)
- _previousLiquidityFee = _liquidityFee (#1087)
- _tokenTransfer(from,to,amount,takeFee) (#1161)
- _previousTaxFee = _taxFee (#1085)
- _tokenTransfer(from,to,amount,takeFee) (#1161)
- _tFeeTotal = _tFeeTotal.add(tFee) (#1003)
- _tokenTransfer(from,to,amount,takeFee) (#1161)
- _taxFee = _previousTaxFee (#1096)
- _taxFee = 0 (#1089)
Reentrancy in ECOIN.constructor() (#852-874):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#862-863)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#869)
- _isExcludedFromFee[address(this)] = true (#870)
- _isExcludedFromFee[_charityWalletAddress] = true (#871)
- uniswapV2Router = _uniswapV2Router (#866)
Reentrancy in ECOIN.swapAndLiquify(uint256) (#1164-1185):
External calls:
- swapTokensForEth(half) (#1176)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1199-1205)
- addLiquidity(otherHalf,newBalance) (#1182)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1216-1223)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1182)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1216-1223)
State variables written after the call(s):
- addLiquidity(otherHalf,newBalance) (#1182)
- _allowances[owner][spender] = amount (#1111)
Reentrancy in ECOIN.transferFrom(address,address,uint256) (#915-919):
External calls:
- _transfer(sender,recipient,amount) (#916)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1216-1223)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1199-1205)
External calls sending eth:
- _transfer(sender,recipient,amount) (#916)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1216-1223)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#917)
- _allowances[owner][spender] = amount (#1111)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in ECOIN._transfer(address,address,uint256) (#1115-1162):
External calls:
- swapAndLiquify(contractTokenBalance) (#1149)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1216-1223)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1199-1205)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1149)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1216-1223)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#1252)
- _tokenTransfer(from,to,amount,takeFee) (#1161)
- Transfer(sender,recipient,tTransferAmount) (#1263)
- _tokenTransfer(from,to,amount,takeFee) (#1161)
- Transfer(sender,recipient,tTransferAmount) (#1274)
- _tokenTransfer(from,to,amount,takeFee) (#1161)
- Transfer(sender,recipient,tTransferAmount) (#974)
- _tokenTransfer(from,to,amount,takeFee) (#1161)
Reentrancy in ECOIN.constructor() (#852-874):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#862-863)
Event emitted after the call(s):
- Transfer(address(0),owner(),_tTotal) (#873)
Reentrancy in ECOIN.swapAndLiquify(uint256) (#1164-1185):
External calls:
- swapTokensForEth(half) (#1176)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1199-1205)
- addLiquidity(otherHalf,newBalance) (#1182)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1216-1223)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1182)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1216-1223)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1112)
- addLiquidity(otherHalf,newBalance) (#1182)
- SwapAndLiquify(half,newBalance,otherHalf) (#1184)
Reentrancy in ECOIN.transferFrom(address,address,uint256) (#915-919):
External calls:
- _transfer(sender,recipient,amount) (#916)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1216-1223)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1199-1205)
External calls sending eth:
- _transfer(sender,recipient,amount) (#916)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1216-1223)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1112)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#917)
Apply the check-effects-interactions pattern.
Additional information: link
Address.isContract(address) (#353-362) uses assembly
- INLINE ASM (#360)
Address._verifyCallResult(bool,bytes,string) (#498-515) uses assembly
- INLINE ASM (#507-510)
Do not use evm assembly.
Additional information: link
Address._verifyCallResult(bool,bytes,string) (#498-515) is never used and should be removed
Address.functionCall(address,bytes) (#406-408) is never used and should be removed
Address.functionCall(address,bytes,string) (#416-418) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#431-433) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#441-448) is never used and should be removed
Address.functionDelegateCall(address,bytes) (#480-482) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (#490-496) is never used and should be removed
Address.functionStaticCall(address,bytes) (#456-458) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (#466-472) is never used and should be removed
Address.isContract(address) (#353-362) is never used and should be removed
Address.sendValue(address,uint256) (#380-386) is never used and should be removed
Context._msgData() (#326-329) is never used and should be removed
ECOIN.isExcludedFromFee(address) (#1102-1104) is never used and should be removed
ECOIN.reflectionFromToken(uint256,bool) (#947-956) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#281-286) is never used and should be removed
SafeMath.mod(uint256,uint256) (#241-243) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#303-308) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (#112-118) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (#154-159) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (#166-171) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (#137-147) is never used and should be removed
SafeMath.trySub(uint256,uint256) (#125-130) is never used and should be removed
Remove unused functions.
Additional information: link
ECOIN._previousTaxFee (#821) is set pre-construction with a non-constant function or state variable:
- _taxFee
ECOIN._previousCharityFee (#824) is set pre-construction with a non-constant function or state variable:
- _charityFee
ECOIN._previousLiquidityFee (#826) 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
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#616) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#617) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#634) is not in mixedCase
Function IUniswapV2Router01.WETH() (#654) is not in mixedCase
Parameter ECOIN.setSwapAndLiquifyEnabled(bool)._enabled (#992) is not in mixedCase
Parameter ECOIN.calculateTaxFee(uint256)._amount (#1063) is not in mixedCase
Parameter ECOIN.calculateCharityFee(uint256)._amount (#1069) is not in mixedCase
Parameter ECOIN.calculateLiquidityFee(uint256)._amount (#1075) is not in mixedCase
Variable ECOIN._charityWalletAddress (#809) is not in mixedCase
Constant ECOIN._tTotal (#812) is not in UPPER_CASE_WITH_UNDERSCORES
Constant ECOIN._name (#816) is not in UPPER_CASE_WITH_UNDERSCORES
Constant ECOIN._symbol (#817) is not in UPPER_CASE_WITH_UNDERSCORES
Constant ECOIN._decimals (#818) is not in UPPER_CASE_WITH_UNDERSCORES
Variable ECOIN._taxFee (#820) is not in mixedCase
Variable ECOIN._charityFee (#823) is not in mixedCase
Variable ECOIN._liquidityFee (#825) is not in mixedCase
Variable ECOIN._maxTxAmount (#835) is not in mixedCase
Constant ECOIN.numTokensSellToAddToLiquidity (#836) is not in UPPER_CASE_WITH_UNDERSCORES
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#327)" inContext (#321-330)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#659) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#660)
Variable ECOIN._transferToExcluded(address,address,uint256).rTransferAmount (#1256) is too similar to ECOIN._getTValues(uint256).tTransferAmount (#1016)
Variable ECOIN._transferBothExcluded(address,address,uint256).rTransferAmount (#966) is too similar to ECOIN._getTValues(uint256).tTransferAmount (#1016)
Variable ECOIN._transferStandard(address,address,uint256).rTransferAmount (#1246) is too similar to ECOIN._transferStandard(address,address,uint256).tTransferAmount (#1246)
Variable ECOIN._transferStandard(address,address,uint256).rTransferAmount (#1246) is too similar to ECOIN._transferFromExcluded(address,address,uint256).tTransferAmount (#1267)
Variable ECOIN._transferFromExcluded(address,address,uint256).rTransferAmount (#1267) is too similar to ECOIN._transferFromExcluded(address,address,uint256).tTransferAmount (#1267)
Variable ECOIN.reflectionFromToken(uint256,bool).rTransferAmount (#953) is too similar to ECOIN._transferFromExcluded(address,address,uint256).tTransferAmount (#1267)
Variable ECOIN._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#1025) is too similar to ECOIN._getValues(uint256).tTransferAmount (#1007)
Variable ECOIN._transferBothExcluded(address,address,uint256).rTransferAmount (#966) is too similar to ECOIN._getValues(uint256).tTransferAmount (#1007)
Variable ECOIN._transferStandard(address,address,uint256).rTransferAmount (#1246) is too similar to ECOIN._getTValues(uint256).tTransferAmount (#1016)
Variable ECOIN._getValues(uint256).rTransferAmount (#1008) is too similar to ECOIN._getTValues(uint256).tTransferAmount (#1016)
Variable ECOIN._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#1025) is too similar to ECOIN._transferToExcluded(address,address,uint256).tTransferAmount (#1256)
Variable ECOIN._transferToExcluded(address,address,uint256).rTransferAmount (#1256) is too similar to ECOIN._transferToExcluded(address,address,uint256).tTransferAmount (#1256)
Variable ECOIN._transferFromExcluded(address,address,uint256).rTransferAmount (#1267) is too similar to ECOIN._getTValues(uint256).tTransferAmount (#1016)
Variable ECOIN._transferBothExcluded(address,address,uint256).rTransferAmount (#966) is too similar to ECOIN._transferBothExcluded(address,address,uint256).tTransferAmount (#966)
Variable ECOIN.reflectionFromToken(uint256,bool).rTransferAmount (#953) is too similar to ECOIN._getTValues(uint256).tTransferAmount (#1016)
Variable ECOIN._transferBothExcluded(address,address,uint256).rTransferAmount (#966) is too similar to ECOIN._transferToExcluded(address,address,uint256).tTransferAmount (#1256)
Variable ECOIN._transferStandard(address,address,uint256).rTransferAmount (#1246) is too similar to ECOIN._getValues(uint256).tTransferAmount (#1007)
Variable ECOIN._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#1025) is too similar to ECOIN._transferFromExcluded(address,address,uint256).tTransferAmount (#1267)
Variable ECOIN.reflectionFromToken(uint256,bool).rTransferAmount (#953) is too similar to ECOIN._getValues(uint256).tTransferAmount (#1007)
Variable ECOIN._transferBothExcluded(address,address,uint256).rTransferAmount (#966) is too similar to ECOIN._transferStandard(address,address,uint256).tTransferAmount (#1246)
Variable ECOIN._transferStandard(address,address,uint256).rTransferAmount (#1246) is too similar to ECOIN._transferToExcluded(address,address,uint256).tTransferAmount (#1256)
Variable ECOIN._transferToExcluded(address,address,uint256).rTransferAmount (#1256) is too similar to ECOIN._transferFromExcluded(address,address,uint256).tTransferAmount (#1267)
Variable ECOIN._transferFromExcluded(address,address,uint256).rTransferAmount (#1267) is too similar to ECOIN._transferToExcluded(address,address,uint256).tTransferAmount (#1256)
Variable ECOIN._transferBothExcluded(address,address,uint256).rTransferAmount (#966) is too similar to ECOIN._transferFromExcluded(address,address,uint256).tTransferAmount (#1267)
Variable ECOIN.reflectionFromToken(uint256,bool).rTransferAmount (#953) is too similar to ECOIN._transferToExcluded(address,address,uint256).tTransferAmount (#1256)
Variable ECOIN._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#1025) is too similar to ECOIN._getTValues(uint256).tTransferAmount (#1016)
Variable ECOIN._transferStandard(address,address,uint256).rTransferAmount (#1246) is too similar to ECOIN._transferBothExcluded(address,address,uint256).tTransferAmount (#966)
Variable ECOIN._transferFromExcluded(address,address,uint256).rTransferAmount (#1267) is too similar to ECOIN._getValues(uint256).tTransferAmount (#1007)
Variable ECOIN._transferFromExcluded(address,address,uint256).rTransferAmount (#1267) is too similar to ECOIN._transferBothExcluded(address,address,uint256).tTransferAmount (#966)
Variable ECOIN._getValues(uint256).rTransferAmount (#1008) is too similar to ECOIN._getValues(uint256).tTransferAmount (#1007)
Variable ECOIN._getValues(uint256).rTransferAmount (#1008) is too similar to ECOIN._transferToExcluded(address,address,uint256).tTransferAmount (#1256)
Variable ECOIN._transferFromExcluded(address,address,uint256).rTransferAmount (#1267) is too similar to ECOIN._transferStandard(address,address,uint256).tTransferAmount (#1246)
Variable ECOIN._getValues(uint256).rTransferAmount (#1008) is too similar to ECOIN._transferBothExcluded(address,address,uint256).tTransferAmount (#966)
Variable ECOIN.reflectionFromToken(uint256,bool).rTransferAmount (#953) is too similar to ECOIN._transferBothExcluded(address,address,uint256).tTransferAmount (#966)
Variable ECOIN._getValues(uint256).rTransferAmount (#1008) is too similar to ECOIN._transferStandard(address,address,uint256).tTransferAmount (#1246)
Variable ECOIN.reflectionFromToken(uint256,bool).rTransferAmount (#953) is too similar to ECOIN._transferStandard(address,address,uint256).tTransferAmount (#1246)
Variable ECOIN._getValues(uint256).rTransferAmount (#1008) is too similar to ECOIN._transferFromExcluded(address,address,uint256).tTransferAmount (#1267)
Variable ECOIN._transferToExcluded(address,address,uint256).rTransferAmount (#1256) is too similar to ECOIN._getValues(uint256).tTransferAmount (#1007)
Variable ECOIN._transferToExcluded(address,address,uint256).rTransferAmount (#1256) is too similar to ECOIN._transferBothExcluded(address,address,uint256).tTransferAmount (#966)
Variable ECOIN._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#1025) is too similar to ECOIN._transferBothExcluded(address,address,uint256).tTransferAmount (#966)
Variable ECOIN._transferToExcluded(address,address,uint256).rTransferAmount (#1256) is too similar to ECOIN._transferStandard(address,address,uint256).tTransferAmount (#1246)
Variable ECOIN._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#1025) is too similar to ECOIN._transferStandard(address,address,uint256).tTransferAmount (#1246)
Prevent variables from having similar names.
Additional information: link
ECOIN.slitherConstructorVariables() (#795-1278) uses literals with too many digits:
- _maxTxAmount = 5000000 * 10 ** 6 * 10 ** 9 (#835)
ECOIN.slitherConstructorConstantVariables() (#795-1278) uses literals with too many digits:
- _tTotal = 1000000000 * 10 ** 6 * 10 ** 9 (#812)
ECOIN.slitherConstructorConstantVariables() (#795-1278) uses literals with too many digits:
- numTokensSellToAddToLiquidity = 500000 * 10 ** 6 * 10 ** 9 (#836)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#569-572)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#578-582)
name() should be declared external:
- ECOIN.name() (#879-881)
symbol() should be declared external:
- ECOIN.symbol() (#883-885)
decimals() should be declared external:
- ECOIN.decimals() (#887-889)
totalSupply() should be declared external:
- ECOIN.totalSupply() (#891-893)
transfer(address,uint256) should be declared external:
- ECOIN.transfer(address,uint256) (#901-904)
allowance(address,address) should be declared external:
- ECOIN.allowance(address,address) (#906-908)
approve(address,uint256) should be declared external:
- ECOIN.approve(address,uint256) (#910-913)
transferFrom(address,address,uint256) should be declared external:
- ECOIN.transferFrom(address,address,uint256) (#915-919)
increaseAllowance(address,uint256) should be declared external:
- ECOIN.increaseAllowance(address,uint256) (#921-924)
decreaseAllowance(address,uint256) should be declared external:
- ECOIN.decreaseAllowance(address,uint256) (#926-929)
totalFees() should be declared external:
- ECOIN.totalFees() (#932-934)
deliver(uint256) should be declared external:
- ECOIN.deliver(uint256) (#937-944)
setCharityAddress(address) should be declared external:
- ECOIN.setCharityAddress(address) (#983-985)
setSwapAndLiquifyEnabled(bool) should be declared external:
- ECOIN.setSwapAndLiquifyEnabled(bool) (#992-995)
Use the external attribute for functions never called from the contract.
Additional information: link
Average 30d PancakeSwap volume is less than $100. Token is either dead or inactive.
Token is deployed only at one blockchain
Contract has 8% buy tax and 7% sell tax.
Taxes are low but contract ownership is not renounced. Token has a high risk of becoming a honeypot.
Average 30d number of PancakeSwap swaps is low.
Average PancakeSwap trading volume, liqudity, number of swaps are low. Token seems to be inactive.
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Token has a considerable age, but average PancakeSwap 30d trading volume is low