Releases: wavesplatform/Waves
Version 1.4.2 (Stagenet)
In this release
New features
- New script serialization format has been added for V6.
- Unions are no longer allowed in
@Callable
function signatures. - Maximum single invocation complexity has been increased to 26000.
- Old ("asset") price mode support has been adedd for Order V4.
- New data entries limit calculation: only data which are actually written counts towards limits.
- Weak public keys can no longer be used in transactions'
sender
field. - New complexity estimation rules reduce overall function cost. Also several built-in functions have been optimized (and their cost reduced).
Fixes
- Fixed sync call checks in
@Verifier
. - Non-string values are rejected in makeString V6.
- Hidden transaction constructors from Ride V6 context.
- Type cast macro uses proper functions, depending on version.
- Sync call argument types are now checked before actual call begins.
- Fixed Ethereum transaction ID calculation to match Ethereum rules.
Update notes
Due to incompatibilities introduced by new script serialization format, Stagenet has been rolled back to height 1046741. Please re-import the blockchain when updating from v1.4.1.
SHA256 Checksums
9ec21f7eb9ba33ed88a2cb32cbc6a8af36bfaa6dad73ff2c74521112f9bed076 waves-all-1.4.2.jar
2486909aec4ec8a894baa36df0a6b503ee3c09d9c5d95cf1c0be29c0d33ea843 waves-grpc-server-1.4.2.tgz
2bc7786f327f85824d8a5f3d190e9aebad8b480077f52dfae3e3c80b1875e411 waves-grpc-server-stagenet_1.4.2_all.deb
7786d64e927060576c1e1d93bae5e88c3cdf51d1f91ef81423f556ff3059a0c5 waves-stagenet_1.4.2_all.deb
Version 1.3.12 (Mainnet + Testnet)
In this release
This release includes updated dependencies which fix a couple of security vulnerabilities:
- Logback 1.2.9 fixes CVE-2021-42550. As mentioned by Logback maintainers, this vulnerability is of lesser importance than log4shell, as it requires write access to the Logback configuration file.
- Netty 4.1.72.Final includes a fix for CVE-2021-43797, which also poses no threat to the node.
Update notes
Although this release is optional, we encourage everyone to update their nodes. There's no need to rebuild the state when updating from 1.3.11.
SHA256 Checksums
c75d20f1aab1ee2e0fef75556055b077a32c614a7ba92f691841d73aae772e32 waves-all-1.3.12.jar
bd937a571d656d214a119d78775926bb6a0004bd404f6d109f5bcc3ae61113cb waves-grpc-server-1.3.12.tgz
833d542ad1f82a8cb4dff160ac916ba9ec5f7a939480a8ba2a678612f92e2575 waves-grpc-server_1.3.12_all.deb
741c2f25eae2a1f1f17768a2b6e53e6014b936949af8dc0157c5fc6d0ea90267 waves_1.3.12_all.deb
fbd7bed063d0b18e3d0ad9a371c534bc2d6696ba41be18f851523a124ac706e9 waves-grpc-server-testnet_1.3.12_all.deb
eedef751c6e6179e3f6812857474c133e11b36688ab5ced200b2a5d3692378c3 waves-testnet_1.3.12_all.deb
Version 1.3.11 (Mainnet + Testnet)
In this release
This release fixes several issues in compiler and estimator, and improves exchange transaction validation. This release is recommended for all miners.
Update notes
There's no need to rebuild state when upgrading from 1.3.10.
SHA256 Checksums
6a2cbbaccc56ca51eb6c68113a769e4e430bbfdb8a809bd9edc60c1e80d15006 waves-all-1.3.11.jar
20ce81d18d5e358a4a7524bd0e94b222c423700bd1fc8d7e6aa511f62b928db1 waves-grpc-server-1.3.11.tgz
67d5b653d63b05573c84c42cdd980cd15135c05f9aa68bbba14e8301d05f7c49 waves-grpc-server_1.3.11_all.deb
93eba501ddea39f31a0f45cb666db6e64f99584227ad151387a54f208af2ac63 waves_1.3.11_all.deb
e848121e2b8e5c621b163db61f72ba9bee4292a12fad87c1975e8952e9f544a3 waves-grpc-server-testnet_1.3.11_all.deb
a0082be07b484337f558033be672550b2f79398b02d62236f1a1cef5bd9c8bbb waves-testnet_1.3.11_all.deb
Version 1.3.10 (Mainnet + Testnet)
In this release
This release fixes a critical issue with InvokeScript transaction validation which caused nodes to crash when processing invalid transactions. This release is mandatory for all miners. Please update your nodes!
Update notes
There's no need to rebuild state when updating from v1.3.9.
SHA256 Checksums
22ef2c13ecd02ac2819d94dc4a7d15becbc3025a3cfc078856024a49d358be9c waves-all-1.3.10.jar
ac75f8db8ca6c9a5c5b506c9060771010f56abf8b80b8b1a451c38c6f1b42360 waves-grpc-server-1.3.10.tgz
7d48bb770ddb0948109895b43d83c698d44eeb0a90b999c73c0f004a9eab9fcd waves-grpc-server_1.3.10_all.deb
f4ab8e13a9ab4ebede22f11810afd00ade2f15639af03b128e77b7137e4d41c9 waves_1.3.10_all.deb
8ca61cb3f88d0e221177a110771813d00ebe9e11b40ea7497fb63abafbde5213 waves-grpc-server-testnet_1.3.10_all.deb
82545da9aac461c5933e55cd0a9f473299f1947de7b3c595d27247df9d7c8ce4 waves-testnet_1.3.10_all.deb
Version 1.3.9 (Mainnet + Testnet)
In this release
This bugfix contains important security fixes. We encourage everyone to update their nodes. There's no need to rebuild state when updating from 1.3.8 (mostly; see below).
- Added
spentComplexity
field to transaction JSON containing actual complexity spent during transaction processing. This complexity only includes dApp script complexity and does not include verifier complexity or smart asset complexity (if any). The node will store complexities only for the transactions it has processed after an update. State rebuild is required to be able to retrieve complexities for older transactions. - Added order IDs to exchange transaction meta provided by Blockchain Updates. Please update your schemas to version 1.3.3 to gain access to this functionality.
- Updated LevelDB, Swagger UI and Akka HTTP to their respective most recent versions.
Update Notes
There's no need to rebuild state when updating from 1.3.8 unless you need to retrieve spent complexities for older transactions via REST API.
SHA256 Checksums
0e5d05645f23c8df48aae44d40e4bcf3a1e6f6f308cad11cbf12fe17da09ba45 waves-all-1.3.9.jar
0d41dc96e0e09e333557445ced2822c097671e83fb9ce7ffff91e8e28cbf5213 waves-grpc-server-1.3.9.tgz
5fca0c2c2cb64aab0c5bed0648a6856796f075a4110f9de0338e5a9da94059b7 waves-grpc-server-testnet_1.3.9_all.deb
a3ec99c8a50d4cae64995ecc24f8f92611fb084e484caca1de8aa758ea170187 waves-grpc-server_1.3.9_all.deb
aefbbe362285cfb55dbe6f4e0ac666ac57a1e28802f24374cbd90306b7f86af3 waves-testnet_1.3.9_all.deb
23c637b3c251789f025172a783686061f62bdde84ff922f593681002eb212a0d waves_1.3.9_all.deb
5fca0c2c2cb64aab0c5bed0648a6856796f075a4110f9de0338e5a9da94059b7 waves-grpc-server-testnet_1.3.9_all.deb
aefbbe362285cfb55dbe6f4e0ac666ac57a1e28802f24374cbd90306b7f86af3 waves-testnet_1.3.9_all.deb
Version 1.4.1 (Stagenet)
In this release
This release fixes a protocol issue which involves ethereum transaction processing, and is therefore mandatory for all miners.
- Fixed ethereum-style invocation processing to fully execute dApp script.
- Fixed fee calculation in JSON-RPC method used by Metamask.
- Fixed free call compilation and decompilation.
- Restored
FOLD<>
macro support in Ride V6.
Update Notes
When updating from 1.4.0, a full state rebuild is required.
SHA256 Checksums
d212e2a8c35736425eee7048b27b1f88b78d70d2bf1223e547b6fd28fa422b55 waves-all-1.4.1.jar
44747efde309fa25051e7a2602c98dd4788ad78edeba4ab9b1a1811129108166 waves-grpc-server-1.4.1.tgz
c4cc9629ac31bf0930ad5a9da88419babc2513228516fae53cdf2877ca28c12d waves-grpc-server-stagenet_1.4.1_all.deb
110c281057f7becd763f2d26296507ab734231b675de7649e2162dbe1c28defb waves-stagenet_1.4.1_all.deb
Version 1.4.0 (Stagenet)
Attention! This release is for stagenet only! Not for mainnet/testnet.
In this release
Protocol Enhancements
- Added support for Ethereum transactions that perform token transfers or dApp script invocations. Thanks to this, MetaMask users can sign transactions and send them to the Waves blockchain. More details
- Added support for orders with ECDSA signature in Exchange transactions. Thanks to this, users can sign orders with MetaMask. More details
- Implemented a new transaction type: Invoke Expression transaction that executes the script attached to it.
Ride
- Issued version 6 of the Ride Standard library.
- Added a new script type: call script designed to be executed once by an Invoke Expression transaction.
- Added a built-in variable: i that is available in a call script and contains the Invocation structure.
- Added the InvokeExpressionTransaction structure that is used to verify an Invoke Expression transaction by smart contracts.
- Added the fold range of functions, designed to implement operations on a list of values. The functions replace the
FOLD<N>
macro used in previous versions of the Standard Library. - Added the following built-in functions:
- For the built-in string functions makeString and split added the range of similar functions with different complexity depending on the data size limit. When data size is known in advance, the “cheaper” function can be used.
- Changed the complexity of certain built-in functions. The complexity is given in the [Ride v6] Built-in functions article.
Node REST API
Breaking Changes
-
Added support for Ethereum transactions that perform token transfers or dApp script invocations. JSON representation of a transaction depends on its content:
Example transfer by Ethereum transaction
{ "type": 19, "id": "AAU7gnVCc4G6LrSndTy3qbgnsDT9FTHkhRCRQNDVo52k", "fee": 100000, "feeAssetId": null, "timestamp": 1632300900966, "version": 1, "chainId": 67, "bytes": "0xf8ac86017bc01bcd9001830186a0943353cdb2c6454ad0811f29b632208162037fc22d80b844a9059cbb00000000000000000000000088955b80d3796397c447220793f625a8e47a589400000000000000000000000000000000000000000000000000000000000f424081ada07221e88bbaf6c221faf586766d856d64c66350017f94515c675930b5a38bfe45a05a36e1ab1cc27938c7a962c794b39b68d5a228d2dc987c04916b97246796db23", "sender": "3F11ucZTFLBGrY3TpSmWH3tH4iaYRgLVvZV", "senderPublicKey": "4NzCXwRd3wKsmrrYrGVBsmuiUu6sVhZNKdvxPqzreCMRftvpXD7jJ19XFdXZqSC63nS59CtjCXXrBfwMspvf8nfs", "applicationStatus": "succeeded", "payload": { "type": "transfer", "assetId": null, "amount": 100000000, "recipient": "3FDztq6huchm3TEbJXNcZE9HeDH3b4qpEoK" } }
Example script invocation by Ethereum transaction
{ "type": 19, "id": "AAU7gnVCc4G6LrSndTy3qbgnsDT9FTHkhRCRQNDVo52k", "fee": 500000, "feeAssetId": null, "timestamp": 1632300900966, "version": 1, "chainId": 67, "bytes": "0xf9014b86017bc121a113018307a12094c811007db5e07a1bd3d91aef1f37bd3010c28d5980b8e4a72afeeb000000000000000000000000000000000000000000000000000000000000007b0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000087100000000000000000000000000000000000000000000000000000000000000001ca0fbe876dcb9939c4812d2ef95bb30cd84740e7db96d7959f043152958a101e177a055356f63ccee0a020cd12bc4350e6a888d2ed7967f5ca0fefe773c4a752950ff", "sender": "3F11ucZTFLBGrY3TpSmWH3tH4iaYRgLVvZV", "senderPublicKey": "4NzCXwRd3wKsmrrYrGVBsmuiUu6sVhZNKdvxPqzreCMRftvpXD7jJ19XFdXZqSC63nS59CtjCXXrBfwMspvf8nfs", "applicationStatus": "succeeded", "payload": { "type": "invocation", "dApp": "3FEVXxz656kaC24vh3r25eXNY64QSqX9ZFg", "payment": [], "call": { "function": "depositRef", "args": [] }, "stateChanges": { "data": [], "transfers": [], "issues": [], "reissues": [], "burns": [], "sponsorFees": [], "leases": [], "leaseCancels": [], "invokes": [] } } }
Features of the Ethereum transaction JSON representation:
sender
contains Waves address base58 encoded,senderPublicKey
is 64 bytes base58 encoded,bytes
contains the entire Ethereum transaction bytes, including the ECDSA signature, HEX encoded.proofs
array is missing.
-
Added support for Exchange transactions containing an order (or both orders) with an ECDSA signature.
Example order with ECDSA signature
."order1": { "version": 4, "id": "2Wx5ctbaU9GqQYXtEkqsin6drfu6SuADdwAyvuYnwai9", "sender": "3FzoJXUesFqzf4nmMYejpUDYmFJvkwEiQG6", "senderPublicKey": "5BQPcwDXaZexgonPb8ipDrLRXY3RHn1kFLP9fqp1s6M6xiRhC4LvsAq2HueXCMzkpuXsrLnuBA3SdkJyuhNZXMCd", "matcherPublicKey": "9BUoYQYq7K38mkk61q8aMH9kD9fKSVL1Fib7FbH6nUkQ", "assetPair": { "amountAsset": "5fQPsn8hoaVddFG26cWQ5QFdqxWtUPNaZ9zH2E6LYzFn", "priceAsset": null }, "orderType": "buy", "amount": 1, "price": 100, "timestamp": 1, "expiration": 123, "matcherFee": 100000, "signature": "", "proofs": [], "matcherFeeAssetId": null, "eip712Signature": "0xe5ff562bfb0296e95b631365599c87f1c5002597bf56a131f289765275d2580f5344c62999404c37cd858ea037328ac91eca16ad1ce69c345ebb52fde70b66251c" }
Features JSON representation of an order with ECDSA signature:
sender
contains Waves address base58 encoded,senderPublicKey
is 64 bytes base58 encoded,eip712Signature
contains an ECDSA signature HEX encoded,proofs
array is missing.
-
Added the new transaction type: Invoke Expression.
Improvements
- Added the
/eth/assets
endpoint that accepts asset IDs in Ethereum representation (the first 20 bytes of the token ID, HEX encoded) and returns the asset details including asset ID in Waves format (32 bytes, base58 encoded). The asset details in the response are in the same order as IDs in the request.
Activation
To activate the improvements listed above, vote for feature #17 “Ride V6, MetaMask support, Invoke Expression”.
SHA256 Checksums
6be46aafd306429f9dd2b3d1e8f0b579a4e7a246f53547d69125c3275568d213 waves-all-1.4.0.jar
aaa78e9087adc19fd082ec02ab84c7652c566b20c035aa1af86ef02a1a68dfa6 waves-grpc-server-1.4.0.tgz
a624ec2f0c182640a2726ce36df6f44114b7ee984ec1830180e4e69a92b998cf waves-grpc-server-stagenet_1.4.0_all.deb
7a9f041d5e60b3525c4c6106172482b616365549901b8541c27a91155a115848 waves-stagenet_1.4.0_all.deb
Version 1.3.8 (Mainnet + Testnet + Stagenet)
In this release
This release fixes a critical issue in Blockchain Updates extension, which was introduced with release 1.3.7. This release is mandatory for everyone operating the extension. There's no need to rebuild state when updating from 1.3.7.
If you don't have the extension enabled, you can continue using release 1.3.7. Please read about release 1.3.7 for more info.
SHA256 Checksums
6a9136d247510ff7ffced3c8909674fe6732a95ec1552bd6fb0c7b9cabdfad17 waves-all-1.3.8.jar
57af487020076521f095379e784dc600861b5fd98a9fcd96d9aa428a01c65b59 waves-grpc-server-1.3.8.tgz
3d43618f42a5b83ec4c4fb15132bd18293ab6b8b8072a1ac20106f2a7277aeee waves-grpc-server-stagenet_1.3.8_all.deb
b41fd081ddac210de1a60baa67ab242137e10e87c0301e95bd8c396f3262b1bb waves-grpc-server-testnet_1.3.8_all.deb
b2d09a24a56160e1d3c323d6f24d8c726e8a57c3f671da1f9fcd1d7127f36027 waves-grpc-server_1.3.8_all.deb
fac395a991831149bab8e3a50c3db3c2987499487ea9a31e500e4a07b9f726e8 waves-stagenet_1.3.8_all.deb
616a15d959441d8018876bc8a31e60fa51558a3586e42252dc76b3d52c594a48 waves-testnet_1.3.8_all.deb
54d4fd9dee97c37c38994181c56d2b97d9d5b829847735a816d3d16d2be72aaa waves_1.3.8_all.deb
Version 1.3.7 (Mainnet + Testnet + Stagenet)
In this release
This is mandatory release. It includes several Blockchain Updates, REST API and RIDE enhancements and improvements. Please pay attention to the Update Notes section.
Node Improvements
- Updated build system and dependencies: SBT to 1.5.5 and LevelDB to 1.23.0, among others.
- Blockchain Updates improvements:
- Refactored subscriptions handling to improve consistency when subscribing from near-recent heights
- Nested invocation arguments are included in transaction meta. Don't forget to update protobuf schemas to 1.3.2 to use this functionality.
- Introduced new REST API settings:
waves.rest-api.minimum peers
sets the number of peer connections required to broadcast transactions via REST API. If the node has less peers, the transaction is not accepted into the UTX pool. By default, at least one connection is required.waves.rest-api.heavy-request-processor-pool-threads
sets the number of threads which process "heavy" API requests (e.g. transactions by address, complete portfolio or batched data requests). When no value is set, at most 4 threads are used. Explicitly setting higher value may improve throughput on multicore systems.
- Upon strartup, the node will check if the value of
waves.wallet.seed
matches the actual seed stored inwallet.dat
file. If the values don't match, the node will report an error and shut down. - New filter in
/assets/balance/{address}
: optional repeatedid
parameter can be used request balances for selected assets. Just like in other batched requests, this parameter can either specified as a query parameter in aGET
request, or in the body of aPOST
request. /debug/validate
method returns traces for nested invocations/transactions/calculateFee
takes expensive DApp actions into account, e.g. asset issuance will increase minimal fee by 1 WAVES
RIDE Improvements
- Total size of the data written to account data storages in a single Invoke Script transaction is limited by 15 Kbytes.
- Added validation of balances including payments in the chain of dApp-to-dApp invocations.
- Added
as[SomeType]
andexactAs[SomeType]
macro that cast Any type to specified one. - Optimized pow function.
Update Notes
There's no need to rebuild the state when updating from v1.3.6.
This release introduces new mandatory fields in application.ini
. If you have not changed this file, apt
/dpkg
will silently replace the existing version with the new one. If you have, you will need to manually install the new version, and then add your custom parameters to the new file.
- If you manually install DEB package, pass
--force-confnew
todpkg
:dpkg -i --force-confnew waves_1.3.7_all.deb
- If you install DEB package from apt repository, pass
-o Dpkg::Options::=--force-confnew
to apt:apt-get update && apt-get install -o Dpkg::Options::=--force-confnew waves waves-grpc-server
- You can also just update the package as usual. In this case, if
apt
/dpkg
discovers the file has changed, you'll be prompted to update the file:SelectConfiguration file '/usr/share/waves/conf/application.ini' ==> Modified (by you or by a script) since installation. ==> Package distributor has shipped an updated version. What would you like to do about it ? Your options are: Y or I : install the package maintainer's version N or O : keep your currently-installed version D : show the differences between the versions Z : start a shell to examine the situation The default action is to keep your current version. *** application.ini (Y/I/N/O/D/Z) [default=N] ? Y
Y
to update the file.
Once the package is updated, you can tweak the file to suit your needs, just make sure that the lines starting with -J-Dwaves.defaults
are left intact.
Legacy Ubuntu Notes
Ubuntu 16.04 has reached its end of life in April 2021 and will no longer receive security updates. Some of the node's dependencies require newer versions of GNU C library, which are not included with Ubuntu 16.04. It is recommended to update your OS to a more recent version.
SHA256 Checksums
0acb8be41e821622f0e129d957d92ee8fa776b53a48af2f960d9ee84d0c3f14a waves-all-1.3.7.jar
3e8ee2c2c712c002b28c0783b884b0103abefb90b30ae5559a4af1fdc562bd90 waves-grpc-server-1.3.7.tgz
f5093d271d3a993bb3141ebee371a664e56fdd54052b41d2058e7e4516e44f9e waves-grpc-server-stagenet_1.3.7_all.deb
c231b337168886e98db943a674802f4aa0fbe31310023fafb951404f09117423 waves-grpc-server-testnet_1.3.7_all.deb
60bd4e7e2ceb7da0d35ce5d8cfc71016fb672b4f6b402f8014b7611fedd5261a waves-grpc-server_1.3.7_all.deb
e926255c94bccf5f65916e0935b66c39fa8deabe58cda2b17458b51012bba370 waves-stagenet_1.3.7_all.deb
09cb4924a3bb0ee9ac780aaf361741cbb44167e7110ad566d024752192909813 waves-testnet_1.3.7_all.deb
b41546aa89435bf7fbd0d8a5044f3a429260ca54fbd8790fb65c00c9ee74b8e9 waves_1.3.7_all.deb
Version 1.3.6 (Mainnet + Testnet + Stagenet)
In this release
This is an optional release which mostly fixes several REST API issues. There's no need to rebuild state when upgrading from 1.3.5.
- Fixed JSON format inconsistencies in Lease Details objects across different routes.
- Fixed node version and Chain ID in Swagger.
- Fixed Stagenet and Testnet public pool ports in configuration file as well as tweaked sample config.
SHA256 Checksums
de337c5da41c2c823dd4758d9f196b6f27300bbd39cf8997afb2a7e4c4b0c69c waves-all-1.3.6.jar
8582d78ed582047e10a85189ef93b196deb89debba0d7c8c81849ad44b593f0a waves-grpc-server-1.3.6.tgz
de9e96dae9294b499e8844cdb6f639cd9534064824207f6798f244fb6743f12a waves-grpc-server-stagenet_1.3.6_all.deb
65e654dfd82a9cc15dd70dc8374b949c8af96277f02349934b1fb73b7dd82c09 waves-grpc-server-testnet_1.3.6_all.deb
fe3976559c95a59e1e6e0412586c778a10c8bfe3104911aa30c2533bfa2d3616 waves-grpc-server_1.3.6_all.deb
4064a8d94422fdf4d984a25358b3f3260862580768e7aa6c13d1273292e80c10 waves-stagenet_1.3.6_all.deb
5d25f75ea8747c0d0389feeb4b05a50058f43a920a8ed0c38e93330ea783d204 waves-testnet_1.3.6_all.deb
f32dce4beecf59c500bbfabfd2d5899ef14b1f919395df101a3e02c73b5a13b0 waves_1.3.6_all.deb