Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
AccessControlUpgradeable.__gap (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#225) shadows:
- ContextUpgradeable.__gap (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#31)
OwnableUpgradeable.__gap (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#74) shadows:
- ContextUpgradeable.__gap (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#31)
ERC20CappedUpgradeable.__gap (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20CappedUpgradeable.sol#51) shadows:
- ERC20Upgradeable.__gap (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#312)
- ContextUpgradeable.__gap (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#31)
ERC20PausableUpgradeable.__gap (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20PausableUpgradeable.sol#37) shadows:
- PausableUpgradeable.__gap (@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol#96)
- ERC20Upgradeable.__gap (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#312)
- ContextUpgradeable.__gap (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#31)
ERC20Upgradeable.__gap (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#312) shadows:
- ContextUpgradeable.__gap (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#31)
PausableUpgradeable.__gap (@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol#96) shadows:
- ContextUpgradeable.__gap (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#31)
ERC20Whitelisted.__gap (contracts/ERC20Whitelisted.sol#44) shadows:
- OwnableUpgradeable.__gap (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#74)
- ERC20Upgradeable.__gap (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#312)
- ContextUpgradeable.__gap (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#31)
STOToken.__gap (contracts/STOToken.sol#110) shadows:
- ERC20PausableUpgradeable.__gap (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20PausableUpgradeable.sol#37)
- PausableUpgradeable.__gap (@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol#96)
- ERC20CappedUpgradeable.__gap (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20CappedUpgradeable.sol#51)
- ERC20Whitelisted.__gap (contracts/ERC20Whitelisted.sol#44)
- OwnableUpgradeable.__gap (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#74)
- ERC20Upgradeable.__gap (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#312)
- AccessControlUpgradeable.__gap (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#225)
- ContextUpgradeable.__gap (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#31)
Remove the state variable shadowing.
Additional information: link
Contract name (Reental-Sevilla-6) 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.
Contract ticker (RNT-SVQ-6) 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.
STOToken.initialize(string,string,uint256,uint256,uint256).name (contracts/STOToken.sol#21) shadows:
- ERC20Upgradeable.name() (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#70-72) (function)
STOToken.initialize(string,string,uint256,uint256,uint256).symbol (contracts/STOToken.sol#21) shadows:
- ERC20Upgradeable.symbol() (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#78-80) (function)
STOToken.__STOToken_init(string,string,uint256,uint256,uint256).name (contracts/STOToken.sol#25) shadows:
- ERC20Upgradeable.name() (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#70-72) (function)
STOToken.__STOToken_init(string,string,uint256,uint256,uint256).symbol (contracts/STOToken.sol#25) shadows:
- ERC20Upgradeable.symbol() (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#78-80) (function)
STOToken.fullySold().cap (contracts/STOToken.sol#45) shadows:
- ERC20CappedUpgradeable.cap() (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20CappedUpgradeable.sol#33-35) (function)
STOToken.couldReceiveContribution(uint256).cap (contracts/STOToken.sol#54) shadows:
- ERC20CappedUpgradeable.cap() (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20CappedUpgradeable.sol#33-35) (function)
Rename the local variables that shadow another component.
Additional information: link
AddressUpgradeable.isContract(address) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#26-35) uses assembly
- INLINE ASM (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#33)
AddressUpgradeable._verifyCallResult(bool,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#147-164) uses assembly
- INLINE ASM (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#156-159)
Do not use evm assembly.
Additional information: link
WhitelistVault.isWhitelisted(address) (contracts/WhitelistVault.sol#47-52) compares to a boolean constant:
-_allowed[_address] == true (contracts/WhitelistVault.sol#51)
Remove the equality to the boolean constant.
Additional information: link
Different versions of Solidity is used:
- Version used: ['>=0.4.24<0.8.0', '>=0.6.0<0.8.0', '>=0.6.2<0.8.0']
- >=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#3)
- >=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#3)
- >=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol#3)
- >=0.4.24<0.8.0 (@openzeppelin/contracts-upgradeable/proxy/Initializable.sol#4)
- >=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20CappedUpgradeable.sol#3)
- >=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20PausableUpgradeable.sol#3)
- >=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#3)
- >=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol#3)
- >=0.6.2<0.8.0 (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#3)
- >=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#3)
- >=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/utils/EnumerableSetUpgradeable.sol#3)
- >=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol#3)
- >=0.6.0<0.8.0 (contracts/ERC20Whitelisted.sol#2)
- >=0.6.0<0.8.0 (contracts/STOToken.sol#3)
- >=0.6.0<0.8.0 (contracts/WhitelistVault.sol#2)
Use one Solidity version.
Additional information: link
AccessControlUpgradeable.__AccessControl_init() (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#46-49) is never used and should be removed
AccessControlUpgradeable._setRoleAdmin(bytes32,bytes32) (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#209-212) is never used and should be removed
AddressUpgradeable._verifyCallResult(bool,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#147-164) is never used and should be removed
AddressUpgradeable.functionCall(address,bytes) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#79-81) is never used and should be removed
AddressUpgradeable.functionCall(address,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#89-91) is never used and should be removed
AddressUpgradeable.functionCallWithValue(address,bytes,uint256) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#104-106) is never used and should be removed
AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#114-121) is never used and should be removed
AddressUpgradeable.functionStaticCall(address,bytes) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#129-131) is never used and should be removed
AddressUpgradeable.functionStaticCall(address,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#139-145) is never used and should be removed
AddressUpgradeable.sendValue(address,uint256) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#53-59) is never used and should be removed
ContextUpgradeable.__Context_init() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#17-19) is never used and should be removed
ContextUpgradeable._msgData() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#27-30) is never used and should be removed
ERC20CappedUpgradeable._beforeTokenTransfer(address,address,uint256) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20CappedUpgradeable.sol#44-50) is never used and should be removed
ERC20PausableUpgradeable.__ERC20Pausable_init() (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20PausableUpgradeable.sol#17-21) is never used and should be removed
ERC20Upgradeable.__ERC20_init(string,string) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#56-59) is never used and should be removed
ERC20Upgradeable._burn(address,uint256) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#255-263) is never used and should be removed
ERC20Upgradeable._setupDecimals(uint8) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#293-295) is never used and should be removed
ERC20Whitelisted._beforeTokenTransfer(address,address,uint256) (contracts/ERC20Whitelisted.sol#27-35) is never used and should be removed
ERC20Whitelisted._checkWhitelisted(address) (contracts/ERC20Whitelisted.sol#37-42) is never used and should be removed
EnumerableSetUpgradeable.add(EnumerableSetUpgradeable.Bytes32Set,bytes32) (@openzeppelin/contracts-upgradeable/utils/EnumerableSetUpgradeable.sol#147-149) is never used and should be removed
EnumerableSetUpgradeable.add(EnumerableSetUpgradeable.UintSet,uint256) (@openzeppelin/contracts-upgradeable/utils/EnumerableSetUpgradeable.sol#256-258) is never used and should be removed
EnumerableSetUpgradeable.at(EnumerableSetUpgradeable.Bytes32Set,uint256) (@openzeppelin/contracts-upgradeable/utils/EnumerableSetUpgradeable.sol#185-187) is never used and should be removed
EnumerableSetUpgradeable.at(EnumerableSetUpgradeable.UintSet,uint256) (@openzeppelin/contracts-upgradeable/utils/EnumerableSetUpgradeable.sol#294-296) is never used and should be removed
EnumerableSetUpgradeable.contains(EnumerableSetUpgradeable.Bytes32Set,bytes32) (@openzeppelin/contracts-upgradeable/utils/EnumerableSetUpgradeable.sol#164-166) is never used and should be removed
EnumerableSetUpgradeable.contains(EnumerableSetUpgradeable.UintSet,uint256) (@openzeppelin/contracts-upgradeable/utils/EnumerableSetUpgradeable.sol#273-275) is never used and should be removed
EnumerableSetUpgradeable.length(EnumerableSetUpgradeable.Bytes32Set) (@openzeppelin/contracts-upgradeable/utils/EnumerableSetUpgradeable.sol#171-173) is never used and should be removed
EnumerableSetUpgradeable.length(EnumerableSetUpgradeable.UintSet) (@openzeppelin/contracts-upgradeable/utils/EnumerableSetUpgradeable.sol#280-282) is never used and should be removed
EnumerableSetUpgradeable.remove(EnumerableSetUpgradeable.Bytes32Set,bytes32) (@openzeppelin/contracts-upgradeable/utils/EnumerableSetUpgradeable.sol#157-159) is never used and should be removed
EnumerableSetUpgradeable.remove(EnumerableSetUpgradeable.UintSet,uint256) (@openzeppelin/contracts-upgradeable/utils/EnumerableSetUpgradeable.sol#266-268) is never used and should be removed
PausableUpgradeable.__Pausable_init() (@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol#33-36) is never used and should be removed
SafeMathUpgradeable.div(uint256,uint256,string) (@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol#190-193) is never used and should be removed
SafeMathUpgradeable.mod(uint256,uint256) (@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol#152-155) is never used and should be removed
SafeMathUpgradeable.mod(uint256,uint256,string) (@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol#210-213) is never used and should be removed
SafeMathUpgradeable.tryAdd(uint256,uint256) (@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol#24-28) is never used and should be removed
SafeMathUpgradeable.tryDiv(uint256,uint256) (@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol#60-63) is never used and should be removed
SafeMathUpgradeable.tryMod(uint256,uint256) (@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol#70-73) is never used and should be removed
SafeMathUpgradeable.tryMul(uint256,uint256) (@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol#45-53) is never used and should be removed
SafeMathUpgradeable.trySub(uint256,uint256) (@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol#35-38) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol#3) is too complex
Pragma version>=0.4.24<0.8.0 (@openzeppelin/contracts-upgradeable/proxy/Initializable.sol#4) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20CappedUpgradeable.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20PausableUpgradeable.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol#3) is too complex
Pragma version>=0.6.2<0.8.0 (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/utils/EnumerableSetUpgradeable.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (contracts/ERC20Whitelisted.sol#2) is too complex
Pragma version>=0.6.0<0.8.0 (contracts/STOToken.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (contracts/WhitelistVault.sol#2) is too complex
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 AddressUpgradeable.sendValue(address,uint256) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#53-59):
- (success) = recipient.call{value: amount}() (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#57)
Low level call in AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#114-121):
- (success,returndata) = target.call{value: value}(data) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#119)
Low level call in AddressUpgradeable.functionStaticCall(address,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#139-145):
- (success,returndata) = target.staticcall(data) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#143)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function AccessControlUpgradeable.__AccessControl_init() (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#46-49) is not in mixedCase
Function AccessControlUpgradeable.__AccessControl_init_unchained() (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#51-52) is not in mixedCase
Variable AccessControlUpgradeable.__gap (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#225) is not in mixedCase
Function OwnableUpgradeable.__Ownable_init() (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#27-30) is not in mixedCase
Function OwnableUpgradeable.__Ownable_init_unchained() (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#32-36) is not in mixedCase
Variable OwnableUpgradeable.__gap (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#74) is not in mixedCase
Function ERC20CappedUpgradeable.__ERC20Capped_init(uint256) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20CappedUpgradeable.sol#20-23) is not in mixedCase
Function ERC20CappedUpgradeable.__ERC20Capped_init_unchained(uint256) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20CappedUpgradeable.sol#25-28) is not in mixedCase
Variable ERC20CappedUpgradeable.__gap (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20CappedUpgradeable.sol#51) is not in mixedCase
Function ERC20PausableUpgradeable.__ERC20Pausable_init() (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20PausableUpgradeable.sol#17-21) is not in mixedCase
Function ERC20PausableUpgradeable.__ERC20Pausable_init_unchained() (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20PausableUpgradeable.sol#23-24) is not in mixedCase
Variable ERC20PausableUpgradeable.__gap (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20PausableUpgradeable.sol#37) is not in mixedCase
Function ERC20Upgradeable.__ERC20_init(string,string) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#56-59) is not in mixedCase
Function ERC20Upgradeable.__ERC20_init_unchained(string,string) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#61-65) is not in mixedCase
Variable ERC20Upgradeable.__gap (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#312) is not in mixedCase
Function ContextUpgradeable.__Context_init() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#17-19) is not in mixedCase
Function ContextUpgradeable.__Context_init_unchained() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#21-22) is not in mixedCase
Variable ContextUpgradeable.__gap (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#31) is not in mixedCase
Function PausableUpgradeable.__Pausable_init() (@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol#33-36) is not in mixedCase
Function PausableUpgradeable.__Pausable_init_unchained() (@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol#38-40) is not in mixedCase
Variable PausableUpgradeable.__gap (@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol#96) is not in mixedCase
Function ERC20Whitelisted.__ERC20Whitelisted_init() (contracts/ERC20Whitelisted.sol#16-19) is not in mixedCase
Variable ERC20Whitelisted.__gap (contracts/ERC20Whitelisted.sol#44) is not in mixedCase
Variable ERC20Whitelisted._vault (contracts/ERC20Whitelisted.sol#10) is not in mixedCase
Variable ERC20Whitelisted._vaultLoaded (contracts/ERC20Whitelisted.sol#11) is not in mixedCase
Function STOToken.__STOToken_init(string,string,uint256,uint256,uint256) (contracts/STOToken.sol#25-34) is not in mixedCase
Function STOToken.__STOToken_init_unchained(uint256,uint256) (contracts/STOToken.sol#36-42) is not in mixedCase
Parameter STOToken.swapTokens(address,address)._from (contracts/STOToken.sol#78) is not in mixedCase
Parameter STOToken.swapTokens(address,address)._to (contracts/STOToken.sol#78) is not in mixedCase
Variable STOToken.__gap (contracts/STOToken.sol#110) is not in mixedCase
Parameter WhitelistVault.isWhitelisted(address)._address (contracts/WhitelistVault.sol#47) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#28)" inContextUpgradeable (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#16-32)
Remove redundant statements if they congest code but offer no value.
Additional information: link
STOToken.__gap (contracts/STOToken.sol#110) is never used in STOToken (contracts/STOToken.sol#12-111)
OwnableUpgradeable.__gap (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#74) is never used in WhitelistVault (contracts/WhitelistVault.sol#6-53)
Remove unused state variables.
Additional information: link
getRoleMemberCount(bytes32) should be declared external:
- AccessControlUpgradeable.getRoleMemberCount(bytes32) (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#103-105)
getRoleMember(bytes32,uint256) should be declared external:
- AccessControlUpgradeable.getRoleMember(bytes32,uint256) (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#119-121)
getRoleAdmin(bytes32) should be declared external:
- AccessControlUpgradeable.getRoleAdmin(bytes32) (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#129-131)
revokeRole(bytes32,address) should be declared external:
- AccessControlUpgradeable.revokeRole(bytes32,address) (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#158-162)
renounceRole(bytes32,address) should be declared external:
- AccessControlUpgradeable.renounceRole(bytes32,address) (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#178-182)
renounceOwnership() should be declared external:
- OwnableUpgradeable.renounceOwnership() (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#60-63)
transferOwnership(address) should be declared external:
- OwnableUpgradeable.transferOwnership(address) (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#69-73)
name() should be declared external:
- ERC20Upgradeable.name() (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#70-72)
symbol() should be declared external:
- ERC20Upgradeable.symbol() (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#78-80)
decimals() should be declared external:
- ERC20Upgradeable.decimals() (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#95-97)
transfer(address,uint256) should be declared external:
- ERC20Upgradeable.transfer(address,uint256) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#121-124)
allowance(address,address) should be declared external:
- ERC20Upgradeable.allowance(address,address) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#129-131)
approve(address,uint256) should be declared external:
- ERC20Upgradeable.approve(address,uint256) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#140-143)
transferFrom(address,address,uint256) should be declared external:
- ERC20Upgradeable.transferFrom(address,address,uint256) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#158-162)
increaseAllowance(address,uint256) should be declared external:
- ERC20Upgradeable.increaseAllowance(address,uint256) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#176-179)
decreaseAllowance(address,uint256) should be declared external:
- ERC20Upgradeable.decreaseAllowance(address,uint256) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#195-198)
updateVault(address) should be declared external:
- ERC20Whitelisted.updateVault(address) (contracts/ERC20Whitelisted.sol#21-25)
initialize(string,string,uint256,uint256,uint256) should be declared external:
- STOToken.initialize(string,string,uint256,uint256,uint256) (contracts/STOToken.sol#21-23)
grantMinterRole(address) should be declared external:
- STOToken.grantMinterRole(address) (contracts/STOToken.sol#61-63)
grantPauserRole(address) should be declared external:
- STOToken.grantPauserRole(address) (contracts/STOToken.sol#65-67)
getPoolTokens() should be declared external:
- STOToken.getPoolTokens() (contracts/STOToken.sol#69-71)
getPoolTokensByAmount(uint256) should be declared external:
- STOToken.getPoolTokensByAmount(uint256) (contracts/STOToken.sol#73-76)
swapTokens(address,address) should be declared external:
- STOToken.swapTokens(address,address) (contracts/STOToken.sol#78-87)
mint(address,uint256) should be declared external:
- STOToken.mint(address,uint256) (contracts/STOToken.sol#89-94)
pause() should be declared external:
- STOToken.pause() (contracts/STOToken.sol#96-99)
unpause() should be declared external:
- STOToken.unpause() (contracts/STOToken.sol#101-104)
initialize() should be declared external:
- WhitelistVault.initialize() (contracts/WhitelistVault.sol#15-17)
addToWhitelist(address[]) should be declared external:
- WhitelistVault.addToWhitelist(address[]) (contracts/WhitelistVault.sol#19-22)
removeFromWhitelist(address[]) should be declared external:
- WhitelistVault.removeFromWhitelist(address[]) (contracts/WhitelistVault.sol#30-33)
setFreewayMode(bool) should be declared external:
- WhitelistVault.setFreewayMode(bool) (contracts/WhitelistVault.sol#43-45)
isWhitelisted(address) should be declared external:
- WhitelistVault.isWhitelisted(address) (contracts/WhitelistVault.sol#47-52)
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