Le 29 avril 2022, l’équipe chargée du développement de Marlowe annonce avoir déployé le premier contrat intelligent en Marlowe sur le mainnet.
Une occasion à ne pas rater, nous vous proposons un aperçu de cette technologie.
Qu’est-ce que Marlowe ?
Marlowe est un langage spécifique pour développer des contrats intelligents ( dit DSL pour « Domain Specific Langage »).
Marlowe est conçu pour être agnostique à sa plateforme : il pourrait être déployé sur toutes les blockchains qui auront cette volonté.
Ce langage permet de gérer des paiements, observer des actions ( via des oracles ), attendre et/ou évaluer des conditions, dans l’idée de gérer des remboursements, de mettre d’accord des parties, ou tout autres accords financiers qui pourraient être exprimées par un contrat classique. C’est un langage financier, si on peut dire !
Ça ressemble à quoi ?
Pour les plus curieux et aguerris d’entre vous, voici à quoi ressemble Marlowe :
When [
(Case
(Deposit
(Role "Ada provider")
(Role "Ada provider")
(Token "" "")
(MulValue
(Constant 1000000)
(ConstantParam "Amount of Ada")))
(When [
(Case
(Deposit
(Role "Dollar provider")
(Role "Dollar provider")
(Token "85bb65" "dollar")
(ConstantParam "Amount of dollars"))
(Pay
(Role "Ada provider")
(Party
(Role "Dollar provider"))
(Token "" "")
(MulValue
(Constant 1000000)
(ConstantParam "Amount of Ada"))
(Pay
(Role "Dollar provider")
(Party
(Role "Ada provider"))
(Token "85bb65" "dollar")
(ConstantParam "Amount of dollars") Close)))] (SlotParam "Timeout for dollar deposit") Close))] (SlotParam "Timeout for Ada deposit") Close
Cet exemple est un contrat d’échange dit « swap » ; il bloque un montant de Ada d’un côté, un montant en dollars de l’autre, et permet ainsi à des inconnus de procéder à un échange de devise.
Une fois le code créé, il est possible d’émuler le contrat, pour vérifier que tout se passe comme prévu, via la « marlowe playground« .
Marlowe et ses interfaces
Ce langage simplifie l’édition de contrats intelligents tout en améliorant la sécurité de ceux-ci. A première vu, rien de nouveau sous le soleil : cela reste du code.
Les équipes d’IOG ont conçu Marlowe pour pouvoir l’utiliser via différents environnements. Il sera possible de concevoir un contrat Marlowe a partir de Javascript, Haskell, et tout un tas d’autres langages, selon les besoins de chaque projet.
Pour répondre à la demande de « no-code », il existe une interface de développement de contrat intelligent bien-nommée « Blockly ». Comme une image vaut mille mots, voici un aperçu du même contrat que plus haut, mais cette fois, développée via une interface en glissé-déposé.
Pour en savoir plus…
- Le papier universitaire sur Marlowe : https://iog.io/en/research/library/papers/marloweimplementing-and-analysing-financial-contracts-on-blockchain/
- La playground qui permet de manipuler des exemples via blockly, entre autres : https://marlowe-playground-staging.plutus.aws.iohkdev.io/#/
- Le site officiel marlowe : https://marlowe-finance.io/ qui possède lui aussi une interface de démo : https://run.marlowe-finance.io/
Du contenu de qualité autour de Cardano et son écosystème.