Releases: wavesplatform/Waves
Version 0.17.0 (Testnet)
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
- 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
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.
{-# STDLIB_VERSION 3 #-}
includes:
this
, returning address of the account, granting
getInteger(this, key)
value()
function, which is the same asextract
let x = [a,b,c]
List constructor- New types:
WriteSet
,TransferSet
,ScriptResult
and other types necessary for script invocation getInteger(...)
family of functions andaddressFromString
now have companions of typegetIntegerValue(..)
andaddressFromStringValue(..)
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)
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)
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)
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)
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 indistributions
. - 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)
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)
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)
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)
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)
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