Skip to content
  • v1.2.18
  • 2909f6d
  • Compare
    Choose a tag to compare
    Search for a tag
  • v1.2.18
  • 2909f6d
  • Compare
    Choose a tag to compare
    Search for a tag

@waves-jenkins waves-jenkins released this Feb 25, 2021

In this release

This is a mandatory release for all miners on Mainnet and Testnet.

This release fixes a bug in transactions validation which was encountered on Testnet. The Mainnet is not affected.

Node Changes

  • Fixed error of not validating proofs' sizes in some cases.

There's no need to rebuild state when updating to this release.

SHA256 Checksums

b2b6ef8573f94371477f1b5c8642c28449d5812ab8ed1d6eb1da927832ea3fe6  grpc-server-1.2.18.tgz
a4bd6ac3c4e0fc6b901be2adeb8a0ce88e3194b42a1ab7891eeda3cae24d2d50  grpc-server-testnet-1.2.18.tgz
2d49ff51da872ed2b1039dba2dda46f035c6073280753bbcc76f2cfe0134717b  grpc-server-testnet_1.2.18_all.deb
16ca08f2680e5dd092beb812aad3c12efe50be49062b8d8864e9fa20105c6815  grpc-server_1.2.18_all.deb
360392e6f0b94babe0e8e6802dcdd0e99b78302f7fc4526eeacdaf83264bbc66  waves-all-1.2.18.jar
b83e4b4a6b1abe524f627b8ec5c9f23f115bd03da2356bce66249fe93b092cdc  waves-testnet_1.2.18_all.deb
1f3cc566dd7a0dff48729a44e9ed6eba254cbaa59ea154b2033141b327048561  waves_1.2.18_all.deb
Assets 9
Pre-release
  • v1.3.0
  • 57d7dcc
  • Compare
    Choose a tag to compare
    Search for a tag
  • v1.3.0
  • 57d7dcc
  • Compare
    Choose a tag to compare
    Search for a tag

@waves-jenkins waves-jenkins released this Dec 29, 2020 · 13 commits to version-1.3.x since this release

Attention! This release is for stagenet only! Not for mainnet/testnet.

In this release

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
  • Continued сomputations.
    • Added support for dApp scripts with complexity over 4000. The execution of such a script is split into several stages. The first stage of calculations is performed within the Invoke Script transaction. The further stages are performed within Continuation transactions. More about continued сomputations
    • Implemented the new transaction type: Continuation. A block generator creates the Continuation transaction if there is an incomplete calculation sequence. A user cannot send a Continuation transaction.
    • Added version 3 for the Invoke Script transaction that can invoke a script with complexity over 4000.

Ride

  • Issued version 5 of the Ride Standard library.

  • Added the Invoke function 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.

  • Added script actions that the callable function can perform:

    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 the following account data storage functions that allow the dApp script to read entries of its own data storage at any stage of the calculations:

    • 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
  • Added an arbitrary data type — Any.

Node REST API

Breaking Changes

  • Added the new transaction type: Continuation.

  • 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 Lease Cancel transaction, the lease 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.
    Format
    "lease":
       {
         "leaseId": "4AZU8XPATw3QTX3BLyyc1iAZeftSxs7MUcZaXgprnzjk",
         "originTransactionId": "4AZU8XPATw3QTX3BLyyc1iAZeftSxs7MUcZaXgprnzjk",
         "sender": "3PC9BfRwJWWiw9AREE2B3eWzCks3CYtg4yo",
         "recipient": "3PMj3yGPBEa1Sx9X4TSBFeJCMMaE3wvKR4N",
         "amount": 1000000000000,
         "height": 2253315
       }

