Releases: wavesplatform/Waves
Version 1.6.2 Champagne (Mainnet + Testnet + Stagenet)
In this release
This release brings Deterministic Finality feature and P-256 EC signature verification to Mainnet. The node now requires Java 17 to run. For more information, see the Release Notes.
Activation
Please vote for feature #25 on Mainnet! The current voting window started at height 5180000. If the features are voted during this voting interval, activation will happen at height 5200000 (2026-04-28 03:16 UTC). Feature #25 has been activated on Testnet.
Refer to the instructions on how to commit to block generation.
Update notes
This release requires Java 17 (or later) to run.
Testnet Rollback
Due to incompatibilities with version 1.6.1, Testnet has been rolled back to block 4047001. Testnet data snapshot is available form blockchain-testnet.wavesnodes.com. To ensure your node is on the correct chain after getting the state snapshot, check block ID at height 4047002, it should be 4ZaqURxBkV3vDxLkLjz86VeTG34PK1rB8UUeRKUf8BNu on the new chain.
There's no need to rebuild the state when updating from 1.5.12.
Version 1.6.1 (Testnet + Stagenet)
Attention! This release is for testnet/stagenet only! Not for mainnet.
Please note that DEB packages attached to this release have been re-uploaded on 2026-02-18.
In this release
This release improves the Deterministic Finality feature, as well as enables P-256 signature verification in RIDE.
RIDE V9
The following functions have been re-estimated:
| Function | V8 Complexity | V9 Complexity |
|---|---|---|
drop |
6 | 2 |
dropRight |
6 | 2 |
take |
6 | 2 |
takeRight |
6 | 2 |
sha256 |
118 | 36 |
sha256_16Kb |
12 | 5 |
sha256_32Kb |
23 | 9 |
sha256_64Kb |
47 | 17 |
sha256_128Kb |
93 | 32 |
toBase16String |
10 | 4 |
fromBase16String |
10 | 4 |
toBase64String |
35 | 3 |
fromBase64String |
40 | 12 |
getInteger |
4 | 2 |
getBoolean |
4 | 2 |
getBinary |
4 | 2 |
getString |
4 | 2 |
getIntegerValue |
4 | 2 |
getBooleanValue |
4 | 2 |
getBinaryValue |
4 | 2 |
getStringValue |
4 | 2 |
size |
2 | 1 |
getElement |
2 | 1 |
removeByIndex |
4 | 1 |
replaceByIndex |
4 | 1 |
drop |
20 | 2 |
dropRight |
20 | 2 |
take |
20 | 2 |
takeRight |
20 | 2 |
createMerkleRoot |
30 | 3 |
The following new functions have been added:
| Function | Description | Complexity |
|---|---|---|
fill |
Creates the list of n elements filled with a. |
2 |
replaceAll |
Replaces all occurrences of pattern with subst in str. |
2 |
replaceFirst |
Replaces the first occurrence of pattern with subst in str. |
2 |
toBase16String_1C |
Input size is limited to 1024 bytes. | 1 |
fromBase16String_1C |
Input size is limited to 2048 chars. | 1 |
toBase64String_1C |
Input size is limited to 1024 bytes. | 1 |
fromBase64String_1C |
Max resulting byte array size is 1024 bytes. | 1 |
P-256 EC Signature Verification
The following new functions have been added to support Intel TDX:
p256Verify(message: ByteVector, signature: ByteVector, publicKey: ByteVector): Boolean, complexity: 43.
This function takes raw message bytes (unhashed), raw signature bytes and raw public key bytes and verifies P-256 signature. This function uses SHA-256 to hash the message. Both signature and public key must be exactly 64 bytes.validateCertificateChain(certificates: List[ByteVector], crls: List[ByteVector], timestamp: Int): ByteVector, complexity: 43.
This function takes a list of DER-encoded X.509 certificates (the first one being the most specific, and the last one being the root certificate), a list of corresponding CRLs, and a timestamp, and performs certificate chain validation. All CRLs and certificates must be valid at the given timestamp. If the certificate chain is valid, this function returns the public key (raw 64 bytes) of the first certificate (the most specific one) and throws an error otherwise. Only valid EC public keys are supported.
Native Crypto Providers
This release includes two native crypto providers: Amazon Corretto and Conscrypt. These providers significantly improve P-256 verification performance, as well as SHA-256 hashing performance. Both providers have comparable performance. However, due to the way Amazon Corretto is distributed, when node is started from a fat jar under Linux running on ARM, Java based Bouncy Castle provider will be used. This provider has significantly lower performance. For now it's recommended to use Docker images on Linux on ARM instead of a fat jar.
Update notes
There's no need to rebuild the state when updating from 1.6.0 or 1.5.12.
Version 1.6.0 (Stagenet)
Attention! This release is for stagenet only! Not for mainnet/testnet.
In this release
This release introduces the new Deterministic Finality feature that will help achieve 2-block finality under most circumstances.
Protocol enhancements
Deterministic Finality
Once feature 25 is activated, miners will need to commit to generation in the following Generation Period by sending a CommitToGeneration transaction. Generation Period duration varies by network (1000 blocks for Stagenet, 3000 blocks for Testnet, and 10000 blocks for Mainnet). Besides mining new blocks, upon successful block application, the node will automatically broadcast the signed endorsement of the parent of the newly applied block to its peers. The miner of the current block collects the endorsements from its peers and includes them in the current block. Since only committed generators can participate in block production, for each Generation Period the total generating balance is known. The block endorsed by at least 2/3 of the total generating balance is considered finalized: the node will not rollback beyond that block when switching to another chain.
If no miners have committed to the next Generation Period, or neither of the committed generators have enough generating balance (at least 1000 waves), the blockchain falls back to the previous miner selection mechanism where anyone with enough balance can forge new blocks. In this case the block at (current height - 100) will automatically finalize.
CommitToGeneration Transaction
Besides the standard transaction fields, this transaction contains:
- the BLS public key derived from the private key the node will use to sign block endorsements
- the start height of the next Generation Period
- BLS signature of the concatenated (1) and (2)
To commit to generation, the miner must provide the deposit of 100 waves. This deposit is locked from the moment of the transaction processing up until the end of the Generation Period the miner is committing to. This deposit is withheld if the miner broadcasts conflicting endorsements.
You can sign a CommitToGeneration transaction with one of the keys in the node's wallet by using the /transactions/sign API endpoint. By default, the node will find the key pair corresponding to the address in the sender field of the request JSON, use the private key as the BLS public key, create the BLS signature and sign the transaction with the waves private key.
Ride
- Released version
9of the Standard Library. - Added CommitToGeneration transaction binding.
- Decreased complexity for several functions.
Node REST API
/generators/at/{height}lists all generators committed to mining atheightand their respective generating balances, as well as heights where they have sent conflicting endorsements, if any./blocks/height/finalizedreturns the height of the currently finalized block./blocks/finalizedand/blocks/headers/finalizedreturns the current finalized block and its header, respectively./blocks/finalized/at/{height}returns the height of the block that has been finalized atheight.finalizationVotingin block JSON contains both the indexes of valid endorsement senders and conflicting endorsements collected by the miner of this block.
Activation
To activate the improvements listed above, vote for feature #25 Deterministic Finality.
Update Notes
There's no need to rebuild the state when updating from 1.5.12.
Version 1.5.12 (Mainnet + Testnet + Stagenet)
In this release
This release contains the following bugfixes and improvements:
- Fixed a bug which could cause an NFT to appear twice in the responses of
/assets/nft/{address}/limit/{limit}endpoint under certain circumstances. - Bumped scala version to 3.7.4
Update notes
Even though this release is optional, we recommend everyone to update their nodes. There's no need to rebuild the state when updating from 1.5.11.
Version 1.5.11 (Mainnet + Testnet + Stagenet)
In this release
This release conatins an important fix for the P2P protocol implementation and is strongly recommended for all node operators. Please update update your nodes!
Artifact Attestations
Starting with this release, we will be generating artifact attestations that establish build provenance for artifacts of the release. You can use github CLI to verify artifact attestation.
Update notes
Even though this release is optional, we recommend everyone to update their nodes. There's no need to rebuild the state when updating from 1.5.10.
Version 1.5.10 (Mainnet + Testnet + Stagenet)
In this release
This mandatory release brings feature #24 ecrecover fix to Mainnet, Testnet and Stagenet.
Protocol Enhancements
- The
#24 ecrecover fixfeature fixes a bug in theecrecoverfunction. The bug prevented some public keys from being correctly recovered.
Node Improvements
- The codebase has been migrated to Scala 3.
Activation
To activate the improvements listed above, vote for feature #24 ecrecover fix.
Update notes
This release is mandatory, please update your nodes. There's no need to rebuild the state when updating from v1.5.9.
SHA256 Checksums
75fbfad9cf08d5158cc57d665601c5f4e281dfad250c216a06e7c97099649525 waves-grpc-server_1.5.10_all.deb
4325740dc46abe30143619027b9b31bc0b8f72e73dbf49720e61ccf761912432 waves_1.5.10_all.deb
1215eabc38a88c56870e7637d6257cfbfe9e0db4f83628016f502218360a06cf waves-grpc-server-testnet_1.5.10_all.deb
6e17cb0b7451417cb0dd3cdfba76f5d2b40832069d810de28c22fccfa27998ab waves-testnet_1.5.10_all.deb
48899d3e8fd45d6daab4653c842406c294a1a5fcd8689b69c1431a4057c39935 waves-grpc-server-stagenet_1.5.10_all.deb
d382f12086d9119b3967b1769ec2c65f55665023d9538f66f5ceabaf14a9b55c waves-stagenet_1.5.10_all.deb
86b433a0477b812ed52e566e488e89169e28d35bd13ad7c355f279e20ffa49d5 waves-all-1.5.10.jar
812d848b7427798896b9f49d87f69c3ede3d1394c2fc9703fc455d91d90b9a69 waves-grpc-server-1.5.10.tgz
799df5bf359c711c82dfc0a8a0f46f860553f1ba59d15673504fa2f73826e153 waves-ride-runner-all-1.5.10.jar
Version 1.5.9 (Mainnet + Testnet + Stagenet)
In this release
This optional release includes the following fixes and improvements:
- Blockchain locks are acquired uninterruptibly, which should make Units mining more reliable.
- Docker image is based on Eclipse Temurin 21.
- Units contract registry has been added for both Testnet and Mainnet.
Update notes
Even though this release is optional, we recommend everyone to update their nodes. There's no need to rebuild the state when updating from 1.5.8.
SHA256 Checksums
fad027510235708b2770d01119dbec8d0c3332c57c4e2745b20d77c5840a6a86 waves-grpc-server_1.5.9_all.deb
7e89942fc0fb3824ecfbd9c8d99d60a046970568060082194f3d79b5e309cc8d waves_1.5.9_all.deb
e11debaa1c9e9a1e45b2601841271def11726e582268f0f2302e9f000f66bf9f waves-grpc-server-testnet_1.5.9_all.deb
2f564f59774373c99644df4b690d49c0c7aac163ac002e5222adf10275e571cd waves-testnet_1.5.9_all.deb
fae52e39ba4910754db1c06a95cc142bcf2c9deea185985ad640adbd3dd5df76 waves-grpc-server-stagenet_1.5.9_all.deb
d36544a1ce0fb96016e859b118f8c2d5364cb506e4cc03217d2a592f3b2c905f waves-stagenet_1.5.9_all.deb
98c086b76db0f3ccf85ddcece52bf839c4e6dec6a72712dcc76146d3d81e89c5 waves-all-1.5.9.jar
0768514921dd7ff2f4e2a6ad54d7ef3ff196f543e8760b009f4b68229e5e189f waves-grpc-server-1.5.9.tgz
5f73d900e0c68baee924efacc752340ce584ec3710dd4f9011a28c58db0a218c waves-ride-runner-all-1.5.9.jar
Version 1.5.8 (Mainnet + Testnet + Stagenet)
In this release
This is an optional release with several bugfixes:
- Improved connectivity: nodes no longer ban each other as aggressively as before, and also share only those peer addresses that they were able to connect to.
- Improved the performance of API methods retrieving balances at specific heights.
Also several new commands were added to the node's CLI:
gengencan be used to generate custom genesis blockcrypto create-keyshas been extended to accept wallet seed
Update notes
Even though this release is optional, we recommend everyone to update their nodes to benefit from connectivity improvements. There's no need to rebuild the state when updating from 1.5.7.
SHA256 Checksums
8bd82014375e78ac7d51811b5c2d9647c91cbc243d62969f3afb9c85b621d7ae waves-grpc-server_1.5.8_all.deb
6fc677dd86f1d29f40f3fe092c185a6e344db7f76dbc182d9dc95c1813e557a1 waves_1.5.8_all.deb
0be268e18ba2364b80de58bb2e1e03572a991985505bb2731b28e54c775ee07b waves-grpc-server-testnet_1.5.8_all.deb
7f7bc0105df60abb397a3a600e0ed1ead003cb60c81e3fc8b396508cf8799f5e waves-testnet_1.5.8_all.deb
b4b95c031120c9471b53c211cafcc038ffdb2e3b702133877d065435a9ffd6b9 waves-grpc-server-stagenet_1.5.8_all.deb
bcc3d2a7b563acfcbc725889e3ea15daf41607a3792d8b80ef700f3e7f4bb347 waves-stagenet_1.5.8_all.deb
ae40ac69264b7efea0f5656294c2034e74ca226de84376e8db9f1e8bec6a2c19 waves-all-1.5.8.jar
2e8844ac9b515f96a8d2083ac5abe18a4d7824d64ba233a93c3711fe17c02807 waves-grpc-server-1.5.8.tgz
796c147241c27cc21425f4b726f1cc2e83b30c9b06952d4ef6e9c9b69176a891 waves-ride-runner-all-1.5.8.jar
Version 1.5.7 (Mainnet + Testnet + Stagenet)
In this release
This mandatory release contains an important fix for connectivity issues and enhances transaction validation. Please update your nodes!
Update notes
There's no need to rebuild the state when updating from v1.5.6.
SHA256 Checksums
3afaf5aa5f06e66ca6de9950b4ea969844852188305e29246f282c23e2c80d4b waves-grpc-server_1.5.7_all.deb
7ce4332094bf8daa56afffd9a72c47f83aa752eaa73a0bf480c3af35cedaa9d4 waves_1.5.7_all.deb
dd8e44d9fdc124f32682a647b1ba4264b5cb18d520d98c7278cf6a455090f0b2 waves-grpc-server-testnet_1.5.7_all.deb
edb0e662eba37ea4b248e6bcf12a663e2dfedae9cb1e21e2324e5143e1ee0037 waves-testnet_1.5.7_all.deb
cd42f2f3540bd615327a059138d833cd3c6b80be5f2b77830f0db45ea74baae3 waves-grpc-server-stagenet_1.5.7_all.deb
f9b1b00b005b8aec688253e269e6218057db9b806e57cb56a452352f5ced258f waves-stagenet_1.5.7_all.deb
3db16be84f2e40a72aa0bd74acefa7b8e720a8d6c8d709dbd4a6c4fd1cfffc3e waves-all-1.5.7.jar
a42ffb56e36968547a2bed4022bff15c5075422c296f41969e3254d6c3ba50e5 waves-grpc-server-1.5.7.tgz
1dde48116b200131ae4e6013ee5e926bb93387642ee9f8651710dbc83f01134e waves-ride-runner-all-1.5.7.jar
Version 1.5.6 (Mainnet + Testnet + Stagenet)
In this release
This mandatory release brings feature #23 Boost Block Reward to Mainnet.
Protocol Enhancements
- With feature
#23 Boost Block Rewardactivation and for the following300_000blocks on Mainnet, the total block reward is increased by a factor of 10. The feature has already been activated on Testnet and Stagenet. For more information, see the docs.
Node Improvements
- Default value for
min-micro-block-agehas been decreased from 2 seconds to 500 milliseconds. - Domain names can now be used in the known peers list.
- Fixed RIDE Runner container startup.
- Fixed BU events on microblock rollback which could reflect an incorrect state.
Activation
To activate the improvements listed above, vote for feature #23 Boost Block Reward.
Update notes
This release is mandatory, please update your nodes. There's no need to rebuild the state when updating from v1.5.4.
SHA256 Checksums
d2d1687766acf203fa60f2ac6c4b59aa1a3511f7059ba652929e7bda39c5c1b7 waves-grpc-server_1.5.6_all.deb
19bf4c1e541efe75bb7da1079615647e4bfac7bcd079b7d00123c4c078b976d4 waves_1.5.6_all.deb
4d4698b1f8ca9f4792a78536d49068a2b0fbdb62c48421102cd6f54cf1a08199 waves-grpc-server-testnet_1.5.6_all.deb
1998b5a3a4406fee3312bab94dab8d0115440d0776ecffa22e7e76a9d7dc6493 waves-testnet_1.5.6_all.deb
49d8d9281ca049693bcd5752c6041d0f759a99578693eb90dbe92c12bb574b74 waves-grpc-server-stagenet_1.5.6_all.deb
c78964eabe2d6632ee2161d0776133d553e1f593a407bb0923dce26f9d263b76 waves-stagenet_1.5.6_all.deb
419f3dbc52b0ffbe2f6bd5321ade856486a5edef2841598becc9094b63035cca waves-all-1.5.6.jar
83e4eb6f9c4c59a458d4e7876ccd2f12748735d1055e0a254a911af36d85a8f6 waves-grpc-server-1.5.6.tgz
62ddb0a40bbeedf2a5abf7ed36f1c294d628f3b9c9a690ecba9ab9fcf5b0f635 waves-ride-runner-all-1.5.6.jar