Skip to content

Marlowe Runtime v1.0.0

Latest
Compare
Choose a tag to compare
@nhenin nhenin released this 05 May 11:45
2c0ad60

Highlights

This release focuses on upgrades required by Conway. Additionally, we have improved the coverage and stability of our integration framework, and added extra safety analyses and contract execution enhancements. With these changes, we have achieved the main goals of delivering a stable and secure release.

Conway related upgrades

These changes were required by the Conway hard fork but did not introduce any new functionality. It seems that we are nearly ready for the hard fork event.

Contract execution improvements

Accounts initialization

We have added the ability to initialize the accounts during contract creation. Usually this allows you to perform an initial deposit together with the contract creation in a single transaction. This feature is exposed on the REST API level through accounts field in the creation request.

Safety improvements

We added extra safety analytical step which is performed during input application so contracts created either outside of the system or by malicious actors can be detected and rejected.

The REST API changes

Added

  • Enhanced Error Information: Introducing detailed error categories, including CoinsSelectionError and MarloweTransactionError, to aid in debugging and development.
  • Optional Account Initialization During Contract Creation: Allows for simultaneous deposits during the contract creation process, enhancing flexibility and efficiency.
  • Accessible Safety Errors: Safety errors are now detectable during key operations:
    • At contract creation (POST /contracts)
    • When applying inputs (POST /contracts/:contractId/transactions)
  • Enhanced Transaction Semantics Information: Additional details are now included in the response from GET /contracts/:contractId/transactions/:transactionId:
    • inputState: The Marlowe state from the transaction's input datum.
    • inputContract: The Marlowe contract from the transaction's input datum.
    • reconstructedSemanticInput: Details the TransactionInput used during transaction validation, providing the correct TimeInterval for input evaluation.
    • reconstructedSemanticsOutput: Offers insights into the transaction outcome processed by the Marlowe semantics validator, including intra-state payments and warning details not available elsewhere in the response.

Changed

  • Improved REST API Error Handling: We've transitioned from a generic error encoding to a more structured and explicit error format in our REST API, enhancing clarity and user experience.

marlowe-runtime 1.0.0 - 2024-04-22

Removed

  • marlowe-runtime-cli

Added

  • Support for initial account balances when creating contracts

  • Upgrade to cardano-api 8.37.1.1

  • A safety analysis to the apply input step

  • Support for compiling/building/running the repository using new Mac CPUs (M1/M2/M3) within a linux VM (aarch64-linux system).

Changed

  • history-api has been merged within sync-api

  • Updated Marlowe Plutus scripts to use optmized asData for Case.

  • Default batch size for chain-indexer decreased to 1/4 to prevent OOM errors.

  • Upgrade cardano-api 8.37.1.1 to 8.39.2.0 (Conway Hard Fork Adaptation)

  • Upgrade plutus from 1.15 to 1.21 (plutus-core, plutus-ledger-api, plutus-tx) (Conway Hard Fork Adaptation)

  • Upgrade cardano-ledger (Conway Hard Fork Adaptation)

    • cardano-ledger-conway from 1.11 to 1.12
    • cardano-ledger-core from 1.9 to 1.10
    • cardano-ledger-mary from 1.4 to 1.5
    • cardano-ledger-shelley from 1.8 to 1.9
    • cardano-ledger-binary from 1.2 to 1.3
  • Upgrade ouroboros-network (Conway Hard Fork Adaptation)

    • ouroboros-network-api from 0.6.0 to 0.7.0
    • ouroboros-consensus from 0.14 to 0.16
    • ouroboros-network-protocols from 0.6.0 to 0.8

Fixed

  • Marlowe Indexer can crash when chain indexer is syncing from Genesis.

  • marlowe-contract consumes a lot of memory.

    • The garbage collector was holding onto a rolling window of snapshots
      spanning 2160 blocks of all live Marlowe contracts. It only ever needed to
      hold onto the datum hashes of the merkleized continuations in the
      contracts, so rather than keeping all the contracts around it now just
      holds onto these.
  • Space leak in marlowe-contract

  • Duplicate blocks can break marlowe-chain-sync queries

  • Delete all blocks when rolling back to Genesis.

  • Arbitrary Marlowe instances which were not generating invalid currencies and tokens.

  • Safety analysis transaction filtering which was causing selective tx reporting.

marlowe-runtime-web 1.0.0 — 2024-04-22

