Skip to content

Releases: wavesplatform/Waves

Version 0.17.0 (Testnet)

18 Mar 14:04
Compare
Choose a tag to compare
Pre-release

In This Release

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

Default values are:

{-# STDLIB_VERSION 2 #-}
{-# CONTENT_TYPE EXPRESSION #-}
{-# SCRIPT_TYPE ACCOUNT #-}

For Asset script, use

{-# CONTENT_TYPE EXPRESSION #-}
{-# SCRIPT_TYPE ASSET #-}

Standard library version 3 and content-type DAPP will be available after successful RIDE4DAPPS feature activation.

  1. {-# STDLIB_VERSION 3 #-} includes:
  • this, returning address of the account, granting
getInteger(this, key)
  • value() function, which is the same as extract
  • let x = [a,b,c] List constructor
  • New types: WriteSet,TransferSet,ScriptResult and other types necessary for script invocation
  • getInteger(...) family of functions and addressFromString now have companions of type getIntegerValue(..) and addressFromStringValue(..) which throw unrecoverable exception is the value is not present

Other changes

  • Default directory now follows os-specific guidelines:
    OSX: $HOME/Library/Application Support/waves
    Linux: $XDG_DATA_HOME/waves or $HOME/.local/share/waves
    Windows: %APPDATA%/local/waves (edited)

RIDE 4 DAPPS is implemented as Feature 11. Please vote!

Update Notes

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

SHA256 Checksums

d53d59cb92b0e3d8fbeaba481e778cd254919284f5c5d80ee2133868c3fdefbd  waves-all-0.17.0.jar
a8d205f6018a32eca91998b44b542013ef7e22a4919ffb489ae9eb48d9226a0d  waves-testnet_0.17.0_all.deb

Version 0.15.6 (Mainnet)

10 Mar 10:10
Compare
Choose a tag to compare

Latest stable release is 0.16.2 - better to use it.

In This Release

  • Hotfix eliminating difference in assetBalance() function between v0.15 and v0.16

Update Notes

No need to rebuild the node storage.

SHA256 Checksums

b3d0496a270b4494fecc564af2adc826f258a6fa5591300ab6741d9a31dcd628  waves_0.15.6_all.deb
dde4a11c45212754b786582568d7b8ab32b5e58010f5896127798aa8a435895a  waves-all-0.15.6.jar

Version 0.16.2 (Mainnet + Testnet)

06 Mar 13:02
Compare
Choose a tag to compare

In This Release

The list below also includes items from older 0.16.x releases

  • Improved blockchain import time by a factor of 2.5.
  • Optimized transaction storage. This reduces storage by half.
  • Improved block application time
  • Improved performance of /address/transactions and /addresses/scriptInfo API endpoints.
  • Removed checkpoint functionality (API: /blocks/checkpoint).
  • Removed chainId field from BurnTransaction v1 JSON.
  • Limited Base58 strings by 192 bytes to avoid time bombs.
  • Optional limit on total size of transactions in UTX pool: config parameter waves.utx.max-bytes-size, default is 50 MBytes.
  • Added the waves.synchronization.max-base-target option to stop node when base target grows above a certain value. Might be useful for exchanges to detect when they are likely on a fork. Not recommended for miners.
  • Added -no-verify option to Importer to turn off block and transaction validation. Speeds up import by 5-20%. Use with caution only if you trust your blockchain file.
  • Removed confusing log messages while importing blocks.
  • Fixed Swagger doc for /alias/aliasOfAddress.
  • Fixed error message for /asset/distribution/height/limit.
  • Fixed a bug that could affect UTX pool under high load.
  • REST API now returns minimized JSON
  • The "Transaction is not allowed by script" error (code 307) was split into two: 307 for account scripts and 308 for asset scripts.
  • Fixed /debug/minerInfo to omit addresses with not enough balance for mining.
  • Genesis block generator now requires that initial-balance be equal to sum of all transfers in distributions.
  • Rollback start is now logged at level INFO (previously DEBUG).
  • Experimental: script decompiler API endpoint available at /utils/script/decompile
  • Matcher is turned off in config by default
  • Fixed transaction order in /transactions/$address

Update Notes

Storage has been reworked significantly, so please rebuild the state database. Node will not run on the old state. The updated state is going to take much less space!

SHA256 Checksums

04de8e4d88ad2e5480b6d7c98cb9393aa85e8ad79708e17253aed7209dc03e08  waves-all-0.16.2.jar
33ccd520f34d045705224d1180ae3d2ecacbb2d8921dc673fd3ddf345a98d4e3  waves_0.16.2_all.deb
d255402e5ca0430b9e06f6cf870315b977c5b8f36c80daac3c3cf3e7d5f5d32d  waves-testnet_0.16.2_all.deb

Version 0.16.1 (Testnet)

21 Feb 13:37
Compare
Choose a tag to compare
Pre-release

In This Release

  • script decompiler API endpoint available at /utils/script/decompile
  • matcher is turned off in config by default
  • bug fixes

Update Notes

This release fixes a bug that could lead to corrupted state, so please rebuild the state of your node!

SHA256 Checksums

efa09dbaae57a149f98db9b9bcba01948a4e0533460cca158e946be497a6ae39  waves-all-0.16.1.jar
fb96823d308f7460f806df37359744c8cc0b6b8d852c760fa41e01304c34e71a  waves-testnet_0.16.1_all.deb

Version 0.16.0 (Testnet)

12 Feb 13:52
Compare
Choose a tag to compare
Pre-release

In This Release

  • Improved blockchain import time by a factor of 2.5.
  • Optimized transaction storage. This reduces storage by half.
  • Improved block application time
  • Improved performance of /address/transactions and /addresses/scriptInfo API endpoints.
  • Removed checkpoint functionality (API: /blocks/checkpoint).
  • Removed chainId field from BurnTransaction v1 JSON.
  • Limited Base58 strings by 192 bytes to avoid time bombs.
  • Optional limit on total size of transactions in UTX pool: config parameter waves.utx.max-bytes-size, default is 50 MBytes.
  • Added the waves.synchronization.max-base-target option to stop node when base target grows above a certain value. Might be useful for exchanges to detect when they are likely on a fork. Not recommended for miners.
  • Added -no-verify option to Importer to turn off block and transaction validation. Speeds up import by 5-20%. Use with caution only if you trust your blockchain file.
  • Removed confusing log messages while importing blocks.
  • Fixed Swagger doc for /alias/aliasOfAddress.
  • Fixed error message for /asset/distribution/height/limit.
  • Fixed a bug that could affect UTX pool under high load.
  • REST API now returns minimized JSON
  • The "Transaction is not allowed by script" error (code 307) was split into two: 307 for account scripts and 308 for asset scripts.
  • Fixed /debug/minerInfo to omit addresses with not enough balance for mining.
  • Genesis block generator now requires that initial-balance be equal to sum of all transfers in distributions.
  • Rollback start is now logged at level INFO (previously DEBUG).

Update Notes

Storage format has changed significantly in this release, so please rebuild your state from scratch. Good news is, it now takes much less space and time to import.

SHA256 Checksums

e561eff32cf69db07ec1316e14c01006991fb395d795deedc18f9b820d98fd15  waves-all-0.16.0.jar
120e889e53399ec5d454de7eaa6c88eb64b286d32a160c69db61578bed9725e8  waves-testnet_0.16.0_all.deb

Version 0.15.5 (Mainnet)

15 Jan 12:39
Compare
Choose a tag to compare

In This Release

  • API change for method appeared in 0.15.3 - /asset/{assetId}/distribution/{height}. For more details see here
  • RIDE fixes

SHA256 Checksums

77ee236b7e637549be116ce755849c4dcea11397fe6786d7e1722fc6e1a2b0ad  waves_0.15.5_all.deb
9960727a7c789de6e9efae48174ba8d38795022e8014e7820f8e940437d13558  waves-all-0.15.5.jar

Version 0.15.4 (Mainnet + Testnet)

18 Dec 11:54
v0.15.4
Compare
Choose a tag to compare

In the release

  • Fixed bug with inaccessibility of the /asset/distribution API endpoint
  • Expanded the list of weak (small order X25519 point) public keys

Update notes

This update is mandatory for the miners.
If you update a MainNet node from version 0.14.4 and higher, no need for rebuilding state.
If you update a TestNet node from 0.15.x versions you need to rebuild state.

Please, read the documentation on getting actual blockchain.

Checksums

MD5 (waves-all-0.15.4.jar) = 9514dd0a584429d9b7e1cf73dc152f95
MD5 (waves_0.15.4_all.deb) = 72c171a704d510a1f9ec3384e7570bc6
MD5 (waves-testnet_0.15.4_all.deb) = 752cafa4437cfc1aea13c5206d9e38f7

Version 0.15.3 (Mainnet)

13 Dec 11:36
Compare
Choose a tag to compare

Major features:

  • Smart Assets are implemented as Feature 9
  • Smart Account Trading is implemented as Feature 10
    Please vote!

Minor features:

  • Now duplicate variable names are allowed in scripts. Previously we disabled this due to an error
  • Provided method for getting balance distribution at height (up to 2000 blocks down) GET /assets/ {assetId}/distribution/{height}
  • Decreased block ban time in configuration (default value of waves.synchronization.invalid-blocks-storage.timeout parameter changed to 5m)
  • Optimization in microblock verification procedure
  • Bug fixes

Update notes

There is no need to resync or rebuld state from scratch. Just update the binary.

What are Smart Assets?

Smart Assets use the same approach as Waves Smart Accounts: Smart Asset is an asset with a script which validates every transaction with the asset.

Some implementation details:

Smart Asset is an asset that is issued with a script specified in IssueTransaction (the fee is equal to 1 waves). A smart asset's script cannot be set to null.

The script validates each transaction that involves this asset. Each validation of a specific transaction by a smart asset's script increases the transaction's fee by 0.004 WAVES.

The assets that were issued without a script cannot become scripted. You can create an asset that behaves as non-scripted but can be upgraded later, by issuing an asset with a script: true.

A smart asset's script can be changed via SetAssetScriptTransaction (fee on changing is equal to 1 waves). Only the issuer can change the asset's script.

Sponsorship of smart assets is prohibited.

For more detailed information and smart assets' script examples see the documentation.

Differences in Smart Accounts and Smart Assets are described here

Smart Account Trading

When Smart Account feature was released using of exchange transaction containing orders from Smart Accounts was prohibited. With this feature we enable using of exchange transactions with Smart Accounts. Matcher is also updated to receive and validate orders from Smart Accounts.

See this forum post for a detailed explanation.

MD5 Checksums

MD5 (waves-all-0.15.3.jar) = 07044237848586cc56c7b6bf051c363c
MD5 (waves_0.15.3_all.deb) = 28e0256b1d7eba7580fb63073d8294a9

Version 0.15.2 (Testnet Only)

29 Nov 13:14
1e8713c
Compare
Choose a tag to compare
Pre-release

In This Release

  • Smart Account Trading: now additional 0.004 fee is not taken for a scripted account which places an order, it’s only taken from matcher account in case it is scripted;

  • Exchange transaction with Smart Asset now enabled;

  • Scripts for Smart Assets don't validate Orders;

  • Now duplicate variable names are allowed in scripts. Previously we disabled this due to an error;

  • Disabled using proofs in Smart Asset scripts: it would be confusing in case Smart Asset script requires some proofs while a transaction is originated from a Smart Account which also requires proofs. So these proofs can overlap;

  • Decreased block ban time in configuration;

  • Bug fixes

Update Notes

Testnet was rolled back to the last compatible block. Please resync your nodes from scratch, or import this blockchain file

Version 0.15.1 (Testnet Only)

12 Nov 11:12
Compare
Choose a tag to compare
Pre-release

In This Release

  • Smart Assets are implemented as Feature 9. Please vote!
  • Smart Account Trading bug fixes

In this release, state storage format has been changed. Also, we had to roll testnet back to block 372300. Please rebuild state using one of the methods listed here.

What are Smart Assets?

Smart Assets use the same approach as Waves' Smart Accounts: Smart Asset is an asset with a script which validates every transaction with the asset.

Here are some details on the implementation:

  • Smart Asset is an asset that is issued with a script specified in IssueTransaction (the fee is equal to 1 waves). A smart asset's script cannot be set to null.
  • The script validates each transaction that involves this asset. Each validation of a specific transaction by a smart asset's script increases the transaction's fee by 0.004 WAVES.
  • The assets that were issued without a script cannot become scripted. You can create an asset that behaves as non-scripted but can be upgraded later, by issuing an asset with a script: 'true'.
  • A smart asset's script can be changed via SetAssetScriptTransaction (fee on changing is equal to 1 waves). Only the issuer can change the asset's script.
  • Sponsorship of smart assets is prohibited.

For more detailed information and smart assets' script examples see the documentation.

Details on Trading from Smart Accounts can be found here.

SHA256 Checksums

5c5481c5833a002ac8cabe579dc886998e2efdf28d9d0d4653434dd8197938cb  waves-all-0.15.1.jar
c675aac201cf458ec6e54e33d38781606da0793d99ae1ec4e3bd34e9a9b46204  waves-testnet_0.15.1_all.deb