Telos is a networked ecosystem powering the future economy having established itself as the second most used network by transaction volume for over 2 years according to Blocktivity, an independent blockchain analyst.
Telos has been driving innovation since 2018 and is home to over 100 distinct applications (dApps) attracting well-known companies including Taikai, Qudo, Qubicles, Appics, Wordproof, Seeds, Zeptagram, and NewLife. These applications enjoy the robust on-chain services that Telos provides for voting, sentiment, decentralized file storage, location and much more.
TLOS is the name of the token that reflects ownership in the Telos network. A TLOS token is used on-chain for staking CPU, RAM, and REX lending resources that power the utility of this powerful network. Visit us at Telos.net.
AdminUpgradeabilityProxy.constructor(address,address,bytes)._admin (#348) shadows:
- AdminUpgradeabilityProxy._admin() (#433-438) (function)
Rename the local variables that shadow another component.
Additional information: link
Address._verifyCallResult(bool,bytes,string) (#227-244) is never used and should be removed
Address.functionCall(address,bytes) (#159-161) is never used and should be removed
Address.functionCall(address,bytes,string) (#169-171) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#184-186) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#194-201) is never used and should be removed
Address.functionStaticCall(address,bytes) (#209-211) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (#219-225) is never used and should be removed
Address.sendValue(address,uint256) (#133-139) is never used and should be removed
Proxy._implementation() (#34) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.6.0 (#5) allows old versions
Pragma version>=0.6.2<0.8.0 (#83) is too complex
Pragma version^0.6.0 (#249) allows old versions
Pragma version^0.6.0 (#327) allows old versions
solc-0.6.8 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
UpgradeabilityProxy.constructor(address,bytes)._logic (#268) lacks a zero-check on :
- (success) = _logic.delegatecall(_data) (#272)
AdminUpgradeabilityProxy.upgradeToAndCall(address,bytes).newImplementation (#424) lacks a zero-check on :
- (success) = newImplementation.delegatecall(data) (#426)
Check that the address is not zero.
Additional information: link
Modifier AdminUpgradeabilityProxy.ifAdmin() (#373-379) does not always execute _; or revert
All the paths in a modifier must execute _ or revert.
Additional information: link
Proxy._delegate(address) (#42-61) uses assembly
- INLINE ASM (#43-60)
Address.isContract(address) (#106-115) uses assembly
- INLINE ASM (#113)
Address._verifyCallResult(bool,bytes,string) (#227-244) uses assembly
- INLINE ASM (#236-239)
UpgradeabilityProxy._implementation() (#294-299) uses assembly
- INLINE ASM (#296-298)
UpgradeabilityProxy._setImplementation(address) (#314-322) uses assembly
- INLINE ASM (#319-321)
AdminUpgradeabilityProxy._admin() (#433-438) uses assembly
- INLINE ASM (#435-437)
AdminUpgradeabilityProxy._setAdmin(address) (#444-450) uses assembly
- INLINE ASM (#447-449)
Do not use evm assembly.
Additional information: link
Different versions of Solidity is used:
- Version used: ['>=0.6.2<0.8.0', '^0.6.0']
- ^0.6.0 (#5)
- >=0.6.2<0.8.0 (#83)
- ^0.6.0 (#249)
- ^0.6.0 (#327)
Use one Solidity version.
Additional information: link
Low level call in Address.sendValue(address,uint256) (#133-139):
- (success) = recipient.call{value: amount}() (#137)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (#194-201):
- (success,returndata) = target.call{value: value}(data) (#199)
Low level call in Address.functionStaticCall(address,bytes,string) (#219-225):
- (success,returndata) = target.staticcall(data) (#223)
Low level call in UpgradeabilityProxy.constructor(address,bytes) (#268-275):
- (success) = _logic.delegatecall(_data) (#272)
Low level call in AdminUpgradeabilityProxy.upgradeToAndCall(address,bytes) (#424-428):
- (success) = newImplementation.delegatecall(data) (#426)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Unable to find audit link on the website
Unable to find whitepaper link on the website
Last post in Twitter was more than 30 days ago