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
andMarloweTransactionError
, 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
)
- At contract creation (
- 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 theTransactionInput
used during transaction validation, providing the correctTimeInterval
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 withinsync-api
-
Updated Marlowe Plutus scripts to use optmized
asData
forCase
. -
Default batch size for chain-indexer decreased to 1/4 to prevent OOM errors.
-
Upgrade
cardano-api
8.37.1.1
to8.39.2.0
(Conway Hard Fork Adaptation) -
Upgrade
plutus
from1.15
to1.21
(plutus-core
,plutus-ledger-api
,plutus-tx
) (Conway Hard Fork Adaptation) -
Upgrade
cardano-ledger
(Conway Hard Fork Adaptation)cardano-ledger-conway
from1.11
to1.12
cardano-ledger-core
from1.9
to1.10
cardano-ledger-mary
from1.4
to1.5
cardano-ledger-shelley
from1.8
to1.9
cardano-ledger-binary
from1.2
to1.3
-
Upgrade
ouroboros-network
(Conway Hard Fork Adaptation)ouroboros-network-api
from0.6.0
to0.7.0
ouroboros-consensus
from0.14
to0.16
ouroboros-network-protocols
from0.6.0
to0.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.
- The garbage collector was holding onto a rolling window of snapshots
-
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
- Contract creation (Building the Tx) :
-
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 reconstructedTransactionInput
that
was passed tocomputeTransaction
during the execution of the Marlowe
semantics validator. This includes the correctTimeInterval
against which
to evaluate the input contract and state. The upper bound of this interval
differs frominvalidHereafter
by -1 milliseconds.reconstructedSemanticsOutput
is the reconstructedTransactionOutput
that callingcomputeTransaction
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 becausemarlowe-benchmark
now serves this function. -
Removed
marlowe-finder
executable becausemarlowe-benchmark
now serves this function. -
Removed
marlowe-streamer
executable becausemarlowe-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
to8.39.2.0
(Conway Hard Fork Adaptation) -
Upgrade
plutus
from1.15
to1.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
to8.39.2.0
(Conway Hard Fork Adaptation) -
Upgrade
plutus
from1.15
to1.21
(plutus-core
,plutus-ledger-api
,plutus-tx
) (Conway Hard Fork Adaptation) -
Upgrade
cardano-ledger
(Conway Hard Fork Adaptation)cardano-ledger-conway
from1.11
to1.12
cardano-ledger-core
from1.9
to1.10
cardano-ledger-mary
from1.4
to1.5
cardano-ledger-shelley
from1.8
to1.9
cardano-ledger-binary
from1.2
to1.3
-
Upgrade
ouroboros-network
(Conway Hard Fork Adaptation)ouroboros-network-api
from0.6.0
to0.7.0
ouroboros-consensus
from0.14
to0.16
ouroboros-network-protocols
from0.6.0
to0.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
to8.39.2.0
(Conway Hard Fork Adaptation) - Upgrade
plutus
from1.15
to1.21
(plutus-core
,plutus-ledger-api
,plutus-tx
) (Conway Hard Fork Adaptation) - Upgrade
cardano-ledger
(Conway Hard Fork Adaptation)cardano-ledger-conway
from1.11
to1.12
cardano-ledger-core
from1.9
to1.10
cardano-ledger-mary
from1.4
to1.5
cardano-ledger-shelley
from1.8
to1.9
cardano-ledger-binary
from1.2
to1.3
- Upgrade
ouroboros-network
(Conway Hard Fork Adaptation)ouroboros-network-api
from0.6.0
to0.7.0
ouroboros-consensus
from0.14
to0.16
ouroboros-network-protocols
from0.6.0
to0.8
marlowe-object
1.0.0.0 — 2024-04-22
Changed
- Upgrade
cardano-api
8.37.1.1
to8.39.2.0
(Conway Hard Fork Adaptation) - Upgrade
plutus
from1.15
to1.21
(plutus-core
,plutus-ledger-api
,plutus-tx
) (Conway Hard Fork Adaptation) - Upgrade
cardano-ledger
(Conway Hard Fork Adaptation)cardano-ledger-conway
from1.11
to1.12
cardano-ledger-core
from1.9
to1.10
cardano-ledger-mary
from1.4
to1.5
cardano-ledger-shelley
from1.8
to1.9
cardano-ledger-binary
from1.2
to1.3