Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
CoinBad.clearToken(IERC20) (#818-820) ignores return value by _token.transfer(msg.sender,_token.balanceOf(address(this))) (#819)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
CoinBad.aSBlock (#704) is never initialized. It is used in:
- CoinBad.viewAirdrop() (#787-789)
CoinBad.aEBlock (#705) is never initialized. It is used in:
- CoinBad.viewAirdrop() (#787-789)
CoinBad.aCap (#706) is never initialized. It is used in:
- CoinBad.viewAirdrop() (#787-789)
CoinBad.sSBlock (#709) is never initialized. It is used in:
- CoinBad.viewSale() (#790-792)
CoinBad.sEBlock (#710) is never initialized. It is used in:
- CoinBad.viewSale() (#790-792)
CoinBad.sCap (#711) is never initialized. It is used in:
- CoinBad.viewSale() (#790-792)
CoinBad.sChunk (#713) is never initialized. It is used in:
- CoinBad.viewSale() (#790-792)
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
CoinBad.tokenSale(address) (#768-785) performs a multiplication on the result of a division:
-_tkns = (sPrice * _eth) / 1000000000000000000 (#773)
-_transfer(address(this),_refer,cmsSl * _tkns / 100) (#779)
Consider ordering multiplication before division.
Additional information: link
CoinBad.clear(uint256)._owner (#810) shadows:
- Ownable._owner (#651) (state variable)
Rename the local variables that shadow another component.
Additional information: link
CoinBad.startAirdrop(bool,uint256,uint256) (#794-799) should emit an event for:
- aAmt = _aAmt (#796)
CoinBad.startSale(bool,uint256,uint256) (#801-806) should emit an event for:
- sPrice = _sPrice (#803)
Emit an event for critical parameter changes.
Additional information: link
CoinBad.clear(uint256)._owner (#810) lacks a zero-check on :
- _owner.transfer(amount) (#811)
Check that the address is not zero.
Additional information: link
Different versions of Solidity is used:
- Version used: ['^0.8.0', '^0.8.4']
- ^0.8.4 (#9)
- ^0.8.0 (#88)
- ^0.8.0 (#117)
- ^0.8.0 (#144)
- ^0.8.0 (#502)
- ^0.8.0 (#544)
- ^0.8.0 (#636)
- ^0.8.0 (#702)
Use one Solidity version.
Additional information: link
Context._msgData() (#134-137) is never used and should be removed
Pausable._pause() (#614-617) is never used and should be removed
Pausable._unpause() (#626-629) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.0 (#88) allows old versions
Pragma version^0.8.0 (#117) allows old versions
Pragma version^0.8.0 (#144) allows old versions
Pragma version^0.8.0 (#502) allows old versions
Pragma version^0.8.0 (#544) allows old versions
Pragma version^0.8.0 (#636) allows old versions
Pragma version^0.8.0 (#702) allows old versions
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
Parameter CoinBad.getAirdrop(address)._refer (#743) is not in mixedCase
Parameter CoinBad.setLock(bool)._isLock (#764) is not in mixedCase
Parameter CoinBad.tokenSale(address)._refer (#768) is not in mixedCase
Parameter CoinBad.startAirdrop(bool,uint256,uint256)._isDrop (#794) is not in mixedCase
Parameter CoinBad.startAirdrop(bool,uint256,uint256)._aAmt (#794) is not in mixedCase
Parameter CoinBad.startAirdrop(bool,uint256,uint256)._cmsAi (#794) is not in mixedCase
Parameter CoinBad.startSale(bool,uint256,uint256)._isBuy (#801) is not in mixedCase
Parameter CoinBad.startSale(bool,uint256,uint256)._sPrice (#801) is not in mixedCase
Parameter CoinBad.startSale(bool,uint256,uint256)._cmsSl (#801) is not in mixedCase
Parameter CoinBad.clearToken(IERC20)._token (#818) is not in mixedCase
Variable CoinBad._listClaim (#729) is not in mixedCase
Variable CoinBad._listBuy (#730) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#135)" inContext (#129-138)
Remove redundant statements if they congest code but offer no value.
Additional information: link
CoinBad.constructor() (#731-738) uses literals with too many digits:
- _mint(msg.sender,900000000 * 10 ** decimals()) (#732)
CoinBad.constructor() (#731-738) uses literals with too many digits:
- _mint(address(this),200000000 * 10 ** decimals()) (#733)
CoinBad.constructor() (#731-738) uses literals with too many digits:
- startSale(true,100000 * 10 ** decimals(),20) (#737)
CoinBad.getAirdrop(address) (#743-758) uses literals with too many digits:
- msg.sender != _refer && balanceOf(_refer) != 0 && _refer != 0x0000000000000000000000000000000000000000 (#752)
CoinBad.tokenSale(address) (#768-785) uses literals with too many digits:
- msg.sender != _refer && balanceOf(_refer) != 0 && _refer != 0x0000000000000000000000000000000000000000 (#777)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
CoinBad.aCap (#706) should be constant
CoinBad.aEBlock (#705) should be constant
CoinBad.aSBlock (#704) should be constant
CoinBad.sCap (#711) should be constant
CoinBad.sChunk (#713) should be constant
CoinBad.sEBlock (#710) should be constant
CoinBad.sSBlock (#709) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
name() should be declared external:
- ERC20.name() (#227-229)
symbol() should be declared external:
- ERC20.symbol() (#235-237)
islocks() should be declared external:
- ERC20.islocks() (#256-258)
totalSupply() should be declared external:
- ERC20.totalSupply() (#267-269)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (#286-290)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (#321-324)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (#339-348)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (#362-365)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (#381-387)
burn(uint256) should be declared external:
- ERC20Burnable.burn(uint256) (#517-519)
burnFrom(address,uint256) should be declared external:
- ERC20Burnable.burnFrom(address,uint256) (#532-537)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#686-689)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#695-699)
getAirdrop(address) should be declared external:
- CoinBad.getAirdrop(address) (#743-758)
addSender(address) should be declared external:
- CoinBad.addSender(address) (#760-762)
setLock(bool) should be declared external:
- CoinBad.setLock(bool) (#764-766)
tokenSale(address) should be declared external:
- CoinBad.tokenSale(address) (#768-785)
viewAirdrop() should be declared external:
- CoinBad.viewAirdrop() (#787-789)
viewSale() should be declared external:
- CoinBad.viewSale() (#790-792)
clear(uint256) should be declared external:
- CoinBad.clear(uint256) (#809-812)
clearToken(IERC20) should be declared external:
- CoinBad.clearToken(IERC20) (#818-820)
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