Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Contract name (X-PARALLEL SPACE) 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.
Address.isContract(address) (contracts/public/Address.sol#25-34) uses assembly
- INLINE ASM (contracts/public/Address.sol#32)
Address._functionCallWithValue(address,bytes,uint256,string) (contracts/public/Address.sol#118-139) uses assembly
- INLINE ASM (contracts/public/Address.sol#131-134)
EnumerableSet.values(EnumerableSet.AddressSet) (contracts/public/EnumerableSet.sol#272-281) uses assembly
- INLINE ASM (contracts/public/EnumerableSet.sol#276-278)
EnumerableSet.values(EnumerableSet.UintSet) (contracts/public/EnumerableSet.sol#345-354) uses assembly
- INLINE ASM (contracts/public/EnumerableSet.sol#349-351)
Do not use evm assembly.
Additional information: link
MinterAccess.constructor().owner (contracts/public/MinterAccess.sol#12) shadows:
- Ownable.owner() (contracts/public/Ownable.sol#35-37) (function)
Rename the local variables that shadow another component.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (contracts/public/Address.sol#118-139) is never used and should be removed
Address.functionCall(address,bytes) (contracts/public/Address.sol#78-80) is never used and should be removed
Address.functionCall(address,bytes,string) (contracts/public/Address.sol#88-90) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (contracts/public/Address.sol#103-105) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (contracts/public/Address.sol#113-116) is never used and should be removed
Address.isContract(address) (contracts/public/Address.sol#25-34) is never used and should be removed
Address.sendValue(address,uint256) (contracts/public/Address.sol#52-58) is never used and should be removed
Context._msgData() (contracts/public/Context.sol#19-22) is never used and should be removed
ERC20._setupDecimals(uint8) (contracts/public/ERC20.sol#287-289) is never used and should be removed
EnumerableSet._values(EnumerableSet.Set) (contracts/public/EnumerableSet.sol#140-142) is never used and should be removed
EnumerableSet.add(EnumerableSet.Bytes32Set,bytes32) (contracts/public/EnumerableSet.sol#156-158) is never used and should be removed
EnumerableSet.add(EnumerableSet.UintSet,uint256) (contracts/public/EnumerableSet.sol#295-297) is never used and should be removed
EnumerableSet.at(EnumerableSet.Bytes32Set,uint256) (contracts/public/EnumerableSet.sol#194-196) is never used and should be removed
EnumerableSet.at(EnumerableSet.UintSet,uint256) (contracts/public/EnumerableSet.sol#333-335) is never used and should be removed
EnumerableSet.contains(EnumerableSet.Bytes32Set,bytes32) (contracts/public/EnumerableSet.sol#173-175) is never used and should be removed
EnumerableSet.contains(EnumerableSet.UintSet,uint256) (contracts/public/EnumerableSet.sol#312-314) is never used and should be removed
EnumerableSet.length(EnumerableSet.Bytes32Set) (contracts/public/EnumerableSet.sol#180-182) is never used and should be removed
EnumerableSet.length(EnumerableSet.UintSet) (contracts/public/EnumerableSet.sol#319-321) is never used and should be removed
EnumerableSet.remove(EnumerableSet.Bytes32Set,bytes32) (contracts/public/EnumerableSet.sol#166-168) is never used and should be removed
EnumerableSet.remove(EnumerableSet.UintSet,uint256) (contracts/public/EnumerableSet.sol#305-307) is never used and should be removed
EnumerableSet.values(EnumerableSet.AddressSet) (contracts/public/EnumerableSet.sol#272-281) is never used and should be removed
EnumerableSet.values(EnumerableSet.Bytes32Set) (contracts/public/EnumerableSet.sol#206-208) is never used and should be removed
EnumerableSet.values(EnumerableSet.UintSet) (contracts/public/EnumerableSet.sol#345-354) is never used and should be removed
SafeMath.add(uint256,uint256,string) (contracts/public/SafeMath.sol#44-49) is never used and should be removed
SafeMath.div(uint256,uint256) (contracts/public/SafeMath.sol#133-135) is never used and should be removed
SafeMath.div(uint256,uint256,string) (contracts/public/SafeMath.sol#148-155) is never used and should be removed
SafeMath.mod(uint256,uint256) (contracts/public/SafeMath.sol#168-170) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (contracts/public/SafeMath.sol#183-186) is never used and should be removed
SafeMath.mul(uint256,uint256) (contracts/public/SafeMath.sol#86-98) is never used and should be removed
SafeMath.mul(uint256,uint256,string) (contracts/public/SafeMath.sol#108-120) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.0 (contracts/XPS.sol#2) allows old versions
Pragma version^0.8.0 (contracts/public/AccessControl.sol#2) allows old versions
Pragma version^0.8.0 (contracts/public/Address.sol#2) allows old versions
Pragma version^0.8.0 (contracts/public/Context.sol#2) allows old versions
Pragma version^0.8.0 (contracts/public/ERC20.sol#2) allows old versions
Pragma version^0.8.0 (contracts/public/EnumerableSet.sol#2) allows old versions
Pragma version^0.8.0 (contracts/public/IERC20.sol#2) allows old versions
Pragma version^0.8.0 (contracts/public/MinterAccess.sol#2) allows old versions
Pragma version^0.8.0 (contracts/public/Ownable.sol#2) allows old versions
Pragma version^0.8.0 (contracts/public/SafeMath.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
Low level call in Address.sendValue(address,uint256) (contracts/public/Address.sol#52-58):
- (success) = recipient.call{value: amount}() (contracts/public/Address.sol#56)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (contracts/public/Address.sol#118-139):
- (success,returndata) = target.call{value: weiValue}(data) (contracts/public/Address.sol#122)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Parameter XPS.mint(address,uint256)._to (contracts/XPS.sol#9) is not in mixedCase
Parameter XPS.mint(address,uint256)._amount (contracts/XPS.sol#9) is not in mixedCase
Parameter XPS.burn(uint256)._amount (contracts/XPS.sol#14) is not in mixedCase
Variable XPS.MAX_SUPPLY (contracts/XPS.sol#8) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (contracts/public/Context.sol#20)" inContext (contracts/public/Context.sol#14-24)
Remove redundant statements if they congest code but offer no value.
Additional information: link
XPS.MAX_SUPPLY (contracts/XPS.sol#8) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
getRoleMemberCount(bytes32) should be declared external:
- AccessControl.getRoleMemberCount(bytes32) (contracts/public/AccessControl.sol#94-96)
getRoleMember(bytes32,uint256) should be declared external:
- AccessControl.getRoleMember(bytes32,uint256) (contracts/public/AccessControl.sol#110-112)
getRoleAdmin(bytes32) should be declared external:
- AccessControl.getRoleAdmin(bytes32) (contracts/public/AccessControl.sol#120-122)
grantRole(bytes32,address) should be declared external:
- AccessControl.grantRole(bytes32,address) (contracts/public/AccessControl.sol#134-138)
renounceRole(bytes32,address) should be declared external:
- AccessControl.renounceRole(bytes32,address) (contracts/public/AccessControl.sol#169-173)
name() should be declared external:
- ERC20.name() (contracts/public/ERC20.sol#65-67)
symbol() should be declared external:
- ERC20.symbol() (contracts/public/ERC20.sol#73-75)
decimals() should be declared external:
- ERC20.decimals() (contracts/public/ERC20.sol#90-92)
balanceOf(address) should be declared external:
- ERC20.balanceOf(address) (contracts/public/ERC20.sol#104-106)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (contracts/public/ERC20.sol#116-119)
allowance(address,address) should be declared external:
- ERC20.allowance(address,address) (contracts/public/ERC20.sol#124-126)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (contracts/public/ERC20.sol#135-138)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (contracts/public/ERC20.sol#152-156)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (contracts/public/ERC20.sol#170-173)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (contracts/public/ERC20.sol#189-192)
setupMinterRole(address) should be declared external:
- MinterAccess.setupMinterRole(address) (contracts/public/MinterAccess.sol#22-24)
revokeMinterRole(address) should be declared external:
- MinterAccess.revokeMinterRole(address) (contracts/public/MinterAccess.sol#26-28)
owner() should be declared external:
- Ownable.owner() (contracts/public/Ownable.sol#35-37)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (contracts/public/Ownable.sol#54-57)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (contracts/public/Ownable.sol#63-67)
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 price dump / death
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Unable to find Telegram and Twitter accounts