Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
ETR.constructor() (#258-278) performs a multiplication on the result of a division:
-_rOwned[tokenOwner] = _rTotal.div(1000).mul(900) (#265)
ETR.constructor() (#258-278) performs a multiplication on the result of a division:
-_rOwned[transfer2blackhole] = _rTotal.div(1000).mul(20) (#266)
ETR.constructor() (#258-278) performs a multiplication on the result of a division:
-_rOwned[luck1year] = _rTotal.div(1000).mul(15) (#267)
ETR.constructor() (#258-278) performs a multiplication on the result of a division:
-_rOwned[luckReleasePerMouth] = _rTotal.div(1000).mul(50) (#268)
ETR.constructor() (#258-278) performs a multiplication on the result of a division:
-_rOwned[_fund1Address] = _rTotal.div(1000).mul(10) (#269)
ETR.constructor() (#258-278) performs a multiplication on the result of a division:
-_rOwned[_fund2Address] = _rTotal.div(1000).mul(5) (#270)
ETR.constructor() (#258-278) performs a multiplication on the result of a division:
-Transfer(address(0),tokenOwner,_tTotal.div(1000).mul(900)) (#272)
ETR.constructor() (#258-278) performs a multiplication on the result of a division:
-Transfer(address(0),transfer2blackhole,_tTotal.div(1000).mul(20)) (#273)
ETR.constructor() (#258-278) performs a multiplication on the result of a division:
-Transfer(address(0),luck1year,_tTotal.div(1000).mul(15)) (#274)
ETR.constructor() (#258-278) performs a multiplication on the result of a division:
-Transfer(address(0),luckReleasePerMouth,_tTotal.div(1000).mul(50)) (#275)
ETR.constructor() (#258-278) performs a multiplication on the result of a division:
-Transfer(address(0),_fund1Address,_tTotal.div(1000).mul(10)) (#276)
ETR.constructor() (#258-278) performs a multiplication on the result of a division:
-Transfer(address(0),_fund2Address,_tTotal.div(1000).mul(5)) (#277)
ETR.getReleaseAmount() (#414-418) performs a multiplication on the result of a division:
-releaseAmount = _tTotal.div(1000).mul(5).mul(releaseTimes) (#416)
ETR._transfer(address,address,uint256) (#432-454) performs a multiplication on the result of a division:
-require(bool)(balanceOf(luck1year).sub(amount) >= _tTotal.div(1000).mul(15)) (#443)
ETR._transfer(address,address,uint256) (#432-454) performs a multiplication on the result of a division:
-leftAmount = (_tTotal.div(100).mul(5)).sub(releaseAmount) (#449)
Consider ordering multiplication before division.
Additional information: link
ETR.allowance(address,address).owner (#309) shadows:
- Ownable.owner() (#96-98) (function)
ETR._approve(address,address,uint256).owner (#421) shadows:
- Ownable.owner() (#96-98) (function)
Rename the local variables that shadow another component.
Additional information: link
Ownable.changeOwner(address) (#108-110) should emit an event for:
- _owner = newOwner (#109)
Emit an event for critical parameter changes.
Additional information: link
Ownable.changeOwner(address).newOwner (#108) lacks a zero-check on :
- _owner = newOwner (#109)
ETR.changeRouter(address).router (#469) lacks a zero-check on :
- uniswapV2Pair = router (#470)
Check that the address is not zero.
Additional information: link
ETR.getReleaseTimes() (#405-412) uses timestamp for comparisons
Dangerous comparisons:
- overMouth > 9 (#407)
ETR._transfer(address,address,uint256) (#432-454) uses timestamp for comparisons
Dangerous comparisons:
- _startTime.add(31536000) < block.timestamp (#442)
- require(bool)(balanceOf(luckReleasePerMouth).sub(amount) >= leftAmount) (#450)
Avoid relying on block.timestamp.
Additional information: link
Variable Ownable._owner (#91) is not in mixedCase
Variable ETR._startTime (#256) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable ETR._fund1Address (#254) is too similar to ETR._fund2Address (#255)
Prevent variables from having similar names.
Additional information: link
ETR.slitherConstructorVariables() (#231-473) uses literals with too many digits:
- _destroyAddress = address(0x000000000000000000000000000000000000dEaD) (#245-246)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
ETR._tOwned (#235) is never used in ETR (#231-473)
ETR._destroyAddress (#245-246) is never used in ETR (#231-473)
Remove unused state variables.
Additional information: link
ETR._destroyAddress (#245-246) should be constant
ETR._fund1Address (#254) should be constant
ETR._fund2Address (#255) should be constant
ETR.luck1year (#251) should be constant
ETR.luckReleasePerMouth (#252) should be constant
ETR.tokenOwner (#253) should be constant
ETR.transfer2blackhole (#250) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
owner() should be declared external:
- Ownable.owner() (#96-98)
changeOwner(address) should be declared external:
- Ownable.changeOwner(address) (#108-110)
name() should be declared external:
- ETR.name() (#280-282)
symbol() should be declared external:
- ETR.symbol() (#284-286)
decimals() should be declared external:
- ETR.decimals() (#288-290)
totalSupply() should be declared external:
- ETR.totalSupply() (#292-294)
transfer(address,uint256) should be declared external:
- ETR.transfer(address,uint256) (#300-307)
allowance(address,address) should be declared external:
- ETR.allowance(address,address) (#309-316)
approve(address,uint256) should be declared external:
- ETR.approve(address,uint256) (#318-325)
transferFrom(address,address,uint256) should be declared external:
- ETR.transferFrom(address,address,uint256) (#327-342)
increaseAllowance(address,uint256) should be declared external:
- ETR.increaseAllowance(address,uint256) (#344-355)
decreaseAllowance(address,uint256) should be declared external:
- ETR.decreaseAllowance(address,uint256) (#357-371)
claimTokens() should be declared external:
- ETR.claimTokens() (#401-403)
changeRouter(address) should be declared external:
- ETR.changeRouter(address) (#469-471)
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