Semantic Changes

  • For Invoke Script transaction version 3 the fields extraFeePerStep and continuationtransactionIds and the script_execution_in_progress value for the applicationStatus field added to the output of the endpoints providing transaction info.

  • dApp-to-dApp invocation results are added as the invokes array to the stateChanges structure returned by the following endpoints:

    • /transactions/info/{id}
    • /transactions/address/{address}/limit/{limit}

    Each element of invokes array, in turn, also contains stateChanges.

    Format
    "stateChanges": {
      "data": [],
      "transfers": [],
      "issues": [],
      "reissues": [],
      "burns": [],
      "invokes": [
        {
          "dApp": "3PC9BfRwJWWiw9AREE2B3eWzCks3CYtg4yo",
          "payment": [
            {
              "amount": 50000000,
              "assetId": "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
            }
          ],
          "call": {
            "function": "swapNeutrinoToWaves",
            "args": [
              {
                "type": "string",
                "value": "EUR"
              },
              {
                "type": "integer",
                "value": 843699
              },
              {
                "type": "binary",
                "value": "base64:OK+armP11YmAyoQOwl8jLDLi2dK2sRc1Ue2QzZX1wgRmwGASLhllv1iKg2fRKS8cAlSDrfMYPb6374WMC9gFgA=="
              }
            ]
           },
          "stateChanges": {
             "data": [],
             "transfers": [],
             "issues": [],
             "reissues": [],
             "burns": [],
             "sponsorFees": [],
             "invokes": []
           }
        }
       ]
    }
  • Results of the Lease and LeaseCancel script actions are added to the The stateChanges structure.

    Format
    "stateChanges": {
       "leases": [
         {
           "leaseId": "5fmWxmtrqiMp7pQjkCZG96KhctFHm9rJkMbq2QbveAHR",
           "recipient": "3PLosK1gb6GpN5vV7ZyiCdwRWizpy2H31KR",
           "amount": 500000
         }
       ],
       "leaseCancels": [
          {
             "leaseId": "4iWxWZK9VMZMh98MqrkE8SQLm6K9sgxZdL4STW8CZBbX"
          }
       ]
    }
  • Results of Lease and LeaseCancel script actions are also added to the trace structure returned by the following endpoints:

    • /transactions/broadcast
    • /debug/validate
    Format
    "trace": [
       {
          "id": "3MosFNQAFGskNDnYzRBgMbfod6xXPdG96ME",
          "type": "dApp",
          "vars": [
             {
                "name": "amount",
                "type": "integer",
                "value": 12345
             }
         ],
         "result": {
             "leases": [
                {
                   "leaseId": "5fmWxmtrqiMp7pQjkCZG96KhctFHm9rJkMbq2QbveAHR",
                   "recipient": "3PLosK1gb6GpN5vV7ZyiCdwRWizpy2H31KR",
                   "amount": 500000
                }
             ],
             "leaseCancels": [
                {
                   "leaseId": "4iWxWZK9VMZMh98MqrkE8SQLm6K9sgxZdL4STW8CZBbX"
                }
             ]
          }
       }
    ]

SHA256 Checksums

69617f5ab0516957a4b75c3e59bbd7ed7f457418fe328d70becc0214ced80e57  grpc-server-stagenet-1.3.0.tgz
ae9c994f1a3adfab87b68e8ba2e406fb1292cc06edd0d0888975ea6b4ea93663  grpc-server-stagenet_1.3.0_all.deb
8dba1fc8b4cca59ebae68b46b2ad4e0ff471a2e7b2fd6d0bbf155fe8e66c6e8e  waves-all-1.3.0.jar
ef2f3e1de0af3927809d9d74970fb634c0d42000166545e9560d7c3b28e1d515  waves-stagenet_1.3.0_all.deb
Assets 6
  • v1.2.17
  • e3d5bd8
  • Compare
    Choose a tag to compare
    Search for a tag
  • v1.2.17
  • e3d5bd8
  • Compare
    Choose a tag to compare
    Search for a tag

@waves-jenkins waves-jenkins released this Dec 25, 2020 · 6 commits to version-1.2.x since this release

In this release

In this non-mandatory release, original Lease Transaction JSON is re-introduced for Lease Cancel transactions, which fixes API compatibility with previous versions.

SHA256 Checksums

92530be7a3f2c074bcad01ae98e12d4d081c1f5d65ba4155cbee30f584441698  grpc-server-1.2.17.tgz
241d70913d50fc8afa970610ebe6b606f03f04b1e23bc76a5ca2cd552b49053c  grpc-server-stagenet-1.2.17.tgz
0311d84630a1e61c3c501bd8f400b7e215ef04ab03d87cf9d46372106d00e3dc  grpc-server-stagenet_1.2.17_all.deb
590f88c9149f3957163c274526b0f7ad51b99cce16a8b619ff2383e4be49749d  grpc-server-testnet-1.2.17.tgz
8e78d26739d4413c44467b4375af1004976e7b7b3a18084482cb8b95c96cad44  grpc-server-testnet_1.2.17_all.deb
992c8ab7d147d4bd4648fe211a195b27dfe58a0be63d23f796a05c0507e88a91  grpc-server_1.2.17_all.deb
da24f097bf9573b15583a6184a92e11b6d04929420bd2b713c308e7d9726b942  waves-all-1.2.17.jar
68348b8b51c609b19b2ff63076427305b36b4f1064fc9aa949d363b16d59219f  waves-stagenet_1.2.17_all.deb
953ece1d8da6a598f9f7b2a174c4b0d3777983b633631bd42a8817d29832b9e1  waves-testnet_1.2.17_all.deb
351fb1ad95a7159d3917d3fba2df5b009da20d58bcb275595eecbeef150b10fb  waves_1.2.17_all.deb
Assets 12
  • v1.2.16
  • a3b0434
  • Compare
    Choose a tag to compare
    Search for a tag
  • v1.2.16
  • a3b0434
  • Compare
    Choose a tag to compare
    Search for a tag

@waves-jenkins waves-jenkins released this Dec 18, 2020 · 2 commits to master since this release

In this release

This is a mandatory release for all miners who have updated to 1.2.15. Unfortunately, a new feature has prematurely been added to implemented feature list.

Besides the fix, this release contains the following new features and improvements:

  • New /utils/script/evaluate/{address} endpoint allows users to call any function declared in a dApp deployed to an {address}. This endpoint expects JSON input in the form of {"expr": "functionToCall(1, \"arg2\", base58\"AAA\")"}. Make sure to escape double quotes when passing a string as an argument.
  • State changes for Invoke Script transactions will be included in JSON and gRPC responses of address transactions endpoint. /debug/stateChanges endpoint has been deprecated and will be removed in the future.
  • Fixed error traces in API. Both /debug/validate and /transactions/broadcast will return detailed traces when transaction validation fails.
  • The node will use native Curve25519 implementation on supported platforms, this will speedup signature verification.
  • Improved Swagger schema and fixed several API routes to properly validate input parameters
  • Improved UTX Priority Pool reliability

There's no need to rebuild state when updating from 1.2.14 or 1.2.15.

SHA256 Checksums

762d3d23d26748f87b4fd97f9505fbd2485733399583ccfa23861de3c861e484  grpc-server-1.2.16.tgz
749724f329793e5850b8d7131de08a885881e12244fb92ba2d9a08e998a54b07  grpc-server-stagenet-1.2.16.tgz
c7de07a478627524864cc5a381805285d1120c22d44540e14eb458b39351bbbb  grpc-server-stagenet_1.2.16_all.deb
8ba9b8f2868e9cb31c63dc4e03303ec0d638f911492e981c2977d393cc1b7670  grpc-server-testnet-1.2.16.tgz
a0c65cb1d6c5cfccb2183f8bc569cd975a400a380b64110e585cf2ec755e4d9c  grpc-server-testnet_1.2.16_all.deb
2e3b346a516ad2e6babdcccebf99af37dad90a8e618ed618580c804b3d3a7f10  grpc-server_1.2.16_all.deb
a52ec33db09f68f65e5c0e93b47e0bfcc7a8242ddc248eaf05b09785a334488f  waves-all-1.2.16.jar
fc28e94b02d666f918ed6e4b1810a421e20ca3b8588df25a47534ca125974489  waves-stagenet_1.2.16_all.deb
3f455ed5163297fce3a4e7559352ba83569c2cffa8d08deb029ebf5a3a08a209  waves-testnet_1.2.16_all.deb
24629014ec799a4d1a44d058eff82876bc30af7c15cc723a0ec3437733fb423b  waves_1.2.16_all.deb
Assets 12
Pre-release
  • v1.2.15
  • 5b8ea22
  • Compare
    Choose a tag to compare
    Search for a tag
  • v1.2.15
  • 5b8ea22
  • Compare
    Choose a tag to compare
    Search for a tag

@waves-jenkins waves-jenkins released this Dec 17, 2020 · 4 commits to master since this release

This release is broken. Please see v1.2.16 instead.

Assets 2
  • v1.2.14
  • 0d6fc20
  • Compare
    Choose a tag to compare
    Search for a tag
  • v1.2.14
  • 0d6fc20
  • Compare
    Choose a tag to compare
    Search for a tag

@waves-jenkins waves-jenkins released this Oct 22, 2020 · 29 commits to master since this release

In this release

This release mostly brings improvements and bug fixes to Blockchain Updates and GRPC Server extensions, so if you are using either one — please consider upgrading. There's no need to rebuild state when updating from 1.2.12.

Here's the list of Blockhain Updates improvements:

  • The extension has moved to GRPC Server extension distribution. It means that you'll need to install just one DEB package or tarball to use both (or either). When migrating from previous versions, please note that blockchain-updates config section has also moved to waves section. If you specified non-default listen port, please update your config accordingly.
  • Fixed an issue which could cause REST API to become unresponsive when Blockchain Updates extension was enabled.
  • Improved error messages when requests contained invalid data.

Other node improvements:

  • GRPC Server now properly sets chain ID for blocks returned via GetBlock/GetBlockRange requests.
  • Default JVM options in application.ini have been tweaked. When updating DEB package, dpkg may warn you that both locally installed and package-supplied files have changed. It's safe to keep your local version.
  • Swagger documentation has been updated with improved request model definitions.
  • Import from URL can now continue from where the process had been interrupted, so there's no need to re-download the import file fragment it has already processed.

SHA256 Checksums

a76356ebe495d5cde98dad29548f28f6c7498cac8d62e2177b24e517342daec3  grpc-server-1.2.14.tgz
60c52a0f723acc520a8793c105f42cce4c35244c4bf0bf976c2809759b734f19  grpc-server-stagenet-1.2.14.tgz
a7419bebfb3a76a4d368113beb02a155bc3ffe29f0cac0bd6e8de954cb8c900e  grpc-server-stagenet_1.2.14_all.deb
ec204752b29bf7b53f9e5ea0df488dd302571d3377d75ed0cbc2b595019f9c65  grpc-server-testnet-1.2.14.tgz
1b68851938cb99991f3eb2b58503b6efae39ae10db0d0f45016852a2cb6b3d67  grpc-server-testnet_1.2.14_all.deb
54d18292188abbb0f7f6891406f9b9a7288a398398f62a32bbe3af1b2e7c8846  grpc-server_1.2.14_all.deb
e02276fc4f6213005465167a01fbb5e9d47a018eaa4bdefbc514b3ca359e0e17  waves-all-1.2.14.jar
47098c717712eaee67a04ef7f0102831ae30393a688312a8c340e7b3931cdc89  waves-stagenet_1.2.14_all.deb
f0d354a5de5eba56ff7da5352dee65a6e75f99a15e13d8d6ecdb3573d0c8c626  waves-testnet_1.2.14_all.deb
154c847fc7db2267bc6892da3d74cac76364916a94f9a32be03b6e21e6f4a2be  waves_1.2.14_all.deb
Assets 12
  • v1.2.13
  • 958be4c
  • Compare
    Choose a tag to compare
    Search for a tag
  • v1.2.13
  • 958be4c
  • Compare
    Choose a tag to compare
    Search for a tag

@waves-jenkins waves-jenkins released this Oct 1, 2020 · 42 commits to master since this release

In this release

  • New Blockchain Updates extension is now a part of node release.
  • /addresses/data/{address} method has been tweaked to run faster and consume less memory.
  • Bloom filters are now disabled by default. This will make node start much faster after non-clean shutdown. Bloom filters will still be used during import.
  • A new setting waves.utx.fast-lane-addresses allows miners to prioritize transactions from specific addresses.
  • A new debug & monitoring API can be used to retrieve internal hashes of all state changes at specific height. These hashes can be used for early discrepancy detection between nodes.
  • Instead of local time, miner will store calculated time in a block.

There's no need to rebuild state when upgrading from 1.2.12.

SHA256 Checksums

1ae0ea4c1d22bbcfebfe77775f2deea3156d8b39a26b68914e7c8d8d337d68ac  grpc-server-1.2.13.tgz
447d1f1eb26ccafe5e068adf996d95a53b2d83cc55a49ed07a48645813271561  grpc-server-stagenet-1.2.13.tgz
9f0c3c0152236ef56a1f5e8e0ab0120dc926ec5169de3b1ac76477ded5ceb153  grpc-server-stagenet_1.2.13_all.deb
170e9f8940744c97cf36fe92451d70231232bd043cf3365414d1bbe3af32640f  grpc-server-testnet-1.2.13.tgz
f19b698ca857153a94b3252c78e3c4e75504cf58fc6216f435ea19fd43bd808d  grpc-server-testnet_1.2.13_all.deb
8d0c8e73c81148f6509e8a8687c844c6f17d704c481aa6bb5d38bba294a636dd  grpc-server_1.2.13_all.deb
7f423f1e109018e0fe809597c27e81344a82456a8a4562491f9e3a31baeafd76  waves-all-1.2.13.jar
7a7a9877704ec1925cd2760edd7ee8c2204bda29683c47365b84739e5272b09e  waves-stagenet_1.2.13_all.deb
114576f9cdc7a44be51b7332d3b401c4f822d12feeb3fe8313a51dca2c7ffee4  waves-testnet_1.2.13_all.deb
80ca44f65040a95733ab1c4a3fffc92e08d9c54af01af8f8cd7cd9adb19447d8  waves_1.2.13_all.deb
f5320dd96d8fbf6bcfbaaf6f2923fc7b7b672297cdec343a767394709f2c0367  blockchain-updates-1.2.13.tgz
048a5d897b4d834e755e48bad9c8c13ddcf8c3e70488d7c0a7bc7e6dc7663726  blockchain-updates-stagenet-1.2.13.tgz
53875c5ef4643dd7ec38636297d7030ae76a523df1e3caf7e6f43b90b0432351  blockchain-updates-testnet-1.2.13.tgz
3a5ddb2ff6a8d35c881d2bcb1c2b70f73d223f6108739cbf0a48f65caea1e2ed  blockchain-updates-stagenet_1.2.13_all.deb
468fff0d3f55f8d7ba9da0386b37c01c42f808f6e7c0349661ddccab74931e1e  blockchain-updates-testnet_1.2.13_all.deb
1621a0c5e23b24e5d6b50ad5da67c8df8265258b6c88127eb15e339285be9708  blockchain-updates_1.2.13_all.deb
Assets 18
  • v1.2.12
  • 013945e
  • Compare
    Choose a tag to compare
    Search for a tag
  • v1.2.12
  • 013945e
  • Compare
    Choose a tag to compare
    Search for a tag

@waves-jenkins waves-jenkins released this Sep 2, 2020 · 60 commits to master since this release

In this release

This release includes several REST API compatibility and stability improvements:

  • Deprecated /assets/{assetId}/distribution method now returns all addresses holding an asset, not just the first 1000. However, please consider using a more reliable /assets/{assetId}/distribution/{height}/limit/{limit} method instead.
  • The node will accept Burn transaction JSON with either quantity or amount field.
  • Fixed several issues which caused the node to crash when requesting address transactions, state changes or portfolio for an address via REST API.

We encourage everyone using their node's REST API to update. There's no need to rebuild state when upgrading from 1.2.11.

SHA256 Checksums

15e9843a8a8766bdccfe8c6313c2e5c8d1d454602c40d3396b57245e718fce8a  grpc-server-1.2.12.tgz
7bab4cdb4879e6a375b72cc45ad7b2cbbe526cc80f2b7477aef742107c564316  grpc-server-stagenet-1.2.12.tgz
5899bbcebd1dc84c1d855aadda990c9e499bd09a8b6a31b3c2ef49e2b4047827  grpc-server-stagenet_1.2.12_all.deb
450f42fb88a6f696bea34f63da432c6607831b12a1b310bdd0634afcaface3b9  grpc-server-testnet-1.2.12.tgz
91a9f170e663beea464e949b1de0d50e5d290bccf583d50a79c69cafde61ffe8  grpc-server-testnet_1.2.12_all.deb
9607ddb9255a16425c20a8e7c7fa9ab2dad5f7cc6d0ed2aeb0ac7ddb95896c0a  grpc-server_1.2.12_all.deb
33f5716d67dc9b154b9b3908dfbc30ee1ad8f650d3512271fcae77496de52207  waves-all-1.2.12.jar
42b4a8c27de72796a3c54b6edc693e4a5736d1a006d044dc8c0635a652731e2c  waves-stagenet_1.2.12_all.deb
1a4e73eb93b8b52dada8cff6d0f584763afd73423ad18b53aab1b072e08723b3  waves-testnet_1.2.12_all.deb
6c671f199538e79871e3f9932657b9876034111e1a8509d6d11e710904957c28  waves_1.2.12_all.deb
Assets 12
  • v1.2.11
  • 2b68897
  • Compare
    Choose a tag to compare
    Search for a tag
  • v1.2.11
  • 2b68897
  • Compare
    Choose a tag to compare
    Search for a tag

@waves-jenkins waves-jenkins released this Aug 19, 2020 · 66 commits to master since this release

In this release

  • Restored (and deprecated; see below) the ability to use an empty string in transaction JSON's assetId and feeAssetId fields (where applicable). Please note that this change is introduced to restore compatibility with 1.1.x (and earlier). Future versions will only support null or non-empty base58-encoded asset IDs in these fields.
  • Fixed a bug where responded with 200 and an empty response when a block could not be found for the valid block ID. This version will return 404 and BlockDoesNotExist error, just as expected.
  • Fixed race condition in importer tool which could cause the final stage of the import process to corrupt the node's storage. If you are upgrading from 1.1.x and need to rebuild the state, it is once again safe to use importer tool.

There's no need to rebuild the state if you are updating from 1.2.10.

SHA256 Checksums

77f11c88f4705baa5d2528549ea50def995bd8f4f753772cd9c8a1f9bc6bfa36  grpc-server-1.2.11.tgz
db52cd0d101b0a8ef5c33d3668c473479ce13feca14baba3f0c2a0295b0e272b  grpc-server-stagenet-1.2.11.tgz
cc99e66a361123ca2cacfa6d540c999ef569bb39e8d5caef0c52a0cbc08bae38  grpc-server-stagenet_1.2.11_all.deb
3d6d6408d2ebc20072f16373197a93b5b6327fc23fbf8f5f50ae9f722d68d09d  grpc-server-testnet-1.2.11.tgz
f6b7dc5af6816ea5fba189d9474fa0b6cfdc11176aa81a5ae6ea7b0bb9ef7cd0  grpc-server-testnet_1.2.11_all.deb
94990b4f545c98dffc117cc389504372e38c06d1d1f4959c408a80575a691553  grpc-server_1.2.11_all.deb
f233f67a64bd9bc2b8a15975414cb5b8666ce6260b2a265c27e28d56b047bf0d  waves-all-1.2.11.jar
40ecf55bc9f3fcc37ac3cbf503a9253e6349ed4104c1a10ece2fdce3977ed934  waves-stagenet_1.2.11_all.deb
6b580827303ae410b037325713a2ac4668b40ca2de94247c4e8dcff94bc34347  waves-testnet_1.2.11_all.deb
336b9cc2fe002e98edfaeb7a29af3978e761a1af81988ce7cad6ca5e4b7029a2  waves_1.2.11_all.deb
Assets 12

@waves-jenkins waves-jenkins released this Aug 12, 2020 · 70 commits to master since this release

In this release

This release is accumulation of all previous 1.2.x releases. Now it's available for Mainnet.
After the activation of the feature #​15 all Protocol changes become available.

Below you can find the list of only major changes comparing to 1.1 release. The full list of changes can be found in the documentation.

Protocol changes

  • Improved the mechanism for generating blocks by using VRF (Verifiable random function). This improvement allows withstanding stake grinding attacks, which are used by the attackers to try to increase the probability of generating a block for themselves.
  • Implemented saving failed transactions. Invoke Script transactions and Exchange transactions are saved on the blockchain and a fee is charged for them even if the dApp script or the asset script failed, provided that the sender's signature or account script verification passed and the complexity of calculations performed during script invocation exceeded the threshold for saving failed transactions. More details
  • Changed the scheme for signing the block transactions by the generating node. Previously, the generating node needed to sign the block header along with all transactions. For now, the transactions root hash is added to the header, so it is enough to sign only the header.
  • Implemented binary transaction formats based on protobuf.
  • Minimal interval between blocks is increased from 5 to 15 seconds. Average block time is targeted 60 seconds instead of current ~59 seconds.
  • Implemented the feature of changing the asset name and description. For this means, the Update Asset Info transaction is used.
  • Reduced the minimum fee from 1 to 0.001 WAVES for the Reissue transaction and Sponsor Fee transaction.
  • Implemented the feature of deletion of entries from the account data storage. This action can be performed by the Data transaction or DeleteEntry structure of the Ride language.
  • Changed the orders' price calculation formula. Earlier, when determining the price for assets with different numbers of decimal places, there was a price value size issue. The maximum value depended on the difference of decimal digits of assets. For example, the price for an NFT asset could not exceed 1000 WAVES. The modified formula corrects this problem. Decimal places no longer affect the maximum price.
  • dApp can't call itself with InvokeScript transaction with attached payments. Also dApp can't transfer funds to itself by ScriptTransfer.

Ride improvements

  • Issued version 4 of the Ride Standard library.
  • Enabled processing up to two payments attached to the Invoke Script transaction (previously only one).
  • Added script actions that the callable function of dApp can perform:
  • Changed the complexity of certain built-in functions and operators. Changes are listed in the Built-in Functions article.
  • For the built-in hashing functions blakeb256, keccak256, sha256 and the built-in verification functions rsaVerify, sigVerify the complexity is changed in version 4 along with adding the range of similar functions with different complexity depending on the argument size limit.
  • Added support of list of primitives as a callable function argument.
  • Added built-in functions that verify the zero-knowledge proof zk-SNARK by groth16 protocol: groth16Verify (on the bls12-381 curve) and bn256groth16Verify (on the bn254 curve).
  • Added the ecrecover built-in function that recovers public key from the message hash and the ECDSA digital signature.
  • Added the following built-in functions and operators:
  • Added the Tuple data type.
  • Changed the maximum complexity to 2000 of an account script and verifier function of dApp script for new scripts, regardless of the Standard library version. The maximum complexity of an asset script and callable function of dApp script remains 4000.
  • Changed the maximum data size:
    • String: 32,767 bytes
    • ByteVector: 32,767 bytes (except the bodyBytes field of the transaction structure).

REST API Updates

In the Node 1.2 release, we have some semantic and breaking changes in the API. Please read the following changes very attentively as it can affect your working application when migrating from Node 1.1 API to the Node 1.2 API.

Semantic

  • As failed transactions can be saved in the blockchain so it's not enough to see presence of Invoke Script and Exchange transactions in the blockchain - user needs to check their status. Please see new field "applicationStatus" in methods listed in the full release notes.
  • In the stateChanges of invoke Script transaction user now can find the reason of failure if transaction is failed in the "error" field in the following methods:
    • /debug/stateChanges/address/{address}/limit/{limit}
    • /debug/stateChanges/info/{id}
  • There are new fields for stateChanges of Invoke Script transaction due to new script actions. Now it has the following structure: "stateChanges": { "data": [], "transfers": [], "issues": [], "reissues": [], "burns": [], "sponsorFees": [], "error": {"code": number, "text": string} }
    Affected methods:
    • /debug/stateChanges/address/{address}/limit/{limit}
    • /debug/stateChanges/info/{id}
  • "reference" field in Block v5 corresponds to "id" of the previous block instead of "signature" in Block v4.

