You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Why Merkleizing Contracts ?
In many real world scenarios, the size of a Marlowe contract can pose challenges. For instance, a contract may be too big to fit on a Cardano transaction. To handle this situation, the Marlowe semantics and plutus validator both support a size optimization called merkleization. Merkleization is a process that transforms a contract from a tree structure into a merkle DAG (directed-acyclic graph) consisting of multiple contract fragments that reference each other by hashes.
Merkle DAGs translate well to storage in UTxO-based blockchains like Cardano, because these blockchains are themselves merkle DAGs. Transactions reference outputs of previous transactions by their hashes.
A merkleized Marlowe contract gives just enough information to validate the next transaction. When applying an input to a merkleized contract, the next contract fragment must be provided alongside the input. As long as the continuation's hash matches the hash contained in the existing fragment, we know the continuation is genuine. The provided continuation can then be used to compute the next contract that will be in effect after the input is applied.
**What is the Development Status of this Feature on the Marlowe Stack ? **
The Building Blocks necessary for this functionality are complete at the Runtime level (Runtime Rest API). We have to propagate the feature in the ts-sdk and build a prototype on top of it (Token Plan 2.0).
nhenin
changed the title
Merkleization Execution Plan
Large/Deep Contract Support (Merkleized Contracts) Milestone Log#64
Nov 14, 2023
nhenin
changed the title
Large/Deep Contract Support (Merkleized Contracts) Milestone Log#64
Large/Deep Contract Support (Merkleized Contracts) Milestone Log
Nov 14, 2023
Specification
Why Merkleizing Contracts ?
In many real world scenarios, the size of a Marlowe contract can pose challenges. For instance, a contract may be too big to fit on a Cardano transaction. To handle this situation, the Marlowe semantics and plutus validator both support a size optimization called merkleization. Merkleization is a process that transforms a contract from a tree structure into a merkle DAG (directed-acyclic graph) consisting of multiple contract fragments that reference each other by hashes.
Merkle DAGs translate well to storage in UTxO-based blockchains like Cardano, because these blockchains are themselves merkle DAGs. Transactions reference outputs of previous transactions by their hashes.
A merkleized Marlowe contract gives just enough information to validate the next transaction. When applying an input to a merkleized contract, the next contract fragment must be provided alongside the input. As long as the continuation's hash matches the hash contained in the existing fragment, we know the continuation is genuine. The provided continuation can then be used to compute the next contract that will be in effect after the input is applied.
**What is the Development Status of this Feature on the Marlowe Stack ? **
The Building Blocks necessary for this functionality are complete at the Runtime level (Runtime Rest API). We have to propagate the feature in the ts-sdk and build a prototype on top of it (Token Plan 2.0).
Design Session
See Miro board link: https://miro.com/app/board/uXjVNO9wt2A=/ Password: marlowe123
Execution Plan
marlowe-object
in the ts-sdk (used by endpoints below)- Implement
createContractSources
#69- Implement
getContractSourceById
#70- Implement
getContractSourceAdjacency
#71- Implement
getContractSourceClosure
#72The text was updated successfully, but these errors were encountered: