Thetan Arena is an e-sport game based on Blockchain technology. You can gather your friends, form a team, battle with others and earn token rewards with just your skills. Thetan Arena's gameplay is designed to revolve around the combination of your personal skills and teamwork. Challenge yourself with various game modes: MOBA & Battle Royale, coming with monthly updates and attractive rewards.
You are guaranteed a gaming experience that’s never been known before and also guaranteed to lose to anyone the second you pause the fighting, too. Gear your heroes up with a large selection of hundreds of weapons. You'd better come up with a good tactic as well because the most fierce war awaiting you right from the moment that starship drops you off on the battlefield.
Contract ownership is not renounced (belongs to a wallet)
ThetanCoin.slitherConstructorVariables() (contracts/ThetanCoin.sol#6-12) uses literals with too many digits:
- initializedCap = 20000000 * 1e18 (contracts/ThetanCoin.sol#7)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
AccessControlEnumerable.grantRole(bytes32,address) (@openzeppelin/contracts/access/AccessControlEnumerable.sol#59-62) ignores return value by _roleMembers[role].add(account) (@openzeppelin/contracts/access/AccessControlEnumerable.sol#61)
AccessControlEnumerable.revokeRole(bytes32,address) (@openzeppelin/contracts/access/AccessControlEnumerable.sol#67-70) ignores return value by _roleMembers[role].remove(account) (@openzeppelin/contracts/access/AccessControlEnumerable.sol#69)
AccessControlEnumerable.renounceRole(bytes32,address) (@openzeppelin/contracts/access/AccessControlEnumerable.sol#75-78) ignores return value by _roleMembers[role].remove(account) (@openzeppelin/contracts/access/AccessControlEnumerable.sol#77)
AccessControlEnumerable._setupRole(bytes32,address) (@openzeppelin/contracts/access/AccessControlEnumerable.sol#83-86) ignores return value by _roleMembers[role].add(account) (@openzeppelin/contracts/access/AccessControlEnumerable.sol#85)
Ensure that all the return values of the function calls are used.
Additional information: link
ERC20PresetMinterPauser.constructor(string,string).name (@openzeppelin/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol#35) shadows:
- ERC20.name() (@openzeppelin/contracts/token/ERC20/ERC20.sol#60-62) (function)
- IERC20Metadata.name() (@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol#16) (function)
ERC20PresetMinterPauser.constructor(string,string).symbol (@openzeppelin/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol#35) shadows:
- ERC20.symbol() (@openzeppelin/contracts/token/ERC20/ERC20.sol#68-70) (function)
- IERC20Metadata.symbol() (@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol#21) (function)
Rename the local variables that shadow another component.
Additional information: link
AccessControl._setRoleAdmin(bytes32,bytes32) (@openzeppelin/contracts/access/AccessControl.sol#232-235) is never used and should be removed
Context._msgData() (@openzeppelin/contracts/utils/Context.sol#20-22) is never used and should be removed
EnumerableSet.add(EnumerableSet.Bytes32Set,bytes32) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#145-147) is never used and should be removed
EnumerableSet.add(EnumerableSet.UintSet,uint256) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#253-255) is never used and should be removed
EnumerableSet.at(EnumerableSet.Bytes32Set,uint256) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#183-185) is never used and should be removed
EnumerableSet.at(EnumerableSet.UintSet,uint256) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#291-293) is never used and should be removed
EnumerableSet.contains(EnumerableSet.AddressSet,address) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#216-218) is never used and should be removed
EnumerableSet.contains(EnumerableSet.Bytes32Set,bytes32) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#162-164) is never used and should be removed
EnumerableSet.contains(EnumerableSet.UintSet,uint256) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#270-272) is never used and should be removed
EnumerableSet.length(EnumerableSet.Bytes32Set) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#169-171) is never used and should be removed
EnumerableSet.length(EnumerableSet.UintSet) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#277-279) is never used and should be removed
EnumerableSet.remove(EnumerableSet.Bytes32Set,bytes32) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#155-157) is never used and should be removed
EnumerableSet.remove(EnumerableSet.UintSet,uint256) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#263-265) is never used and should be removed
Strings.toHexString(uint256) (@openzeppelin/contracts/utils/Strings.sol#39-50) is never used and should be removed
Strings.toString(uint256) (@openzeppelin/contracts/utils/Strings.sol#14-34) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.0 (@openzeppelin/contracts/access/AccessControl.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/access/AccessControlEnumerable.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/access/Ownable.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/security/Pausable.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/ERC20.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/IERC20.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/Context.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/Strings.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/introspection/ERC165.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/introspection/IERC165.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#3) allows old versions
Pragma version^0.8.0 (contracts/ThetanCoin.sol#2) allows old versions
solc-0.8.0 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
ThetanCoin.initializedCap (contracts/ThetanCoin.sol#7) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
getRoleMember(bytes32,uint256) should be declared external:
- AccessControlEnumerable.getRoleMember(bytes32,uint256) (@openzeppelin/contracts/access/AccessControlEnumerable.sol#44-46)
getRoleMemberCount(bytes32) should be declared external:
- AccessControlEnumerable.getRoleMemberCount(bytes32) (@openzeppelin/contracts/access/AccessControlEnumerable.sol#52-54)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (@openzeppelin/contracts/access/Ownable.sol#53-55)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (@openzeppelin/contracts/access/Ownable.sol#61-64)
name() should be declared external:
- ERC20.name() (@openzeppelin/contracts/token/ERC20/ERC20.sol#60-62)
symbol() should be declared external:
- ERC20.symbol() (@openzeppelin/contracts/token/ERC20/ERC20.sol#68-70)
decimals() should be declared external:
- ERC20.decimals() (@openzeppelin/contracts/token/ERC20/ERC20.sol#85-87)
totalSupply() should be declared external:
- ERC20.totalSupply() (@openzeppelin/contracts/token/ERC20/ERC20.sol#92-94)
balanceOf(address) should be declared external:
- ERC20.balanceOf(address) (@openzeppelin/contracts/token/ERC20/ERC20.sol#99-101)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#111-114)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#130-133)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#148-162)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#176-179)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#195-203)
burn(uint256) should be declared external:
- ERC20Burnable.burn(uint256) (@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol#19-21)
burnFrom(address,uint256) should be declared external:
- ERC20Burnable.burnFrom(address,uint256) (@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol#34-41)
mint(address,uint256) should be declared external:
- ERC20PresetMinterPauser.mint(address,uint256) (@openzeppelin/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol#51-54)
pause() should be declared external:
- ERC20PresetMinterPauser.pause() (@openzeppelin/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol#65-68)
unpause() should be declared external:
- ERC20PresetMinterPauser.unpause() (@openzeppelin/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol#79-82)
Use the external attribute for functions never called from the contract.
Additional information: link
Token has a considerable age, but social accounts / website are missing or have few users
Young tokens have high risks of price dump / death
Token has relatively low CoinGecko rank
Telegram account link seems to be invalid
Unable to find Youtube account