Update on Waves Platform Development

Alexey Kofman
Waves Protocol
Published in
6 min readApr 12, 2018

Here is a brief update on current development activities and plans on Waves Platform.

Waves Node

Waves Node team have grown to 12 people. Now we have 9 Scala developers, 2 QA-engineers and 1 analyst. Two Scala developers, Alexander Makoed and Mikhail Potanin, joined in last month.

The team sticks to a stable and effective development process and smooth release cycle. In general, we are able to deliver one release with several new features per month. In order to avoid frequent mandatory upgrades, we decided to roll out mandatory MainNet releases once per two months. The rule is simple: releases will be done every odd month (May, July, Sep, Nov, Jan…). Although new features will appear on TestNet more frequently, during two-months preparation we will do frequent TestNet releases to collect comprehensive feedback.

May release

Since we had our last release in March, next release is scheduled for May. We already have a scope of features we’re planning to deliver in May. Some of them are already on TestNet:

  1. DataTransaction allows using Waves blockchain as a key-value store, which can be useful in many use cases. Simple API includes setting values of integer, boolean and byte array types to your account by a specific key. Values set by DataTransaction can be accessed from API and smart account. Oracles and escrows will benefit from this feature the most, allowing them to lock and unlock some tokens on the account, with the usage of predefined condition and data in the blockchain. The feature is already on TestNet, we are testing it and collecting feedback. Before MainNet releases its API, rules or data structures may be adjusted. [On TestNet]
  2. Node storage optimization. We’re continuing optimizing LevelDB-based storage of Waves node. We’ve made one more step to make it more compact, so it’ll require less memory and its code will be simpler. Also, the state build will become faster. This resulted in blockchain rebuild time decreased twice and MainNet’s database now taking 10gb instead of 13gb. Moreover, the state build time takes much less time now. Node upgrade to this version will require state rebuild. [On TestNet]
  3. Fair Proof-of-Stake. As you know, Waves initially used Nxt-like PoS algorithm, which allowed us to bootstrap fast by using already working solution. For us, it has an obvious downside — miners with larger balances get more blocks than others, although, ideally, we would like all forged blocks to be strictly proportional to miner’s balance. Currently, we’re compensating the imbalance by distributing more Miner Reward Tonkens to small and medium miners. We did some research and came up with an idea to adjust the formula in order to fix the issue, whilst keeping its main advantage untouched, so every node will be able to forge blocks using its balance. This will stimulate further decentralization and bring more rewards to miners. [In Development]
  4. Burn any asset. Currently, only asset issuer can burn the asset. The idea is to allow everyone to burn some amount of an asset on their balance. It may be useful in some cases. [In Development]
  5. New transaction format is a technical feature, which adds version to a transaction format. Also, transactions of a new version have a collection of proofs instead of a single signature field. This will allow us to implement multi-signature accounts, atomic swaps and other features related to smart accounts. [On Testnet]

Sponsored Transactions

Another feature we’re planning to deliver in the nearest future is Sponsored Transaction proposal, which allows using custom assets as transaction fees more systematically, whilst fixing some issues.

The asset fees is a core feature of the platform but are also very controversial. Security is the major issue we’re going to tackle, so the system won’t get clogged with fee transactions. Also, we’d like to bring more fees to miners and leasers, whilst keeping transactions cheap for projects on Waves and preserving usability for autonomous project’s clients. You can check some feedback on this question, for example, here.

The latest proposal named Sponsored Transactions (or Autonomous Assets) is under discussion now. We have already received both a lot of positive feedback and some concerns from the community. In general, we think that this solution is the best of all possible options. We will go ahead with it, maybe with some adjustments.

Smart Contracts

The most anticipated of the upcoming Waves features are Smart Contracts. To be clear, they’ll include a number of different features:

  1. Smart Accounts — Lightweight scripts (similar to bitcoin, but more expressive), which allow solving basic security-related cases, like multisigs and different locks, whilst executing transactions for a fixed or statically predictable price. The script, attached to some account, then just validates outgoing transactions.
  2. Smart Assets. The idea is that some operations with a specific asset will be limited by a simple validation script. This is an experimental feature, we are still in process of designing and prioritizing it.
  3. Turing-complete decentralized applications. We are going to extend our base language to Turing-complete one, making possible the creation of decentralized applications (DApps) on the blockchain. Theoretically, such applications can do literally anything. Combined with our low-cost, easy to use and standardized assets, such DApps will bring great benefits for projects on Waves.

We are to release Smart Accounts on TestNet in April or May and prepare it for MainNet release in July. Together with that, we are going to start working on Atomic Swaps and multi-sign wallets to be able to release them soon after activation of smart accounts on MainNet. You can find Waves smart-contracts whitepaper preview here.

Waves Client

Waves Client team is now busy working on multiple features. The localization is one of them. The Client will be translated into Turkish and Chinese languages. Other languages can be easily added by our community.

In a few months, we are going to release Waves Wallet 1.0, which means the end of beta testing. In order to do that, we need to fix a number of things, implement token burn function, and complete DEX redesign. As for the DEX user interface, our goal is to make a top-level crypto-exchange, so we will work on it continuously. First changes will include a redesign of the watch-list and addition of trade history widget. New crypto-gateways to Monero and Dash will also be integrated.

An authorization with Waves wallet, when using a third-party application, is one more useful feature, we are currently working on. As a next step, it will allow a public application to initiate payments and other transactions safely, without accessing client’s private key, which is stored in a wallet.

A technical improvement, which will increase wallet stability and performance, is a new backend database. It will store and index transaction data from blockchain. This will be an open-source component, available for third-party developers.

Mobile Applications

The mobile team is working on a new version of mobile applications. Android and iOS apps will get a renewed modern design, thus becoming full-featured clients for Waves blockchain.

Relations with Developers

The most important thing for us now is to get more developers involved in the development of the projects and tools for Waves. If you are a developer, probably you’ve already met Inal Kardanov — our new team member, responsible for relations with developers’ community. He will lead technical ambassadors programme, organize developers’ meetups and advocate community interests in the core team.

The next big thing coming is the Waves community forum. In general, we’re going to make the team’s structure and the development process more transparent for the community, whilst enabling more smooth discussion of issues. These steps will provide o more early feedback on the features. A big step in this direction is a launch of Waves community forum, which will be announced very soon. All the proposals, new features, roadmaps, projects on Waves and new events will be discussed there.

Another important question is the availability of API client libraries, which can be used to retrieve data from blockchain via API and sign transactions. Currently, there are libraries for JavaScript, Java, Python and C#. There is a lot of feedback, stating that these tools have to be considerably improved, in order to suit the needs of all the new projects. This is a high priority task for us now. Our team members and technical experts from the community will continue working on it.

--

--