Marlowe
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
Learning about Marlowe and its ecosystem
The Marlowe tutorials introduce Marlowe and the Marlowe Playground.
The Cardano Docs has a section on Marlowe that explains what is marlowe and the different tools available.
Versions of Marlowe
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
.
Developer environment
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 .
Isabelle proofs
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.
Restriction on Pull Requests
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.