Fund6 Proposal

A proposal to find the true limitations of the Marlowe smart contract system.

Introduction

A lot of focus is on the Plutus smart contracts but the reality is a majority of smart contracts are simple enough to be written in Marlowe. This proposal seeks to answer the questions of what is the true limitations of the Marlowe smart contract language for Cardano.

Marlowe is built for finite and well-ordered events, which surprisingly covers a fairly extended range of applications yet the absolute limitations are not really known in a real-world use case. This proposal is going to be a community guide to seek out these answers in the form of a beautifully written Gitbook and potential video tutorials. The solutions will be Haskell-forward for new and upcoming developers in the Cardano ecosystem.

Finite and Well-Ordered

All smart contracts must come to an end. The term finite is used here as not a representation that some contracts can not end but rather the number of events that will occur within the contract. In theory, a Plutus can have an arbitrary number of events in any order, i.e. the number of users bidding on some NFT, and the order in which they are placing their bids is not known a priori when a Plutus contract is started. Conversely, in Marlowe, the number of users interacting with the smart contract must be known and the order in which they interact with the smart contract must be accounted for before the contract is started.

This helps define when to transition into pure Plutus from Marlowe when working on complex smart contracts. If the number of users is known and the order in which they are interacting is known then Marlowe ought to be the go-to solution for writing smart contracts. This does lead to a transitional zone where Plutus can be used to write the contract but Marlowe can as well. In some use cases, the split is very obvious, like in an auction-style setting, but it does not help in the transitional cases where both languages can be used to write the smart contracts.

Determining the True Limitations of Marlowe

The goal of this proposal is to push the limits of Marlowe.

  1. Write complex examples for each Marlowe function

  2. Write Plutus and Marlowe versions of smart contracts

  3. Create the ultimate flow chart to determine if a user needs Marlowe or Plutus.

Last updated