This repository contains the specification of Marlowe, a domain-specific language (DSL) for describing financial smart contracts that can be enforced by scripts deployed on a blockchain, as well as some tools for analysing and simulating the execution of contracts written in the DSL. To use Marlowe on the cardano blockchain please refer to the marlowe-cardano repository
The Marlowe tutorials introduce Marlowe and the Marlowe Playground.
master branch contains the latest version of Marlowe, version
An earlier version of Marlowe is described in a paper that was presented at ISoLA 2018. This version is tagged
v1.3 and a minor update on this is tagged
This repository uses
nix-flakes to provide a reproducible developer environment to all users. Follow the instructions to install the nix package manager on your OS and then use nix to install nix-flakes.
Once both tools are installed, download the repository and get in the development environment using
$ git clone firstname.lastname@example.org:input-output-hk/marlowe.git $ cd marlowe $ nix develop .
To Build the tests, you can run the following command inside the development environment.
[nix-develop] $ build-marlowe-proofs
To open the Isabelle IDE to modify or explore the proofs, use the following command
[nix-develop] $ edit-marlowe-proofs
To generate the specification and cheatsheet pdfs you can use the following command:
[nix-develop] $ build-marlowe-docs
the results will be available in the
If you are proposing a change to the Marlowe domain-specific language (DSL), pursue the Marlowe Improvement Proposal (MIP) process by starting a MIP discussion of the proposed change. Pull requests for DSL changes will be rejected unless they have previously been approved via the MIP process.