Velas AG, headquartered in Switzerland, is a new AI-operated dPoS (delegated proof of stake) blockchain project and an ecosystem on which one can build AI projects, dApps, smart contracts, etc. It is founded by the CEO of the world’s first and biggest altcoin payment processor platform from 2013 – Coinpayments.net – Alex Alexandrov. Coinpayments created a CPS coin to provide its active merchants and users of 3'000 000 000 a discount token for transactions and fees, and earn staking rewards vaulting their CPS coin. The development of Velas rooted from CPS, as the founders saw an opportunity to create an own proprietary AI enhanced Blockhain and consensus protocol, rather than using a third party solution which still has flaws. Development of Velas started 2 years ago.
Coinpayments Coin to Velas coin (VLX) was done via Coinpayments platform on the 4th of July 2019 and will mark the day of Velas independence from original token. This will also launch first Stage described in Technical Paper.
The purpose of Velas is to address and fix existing issues and challenges faced by most existing Blockchains, like centralization, 51% attack, nothing at stake problem, scalability, security, high upfront expenses, etc. It does so by using neural networks optimized by artificial intuition to enhance its consensus algorithm.
LegacyERC20 (#508-511) has incorrect ERC20 function interface:LegacyERC20.transferFrom(address,address,uint256) (#510)
LegacyERC20 (#508-511) has incorrect ERC20 function interface:LegacyERC20.transfer(address,uint256) (#509)
Set the appropriate return values and types for the defined ERC20 functions.
Additional information: link
Low level call in ERC677BridgeToken.contractFallback(address,address,uint256,bytes) (#757-759):
- _to.call(abi.encodeWithSelector(ON_TOKEN_TRANSFER,_from,_value,_data)) (#758)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
AddressUtils.isContract(address) (#479-490) is declared view but contains assembly code
Ensure the attributes of contracts compiled prior to Solidity 0.5.0 are correct.
Additional information: link
SafeERC20.safeTransferFrom(address,address,uint256) (#594-604) uses assembly
- INLINE ASM (#596-604)
SafeERC20.safeTransfer(address,address,uint256) (#576-586) uses assembly
- INLINE ASM (#578-586)
AddressUtils.isContract(address) (#479-490) uses assembly
- INLINE ASM (#488-489)
Do not use evm assembly.
Additional information: link
Pragma version^0.4.24 (#185) allows old versions
Pragma version^0.4.24 (#378) allows old versions
Pragma version0.4.24 (#666) allows old versions
Pragma version0.4.24 (#496) allows old versions
Pragma version0.4.24 (#558) allows old versions
Pragma version^0.4.24 (#20) allows old versions
solc-0.4.24 is not recommended for deployment
Pragma version0.4.24 (#526) allows old versions
Pragma version^0.4.24 (#126) allows old versions
Pragma version^0.4.24 (#160) allows old versions
Pragma version0.4.24 (#609) allows old versions
Pragma version0.4.24 (#536) allows old versions
Pragma version^0.4.24 (#3) allows old versions
Pragma version0.4.24 (#515) allows old versions
Pragma version^0.4.24 (#311) allows old versions
Pragma version^0.4.24 (#75) allows old versions
Pragma version^0.4.24 (#464) allows old versions
Pragma version^0.4.24 (#440) allows old versions
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
Parameter ERC677BridgeToken.callAfterTransfer(address,address,uint256)._to (#740) is not in mixedCase
Parameter ERC677BridgeToken.contractFallback(address,address,uint256,bytes)._to (#757) is not in mixedCase
Parameter ERC677BridgeToken.claimTokens(address,address)._token (#774) is not in mixedCase
Parameter BurnableToken.burn(uint256)._value (#142) is not in mixedCase
Parameter ERC677BridgeToken.claimTokens(address,address)._to (#774) is not in mixedCase
Parameter ERC677BridgeToken.transfer(address,uint256)._to (#720) is not in mixedCase
Parameter StandardToken.allowance(address,address)._spender (#250) is not in mixedCase
Parameter StandardToken.approve(address,uint256)._value (#236) is not in mixedCase
Parameter SafeMath.sub(uint256,uint256)._b (#58) is not in mixedCase
Parameter BasicToken.transfer(address,uint256)._value (#103) is not in mixedCase
Parameter SafeMath.mul(uint256,uint256)._b (#32) is not in mixedCase
Parameter StandardToken.allowance(address,address)._owner (#249) is not in mixedCase
Parameter Claimable.claimNativeCoins(address)._to (#647) is not in mixedCase
Parameter SafeMath.div(uint256,uint256)._b (#48) is not in mixedCase
Parameter SafeMath.add(uint256,uint256)._b (#66) is not in mixedCase
Parameter ERC677BridgeToken.transferFrom(address,address,uint256)._value (#726) is not in mixedCase
Parameter MintableToken.mint(address,uint256)._to (#412) is not in mixedCase
Parameter ERC677BridgeToken.transferAndCall(address,uint256,bytes)._value (#702) is not in mixedCase
Parameter ERC677BridgeToken.setBridgeContract(address)._bridgeContract (#691) is not in mixedCase
Parameter SafeERC20.safeTransferFrom(address,address,uint256)._from (#594) is not in mixedCase
Parameter StandardToken.transferFrom(address,address,uint256)._from (#209) is not in mixedCase
Parameter SafeMath.sub(uint256,uint256)._a (#58) is not in mixedCase
Parameter Claimable.claimErc20Tokens(address,address)._to (#657) is not in mixedCase
Parameter ERC677BridgeToken.contractFallback(address,address,uint256,bytes)._data (#757) is not in mixedCase
Parameter Claimable.claimValues(address,address)._to (#635) is not in mixedCase
Parameter StandardToken.transferFrom(address,address,uint256)._to (#210) is not in mixedCase
Parameter Claimable.claimValues(address,address)._token (#635) is not in mixedCase
Parameter Claimable.claimErc20Tokens(address,address)._token (#657) is not in mixedCase
Parameter SafeERC20.safeTransfer(address,address,uint256)._to (#576) is not in mixedCase
Parameter StandardToken.approve(address,uint256)._spender (#236) is not in mixedCase
Parameter StandardToken.increaseApproval(address,uint256)._spender (#269) is not in mixedCase
Parameter ERC677BridgeToken.transferAndCall(address,uint256,bytes)._data (#702) is not in mixedCase
Parameter Address.safeSendValue(address,uint256)._value (#549) is not in mixedCase
Parameter ERC677BridgeToken.superTransfer(address,uint256)._value (#716) is not in mixedCase
Parameter BasicToken.transfer(address,uint256)._to (#103) is not in mixedCase
Parameter ERC677BridgeToken.transferAndCall(address,uint256,bytes)._to (#702) is not in mixedCase
Parameter SafeERC20.safeTransferFrom(address,address,uint256)._token (#594) is not in mixedCase
Parameter SafeMath.mul(uint256,uint256)._a (#32) is not in mixedCase
Parameter StandardToken.decreaseApproval(address,uint256)._spender (#291) is not in mixedCase
Parameter Address.safeSendValue(address,uint256)._receiver (#549) is not in mixedCase
Parameter ERC677BridgeToken.transferFrom(address,address,uint256)._to (#726) is not in mixedCase
Parameter ERC677BridgeToken.callAfterTransfer(address,address,uint256)._from (#740) is not in mixedCase
Parameter ERC677BridgeToken.transferFrom(address,address,uint256)._from (#726) is not in mixedCase
Parameter ERC677BridgeToken.isBridge(address)._address (#746) is not in mixedCase
Parameter ERC677BridgeToken.callAfterTransfer(address,address,uint256)._value (#740) is not in mixedCase
Parameter BasicToken.balanceOf(address)._owner (#118) is not in mixedCase
Parameter MintableToken.mint(address,uint256)._amount (#413) is not in mixedCase
Parameter ERC677BridgeToken.transfer(address,uint256)._value (#720) is not in mixedCase
Parameter ERC677BridgeToken.contractFallback(address,address,uint256,bytes)._from (#757) is not in mixedCase
Parameter SafeMath.add(uint256,uint256)._a (#66) is not in mixedCase
Parameter StandardToken.increaseApproval(address,uint256)._addedValue (#270) is not in mixedCase
Parameter StandardToken.decreaseApproval(address,uint256)._subtractedValue (#292) is not in mixedCase
Parameter ERC677BridgeToken.contractFallback(address,address,uint256,bytes)._value (#757) is not in mixedCase
Parameter SafeERC20.safeTransferFrom(address,address,uint256)._value (#594) is not in mixedCase
Parameter SafeERC20.safeTransfer(address,address,uint256)._token (#576) is not in mixedCase
Parameter Ownable.transferOwnership(address)._newOwner (#361) is not in mixedCase
Parameter StandardToken.transferFrom(address,address,uint256)._value (#211) is not in mixedCase
Parameter ERC677BridgeToken.superTransfer(address,uint256)._to (#716) is not in mixedCase
Parameter SafeERC20.safeTransfer(address,address,uint256)._value (#576) is not in mixedCase
Parameter SafeMath.div(uint256,uint256)._a (#48) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
totalSupply() should be declared external:
- BasicToken.totalSupply() (#94-96)
- ERC20Basic.totalSupply() (#12)
burn(uint256) should be declared external:
- BurnableToken.burn(uint256) (#142-144)
renounceOwnership() should be declared external:
- ERC677BridgeToken.renounceOwnership() (#765-767)
- Ownable.renounceOwnership() (#352-355)
balanceOf(address) should be declared external:
- BasicToken.balanceOf(address) (#118-120)
- ERC20Basic.balanceOf(address) (#13)
transferFrom(address,address,uint256) should be declared external:
- LegacyERC20.transferFrom(address,address,uint256) (#510)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (#175)
- StandardToken.approve(address,uint256) (#236-240)
finishMinting() should be declared external:
- ERC677BridgeToken.finishMinting() (#761-763)
- MintableToken.finishMinting() (#431-435)
transfer(address,uint256) should be declared external:
- LegacyERC20.transfer(address,uint256) (#509)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#361-363)
decreaseAllowance(address,uint256) should be declared external:
- ERC677.decreaseAllowance(address,uint256) (#505)
- ERC677BridgeToken.decreaseAllowance(address,uint256) (#782-784)
burn(uint256) should be declared external:
- IBurnableMintableERC677Token.burn(uint256) (#520)
mint(address,uint256) should be declared external:
- MintableToken.mint(address,uint256) (#411-425)
mint(address,uint256) should be declared external:
- IBurnableMintableERC677Token.mint(address,uint256) (#519)
allowance(address,address) should be declared external:
- ERC20.allowance(address,address) (#169-170)
- StandardToken.allowance(address,address) (#248-257)
increaseAllowance(address,uint256) should be declared external:
- ERC677.increaseAllowance(address,uint256) (#504)
- ERC677BridgeToken.increaseAllowance(address,uint256) (#778-780)
Use the external attribute for functions never called from the contract.
Additional information: link
Different versions of Solidity are used:
- Version used: ['0.4.24', '^0.4.24']
- ^0.4.24 (#3)
- ^0.4.24 (#20)
- ^0.4.24 (#75)
- ^0.4.24 (#126)
- ^0.4.24 (#160)
- ^0.4.24 (#185)
- ^0.4.24 (#311)
- ^0.4.24 (#378)
- ^0.4.24 (#440)
- ^0.4.24 (#464)
- 0.4.24 (#496)
- 0.4.24 (#515)
- 0.4.24 (#526)
- 0.4.24 (#536)
- 0.4.24 (#558)
- 0.4.24 (#609)
- 0.4.24 (#666)
Use one Solidity version.
Additional information: link
SafeMath.mul(uint256,uint256) (#32-43) is never used and should be removed
SafeERC20.safeTransferFrom(address,address,uint256) (#594-604) is never used and should be removed
SafeMath.div(uint256,uint256) (#48-53) is never used and should be removed
Remove unused functions.
Additional information: link
Unable to find audit link on the website
Token is not listed at Mobula.Finance
Additional information: link
Twitter account link seems to be invalid