input-output-hk / marlowe

Prototype implementation of domain-specific language for the design of smart-contracts over cryptocurrencies

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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 Marlowe website and Marlowe docs site explain what Marlowe is 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.

About

Prototype implementation of domain-specific language for the design of smart-contracts over cryptocurrencies

License:Apache License 2.0


Languages

Language:Isabelle 35.9%Language:Haskell 35.1%Language:TeX 28.5%Language:Nix 0.4%Language:Makefile 0.1%