Waves is a platform for issuing and trading tokens.

Anyone can create a new token in a few seconds, without the difficulty of creating a smart contract.

Waves implements a decentralized exchange, Matcher, on the protocol level. It works the same as the usual exchange. Anyone can send an order to the order book. If that order matches with another order, they are executed and removed from the book. Otherwise, the order goes into the book until matching order will be sent.

Waves is built with the knowledge that many users can’t or don’t want to maintain a full node, keeping all the transactions on their PC. It introduces a two-tier network, similar to Dash masternode system. There are full nodes and light nodes. Full nodes keep all transactions and process new ones. Light nodes (clients) just keep the current state of the blockchain and can send the request to make a transaction to a full node. Security for light nodes is maintained by talking to multiple full nodes and keeping a list of trustful nodes.

Waves uses Leased PoS as a consensus method. Each full node has a chance to create a block and get its reward. The bigger node’s balance, the higher this chance. A light node can “lease” their coins to a full node. This way, the light node will get part of the block reward, and the full node will increase its chance to create a block. According to the whitepaper, this will help “reducing the number of nodes that can potentially produce blocks”, and thus ”allows for faster confirmation times, lower latency, and a higher system throughput”. Even if light node user leased his coins, he still has full control over them.

To further improve performance, Waves conducted the hard fork to enable Waves-NG. It is based on Bitcoin-NG proposal. Blockchain capacity is limited by block size and block interval. The bigger block size is, the more it requires for nodes to download new block. Some nodes can mine new block before downloading the previous one, thus forking the blockchain. Waves-NG solves that by splitting the block into small pieces. First, miner creates an empty block and sends it to the network. Then, miner starts to pack transactions into a microblocks, and sends them too. When another miner starts to mine a block, he can link to any of those microblocks. New miner can even link to an empty block, but has no incentive to do so, as his mining reward depends on the size of the previous block.


Hi. I write articles like this each week. You can subscribe and get them delivered to your email address.