In this release
This release is accumulation of all previous 1.3.x releases. Now it's available for Mainnet.
After the activation of the feature #16 all Protocol changes become available.
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
- Amended Invoke Script transaction:
- Canceled the extra fee of 0.004 WAVES for smart assets in payments and script actions.
- Transaction can contain up to 10 attached payments.
- The total complexity for all callable functions and asset scripts involved is limited by 26,000 (the sender's account script complexity is not included in this limit).
- The maximum complexity of a callable function of a dApp script is changed to 10,000.
- For all types of transactions, canceled the extra fee of 0.004 WAVES for sending a transaction from a smart account or dApp unless the complexity of sender's account script or dApp script verifier function exceeds 200.
Ride
-
Issued version 5 of the Ride Standard library.
-
Enabled processing up to 10 payments attached to the Invoke Script transaction.
-
Added the functions 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.
-
Modified the Invocation structure: in case of dApp-to-dApp invocation, the structure contains the address and public key of both the sender of the Invoke Script transaction and the dApp account that invokes the callable function.
-
The maximum total number of
Issue
,Reissue
,Burn
,SponsorFee
,ScriptTransfer
,Lease
,LeaseCancel
script actions executed by all callable functions in a single transaction is 30. -
The maximum total number of
BinaryEntry
,BooleanEntry
,IntegerEntry
,StringEntry
,DeleteEntry
script actions executed by all callable functions in a single transaction is 100. -
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 an arbitrary data type — Any.
-
Added the BigInt data type of 64 bytes (512 bits) and functions.
-
Added the following built-in functions:
- isDataStorageUntouched that checks if the data storage of a given account never contained any entries.
- scriptHash that returns BLAKE2b-256 hash of the script assigned to a given account.
- fraction(Int, Int, Int, Union): Int that multiplies and divides integers to avoid overflow, applying the specified rounding method.
-
Added the following account data storage functions that allow the dApp script to read entries of its own data storage:
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
-
The maximum complexity of a callable function of a dApp script is changed to 10,000.
Node REST API
Breaking Changes
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 a 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.
Semantic Changes
-
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
. -
Results of the
Lease
andLeaseCancel
script actions are added to thestateChanges
structure. -
Results of
Lease
andLeaseCancel
script actions are also added to thetrace
structure returned by the following endpoints:/transactions/broadcast
/debug/validate
Improvements
- Added the
/leasing/info
endpoint that returns lease parameters by lease IDs. - Added the
/blocks/heightByTimestamp
endpoint that returns blockchain height at a given timestamp.
Activation
To activate the improvements listed above, vote for feature #16 “Ride V5, dApp-to-dApp invocations”.
Update Notes
If you are not using Blockchain Updates extension, there's no need to reimport state when updating from version 1.2.x.
Attention Blockchain Updates users:
- Due to an issue with one of the previous versions, current extension data is likely inconsistent with the blockchain. Please reimport blockchain to rebuild BU state.
- In some cases BU subscription can get stuck, that is once connected, the client receives some updates up to the most recent block/microblock, but won't receive any subsequent updates when node appends new blocks/microblocks. This is a known issue. While we are working on a fix, one possible workaround is to monitor the connection, and once the subscription is stuck, restart the node process.
Official pools update notes
Due to presense of breaking changes in the Node's API please migrate your existing projects/applications. Version 1.3.5 will be immediately available on the testnet. Mainnet will be updated on June, 11th.
SHA256 Checksums
b938cbd04016131be6a06a3f6db9d8fc5df8fe6fd1204469e1a67eeb999f1bbc waves-all-1.3.5.jar
76381331a983383ef4991077abcafcaed3f5ad55bb686c52dd0f1c68ca752d04 waves-grpc-server-1.3.5.tgz
449af81db3ec693baaf5508ca5769587a7023ddaea203f406413efca6a2e840f waves-grpc-server-stagenet_1.3.5_all.deb
aa801db4c4b279fc226b2642d11281cc02ec7f182668a96628e8bc097e0aadb8 waves-grpc-server-testnet_1.3.5_all.deb
2c28f517df7595fd85e1a12a0dc78eb2e8cf3f7316251b160eeacf5f56dbabf0 waves-grpc-server_1.3.5_all.deb
f4faf1da9fc23b90ba96f48585f73b4ac1a1127ec73fd636decac57261cca5fa waves-stagenet_1.3.5_all.deb
6dd05421d4f2622693acb8ca320af291c04aeb0052863b9bedf3c2dc79e167df waves-testnet_1.3.5_all.deb
142616a71ed1aa3f08623db036cb540234a546d2d6cbd769dbe605cced28abb4 waves_1.3.5_all.deb