⛓️ Reference Waves Blockchain Node (client) implementation on Scala
This release is intended for Testnet and Stagenet only, it is not ready for Mainnet yet!
This release includes several consensus improvements implemented as hard forks which are bound to feature #19 "Block Reward Distribution".
rewards
field to BlockInfo
structure. This field holds the list of tuples of beneficiary address and the amount they receive. Beneficiary addresses for Testnet and Stagenet are predefined in the functionality settings.To activate the improvements listed above, please vote for feature #19 on Testnet and Stagenet!
There's no need to rebuild state when upgrading from 1.4.14.
f605a65ea4b556c23b6a7c91d557bb9c91ca5a65144a718a2e860a9a16c9c651 waves-grpc-server-testnet_1.4.15_all.deb
add15b0d6fd25a6d03809ffd844fab6a4f6a817b36e3ca79b756a1504082e45b waves-testnet_1.4.15_all.deb
eefe5b4fc380b95751084ea82ff2319d64bf9d371dc730f17550d04afabd3e21 waves-grpc-server-stagenet_1.4.15_all.deb
2635d88665a472959528974c4cf73087d86235ffbda7fbe936c4b75175c1111d waves-stagenet_1.4.15_all.deb
bc57b1c40e513ceb666ee3f048afcf51ff2a4c2eeb02a1e423d8ea90add2f828 waves-all-1.4.15.jar
37e68a4b8a6b4082358d1acaf07fffa0f979bd289c9321f6051562579eb641a5 waves-grpc-server-1.4.15.tgz
This is an optional release that includes numerous improvements and bug fixes.
waves.miner.private-keys
setting, only those keys are used to sign blocks (wallet contents are ignored)./utils/script/evaluate
route to take payments attached to the transaction into the account when executing the call and to support Accept: application/json; large-significand-format=string
header.-i
flag) will cleanly shut down on Ctrl+C
. This also allows capturing thread dumps by sending QUIT
signal to a running container (docker kill -s QUIT $CONTAINER_ID
).Unless you rely on asset ordering, there's no need to re-import blockchain when updating from 1.4.13.
8c89081e3a67bbcde25e821e10f3084e1c9f1ae404241d7dc39344b6c5f760e3 waves-grpc-server_1.4.14_all.deb
d87dbf6d845884bed792bf4b5c47c26bb7444652e88c2715d0bf8ecd5225541a waves_1.4.14_all.deb
fd3e4cbdd98b1ec18c5cd94b7591f5a8c5d1ce82559b0fa5725b83590ba6e6d0 waves-grpc-server-testnet_1.4.14_all.deb
b786de890113a2fde5884ba2f65e38417c99784610c50e3109863ee090728c43 waves-testnet_1.4.14_all.deb
49cdd96c9ba7fa2a5e164df593747256578c68b503d48164af8543e16e1e8ab5 waves-grpc-server-stagenet_1.4.14_all.deb
fff93d586d930fa2f1316ec0e19bf02c439e228873605176d4996b3071974844 waves-stagenet_1.4.14_all.deb
61427f97bd5fb24c0071dbbc419093a447317e9d67cba703eeb938b4c20a3ade waves-all-1.4.14.jar
7eb9000a2901299d1bc9f4564804e0313d18d67cf422edeef6d58c14cef4ab5a waves-grpc-server-1.4.14.tgz
This release brings MetaMask and other consensus fixes to Mainnet. After the activation of the feature #18 all Protocol changes become available. This release is mandatory for all nodes: outdated nodes will shut down when new feature is activated, which is expected to happen on February, 18th, given sufficient miners support.
This release includes several consensus improvements implemented as hard forks which are bound to feature #18 "Consensus and MetaMask improvements".
/assets/nft/{address}/limit/{limit}
: the tokens are listed in the order they were received by the account, beginning with the most recent one. If you use your node to retrieve NFT list and rely on correct NFT order, you need to re-import blockchain for the fix to have effect./utils/script/evaluate
shows state changes when transaction-like invocation is evaluated. Also default complexity limit has been increased to 52000 to match invocation complexity limit.waves.utx.always-unlimited-execution
. When enabled, all script invocations are evaluated completely, not up to the fail-free limit. This functionality is turned off by default.docker run -it wavesplatform/wavesnode:1.4.13 import -c /etc/waves/waves.conf -i https://blockchain.wavesnodes.com/mainnet_last
To activate the improvements listed above, please vote for feature #18 on Mainnet!
Unless you rely on proper NFT order described above, there's no need to re-import state when upgrading from 1.4.11.
3518809f4bea4dfa0174f21465da00c2df40bf3d49577ba579be74b7fe76f1b9 waves-grpc-server_1.4.13_all.deb
c7398da1cebfb28f3ebb456f11d178c2f754909e201957aa4ea1fd7e5168a915 waves_1.4.13_all.deb
e5153a68ba8e816806f3b200e9d5d30d2d00a673d01102684af7a5258860e995 waves-grpc-server-testnet_1.4.13_all.deb
774fff0b88e8814624fc90d3bfa2a9c6d2cb1c0b10109c875d18e810eb05bfb3 waves-testnet_1.4.13_all.deb
48f779f5c0585ff1a9e526ec28c5ab31d032a401f053751ba81eba7572d77266 waves-grpc-server-stagenet_1.4.13_all.deb
9342c633a2506254ff2b84fda13686925236b1dfc10584843c38df120a5ac9ba waves-stagenet_1.4.13_all.deb
d83fa784d51ec3517f694770531c08fd955b2804f71bbef2d97a029929484fb6 waves-all-1.4.13.jar
9cac8c80368cba7cd66d5208ebe858ec608692587589ce7bec073167bdd33689 waves-grpc-server-1.4.13.tgz
This release is intended for Testnet and Stagenet only, it is not ready for Mainnet yet!
This release includes several consensus improvements implemented as hard forks which are bound to feature # 18 "Consensus and MetaMask improvements".
/assets/nft/{address}/limit/{limit}
: the tokens are listed in the order they were received by the account, beginning with the most recent one. If you use your node to retrieve NFT list and rely on correct NFT order, you need to re-import blockchain for the fix to have effect.waves.utx.always-unlimited-execution
. When enabled, all script invocations are evaluated completely, not up to the fail-free limit. This functionality is turned off by default./utils/script/evaluate
complexity limit has been increased to 52000 to match invocation complexity limit.To activate the improvements listed above, please vote for feature # 18 on Testnet and Stagenet!
Unless you rely on proper NFT order described above, there's no need to re-import state when upgrading from 1.4.11.
ae5a9942a4819cbc24ec277de6ad4ca4b7e3755badea7c90de9dc596c676e6a1 waves-grpc-server-testnet_1.4.12_all.deb
0574bdaca295e9d174bdfa9095a7656742d91464591424cec65e7a13b1aa9ee0 waves-testnet_1.4.12_all.deb
4a7711de5a31f43a8db6a6875cce9abfbf066cd357291081053f893805045699 waves-grpc-server-stagenet_1.4.12_all.deb
dd64ef980f4c5b93566886024e9560a03a046280fa64a992364c4ca671f30abb waves-stagenet_1.4.12_all.deb
c030686c8b9fa32702c11d68879916ea6ce5df6d5a8da1212e4180f19e83ccbc waves-all-1.4.12.jar
d2cd9e55a06e10ba994a816be97401e0808cdb1cd752fa851471fe53d0b09ab5 waves-grpc-server-1.4.12.tgz
This release improves node performance and prevents miners from generating empty blocks under heavy load. This release is strongly recommended for all node operators, especially miners.
/utils/script/evaluate/{address}
This release adds support for evaluating transactions with /utils/script/evaluate/{address}
endpoind. Transaction JSON can be specified in the request body. Neither proofs nor attached payments are validated; transaction sender, ID and other fields are retrieved from the supplied JSON. dApp
field is ignored, the function is evaluated in the context of {address}
. This functionality simplifies debugging contracts: no private key is required to simulate transaction processing.
There's no need to re-import state when updating from 1.4.10.
2616718a09f11299930d7182279bf0ba87e835a8ec1867e0cc33f82e1f45096f waves-grpc-server_1.4.11_all.deb
2a7b0759d733f9d93f91772450935e026e4a872d4081c3f8d5a2b8cd9f4d94e5 waves_1.4.11_all.deb
69fae275d2d18f682054d886e9f31fe368fdb43c703cba32fd900ff53a8f9688 waves-grpc-server-testnet_1.4.11_all.deb
6689aedf462035db17e3efd3cb197e3761815abd53c6c67dc988a6ea3835256d waves-testnet_1.4.11_all.deb
ad5ee3092007cc041f783f224644a9e8e06ba1d3ab1bc1cfc1bdcb234480969c waves-grpc-server-stagenet_1.4.11_all.deb
788c60e9c235318c8cdbf49f4aa1117eb333502b349effd3c72185b1cc93b049 waves-stagenet_1.4.11_all.deb
de521da2b444e06b1f63349e834bc39b8ee0a20bca74c0a0c499d30b216b9167 waves-all-1.4.11.jar
3f4cf8412001c2d0f67ac60c0ce88402b6fc38397a48b02c331a7565efddc49d waves-grpc-server-1.4.11.tgz
This is a mandatory release which resolves an issue with transaction validation, as well as improves block processing performace for blocks containing excessive number of transactions.
An issue with docker containers introduced in 1.4.9 has also been fixed. There's no need to explicitly specify waves.directory
in custom waves.conf
unless you need to store data files in the non-default directory.
There's no need to re-import blockchain when updating from v1.4.9.
179b6ca4a5d728b285d8e8c6c10bb4fb4f3c186baeb79ce344830a88c2a85aba waves-grpc-server_1.4.10_all.deb
89dd85b14a1ba8a588f9e740921eb0307679e142bc96f0cdcdc0041bfdbf3855 waves_1.4.10_all.deb
01a70b01b14a81c8902ae961fb51f406c0438e81de0d89892df2397d6007b4f0 waves-grpc-server-testnet_1.4.10_all.deb
93f142ba5863c11c26ff5f08c2e089c296fed87cb4bcc89f2d6adace6edf7777 waves-testnet_1.4.10_all.deb
62e7436118dd3cf80cedb703bdbd34f7e37e10760a4a78ed399468ebdf82b2ce waves-grpc-server-stagenet_1.4.10_all.deb
987fd4b24fccc72c09404dfe4f7f452b0ac7ac23e671d432b4ac489c96235f3f waves-stagenet_1.4.10_all.deb
816b7d820776daaabf9ba2a5c9bf7233e3c90ac6de88d60a546626771d0d5c0b waves-all-1.4.10.jar
45eae9ede9b752865b88d28602976513b8f2939cb136bc61992fd53275cb2dd9 waves-grpc-server-1.4.10.tgz
This is a mandatory release containing important fixes for the synchronization process implementation, as well as other improvements an optimizations. This release is recommended for everyone, so please update your nodes!
Other notable improvements:
*Value()
functions error messageexactAs
macro/utils/evaluate/
supports calling compacted dApp functions/debug/stateHash
response has been extended with height
and version
/assets/details
- max asset ids number limited, can be configured in waves.rest-api.asset-details-limit
(100 by default)/addresses/data/{address}
- max keys number limited, can be configured in waves.rest-api.data-keys-request-limit
(1000 by default)/blocks/address/{address}/{start}/{end}
- max blocks number between start
and end
limited, can be configured in waves.rest-api.blocks-request-limit
(100 by default)/blocks/seq/{start}/{end}
- max blocks number between start
and end
limited, can be configured in waves.rest-api.blocks-request-limit
(100 by default)/blocks/headers/seq/{start}/{end}
- max blocks number between start
and end
limited, can be configured in waves.rest-api.blocks-request-limit
(100 by default)/blocks/delay/{blockId}/{blocksNum}
- blocksNum
limited, max value is 10000/transactions/info/
- max transaction ids number limited, can be configured in waves.rest-api.transactions-by-address-limit
(1000 by default)/transactions/merkleProof
- max transaction ids number limited, can be configured in waves.rest-api.transactions-by-address-limit
(1000 by default)There's no need to re-import blockchain when updating from v1.4.8.
If you are using a custom waves.conf
configuration file, please add the following setting:
waves.directory = ${WVDATA}
This setting is needed so that the node will pick up proper data directories.
05606ba6797da5921a37fa6858a0e59cea4ba47fbc5345fce1083bb2525ed099 waves-all-1.4.9.jar
de9a84f1cd6796bb335d50e9ab7440e699237ed6bccd2fc2e912bf55fe7a5aec waves-grpc-server-1.4.9.tgz
2413f8aa8184a7276acea3025ca80f5a16c2198b90d66ca4e1f3b83efac03627 waves-grpc-server-stagenet_1.4.9_all.deb
1bdaae891f45fdfb9dba5c91bda614a2172707d9bcd8c94c792ef85ea1212008 waves-grpc-server-testnet_1.4.9_all.deb
a4859cf0d0e0597c8581535e0160980b2b19c31c40eea721d1983f2fa220d9cf waves-grpc-server_1.4.9_all.deb
2b29fddfbd95c9459d0c53b392faeddbb09a06baffe7f3948219ed6882e560d8 waves-stagenet_1.4.9_all.deb
0ce9249449b4af0e7aa7b93b809ce54f56dc8af5d60ef3c517a5d07b4e99478f waves-testnet_1.4.9_all.deb
ce2f11a4a4cc989384766eb28398f14c1075afc80e243cd3d86d32da67c4f3f8 waves_1.4.9_all.deb
This release fixes several issues and is recommended for all miners and node operators.
/utils/evaluate
.Please be aware that the deprecated /debug/stateChanges/info/{id}
REST API method is now redirecting to /transactions/info/{id}
and will be removed in one of the future versions.
There's no need to re-import blockchain when updating from v1.4.7.
53bc85f82a7b33347d2822193fa49d98497b5bc2fc9b22d1a22691fc0a77ca81 waves-all-1.4.8.jar
d2f37dc217bef3ca4896f117e93e46483af93a5d3dfa76edb03569b28e0d1f55 waves-grpc-server-1.4.8.tgz
3177fadefd14794b2b2bcd3ad1b77b60dacf48275a70a1bd371d61579570b70b waves-grpc-server-stagenet_1.4.8_all.deb
2b67835a9fe54e30ae0f1278e4e6ff3855243280cdb8bf8d06107704db0047db waves-grpc-server-testnet_1.4.8_all.deb
9f5813396ba6983e2ab05927864595c8c3d7cdbd826c82a3cf0b43fbf794c31d waves-grpc-server_1.4.8_all.deb
64f398599544293f9607b185fc75e1fbbb1845ff42380104e4dd388396b1c3d2 waves-stagenet_1.4.8_all.deb
13149f925dc2a3633ea3ae47ac84a0bb03076ce7d2c0d05687e79964496bfaf0 waves-testnet_1.4.8_all.deb
c585ec711df22d71e77bee76e9e401236d218bde0b545a4364322762bc543d56 waves_1.4.8_all.deb
This is a mandatory release. Mainnet nodes need to be updated before feature #17 is activated, which will happen at height 3180000 (approx. on Jun 27 2022 05:37 UTC).
This release also includes the following changes:
waves.rest-api.cors-headers.access-control-allow-origin
setting, origin-from-request
, has been added. When set, the node will send Access-Control-Allow-Origin:
response header with the value taken from the Origin:
request header. This allows to use a single node instance with multiple origins. See docs for details.1370649165da1d2a6b2f2a8031352195e6661614398ac08d7639285375757902 waves-all-1.4.7.jar
d1e76c39be0bd1d1a9d2a487b7e0c6ae38229a2a1ded9003f0225e982fe07efc waves-grpc-server-1.4.7.tgz
53fa60375af62da3cfd4ea8db16452df87474c45f135660f6410c613c743d2fa waves-grpc-server-stagenet_1.4.7_all.deb
e3c3a7906fdc34002c7833a446f7e500f303d1ecdb04b29054c16a8f6ce0d70e waves-grpc-server-testnet_1.4.7_all.deb
20e969d07f9de30015cde3a579f4d6b82d79365614e2e819dbee41fc3f402b74 waves-grpc-server_1.4.7_all.deb
94f930bcce48894f4355622ed7fd06ebb8e1be9218c403b45ea761634714fdfe waves-stagenet_1.4.7_all.deb
a4bb12fddd97e1ad7e926d824b6570b31ee124c4251c96d89094e732a7099f0e waves-testnet_1.4.7_all.deb
01cfd1b24896de768227ac837d7e6f6a47998190efd25486557b11a1aa384a32 waves_1.4.7_all.deb
This release is an accumulation of all previous 1.4.x releases. Now it's available for Mainnet. After the activation of the feature #17 all Protocol changes become available.
priceMode
parameter of order version 4. The parameter enables price mode similar to order version 3.Issued version 6 of the Ride Standard library.
The maximum complexity of a callable function of a dApp script in Standard library version 6 is changed to 52 000.
The maximum total complexity of all callable functions and asset scripts within a transaction depends on the version of Standard library in the first dApp script invoked:
The sender's account script complexity is not included in that limit.
New complexity estimation rules reduce overall script complexity.
The maximum size of a dApp script is increased to 160 Kbytes regardless of the Standard library version.
The maximum total number of ScriptTransfer
, Lease
, LeaseCancel
script actions executed by all callable functions in a single transaction is 100.
The maximum total number of Issue
, Reissue
, Burn
, SponsorFee
script actions executed by all callable functions in a single transaction is 30.
Callable functions no longer accept arguments of type Union.
Added the following built-in functions:
Changed the limitation on the second parameter of drop
, dropRight
, take
, takeRight
string functions and byte array functions.
Changed the limitations on input and output data size for the built-in string functions makeString and split; their complexity reduced to 1. Added the range of similar functions with different complexity depending on the data size.
Changed the complexity of certain built-in functions. The complexity is given in the [Ride v6] Built-in functions article.
Introduced a limit on the total number of payments attached to dApp script invocations in a single transaction: a maximum of 100. The limit does not depend on the Standard library versions used.
Added support for Ethereum transactions that perform token transfers or dApp script invocations. JSON representation of a transaction depends on its content:
{
"type": 18,
"id": "C4Fwdsygb6uL6iZ2dd6dHCdnw5FB2oZNCdpQ1F5kQ7Q9",
"fee": 210000,
"feeAssetId": null,
"timestamp": 1634807137059,
"version": 1,
"chainId": 83,
"bytes": "0xf87486017ca21943238502540be4008303345094ae50afd342b8f397bcd1c2af3fd658d5080674058806f05b59d3b200008081caa0e87f0e273e8ad894ab196198747a0363b66c5bd056f1e09bb6f8b18f6c11dbafa07dd6b2ac30d2d1ac1196a34a8db5adbd8f69b8f349b15f45c6bbf4040de7519d",
"sender": "3MTPx4QwYZg78QwAw4Pdm3feBpwe9qMzL5X",
"senderPublicKey": "2ZWaWoMYAdkKfUUYwKng29Dgq1ggBPYtbsrvKBxxKcP3SkpXy1USEJiPPL6U7H7ECD3bD3QcZy2mmtN9EzsK2SHV",
"height": 1040780,
"applicationStatus": "succeeded",
"payload": {
"type": "transfer",
"recipient": "3MgUB2QfTH8jMLYwuNrYq2SSUJdGcjvBk6n",
"asset": null,
"amount": 50000000
}
{
"type": 18,
"id": "2Y67uLthNfzEBpEJFyrP7MKqPYTFYjM5nz2NnETZVUYU",
"fee": 500000,
"feeAssetId": null,
"timestamp": 1634881836984,
"version": 1,
"chainId": 83,
"bytes": "0xf9011186017ca68d17b88502540be4008307a120940ea8e14f313237aac31995f9c19a7e0f78c1cc2b80b8a409abf90e0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000064672696461790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081caa0ecb7124f915bd366186a6451aabdde3fbf0db94caa78a6b8d6115bb5ce6407d8a077ab1e756d343b9927c3c4add5c797915aef2de112576213d6a30ce5e040ba3c",
"sender": "3MRejoFLZ6FsXRjVEzBpnQ27s61FDLLDGxh",
"senderPublicKey": "3nFhfAYDSRS4UrU22HaAuFT4YHZD5Et3vy7fBTcTxefuAVXs8pHRR4pvpAzvMbmskwjWB7PxFKqPNsioRVZ9mxaa",
"height": 1042032,
"applicationStatus": "succeeded",
"payload": {
"type": "invocation",
"dApp": "3MRuzZVauiiX2DGwNyP8Tv7idDGUy1VG5bJ",
"call": {
"function": "saveString",
"args": [
{
"type": "string",
"value": "Friday"
}
]
},
"payment": [],
"stateChanges": {
"data": [
{
"key": "str_1042032",
"type": "string",
"value": "Friday"
}
],
"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.
"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.To activate the improvements listed above, vote for feature #17 “Ride V6, MetaMask support”. The next voting interval starts at height 3160001 (at around 09:30 UTC on June, 13th)
9ace49683aa95517e86df0a8904c0636aa6614652c1ee25c9930f548d10d34cc waves-all-1.4.6.jar
f22d1a0737803ba8cce1941eca6bcc64a86a27db65ab0c12dda967ee4ab16742 waves-grpc-server-1.4.6.tgz
4546af3cbbdae84d0b81ccc7cb8f6ec6cff696aa17e5136efab983c026ba7134 waves-grpc-server_1.4.6_all.deb
e10dcc64638be20f962a75e44e1aae72b9c07004c35bc71caa1b955c6cfd1ccb waves_1.4.6_all.deb
189d47e058b9f1752e7f940543193b63a6f362db0e52e9cfa157a7e17eb05be8 waves-grpc-server-stagenet_1.4.6_all.deb
b65411ee6b7feda405603db3ccb8f1f610234bf31b909078e062b9af3b7ec451 waves-stagenet_1.4.6_all.deb
f3bdbf5af67e810e4f76e349e1f7d3a1fc968f68f790430df96c5ff63b716890 waves-grpc-server-testnet_1.4.6_all.deb
64f1fd06b1a83489a30227cc5cb29f6ad9f002e6861ad0153456fd06a91e40c5 waves-testnet_1.4.6_all.deb