Breaking changes

  • Blocks now get by their id instead of signature. Affected methods:
    • /blocks/delay/{id}/{blockNum}
    • /blocks/height/{id}
    • /block/signature
    • /debug/rollback-to/{id}
    • /blocks/child
  • Method /consensus/generationsignature deleted.
  • In /addresses/scriptInfo/{address}/meta agrument list is now listed as an object array.
    Before: "meta": { "callableFuncTypes": { "funcName": { "arg1": string, "arg2": string } } }
    Now: "meta": { "callableFuncTypes": { "funcName": [ { "name": string, "type": string }, { "name": string, "type": string } ] } }
  • There is new transaction Update Asset Info.
  • Invoke Script transaction now can have arguments of List type: { "call": { "function": string, "args": [ ["arg1-item1", "arg1-item2", "arg1-item3"] ] } }
  • Data in account can be deleted by key with Data transaction and Invoke Script transaction. Such an element must have "key" specified, "value" set to null and no "type" field: { "key": string, "value": null }. Can be found in:
    • /blocks/{id}
    • /blocks/address/{address}/{from}/{to}
    • /blocks/at/{height}
    • /blocks/last
    • /blocks/seq/{from}/{to}
    • /debug/stateChanges/address/{address}/limit/{limit}
    • /debug/stateChanges/info/{id}
    • /transactions/address/{address}/limit/{limit}
    • /transactions/info/{id}
  • Exchange transaction v3 can include buy and sell orders in any order: buy/sell or sell/buy.
  • /assets/{assetId}/distribution/{height}/limit/{limit} endpoint returns addresses in a different order. This is caused by internal optimizations.

Improvements

  • /debug/validate - does not require api-key.
  • /assets/details - can request information of several assets at once.
  • Methods /addresses/scriptInfo/{address}, /utils/script/compileCode, /utils/script/estimate return complexity of every annotated function: { "complexity": number, "callableComplexities": { "funcName1": number, "funcName2": number }, "verifierComplexity": number }
  • /addresses/balance can request balances for several addresses for specific height not more than 2000 from current.

Known issues

In the "assetId" and "feeAssetId" fields of transactions, you can specify WAVES only using the null value. An empty string "" is interpreted as asset id. This will be fixed in release 1.2.11.

Update Notes

Rebuild of the state is needed.

To get the actual state for your updated node you have 3 ways:

  1. Remove state and synchronize blockchain during regular node operation [several days]
  2. Remove state and import blockchain from file [several days, faster than 1] (Due to explanation in Known issues section below we don't recommend this method currently)
  3. Download latest blockchain database and apply it [~1-2 hours]

All the new Protocol and Ride features become available with feature 15.

If you are a miner please vote!

Known issues

After importing blockchain from file, node may produce errors "Could not load bloom filter" and "filter is stale" in logs at startup.

While fixing importer tool to store liquid block into leveldb at the end of import we broke the ordered shutdown of the storage subsystem in such way that the node won't load pre-calculated bloom filter upon the subsequent startup.

When starting, the node will check the state and bloom filter consistency, and if there's any discrepancy (e.g. filter was saved at some height which does not match current state height), the node will rebuild all bloom filters. This is a time-consuming process which may take up to 30-60 minutes.

This issue will be fixed in release 1.2.11.

Official pools update notes

Due to presense of breaking changes in the Node's API please migrate your existing projects/applications.

Official nodes pools will be updated to the current version as follows:

SHA256 Checksums

2707807e436f7ac6944a083b6d23dde26e8b8d14903934209f8c9b5078d1976d  grpc-server-1.2.10.tgz
2a9810217fe6f705634961170a6baa6c6e8de2c4ab1b885654b3d167409b8b1b  grpc-server-stagenet-1.2.10.tgz
76394d7905869249b329eb04d16ec494d17f6f1b739bbeb1bae7a56e5dffdb38  grpc-server-stagenet_1.2.10_all.deb
55788cad8954bdad49ac0c80e5b2354affbdfc45300c61f6fa6f98df1f70878e  grpc-server-testnet-1.2.10.tgz
b923356c59e16ea111b5947e292c65c3cab16124bb0161cd6922033486d2677f  grpc-server-testnet_1.2.10_all.deb
16d1d5b038df66333121343c42b7043dee356ef8009f7737b928b6b0ffa124a0  grpc-server_1.2.10_all.deb
6efe164002c37e85f4fdad6756d7f5daeefd7765b4a422d1e83d077029e80781  waves-all-1.2.10.jar
3ec8466b402aaf6fce8f941e91a21ea39270544baad9ef4cbcda77d39949d354  waves-stagenet_1.2.10_all.deb
e8a8982a290b6c890f267dc4010e7377474234640610fbf8004de64c231f9013  waves-testnet_1.2.10_all.deb
4d163f655c92997323c225a96ddf87fde1c9eb28232aff9cff79e4a245a5e7cd  waves_1.2.10_all.deb
Assets 12