Marlowe is a domain-specific language (DSL) and set of tools for writing financial smart contracts on
blockchain, designed by Input Output (formerly IOHK) with Cardano as its primary target. Unlike general-purpose
smart contract languages, Marlowe focuses on common financial agreements and aims to make contracts easier to understand, test, and verify.
Purpose and design for financial contracts
Marlowe is intentionally small, using a limited set of building blocks to describe how a
contract behaves among a fixed, finite set of roles, such as “buyer,” “seller,” “lender,” or “insurer.” This constrained design helps reduce ambiguity and makes contract logic easier to review. In practice, that can mean encoding agreements like
escrow payments,
token swaps, subscriptions, or simple lending terms in a way that mirrors the real-world steps of a deal, including timeouts and what happens if one party does not act.
Verification, simulation, and expected outcomes
A key idea behind Marlowe is reasoning about what a contract should do before it is deployed. Because the language is specialized, it supports simulation and analysis of contract execution, including examining possible paths the contract can take and the expected value of outcomes under different assumptions. Marlowe is also built with formal verification in mind, allowing developers and auditors to prove properties about a contract, such as “funds cannot be locked forever” or “only the intended role can withdraw under these conditions.” Tools like the Marlowe Playground let users prototype and test contract behavior in a controlled environment.
Why Marlowe matters in crypto
Smart contracts often fail due to complexity and misunderstandings. By narrowing the problem to financial agreements and enabling clearer modeling, simulation, and verification, Marlowe helps improve safety and reliability, which is critical for broader adoption of
on-chain financial products.