Releases: wavesplatform/Waves
Version 1.1.0 (Stagenet)
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)
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)
In This Release
This release includes a critical bugfix. Miners must update before RIDE4Dapps feature is activated.
- Fixed consistency issues in
lastBlock
andblockInfoByHeight(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)
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
- Defining custom functions:
func max(a: Int, b: Int) = if (a > b) then a else b
@Callable(inv)
and@Verifier(tx)
annotations:
@Callable(i)
func record(x: Int) = {
WriteSet([DataEntry(toBase58String(i.caller.bytes), x])
}
@Verifier(tx)
func verify() = {
false
}
-
Postfix notation for function calls:
extract(i.payment)
can be rewritten asi.payment.extract()
getInteger(account, key)
can be simplified toaccount.getInteger(key)
-
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
{-# 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
- macOS:
- 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 optionalmatches
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)
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 andjava -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 addedtoString
functions added forAddress
structureextractWithErrorMessage
function removedvalueWithErrorMessage
function renamed tovalueOrErrorMessage
- updated
AssetInfo
structure now containsassetId
field and itstotalAmount
field was renamed toquantity
Update Notes
When updating from any previous version, node owners need to perform one of these actions:
- rebuild from scratch
- import a blockchain snapshot or use
blockchain.dat
from http://blockchain.testnet.wavesnodes.com/
more on this in the docs
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)
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 nameddefault()
will be attempted to execute when no"call"
provided inInvokeScriptTransaction
- multiple RIDE Api updates, including:
- updated
AssetInfo
andBlockInfo
structures now contain information about issuer and signer accordingly transactionById
is replaced withtransferTransactionById
ensure
function removedextractWithErrorMessage
andvalueWithErrorMessage:
(T|Unit, String) => Tas an
extract(..)` 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
andlog
functions addedmerkleVerify(data, proof, root)
can now verify Merkle tree validity
- updated
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
(orwaves-${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:
- rebuild from scratch
- import a blockchain snapshot or use
blockchain.dat
from http://blockchain.testnet.wavesnodes.com/
more on this in the docs
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
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)
- Download the attached
grpc-server-0.17.2-1-g86152e8.tgz
file - Extract it
- Copy all files from the extracted
grpc-server-0.17.2-1-g86152e8
directory into the/usr/share/waves-testnet
- Add line to the
/usr/share/waves-testnet/conf/local.conf
file:waves.extensions += com.wavesplatform.api.grpc.GRPCServerExtension
- Restart the
waves-testnet
service
Currently implemented services
- Accounts
- Assets
- Blockchain Features
- Blocks
- Transactions
- ... (may be extended in the future)
Example usage
- With Java (using WavesJ library, supported since 0.15.0)
- With C# (using WavesCS library, supported since 1.2.1)
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)
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 containstransactionId
,fee
,feeAssetId
assetInfo(assetId: ByteVector) : AssetInfo | Unit
BlockInfo
structure with fieldsheight
,timestamp
andgenerationSignature
addedlastBlock
value now available in global scopeblockInfoByHeight(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:
- Fully functional IDE is currently available at https://testnet.ide.wavesplatform.com/
- JS library for creating and signing transactions: https://www.npmjs.com/package/@waves/waves-transactions
- Compatible version of WavesKeeper can be downloaded here:
Chrome, FireFox, Opera, Edge
Update Notes
When updating from any previous version, node owners need to perform one of these actions:
- rebuild from scratch
- import a blockchain snapshot or use
blockchain.dat
from http://blockchain.testnet.wavesnodes.com/
more on this in the docs
SHA256 Checksums
6e267fa7313285dcfe966879ec0260e369dcda17fbbd993053c97220899d359a waves-all-0.17.2.jar
7752896584f5641ea56c5c4585bb6bd64a27df8a3c60e6eb401756e09ea17c00 waves-testnet_0.17.2_all.deb
Version 0.16.3 (Mainnet)
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)
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 eitherEXPRESSION
orDAPP
InvokeScriptTransaction
in RIDE fields renamed:paymentInfo
renamed topayment
,feeAsset
tofeeAssetId
callerPublicKey
added toInvocation
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