TokenRecover.recoverERC20(address,uint256) (#1132-1134) ignores return value by IERC20(tokenAddress).transfer(owner(),tokenAmount) (#1133)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Contract ownership is not renounced (belongs to a wallet)
XeliusIo.constructor(string,string,uint8,uint256,address,address).feeReceiver_ (#1247) lacks a zero-check on :
- address(feeReceiver_).transfer(msg.value) (#1249)
XeliusIo.constructor(string,string,uint8,uint256,address,address).tokenOwner (#1246) lacks a zero-check on :
- _owner = tokenOwner (#1250)
Check that the address is not zero.
Additional information: link
Address.isContract(address) (#514-523) uses assembly
- INLINE ASM (#521)
Address._verifyCallResult(bool,bytes,string) (#659-676) uses assembly
- INLINE ASM (#668-671)
Do not use evm assembly.
Additional information: link
Contract name (XELIUS.IO) 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._verifyCallResult(bool,bytes,string) (#659-676) is never used and should be removed
Address.functionCall(address,bytes) (#567-569) is never used and should be removed
Address.functionCall(address,bytes,string) (#577-579) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#592-594) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#602-609) is never used and should be removed
Address.functionDelegateCall(address,bytes) (#641-643) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (#651-657) is never used and should be removed
Address.functionStaticCall(address,bytes) (#617-619) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (#627-633) is never used and should be removed
Address.sendValue(address,uint256) (#541-547) is never used and should be removed
Context._msgData() (#133-136) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.0 (#7) allows old versions
Pragma version^0.8.0 (#87) allows old versions
Pragma version^0.8.0 (#116) allows old versions
Pragma version^0.8.0 (#143) allows old versions
Pragma version^0.8.0 (#449) allows old versions
Pragma version^0.8.0 (#491) allows old versions
Pragma version^0.8.0 (#683) allows old versions
Pragma version^0.8.0 (#710) allows old versions
Pragma version^0.8.0 (#740) allows old versions
Pragma version^0.8.0 (#833) allows old versions
Pragma version^0.8.0 (#867) allows old versions
Pragma version^0.8.0 (#899) allows old versions
Pragma version^0.8.0 (#1056) allows old versions
Pragma version^0.8.0 (#1118) allows old versions
Pragma version^0.8.0 (#1141) allows old versions
Pragma version^0.8.0 (#1168) allows old versions
Pragma version^0.8.0 (#1234) 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) (#541-547):
- (success) = recipient.call{value: amount}() (#545)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (#602-609):
- (success,returndata) = target.call{value: value}(data) (#607)
Low level call in Address.functionStaticCall(address,bytes,string) (#627-633):
- (success,returndata) = target.staticcall(data) (#631)
Low level call in Address.functionDelegateCall(address,bytes,string) (#651-657):
- (success,returndata) = target.delegatecall(data) (#655)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Variable Ownable._owner (#1071) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#134)" inContext (#128-137)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Reentrancy in XeliusIo.constructor(string,string,uint8,uint256,address,address) (#1241-1253):
External calls:
- address(feeReceiver_).transfer(msg.value) (#1249)
State variables written after the call(s):
- _mint(tokenOwner,initialBalance_ * 10 ** uint256(decimals_)) (#1251)
- _balances[account] += amount (#379)
- _owner = tokenOwner (#1250)
- _mint(tokenOwner,initialBalance_ * 10 ** uint256(decimals_)) (#1251)
- _totalSupply += amount (#378)
Event emitted after the call(s):
- Transfer(address(0),account,amount) (#380)
- _mint(tokenOwner,initialBalance_ * 10 ** uint256(decimals_)) (#1251)
Apply the check-effects-interactions pattern.
Additional information: link
name() should be declared external:
- ERC20.name() (#199-201)
symbol() should be declared external:
- ERC20.symbol() (#207-209)
totalSupply() should be declared external:
- ERC20.totalSupply() (#231-233)
balanceOf(address) should be declared external:
- ERC20.balanceOf(address) (#238-240)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (#309-312)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (#328-334)
burn(uint256) should be declared external:
- ERC20Burnable.burn(uint256) (#464-466)
burnFrom(address,uint256) should be declared external:
- ERC20Burnable.burnFrom(address,uint256) (#479-484)
transferAndCall(address,uint256) should be declared external:
- ERC1363.transferAndCall(address,uint256) (#927-929)
transferFromAndCall(address,address,uint256) should be declared external:
- ERC1363.transferFromAndCall(address,address,uint256) (#955-961)
approveAndCall(address,uint256) should be declared external:
- ERC1363.approveAndCall(address,uint256) (#988-990)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#1098-1101)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#1107-1111)
recoverERC20(address,uint256) should be declared external:
- TokenRecover.recoverERC20(address,uint256) (#1132-1134)
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 is marked as scam (rug pull, honeypot, phishing, etc.)
Additional information: link
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Unable to find Telegram and Twitter accounts