Added

  • Enhanced error information (including CoinsSelectionError, MarloweTransactionError, etc.).

  • Optional Initialization of Participant's Account during contract creation

    • Allows simultaneous deposits during the creation process
  • Safety Errors are available at :

    • Contract creation (Building the Tx) : POST /contracts
    • Input application (Building the Tx) : POST /contracts/:contractId/transactions
  • Additional semantics info to response from GET /contracts/:contractId/transactions/:transactionId

    • inputState is the Marlowe state from the transaction's input datum.
    • inputContract is the Marlowe contract from the transaction's input datum.
    • reconstructedSemanticInput is the reconstructed TransactionInput that
      was passed to computeTransaction during the execution of the Marlowe
      semantics validator. This includes the correct TimeInterval against which
      to evaluate the input contract and state. The upper bound of this interval
      differs from invalidHereafter by -1 milliseconds.
    • reconstructedSemanticsOutput is the reconstructed TransactionOutput
      that calling computeTransaction inside the validator produces. This can
      be used to recover any intra-state payment information, as well as anyO
      warnings which were raised during evaluation. This information is not
      otherwise available in the response.

Changed

  • Transitioned REST API error encoding from a generic format to a more explicit error structure.

marlowe-apps 1.0.0 — 2024-04-22

Removed

  • Removed marlowe-scaling executable because marlowe-benchmark now serves this function.

  • Removed marlowe-finder executable because marlowe-benchmark now serves this function.

  • Removed marlowe-streamer executable because marlowe-benchmark now serves this function.

  • Removed marlower-signer executable.

Changed

  • Upgrade to cardano-api 8.37.1.1

  • Upgrade cardano-api 8.37.1.1 to 8.39.2.0 (Conway Hard Fork Adaptation)

  • Upgrade plutus from 1.15 to 1.21 (plutus-core, plutus-ledger-api, plutus-tx) (Conway Hard Fork Adaptation)

marlowe-benchmark 0.1.0.0 2024-04-22

Changed

  • Added sanchonet as a new network example (Conway Hard Fork Adaptation)

Added

  • Implemented basic benchmarking for Marlowe Runtime sync and query protocols.

  • Added benchmark for the basic lifecycle of a Marlowe contract.

  • Benchmarking of arbitrary complex queries.

marlowe-cli # 1.0.0 — 2024-04-22

Removed

  • watch command
  • Alonzo era support

Added

  • Upgrade to cardano-api 8.37.1.1

Changed

  • Marlowe CLI swap template tokens default to ada if not specified.

  • Upgrade cardano-api 8.37.1.1 to 8.39.2.0 (Conway Hard Fork Adaptation)

  • Upgrade plutus from 1.15 to 1.21 (plutus-core, plutus-ledger-api, plutus-tx) (Conway Hard Fork Adaptation)

  • Upgrade cardano-ledger (Conway Hard Fork Adaptation)

    • cardano-ledger-conway from 1.11 to 1.12
    • cardano-ledger-core from 1.9 to 1.10
    • cardano-ledger-mary from 1.4 to 1.5
    • cardano-ledger-shelley from 1.8 to 1.9
    • cardano-ledger-binary from 1.2 to 1.3
  • Upgrade ouroboros-network (Conway Hard Fork Adaptation)

    • ouroboros-network-api from 0.6.0 to 0.7.0
    • ouroboros-consensus from 0.14 to 0.16
    • ouroboros-network-protocols from 0.6.0 to 0.8

Fixed

  • Marlowe CLI withdrawal no longer includes a validity interval.

  • analyze command so it doesn't override provided state.

marlowe-contracts 1.0.0 — 2024-04-22

Changed

  • Upgrade cardano-api 8.37.1.1 to 8.39.2.0 (Conway Hard Fork Adaptation)
  • Upgrade plutus from 1.15 to 1.21 (plutus-core, plutus-ledger-api, plutus-tx) (Conway Hard Fork Adaptation)
  • Upgrade cardano-ledger (Conway Hard Fork Adaptation)
    • cardano-ledger-conway from 1.11 to 1.12
    • cardano-ledger-core from 1.9 to 1.10
    • cardano-ledger-mary from 1.4 to 1.5
    • cardano-ledger-shelley from 1.8 to 1.9
    • cardano-ledger-binary from 1.2 to 1.3
  • Upgrade ouroboros-network (Conway Hard Fork Adaptation)
    • ouroboros-network-api from 0.6.0 to 0.7.0
    • ouroboros-consensus from 0.14 to 0.16
    • ouroboros-network-protocols from 0.6.0 to 0.8

marlowe-object 1.0.0.0 — 2024-04-22

Changed

  • Upgrade cardano-api 8.37.1.1 to 8.39.2.0 (Conway Hard Fork Adaptation)
  • Upgrade plutus from 1.15 to 1.21 (plutus-core, plutus-ledger-api, plutus-tx) (Conway Hard Fork Adaptation)
  • Upgrade cardano-ledger (Conway Hard Fork Adaptation)
    • cardano-ledger-conway from 1.11 to 1.12
    • cardano-ledger-core from 1.9 to 1.10
    • cardano-ledger-mary from 1.4 to 1.5
    • cardano-ledger-shelley from 1.8 to 1.9
    • cardano-ledger-binary from 1.2 to 1.3