It's finally happened! We have released a system update that will start the process of activating Smart Contracts on the Waves MainNet.
We have released a new system protocol for the Waves blockchain that will enable Smart Contracts. The update initialises a process of voting for miners on the network. The successful conclusion of the voting process is required to activate the new protocol and switch on smart contracts for network users. After reaching the required 80% of votes, the protocol will be activated a week later. When activation occurs, smart contracts will become available for developers who wish to use them in their projects.
What are Waves Smart Accounts?
The first stage of Waves' smart contracts launch will bring so-called Smart Accounts to the platform. In simple terms, Smart Accounts are non-Turing complete smart contracts: they allow the execution of code on the blockchain, but with deliberate limitations on functionality to avoid unwanted usage scenarios and to increase the reliability of the system. We are deliberately not going to provide users with the ability to write functions, recursions, and loops of indefinite nesting. We have explained before that we avoid constructions whose complexity cannot be predicted in advance, and that cannot be executed in a definite number of steps. That is also the reason why we have no collections or 'for each' constructions.
Smart Accounts will provide the most popular and in-demand features for the crypto community, and will apply to various token operations. The list of features to be deployed includes:
- Multi-signature wallets. Wallets that cannot be controlled by one person alone. In order to make a transaction, the required parties must provide their private keys simultaneously. This feature also opens the way for two-factor authentication and enables best security practices for the platform.
- Atomic swaps. Trustless exchange of cryptocurrencies hosted on different blockchains. An atomic swap is a direct trade between two users of different cryptocurrencies, the honesty of which is guaranteed by a single contract on both blockchains.
- Token freezing. Preventing buyers from selling or transferring tokens out of their address for a certain amount of time. This involves sending a token to a user, but ensuring it remains non-transferable and unspendable for a period of time. The most obvious use case for this is as a vesting mechanism or for team/contractor payments after an ICO takes place.
- Whitelist voting. An easy-to-implement voting process for the Waves blockchain. With this feature you'll be able to organise any type of vote with a preconfigured list of people/accounts that are able to participate in a given poll.
- Data Oracles. An Oracle is an application that connects the blockchain to an external data source. It can place third-party data on the blockchain as a series of transactions, but cannot change this data once uploaded. A smart contract can then make payments to other accounts based on this data.
Waves founder and CEO Sasha Ivanov commented, 'We are creating a user-friendly blockchain platform that will be easy for anyone to use. To achieve this we are trying to look at the system through the user's eyes and understand what they most need. This is the essence of our approach to Smart Accounts.'
All of this functionality is delivered via the unique new programming language used to implement Waves Smart Accounts: RIDE. The language has a new syntax, specially designed by Waves developers for this purpose. RIDE is optimised for blockchain execution and requires minimal resources for its operation. It has been narrowly specialised to simplify processes for developers and make it easier than ever to create applications on the blockchain.
Moreover, Waves' Smart Accounts do not require any 'Gas' for their operation, unlike Ethereum's smart contracts. There will of course be a fee, but this is minimal for the network and completely predictable - like a standard transaction fee (Waves' current network transaction fee is 0.001 WAVES). Users can set up their accounts securely and know that they will not have to pay substantial or unknown transaction fees. This will be possible due to the statically-predictable execution time. Since Waves has been built on top of an account-based model like Ethereum or Nxt (instead of Bitcoin's input/output system), we can set security scripts on entire accounts.
A full description of Smart Accounts functionality can be found in the white paper.
'This release paves the way for the widespread adoption of the Waves blockchain, while preserving the original spirit of Waves: simplicity and accessibility. It enables developers to build blockchain-based applications, which is a huge step towards truly mass adoption of the technology,' explains Ilya Smagin, Head of Development for Waves smart contracts.
Further development plan
After the first stage, the Waves team will continue investigating possible scenarios for Smart Account usage and begin implementation of the second phase: Turing-complete smart contracts that will bring a far wider range of features to the Waves ecosystem.