🇫🇷 Tutoriels de Marlowe: 5. Marlowe dans Blockly

Marlowe dans Blockly

Jusqu’à présent, dans ces tutoriels, nous nous sommes concentrés sur la construction de contrats dans la version textuelle de Marlowe, intégrée à Haskell. Les contrats Marlowe peuvent également être construits à l’aide de l’environnement de programmation visuelle Blockly, comme nous le décrivons ici.

Comment commencer

Pour commencer à créer un projet Blockly dans le Marlowe Playground, dont vous trouverez plus d’informations dans la section consacrée à l’aperçu du playground, sélectionnez New Project puis Blockly comme type de projet. Vous verrez alors un écran comme celui-ci:

MT-5-1

Les contrats sont assemblés en ajoutant des composants dans les trous des blocs. Pour construire un contrat, nous devons remplir le trou unique, de niveau supérieur, ici avec un Contract, et les blocs pour ceux-ci sont trouvés en cliquant sur Contracts dans le menu sur le côté gauche. Cela permet d’afficher tous les différents blocs qui permettent de construire des contrats, comme illustré ici :

MT-5-2

Nous pouvons en sélectionner un et le faire glisser dans la zone d’édition, qui a un fond pointillé, comme ça :

MT-5-3

puis de l’insérer dans le trou de niveau supérieur, de sorte que nous construisons un contrat avec un When comme construction principale.

MT-5-4

Nous pouvons ensuite répéter ce processus, en ajoutant des contrats et d’autres types de composants - tous affichés dans le menu de gauche - pour construire un contrat complet, c’est-à-dire un contrat qui ne contient pas de trous.

Remplissons les informations relatives au timeout et ajoutons un contrat Close qui sera exécutée en cas de timeout:

MT-5-5

Quelle action devons-nous choisir maintenant ? Encore une fois, nous voyons toutes les actions possibles en sélectionnant Actions dans le menu:

MT-5-6

Si nous sélectionnons une action Deposit nous avons plusieurs types de trous à remplir.

MT-5-7

Ici, nous devons choisir

  • Un Role pour le déposant
  • Un Value qui est le montant déposé …
  • … du Token (souvent ada )
  • Où l’argent doit être déposé, donné par un Party , qui est soit un Role ou une Public Key .

En remplissant certains d’entre eux, nous devons également remplir un champ de texte, ou un nombre, comme le montre le résultat final ici.

MT-5-8

Enfin, nous devons décider ce qu’est le contrat de continuation : que fait le contrat ensuite ? C’est un autre contrat. Ici, il est complété par un paiement:

MT-5-9

Exercices

Dans Blockly, complétez pour vous-même la construction du contrat ci-dessus.

Quel est l’effet du contrat cité en exemple ? En particulier, quels sont les paiements effectués par le contrat ?

Éditer Blockly

Les contrats de Blockly peuvent être manipulés et modifiés à l’aide de gestes visuels et de raccourcis clavier.

MT-5-10

  • Les blocs peuvent être glissés à partir des trous, ainsi qu’être insérés…
  • Un menu de clic sur le bouton droit de la souris est disponible, comme le montre l’image ci-dessus, et offre une série d’options.
  • Les raccourcis typiques de l’édition sont opérationnels, par ex. DEL, ⌘C, ⌘V, et ⌘X sur Mac OS.

© Copyright 2020, IOHK Revision 34aa9c32.

Vous trouverez une copie officielle de ce document ici :

https://alpha.marlowe.iohkdev.io/doc/marlowe/tutorials/playground-blockly.html

https://docs.cardano.org/projects/plutus/en/latest/marlowe/tutorials/playground-blockly.html

Plus de traductions de Cardano à: Cardano For The World

Bonjour,
Je vous recommande cette vidéo sur Youtube présentée par STOIC POOL (https://stoicpool.com/), avec laquelle j’ai fabriqué sans soucis mon premier smartcontract avec BLOCKLY. C’est en anglais, mais pas trop difficile (j’ai mis les sous-titres). Le contrat pris en exemple est très simple (contrat d’un coach sportif avec ses clients):

Pour aller plus loin avec l’exemple du smartcontract Escrow et pour aider les débutants, je propose une nouvelle version de ce contrat ci-dessous et quelques observations :
Observations préalables
Ce smartcontrat est un simple contrat de vente par correspondance d’un article quelconque entre deux parties qui ne se connaissent pas et, de ce fait, ne se font pas confiance. Le fait que la transaction s’effectue dans un environnement décentralisé (blockchain), sans recours en cas d’un éventuel conflit, rend la sécurité du contrat très incertaine. Au moindre désaccord, retard ou incident la transaction risque d’échouer : une partie, ou même les deux, pourraient être lésées de façon irréversible par le script du contrat.
Conscients du problème, les rédacteurs du contrat ont donc prévu deux dispositions :

  1. Un sequestre (dépôt monétaire préalable), correspondant au prix fixé, effectué par l’acheteur. Ce dépôt marque l’engagement juridique de l’acheteur dans la transaction. Il n’assure malheureusement pas la bonne exécution du contrat : expédition, livraison, conformité de l’article à la description fournie par le vendeur à l’acheteur, retour éventuel de l’article, remboursement de l’acheteur, etc.
  2. Un éventuel arbitrage en cas de conflit, confié à un tiers de confiance. Notons que cet arbitre devrait normalement être choisi d’un commun accord des parties. Ceci suppose que chacune d’elles dispose d’une même liste d’arbitres au moment de la conclusion. Les modalité de ce choix ne sont pas prévues ici, dans un souci de simplification.
    Logigramme
    Algo_escrow
    Code Blockly
    image