Please describe your proposed solution
Marlowe 2025
This is one of a set of proposals that together consolidate the Marlowe TypeScript infrastructure, enhance Marlowe with an innovative oracle protocol, developed in collaboration with leading Cardano oracle providers, and design the successor core language, Marlowe V2, working with the Marlowe developer ecosystem.
The proposal
As the Marlowe ecosystem is put into use, it is timely to review the constructs and behaviour of the core language and, based on community feedback, to scope out and design its successor, Marlowe V2. Working with the community we will collect and prioritise proposals for Marlowe V2, prototype them in the reference Agda implementation, and based on the results, design the revised language.
We envisage discussing improvements in a number of general categories:
- Simplification of aspects of the original language. This might include simplifying the “When” construct so that the contract will by default close on timeout. Generalising some constructs, such as a “When” that awaits a set of actions, could substantially simplify the expression of a common programming pattern.
- Making the language more expressive. This could include adding new control constructs, such as bounded loops, and primitives, e.g. for crypto operations. It would also include conceptual additions, such as sub-languages for time arithmetic or token minting.
- Improving the scalability of the language: an example of this would be to change the behaviour of a contract on close to optimise performance with larger numbers of contract participants.
- Addressing the security of the language, which could be improved by checking types of values, so that e.g. addition only takes place between the same “kind” of number.
Former members of the Marlowe team, including Pablo Lamela and Brian Bush, have agreed to act as reviewers of proposals made during the project.
The process
The work will proceed in a series of steps.
- Develop a preliminary draft list of proposed changes, based on the categories of simplification, expressiveness, scalability and security.
- Use this draft as the basis for community consultation in a short series of online workshops. Participants would be asked first for additional proposals, and then to prioritise the resulting suggestions. A report of this constitutes Milestone 1.
- Implement prototypes of the high(est) priority suggestions using the Agda model of Marlowe. If that proves to be too difficult it would be possible to default to using the Haskell interpreter.
- Based on the implementation, write a report containing a preliminary assessment of the proposals. The Agda code and report constitute Milestone 2.
- At this point the community, would be consulted for their views of the report and it should be revised on the basis of that.
- On the basis of the consultation, write the design document.
- The report should include an assessment of the impact of these changes on the existing infrastructure (Runtime, Playground etc). That revised design document, plus revised Agda code, constitute Milestone 3.
- Write outline proposal to fund the implementation of the changes, to be included in the final report.
- Deliver final report: Final Milestone.