Skip to content

Releases: wavesplatform/Waves

Version 1.1.0 (Stagenet)

04 Sep 10:52
329d12f
Compare
Choose a tag to compare
Pre-release

In This Release

Stagenet

In order to test new functionality without affecting projects on the testnet we represent new blockchain — stagenet. The testnet from now on becomes stable. The Waves testnet and mainnet will have the same versions and will be updated simultaneously. There is a separate .deb file for the stagenet in the release artifacts.

Please join the stagenet as a miner!

WEP 4: Block Reward and Community Driven Monetary Policy

Generators will receive additional WAVES with each generated block. The amount of the reward will be regulated by miners’ voting. WEP 4 is published here.

BlockReward is implemented as Feature 14. Please vote!

RIDE improvements

  • Fixed complexity estimator returning incorrect values in some cases
  • Decompiler improvements
  • Callable function signatures exposed via REST API at /utils/script/meta

Node updates

  • Protobuf schemas have moved to a dedicated repository, which also includes instructions on how to add them to your project. Note that this project is still a SNAPSHOT version, which means some interfaces or schemas can change before the final version is released. This release also includes numerous fixes and improvements in gRPC server extension.
  • Added support for Java 11.
  • As long as there are no established connections to other peers, the node will more aggressively attempt to establish a new connection, which should improve the startup process.
  • When DEB package is reinstalled during updates, the Node process will be restarted automatically.
  • The node will stop on a disk-related exception (e.g. when there's no space left on the device)
  • Due to scheduling issues, previous node versions could mine microblocks less often than specified in miner config. This is no longer the case: this version improves mining accuracy ensuring that microblocks are mined as often as specified.

Deprecated API routes

/assets/broadcast/* routes have been removed for good. They have been hidden from Swagger for a long time, and now their time has come. Please use /transactions/broadcast instead.

Update Notes

There's no need to rebuild state when updating from v1.0.2.

APT repository

We are now providing an APT repository to make it easier for node operators to install and update their deployments. The repo provides mainnet, testnet and stagenet packages. To install the latest version of a package for mainnet from the repo, run the following commands:

curl -sL http://apt.wavesplatform.com/apt-key.gpg | sudo apt-key add -
add-apt-repository "deb https://apt.wavesplatform.com/ xenial stagenet"
apt update
apt install waves-stagenet

Note: don't worry about the 'xenial' part in the repo name: Waves package should work on Debian jessie+, Ubuntu xenial+, and their forks.
Note: If this is a fresh install, APT will also pull all required dependencies (namely OpenJDK 8). Once the new version is released, you can easily update the package:

apt update 
apt upgrade

SHA256 Checksums

4089a9a79b1a82b92834382edf03682f6fe5ad5d7ff8aa9165088885ff76b518  grpc-server-stagenet-1.1.0.tgz
450d096b480f66f455a705f6b08904b1e305d00987ebba97f04d54d664cf21c7  grpc-server-stagenet_1.1.0_all.deb
ec53e778266a781b5458b401c73b3c7953a0d72d98dc594d877edb85147c6217  waves-all-1.1.0.jar
4fe59051af8773c1b966fa9a14b5cf1df2bf35115e90c6135678d95340cfd89c  waves-stagenet_1.1.0_all.deb

Version 1.0.2 (Mainnet + Testnet)

19 Jul 09:38
Compare
Choose a tag to compare

In this release

This is not a mandatory release. However, if your node generates blocks we recommend to update it to improve stability of dApps which use "co-dependent" transactions.

  • UTX cleanup is now started strictly after all transactions from a micro-fork are returned back to UTX pool, which should improve usability of "co-dependent" transactions.
  • /assets/nft/{address}/limit/{limit} endpoint no longer returns NFTs which were once owned by an address, but had since been transferred elsewhere.
  • improved transferTransactionById performance
  • waves.directory directory now can be changed in /etc/waves.conf when installing from DEB package
  • numerous gRPC API fixes
  • /transaction/info/{id} now returns {“error”: “311", “message”: “transactions does not exist”} for transaction which was not found in blockchain. Status code is the same - 404.
    Please do not rely on exact error messages in your applications, because they will most likely change in the future.

There's no need to rebuild state when updating from 1.0.1. See 1.0.1 release notes for more information on updating from earlier versions.

Note: if your /etc/waves/waves.conf was originally copied from a template, you may need to assure that waves.directory points to the correct directory. If this option doesn't exist in the config, default directory /var/lib/waves and /var/lib/waves-testnet will be used for mainnet and testnet, respectively.

SHA256 Checksums

582fe8171055f3de609ac1286f5f9d8ba91dcfd36f97f41a1aa3e0f5cf7e1caf  grpc-server-1.0.2.tgz
bcb028d4113586214e0a11837338c3523f169d2202a8a36f3522e576e206caf1  grpc-server_1.0.2_all.deb
d98353f8fb611c92ef4bef97118cfade7dcd227f5cf07666fdbb5242fc1c14d3  waves-all-1.0.2.jar
908a77383971748f627496a6fe51c0b624715d84e25baf579db4025a2b844e1e  waves_1.0.2_all.deb
66e1231aea0d8bdd65e5cf99252bf73113becbe8e24f6be1c72c5a2a8cd1e097  grpc-server-testnet_1.0.2_all.deb
581c390f34a30a4e65aad90bd7179552e83d2cf47717efbfca92dcf78f7aacad  waves-testnet_1.0.2_all.deb

Version 1.0.1 (Mainnet + Testnet)

04 Jul 14:52
Compare
Choose a tag to compare

In This Release

This release includes a critical bugfix. Miners must update before RIDE4Dapps feature is activated.

  • Fixed consistency issues in lastBlock and blockInfoByHeight(height)
  • NFTs are no longer duplicated in API responses
  • Improved Merkle tree-related functions performance
  • JS API has been extended with the nodeVersion method

There's no need to rebuild state when updating from 0.16.x, just update the binary. When updating from 1.0.0 after 2019-07-10, it's required to rebuild state from scratch.

See 1.0.0 release notes for more information.

SHA256 Checksums

ac0483875a9cfbcb8b7d6b60c74532bcb016c51b579caf45ca68bbd8d2c411ed  waves-all-1.0.1.jar
693460c8db14918f072601c3d115d1adf8c6d3c37285c9c86ac05c1f94056469  waves-testnet_1.0.1_all.deb
a4c0f7386a6b4261876ce85ae0922640cfceaf6298ad79f5077fd90d054edf91  waves_1.0.1_all.deb
54017253fddfb2411619fddbbe41b6e580a0241e2b5f09e5571a1ce37875a8b9  grpc-server-1.0.1.zip
2117a35eaeb271c66938e432a0363caf7af074213797b4c9e528156d48a52123  grpc-server-testnet_1.0.1_all.deb
652cdba4aa0b869e6d9a04ee7362d61ab101b9562ae85bb1f5cc2d61e97f5c17  grpc-server_1.0.1_all.deb

Version 1.0 (Testnet + Mainnet)

25 Jun 12:02
Compare
Choose a tag to compare

Hooray! Waves finally reaches version 1.0.0!

Total 3 new features are added to Waves blockchain: Ride4Dapps, OrderV3 and NFT. Please read their descriptions and information on other Waves node updates below.

FEATURE: RIDE 4 DApps

In this release, we introduce RIDE4DApps: the RIDE language and blockchain update. This grants a way to assign programmable functions to an account, which operate state and tokens atomically. To initiate the call, use the new InvokeScriptTransaction. More on that in the documentation.

RIDE Language Update

  1. Defining custom functions:

func max(a: Int, b: Int) = if (a > b) then a else b

  1. @Callable(inv) and @Verifier(tx) annotations:
@Callable(i)
func record(x: Int) = {
    WriteSet([DataEntry(toBase58String(i.caller.bytes), x])
}

@Verifier(tx)
func verify() = {
    false
}
  1. Postfix notation for function calls:
    extract(i.payment) can be rewritten as i.payment.extract()
    getInteger(account, key) can be simplified to account.getInteger(key)

  2. Compiler now supports directives. These are recommended to be specified at the beginning of DAPP code:

{-# STDLIB_VERSION 3 #-}
{-# CONTENT_TYPE DAPP #-}
{-# SCRIPT_TYPE ACCOUNT #-}

# definitions, callable and verifier functions go here
  1. {-# STDLIB_VERSION 3 #-} brings revamped version of RIDE language standard library. You can explore it in under RIDE section in documentation.

Monitoring tools for InvokeScriptTransaction

To debug results of InvokeScriptTransaction (transfers and state changes) with your node through REST APIs:
GET /debug/stateChanges/info/{transactionId}
GET /debug/stateChanges/address/{address}/limit/{limit}

ensure the following flags are set to true:

waves {
  db {
    store-transactions-by-address = true
    store-invoke-script-results = true
  }
}

FEATURE: Non-Fungible Tokens (NFT)

New blockchain feature (13) has been implemented. After activation, new transactions issuing non-reissuable assets with zero decimals and unit quantity will cost 0.001 Waves. There's also a new API endpoint which provides a list of NFTs owned by an address. See /assets/nft/{address}/limit/{limit} documentation in Swagger for mode info. Note that once this feature is activated, /assets/balance/{address} responses will no longer include NFTs.

FEATURE: OrderV3

  • Supports order fee not only in WAVES, but in assets too
  • Order now has a new field in JSON: "matcherFeeAssetId"

Node updates

Node Extensions

The new mechanism allows the developers to extend the node functionality by adding custom observers to the internal node state. Extensions are a simple JAR files which are added to the node classpath. Matcher and gRPC server have been refactored into an extension, and there's definitely more to come.

gRPC API

gRPC Server extension allows to access a Waves Node with gRPC instead of classic REST API, using the lang-agnostic protobuf schemes, reworked interfaces and gRPC built-in first-class streaming support. Most of the REST API has been implemented as gRPC services. Please note that gRPC interface is considered experimental, and may (and probably will) change in the future. Read more about gRPC here.

UTX Pool improvements

  • When a microblock (or a block) is discarded during the rollback, its transactions are returned back to UTX pool without validation. This will eliminate most problems with dependent transactions getting lost.
  • Miner now limits the amount of time it can take to retrieve (and validate) transactions from UTX pool when mining microblocks.
  • UTX pool will now pack at least one transaction into a microblock, even if it takes very long to validate. This will prevent miners from mining empty blocks under heavy load.
  • UTX cleanup will run just once when height changes, not every time a key block is received from multiple peers.

Default Waves directory

  • Default directory now follows os-specific guidelines:
    • macOS: $HOME/Library/Application Support/waves-mainnet
    • Linux: $XDG_DATA_HOME/waves or $HOME/.local/share/waves-mainnet
    • Windows: %APPDATA%/local/waves-mainnet
  • When Waves directory is not defined explicitly in a config file or via system property, default paths will include network-specific suffixes, e.g. waves-mainnet or waves-devnet. For custom networks, suffix contains base16-encoded network byte (e.g. waves-custom-FF).

New CLI

The node now comes with just one executable. Debian package installs waves (or waves-${network}) executable. Importer can be launched with the following command lines:

  java -jar waves-all-1.0.0.jar import -h 1220000 -c waves.conf -i blockchain.bin
  waves import -c waves.conf

Use waves --help for mainnet nodes installed from DEB package and java -jar waves-all.jar --help when running a fat jar. This change will help eliminating conflicts when installing Waves Node and some other third-party forked node.

Other notable changes

  • /addresses/data/{address} now accepts a regular expression in an optional matches parameter. When provided, the node will return only entries with keys matching the regex.
  • Logging configuration can now be extended or tweaked incrementally, it no longer requires a complete custom-written logback.xml.
  • Default setting for metrics have been tweaked, which should reduce memory footprint

Update Notes

No need to rebuild the node storage when updating mainnet node from version 0.16.2 (or 0.16.3). However, if you are updating a testnet node from a pre-RC2 version of 0.17 series, you will need to re-import blockchain.

Waves Node does not support Java 11 yet, so please use Java 8 or 9.

Voting

  • RIDE4DAPPS is implemented as Feature 11
  • Order Version 3 is implemented as Feature 12
  • NFT is implemented as Feature 13

Please vote!

SHA256 Checksums

db4663350583bc60b5f2dd493cd1390d1a676df01d3a1e99c852470905a392f2 waves-all-1.0.0.jar
4b4b69b38fd6d9987eba903f6211e6eadbaee98476d767c8b175e8251320c2bc waves_1.0.0_all.deb
06c835354c7c21c0834c9dc4ddcf9c66b0d3ff9f96d805f46ade79b62037ec49 waves-testnet_1.0.0_all.deb
1af9bec80d62801576759441bfe9dcbc91930125b42635831f7669484ef28483 grpc-server-1.0.0.zip

Version 0.17.4 RC2 (Testnet)

21 Jun 11:03
Compare
Choose a tag to compare
Pre-release

In This Release

This is the Release Candidate for the upcoming Mainnet Release.

Node:

  • When Waves directory is not defined explicitly in a config file or via system property, default paths will include network-specific suffixes, e.g. waves-mainnet or waves-devnet. For custom networks, suffix contains base16-encoded network byte (e.g. waves-custom-FF).
  • Protobuf/gRPC schemes have been updated.
  • Command-line interface for node and tools has been improved. Use waves --help for mainnet nodes installed from DEB package and java -jar waves-all.jar --help when running a fat jar.
  • UTX pool will now pack at least one transaction into a microblock, even if it takes very long to validate. This will prevent miners from mining empty blocks under heavy load.
  • UTX cleanup will run just once when height changes, not every time a key block is received from multiple peers.

RIDE:

  • Decompiler now outputs match-case structure
  • RIDE Api updates, including:
    • lastIndexOf functions added
    • toString functions added for Address structure
    • extractWithErrorMessage function removed
    • valueWithErrorMessage function renamed to valueOrErrorMessage
    • updated AssetInfo structure now contains assetId field and its totalAmount field was renamed to quantity

Update Notes

When updating from any previous version, node owners need to perform one of these actions:

SHA256 Checksums

f6d40c32315577b09d99def454810a75b840ed21b6a7bbfa30441168f5852237 waves-all-0.17.4.jar
b5fa6c5fcbbf031ae40efad88c9f0ab82d7aedc46475578c4d434d7cbfb74726 waves-testnet_0.17.4_all.deb
57f0cf6a76083b1bb2964f3c5baef9293afe9598c96c142a151d0c451a2b069b grpc-server-0.17.4.zip

Version 0.17.3 RC (Testnet)

30 May 07:33
Compare
Choose a tag to compare
Pre-release

In This Release

This is the Release Candidate for the upcoming Mainnet Release.

RIDE:

  • for STDLIB_VERSION 3, all scripts' max complexity is set to 4000
  • max block complexity is set to 1_000_000
  • @Default function annotation has been removed. From now, a function named default() will be attempted to execute when no "call" provided in InvokeScriptTransaction
  • multiple RIDE Api updates, including:
    • updated AssetInfo and BlockInfo structures now contain information about issuer and signer accordingly
    • transactionById is replaced with transferTransactionById
    • ensure function removed
    • extractWithErrorMessage and valueWithErrorMessage: (T|Unit, String) => Tas anextract(..)` function overload with better error messaging.
    • minor tuning for parseInt(..), split(..) and other recently added functions
    • base16 prefix introduced for Parser
    • a new family for cryptography functions including SHA1, SHA224, SHA256, SHA384, SHA512 and MD5 has been introduced
    • pow and log functions added
    • merkleVerify(data, proof, root) can now verify Merkle tree validity

Non-Fungible Tokens (NFT)

New blockchain feature (13) has been implemented. After activation, new transactions issuing non-reissuable assets with zero decimals and unit quantity will cost 0.001 Waves.

UTX Pool improvements:

  • When a microblock (or a block) is discarded during the rollback, its transactions are returned back to UTX pool without validation. This will eliminate most problems with dependent transactions getting lost.
  • Miner now limits the amount of time it can take to retrieve (and validate) transactions from UTX pool when mining microblocks.
  • UTXCleanup and validation performance optimizations

REST API changes:

  • added a new method to retrieve data entries for keys matching a regular expression
  • added a dedicated API for retrieving a list of NFT held by an address

Node Executable:

  • The node now comes with just one executable. Debian package installs waves (or waves-${network}) executable. Importer can be launched with the following command lines:
  java -jar waves-all-0.17.3.jar import -h 1220000 -c waves.conf -i blockchain.bin
  waves import -c waves.conf

This change will help eliminating conflicts when installing Waves Node and some other third-party forked node.

  • Logging configuration can now be extended or tweaked incrementally, it no longer requires a complete custom-written logback.xml
  • Default setting for metrics have been tweaked, which should reduce memory footprint

Update Notes

When updating from any previous version, node owners need to perform one of these actions:

Please vote for NFT(feature13)

SHA256 Checksums

b85bfcdb441c1c711b7cb10551808bc47ba68f48f1e88a5163b8b63918871810 waves-all-0.17.3.jar
66d97f7454c29b8748defee46e354d45807ba9221982c9170891e4ec4f89b7b6 waves-testnet_0.17.3_all.deb
dbbb5f8b2a39c97dca38c16a46df1538aacb0c47d41794aae80779666402bfff grpc-server-0.17.3.tgz

gRPC Server Extension 0.17.2

22 May 10:45
Compare
Choose a tag to compare
Pre-release

About

gRPC Server extension allows to access a Waves Node with gRPC instead of classic REST API, using the lang-agnostic protobuf schemes, reworked interfaces and gRPC built-in first-class streaming support.

How to install (using systemd TESTNET installation)

  1. Download the attached grpc-server-0.17.2-1-g86152e8.tgz file
  2. Extract it
  3. Copy all files from the extracted grpc-server-0.17.2-1-g86152e8 directory into the /usr/share/waves-testnet
  4. Add line to the /usr/share/waves-testnet/conf/local.conf file: waves.extensions += com.wavesplatform.api.grpc.GRPCServerExtension
  5. Restart the waves-testnet service

Currently implemented services

  • Accounts
  • Assets
  • Blockchain Features
  • Blocks
  • Transactions
  • ... (may be extended in the future)

Example usage

How to configure

Default config is

waves.grpc {
  host = localhost
  port = 6870
}

For example you can change the port with a line waves.grpc.port = 123 added to the /usr/share/waves-testnet/conf/local.conf file

Version 0.17.2 (Testnet)

07 May 16:24
Compare
Choose a tag to compare
Pre-release

In This Release

This is update is focused on better RIDE 4dApps developer experience.

  • dApp's scripts can now be invoked through alias:
invokeScript({
            dappAddress: "superweb3app",
            call:{function:"gowaves",args:[]}, payment: []},
            userSeed
            )
  • New @Default annotation function to dApp added. This allows client to invoke dApp's by its address/alias
invokeScript({
            dappAddress: "superweb3app",
            call:null,
            userSeed
            )

The way of defining default function in script is subjected to change in the future releases.

  • Binary operations order during compilation changed to ones in Java
  • Seriliazation of invokeScriptTransaction has been changed
  • Various node & blockchain optimizations
  • Bugfixes

RIDE API

  • Invocation of @Callable now contains transactionId, fee, feeAssetId
  • assetInfo(assetId: ByteVector) : AssetInfo | Unit
  • BlockInfo structure with fields height, timestamp and generationSignature added
  • lastBlock value now available in global scope
  • blockInfoByHeight(h: Int): BlockInfo | Unit function added

More info available at https://docs.wavesplatform.com

Monitoring tools for ScriptInvocationTransaction

To debug results of ScriptInvocationTransactions (transfers and state changes) with your node through REST APIs:

  • GET /debug/stateChanges/info/{transactionId}
  • GET /debug/stateChanges/address/{address}/limit/{limit}

ensure the following flags are set to true:

waves {
  db {
    store-transactions-by-address = true
    store-invoke-script-results = true
  }
}

Tools:

Update Notes

When updating from any previous version, node owners need to perform one of these actions:

SHA256 Checksums

6e267fa7313285dcfe966879ec0260e369dcda17fbbd993053c97220899d359a waves-all-0.17.2.jar
7752896584f5641ea56c5c4585bb6bd64a27df8a3c60e6eb401756e09ea17c00 waves-testnet_0.17.2_all.deb

Version 0.16.3 (Mainnet)

05 Apr 09:50
5ab2566
Compare
Choose a tag to compare

In This Release

This release includes numerous performance improvements in miner and UTX pool.

  • When microblock (or the whole block) gets filled up, miner will no longer attempt to validate other transactions to evict expired and invalid ones.
  • UTX cleanup task is initiated whenever last block changes (instead of being scheduled to run each 5 minutes). Invalid transactions are removed from UTX pool immediately after validation fails.
  • The node will log a reason why the transaction had been removed from UTX pool.
  • API operations now share the limited thread pool, which allows the node to handle the exceesive load while still appending new blocks.
  • Key block application has been sped up.

Update Notes

This release is recommended for all miners and node owners, but is not a mandatory one. There's no need to rebuild state when updating from v0.16.2.

SHA256 Checksums

b22c417624cbaf5e62e83b429e8a38c6e0734236abe63d9825707e0f90e90273  waves-all-0.16.3.jar
eb95b8e9f760aeacbaa143dcb2c303264087a6b90c775af28dfd1b9b1ac2dbcc  waves_0.16.3_all.deb

Version 0.17.1 (Testnet)

26 Mar 13:59
d6b9716
Compare
Choose a tag to compare
Pre-release

In This Release

This is a buxfix & RIDE API update.

  • Fixed a problem with parsing expression-script with stdlib_version 3
  • CONTENT_TYPE can now be either EXPRESSION or DAPP
  • InvokeScriptTransaction in RIDE fields renamed: paymentInfo renamed to payment, feeAsset to feeAssetId
  • callerPublicKey added to Invocation data structure of @Callable(..)
  • Decompiler now outputs directives too
  • Bugfixes

Update Notes

No need to rebuild the node storage when updating from version 0.16.2 or 0.17.0

SHA256 Checksums

74dcd9cf6d008a9b6ba21712ffbdb49d325816a49788063b77202eefcedb594c waves-all-0.17.1.jar
0db5a709a6cbb8a03985950298071a1fbf8e02f3bf8f5fbebe7db47295dd86d8 waves-testnet_0.17.1_all.deb