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