In this release
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.
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
- Added the
priceMode
parameter of order version 4. The parameter enables price mode similar to order version 3. - Changed the minimum fee for a Set Script transaction: now the minimum fee depends on the script size.
- Weak public keys can no longer be used to sign transactions.
Ride
-
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:
- If the first dApp script uses version 6, the total complexity is limited by 52 000.
- If the first dApp script uses version 5, the total complexity is limited by 26 000. If script version 6 functions are invoked next, their complexity can exceed 10,000 and is limited only by the total complexity of the transaction.
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.
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": 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 }
Example script invocation by Ethereum transaction
{ "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.
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.
Activation
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)
Update Notes
- Blockchain Updates users will need to update their clients and reimport blockchain to rebuild BU database so that new order metadata is available.
- All Testnet & Stagenet nodes must be updated to version 1.4.6, otherwise they may end up on a fork.
SHA256 Checksums
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