github wavesplatform/Waves v1.3.0
Version 1.3.0 (Stagenet)

latest releases: v1.5.4, v1.5.3, v1.5.2...
pre-release3 years ago

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

Don't miss a new Waves release

NewReleases is sending notifications on new releases.