Releases: wavesplatform/Waves
Version 1.3.4 (Testnet + Stagenet)
In this release
This is the first release of 1.3 series intended for both Testnet and Stagenet (however, it is not ready for Mainnet just yet). Please vote for feature 16 on Testnet!
The following issues have been fixed since 1.3.3:
- Fixed liquid block rollbacks in Blockchain Updates extension.
SHA256 Checksums
c35b97d5e7e842ba7ed14dbca663d89452cfe78ef0802a0669f8d470eedc2491 grpc-server-stagenet-1.3.4.tgz
2d891990360b654a26e20fae85d709f2ff9d1db5fae4cf6a4fa0d5c00fd0881f grpc-server-stagenet_1.3.4_all.deb
c550927f681cdedd0c6047e1203d8de29b981ac298bdaae4fb9a28aaa6517ec9 grpc-server-testnet-1.3.4.tgz
c82a99252aebb1511843ee6e2b6fd8026640b8a1a980e71e6def2f040059d634 grpc-server-testnet_1.3.4_all.deb
169401cf4d81aa99ffc936b3de36bed61c7d499dd12218635ba7f6a9360ea912 waves-all-1.3.4.jar
4783b334f08151b2c89f0762de4e86720288911266f0dc08e121f6b84ccba78b waves-stagenet_1.3.4_all.deb
ef304c7f0412d3e0127f468f6ee043aa773d84b071410ec845d9772d7d4b813a waves-testnet_1.3.4_all.deb
Version 1.2.21 (Mainnet + Testnet)
In this release
This release fixes an issue which could prevent the node from successfully completing blockhain import. All miners are advised to update their nodes. A bug which prevented Blockchain Updates extension from properly handling certain types of microblock rollbacks has also been fixed.
There is no need to rebuild state when updating from version 1.2.20.
SHA256 Checksums
3d5e98bc15dec945c3925e7e430240a9dde47961c4c8f91dfca4e45284f849dc grpc-server-1.2.21.tgz
70193a320a7f41b80ea84644daf9eab3e8aae9e50359337da1e7829465903bd4 grpc-server-testnet-1.2.21.tgz
e123842f551ceb802e4db6c3341d3f53a1ef3bdbc7b1832eda29db569c6660cd grpc-server-testnet_1.2.21_all.deb
ade342d99951383084743d30875dc5c34c9666ccfe36df88d950e7720dee0bd2 grpc-server_1.2.21_all.deb
9e074f65338ee74c171b591354080ebee4274f9d231f66886df9a7e26cc8e753 waves-all-1.2.21.jar
4afa8bc74e7fe9420b716550117a255bbc9542552d4bbeff8c81f7c37e54f258 waves-testnet_1.2.21_all.deb
190c7cfb303bd933a5a1df8e6255ae662b95bd51a65314cc392326332a2e2c6d waves_1.2.21_all.deb
Version 1.3.3 (Stagenet)
In this release
This release is intended for Stagenet only. There's no need to rebuild state when updating from 1.3.2
This release includes the following improvements:
- Added the
reentrantInvoke
function for dApp-to-dApp invocation. The only difference from theinvoke
function is that there is no reentrancy restriction for the parent dApp that usesreentrantInvoke
. - The maximum complexity of a callable function of a dApp script is changed to 10,000.
- Blockchain Updates stream no longer freezes upon microblock rollbacks.
- Updated nested invocation lease state changes format to be consistent with
/leasing/info/{id}
endpoint.
SHA256 Checksums
4851a8c950fb08e3a42a191d8bb313afc21ca0a20c2317b385e0a40b9bd775fc grpc-server-stagenet-1.3.3.tgz
0ef5fed6a84029d41e1e939ac1822d6780815470121265ac5442ee53a742d740 grpc-server-stagenet_1.3.3_all.deb
ef099346d232a976f9d858cf4ead88bf286359cdfb8135f3eb13dca05dd0e530 waves-all-1.3.3.jar
3fa8b99760ab5752a86eb80aa2725773789c1915dabc8745579da92b7b83372a waves-stagenet_1.3.3_all.deb
Version 1.3.2 (Stagenet)
In this release
This release is intended for Stagenet only. There's no need to rebuild state when updating from 1.3.1
RIDE Improvements
- Misc BigInt implementation fixes.
Invocation
structure has been enhanced with two additional fields:originCaller
andoriginCallerPublicKey
.
Node Improvements
- Fixed smart asset script estimation errors which could cause the eviction of valid transactions from UTX pool during cleanup.
- Active leases created by a nested invocation are returned by the
/leasing/active/{address}
method. - New
/blocks/height/{timestamp}
method returns actual blockchain height at the given timestamp. - New
/leasing/info/{id}
returns lease details for the given lease ID (even for those issued via invocations). - State changes JSON has been tweaked to include invocation tree even for failed transactions, and also to make lease action details JSON consistent with lease info route response.
- The node will check if the newly received extension increases local score before attempting to append it.
SHA256 Checksums
d07bcd2ff542dbfaf556732b576685c24896a6bddc12ec4e98d80b0ea618392a grpc-server-stagenet-1.3.2.tgz
ba5bed1f39ac5564ea8678153cdcdac3ff7b54c1294f3fe842620f6ae3e0802d grpc-server-stagenet_1.3.2_all.deb
5064bab6f8f6972c0402748e18617633f7725b7b0fc84bdf70c6e19b338b41bd waves-all-1.3.2.jar
b638fb679b260c7bc1214e6e0517067df00ad2e647ce9e7697104b0777c1af7c waves-stagenet_1.3.2_all.deb
Version 1.3.1 (Stagenet)
In this release
This release refines functionality introduced with release 1.3.0. Being intended for Stagenet only, it still has some known issues described below. To find out more about new functionality in series 1.3, head over to release notes.
Protocol Enhancements
- Increased block complexity limit from 1M to 2.5M, changed overall (including nested) invocation limits:
- complexity can not exceed 26000
- action limit has been increased to 30
- data entry limit has been increased to 100
- Fixed complexity estimation for dApp-to-dApp calls.
- When dApp does not have enough balance to cover transfer actions produced by an invocation, such invocations are no longer discarded, and are included in the block as failed instead.
- Attached payment limit has been increased from 2 to 10 for invocations targeting dApps using RIDE V5.
- When account's
@Verifier
script complexity does not exceed 200, outgoing transactions from such accounts will not require additional fee. - Continued сomputations have been pushed to release 1.4. All continuations-related functionality has been removed from this release.
RIDE
In addition to the features from v1.3.0, he following changes have been introduced with RIDE V5:
- New BigInt type widens built-in integer type to 512 bits.
Invocation
structure has been extended withoriginalCaller
andoriginalCallerPublicKey
fields which contain original InvokeScript transaction's sender address and public key.- Added new functions:
isDataStorageUntouched
that checks if the data storage of a given account never contained any entries.hashScriptAtAddress
that returns BLAKE2b-256 hash of the script assigned to a given account.
- Non-standard rounding modes
HALFDOWN
andUP
have been removed.
Node
- Leases produced from nested dApp invocation will not be returned by
/leasing/active/{address}
API. This is a known issue which will be fixed in the upcoming version. - Upon successful rollback completion, only those transactions which are not present in the blockchain will be returned to UTX pool.
- All fixes from 1.2.x series (up to [release 1.2.20]) have been backported to this series, which includes the new Blockchain Updates extension.
SHA256 Checksums
c50cad467603dbedeb2dbed4183dcc80675125b5c34b01ebba66b98aa5eb2410 grpc-server-stagenet-1.3.1.tgz
91ebade64a49c4183025a5b2f86a03c78620bab39f1faf11c56a585b6e922351 grpc-server-stagenet_1.3.1_all.deb
02b30d0316612776022eb1f89b032897806c2adaf35fdaff0fccd4cb8b86c997 waves-all-1.3.1.jar
1bce131015342bf74e64994f54160ef7e74a11bd641d7f8c76684cf4690d6c58 waves-stagenet_1.3.1_all.deb
Version 1.2.20 (Mainnet + Testnet)
In this release
This release includes the new and improved version of the Blockchain Updates extension. If you are not using the extension with your node, or if you prefer to continue using the previous version, you may skip this version.
- The new updates stream enhances
StateUpdate
messages with the before values (e.g.BalanceUpdate
message has a newamount_before
field which contains the address balance preceding update application). - Additional
TransactionMetadata
is supplied for each transaction. This message contains resolved recipient addresses for transfers directed to aliases, function invocation details and some other data which can not be retrieved from the transaction itself. - Rollback messages are enhanced with state updates and transaction IDs which are being reverted. These fields contains the data which helps consumers more easily handle rollbacks.
For more information on the new extension, see documentation.
Update notes
Please note that this Blockchain Updates extension version is incompatible with the previous versions (consumers working with previous extension versions will not be able to connect to this version). You will need to re-generate client stubs from schemas version 1.2.11 to use the new stream. We will be updating our Mainnet pool to the new version on Monday, March 29th.
Please also note that updating your extension from previous versions requires re-importing blockchain. This requirement is caused by redesigned extension data storage which no longer stores blocks in its own LevelDB, using the ones stored by the node itself. This greatly reduces storage space requirement for this extension (by as much as raw blockchain size — almost 43GB for Mainnet as of height 2515000). The extension itself consumes 32GB of storage space, in addition to the node's 55GB.
SHA256 Checksums
89377c7bdfbf8d35600be6c0fedacba5a4a53f0af5349ad72fb491fb893d4a64 grpc-server-1.2.20.tgz
16d5bb38d6e1c5c8203b5fa01a121428d2cbc2bd0de5b6b463206a06ceb11ac1 grpc-server-testnet-1.2.20.tgz
5700e689225d735d66d294f8e0c70256abedf1889a54e36fc84543713035c124 grpc-server-testnet_1.2.20_all.deb
27e41fee7bf79f6ad79a65051c09c90f68ac027a421acc7231786fd2dde025c3 grpc-server_1.2.20_all.deb
9d34f3a41932b070b48931219118d941c14e2d2052be415ec6dc4f0eba323611 waves-all-1.2.20.jar
d559ed4609a556691710955e36b4264bfdd813a699c6c4942709bf1a99bf97e2 waves-testnet_1.2.20_all.deb
0c67481f04a6c3a5106f0ad8c4ba86adaea8b581976738becfbee64aae3d1652 waves_1.2.20_all.deb
Version 1.2.19 (Mainnet + Testnet)
In this release
This release contains several bugfixes.
- Fixed an issue with Blockchain Updates extension which resulted in intermittent connectivity issues.
- Fixed
/debug/validate
method to respect priority pool when validating transactions. - Fixed an off-by-one error in
blocks/delay
method. - Changed the way docker images are built. See README for more info.
This is a maintenance release, you only need to update your node if any of the issues mentioned above affects you. There's no need to reimport state when updating from 1.2.18.
SHA256 Checksums
69b2b4c8271f0e550b030fc90d541e1c61976edf6c6cfa8fd8e958414b57596f grpc-server-1.2.19.tgz
d925169d4b6891e8b33bc3218305a1bd0f2be306a8e02562d83ea0bacefcc3eb grpc-server-testnet-1.2.19.tgz
203733e026ea471074404a1c9a8bd00c9779d40348816ee90964a8dc79b0de71 grpc-server-testnet_1.2.19_all.deb
3b51d34128a3a37d2eeac75149ba360d5b5efe9a9cddc28eed323b743beda95d grpc-server_1.2.19_all.deb
9bbc8d82d138183ffe35cb337c536b526e1c554ab6ffcedef30b7ab9970bf39e waves-all-1.2.19.jar
031000d228e8c2a3fba2396ed4347e312b045bba703a3036b2cb19693188e97e waves-testnet_1.2.19_all.deb
3d1a61a21cdc4156d7ac1ac1fc9fc5561aa38b42fba73af9a22e5cb65c25ee38 waves_1.2.19_all.deb
Version 1.2.18 (Mainnet + Testnet)
In this release
This is a mandatory release for all miners on Mainnet and Testnet.
This release fixes a bug in transactions validation which was encountered on Testnet. The Mainnet is not affected.
Node Changes
- Fixed error of not validating proofs' sizes in some cases.
There's no need to rebuild state when updating to this release.
SHA256 Checksums
b2b6ef8573f94371477f1b5c8642c28449d5812ab8ed1d6eb1da927832ea3fe6 grpc-server-1.2.18.tgz
a4bd6ac3c4e0fc6b901be2adeb8a0ce88e3194b42a1ab7891eeda3cae24d2d50 grpc-server-testnet-1.2.18.tgz
2d49ff51da872ed2b1039dba2dda46f035c6073280753bbcc76f2cfe0134717b grpc-server-testnet_1.2.18_all.deb
16ca08f2680e5dd092beb812aad3c12efe50be49062b8d8864e9fa20105c6815 grpc-server_1.2.18_all.deb
360392e6f0b94babe0e8e6802dcdd0e99b78302f7fc4526eeacdaf83264bbc66 waves-all-1.2.18.jar
b83e4b4a6b1abe524f627b8ec5c9f23f115bd03da2356bce66249fe93b092cdc waves-testnet_1.2.18_all.deb
1f3cc566dd7a0dff48729a44e9ed6eba254cbaa59ea154b2033141b327048561 waves_1.2.18_all.deb
Version 1.3.0 (Stagenet)
Attention! This release is for stagenet only! Not for mainnet/testnet.
In this release
Protocol Enhancements
- dApp-to-dApp invocation. A dApp callable function can invoke a callable function of another dApp, or another callable function of the same dApp, or even itself. All invoked functions are executed within a single Invoke Script transaction. The total complexity is limited. More about dApp-to-dApp invocation
- Continued сomputations.
- Added support for dApp scripts with complexity over 4000. The execution of such a script is split into several stages. The first stage of calculations is performed within the Invoke Script transaction. The further stages are performed within Continuation transactions. More about continued сomputations
- Implemented the new transaction type: Continuation. A block generator creates the Continuation transaction if there is an incomplete calculation sequence. A user cannot send a Continuation transaction.
- Added version 3 for the Invoke Script transaction that can invoke a script with complexity over 4000.
Ride
-
Issued version 5 of the Ride Standard library.
-
Added the Invoke function for dApp-to-dApp invocation.
-
Added strict variables that are evaluated before the next expression to ensure executing callable functions and applying their actions in the right order.
-
Modified the callable function result by adding a return value.
-
Added script actions that the callable function can perform:
- Lease — leases WAVES.
- LeaseCancel — cancels a specified lease.
Using these actions, you can change the amount of the lease, in particular, withdraw a part of the leased funds. If you cancel a lease for a larger amount and create a new lease for a smaller amount with the same recipient in the same script invocation, the recipient's generating balance decreases by the difference. Otherwise, if you send two separate transactions: a Lease Cancel transaction and a Lease transaction, they can be added to a different blocks and therefore generating balance decreases by the amount of the canceled lease immediately and increases by the amount of the new lease after 1000 blocks.
-
Added the function calculateLeaseId that calculates ID of the lease formed by the
Lease
structure. -
Added the following account data storage functions that allow the dApp script to read entries of its own data storage at any stage of the calculations:
getBinary(key: String): ByteVector|Unit
getBinaryValue(key: String): ByteVector
getBoolean(key: String): Boolean|Unit
getBooleanValue(key: String): Boolean
getInteger(key: String): Int|Unit
getIntegerValue(key: String): Int
getString(key: String): String|Unit
getStringValue(key: String): String
-
Added an arbitrary data type — Any.
Node REST API
Breaking Changes
-
Added the new transaction type: Continuation.
-
A lease can be created both as a result of a Lease transaction and as a result of an Invoke Script transaction via a
Lease
script action. Therefore, the response of the following endpoints has been changed:- In the response of
/transactions/address/{address}/limit/{limit}
and/transactions/info/{id}
endpoints for Lease Cancel transaction, thelease
structure now contains lease parameters instead of Lease transaction fields. /leasing/active/{address}
returns an array of structures containing lease parameters instead of array of Lease transactions.
Format
"lease": { "leaseId": "4AZU8XPATw3QTX3BLyyc1iAZeftSxs7MUcZaXgprnzjk", "originTransactionId": "4AZU8XPATw3QTX3BLyyc1iAZeftSxs7MUcZaXgprnzjk", "sender": "3PC9BfRwJWWiw9AREE2B3eWzCks3CYtg4yo", "recipient": "3PMj3yGPBEa1Sx9X4TSBFeJCMMaE3wvKR4N", "amount": 1000000000000, "height": 2253315 }
- In the response of
Semantic Changes
-
For Invoke Script transaction version 3 the fields
extraFeePerStep
andcontinuationtransactionIds
and thescript_execution_in_progress
value for theapplicationStatus
field added to the output of the endpoints providing transaction info. -
dApp-to-dApp invocation results are added as the
invokes
array to thestateChanges
structure returned by the following endpoints:/transactions/info/{id}
/transactions/address/{address}/limit/{limit}
Each element of
invokes
array, in turn, also containsstateChanges
.Format
"stateChanges": { "data": [], "transfers": [], "issues": [], "reissues": [], "burns": [], "invokes": [ { "dApp": "3PC9BfRwJWWiw9AREE2B3eWzCks3CYtg4yo", "payment": [ { "amount": 50000000, "assetId": "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p" } ], "call": { "function": "swapNeutrinoToWaves", "args": [ { "type": "string", "value": "EUR" }, { "type": "integer", "value": 843699 }, { "type": "binary", "value": "base64:OK+armP11YmAyoQOwl8jLDLi2dK2sRc1Ue2QzZX1wgRmwGASLhllv1iKg2fRKS8cAlSDrfMYPb6374WMC9gFgA==" } ] }, "stateChanges": { "data": [], "transfers": [], "issues": [], "reissues": [], "burns": [], "sponsorFees": [], "invokes": [] } } ] }
-
Results of the
Lease
andLeaseCancel
script actions are added to the ThestateChanges
structure.Format
"stateChanges": { "leases": [ { "leaseId": "5fmWxmtrqiMp7pQjkCZG96KhctFHm9rJkMbq2QbveAHR", "recipient": "3PLosK1gb6GpN5vV7ZyiCdwRWizpy2H31KR", "amount": 500000 } ], "leaseCancels": [ { "leaseId": "4iWxWZK9VMZMh98MqrkE8SQLm6K9sgxZdL4STW8CZBbX" } ] }
-
Results of
Lease
andLeaseCancel
script actions are also added to thetrace
structure returned by the following endpoints:/transactions/broadcast
/debug/validate
Format
"trace": [ { "id": "3MosFNQAFGskNDnYzRBgMbfod6xXPdG96ME", "type": "dApp", "vars": [ { "name": "amount", "type": "integer", "value": 12345 } ], "result": { "leases": [ { "leaseId": "5fmWxmtrqiMp7pQjkCZG96KhctFHm9rJkMbq2QbveAHR", "recipient": "3PLosK1gb6GpN5vV7ZyiCdwRWizpy2H31KR", "amount": 500000 } ], "leaseCancels": [ { "leaseId": "4iWxWZK9VMZMh98MqrkE8SQLm6K9sgxZdL4STW8CZBbX" } ] } } ]
SHA256 Checksums
69617f5ab0516957a4b75c3e59bbd7ed7f457418fe328d70becc0214ced80e57 grpc-server-stagenet-1.3.0.tgz
ae9c994f1a3adfab87b68e8ba2e406fb1292cc06edd0d0888975ea6b4ea93663 grpc-server-stagenet_1.3.0_all.deb
8dba1fc8b4cca59ebae68b46b2ad4e0ff471a2e7b2fd6d0bbf155fe8e66c6e8e waves-all-1.3.0.jar
ef2f3e1de0af3927809d9d74970fb634c0d42000166545e9560d7c3b28e1d515 waves-stagenet_1.3.0_all.deb
Version 1.2.17 (Mainnet + Testnet + Stagenet)
In this release
In this non-mandatory release, original Lease Transaction JSON is re-introduced for Lease Cancel transactions, which fixes API compatibility with previous versions.
SHA256 Checksums
92530be7a3f2c074bcad01ae98e12d4d081c1f5d65ba4155cbee30f584441698 grpc-server-1.2.17.tgz
241d70913d50fc8afa970610ebe6b606f03f04b1e23bc76a5ca2cd552b49053c grpc-server-stagenet-1.2.17.tgz
0311d84630a1e61c3c501bd8f400b7e215ef04ab03d87cf9d46372106d00e3dc grpc-server-stagenet_1.2.17_all.deb
590f88c9149f3957163c274526b0f7ad51b99cce16a8b619ff2383e4be49749d grpc-server-testnet-1.2.17.tgz
8e78d26739d4413c44467b4375af1004976e7b7b3a18084482cb8b95c96cad44 grpc-server-testnet_1.2.17_all.deb
992c8ab7d147d4bd4648fe211a195b27dfe58a0be63d23f796a05c0507e88a91 grpc-server_1.2.17_all.deb
da24f097bf9573b15583a6184a92e11b6d04929420bd2b713c308e7d9726b942 waves-all-1.2.17.jar
68348b8b51c609b19b2ff63076427305b36b4f1064fc9aa949d363b16d59219f waves-stagenet_1.2.17_all.deb
953ece1d8da6a598f9f7b2a174c4b0d3777983b633631bd42a8817d29832b9e1 waves-testnet_1.2.17_all.deb
351fb1ad95a7159d3917d3fba2df5b009da20d58bcb275595eecbeef150b10fb waves_1.2.17_all.deb