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.
The Marlowe website and Marlowe docs site explain what Marlowe is and the different tools available.
The master
branch contains the latest version of Marlowe, version 3
.
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 v1.3.1
.
This repository uses nix
and 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 git@github.com: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 papers
folder.
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.