Simulation de Wallets

La simulation de wallets est une fonctionnalité "bleeding-edge" qui est encore en cours de développement, mais c'est déjà un moyen intéressant de comprendre comment un contrat Marlowe fonctionnera plus en détail et comment un contrat apparaîtra du point de vue de chaque partie impliquée.

Si vous cliquez sur le cinquième onglet du playground, intitulé " Wallets ", vous verrez apparaître un écran presque vide avec seulement quelques actions possibles. Ce volet affichera bientôt les différents wallets impliqués dans un contrat, mais vous devez d'abord créer ces wallets. Cliquez sur le bouton + pour créer un nouveau wallet.

Contenu du Wallet

Un wallet contient les éléments suivants:

  • Assets - il s'agit de tokens que le wallet possède, comme une certaine quantité d'Ada.
  • Roles - Il s'agit de rôles de contrat qu'un wallet possède. Si vous possédez un rôle, vous pouvez prendre des mesures contractuelles au nom de ces rôles.
  • Contracts - un wallet peut être impliqué dans plusieurs contrats en cours.

Pour commencer, nous avons besoin d'un contrat valide, donc retournez à l'onglet "Simulation" et chargez l'exemple de contrat "Escrow". Retournez maintenant à l'onglet "Wallets" et cliquez sur "Load Contract from Simulation". Cela chargera le contenu de l'éditeur de simulation tant qu'il est valide (dans notre cas, le contrat Escrow). Vous verrez le contenu du contrat ainsi que tous les rôles qui apparaissent (dans notre cas, Alice, Bob et Carol).

 

Roles

Les rôles sont possédés par le wallet qui a chargé le contrat au départ, mais nous pouvons les transférer à d'autres wallets. Cliquez à nouveau sur le bouton + pour créer un nouveau wallet. Ce wallet sera maintenant vide mais retournons au "Wallet 1" et transférons la propriété du rôle "alice" au "Wallet 2" en le sélectionnant dans la liste déroulante.

Revenez maintenant au " Wallet 2 " et vous verrez que le rôle " alice " a été transféré au " Wallet 2 " et que le " Contract 1 " est affiché. Le contrat est affiché parce que le Wallet 2 est maintenant impliqué dans le contrat (puisqu'il possède le rôle alice).

 

Exécution d'un contrat

Restez dans le Wallet 2 et démarrez le contrat en cliquant sur le bouton "Start". Vous verrez maintenant l'état actuel du contrat affiché ainsi que les actions possibles. Dans notre cas, il est possible d'effectuer un dépôt au nom d'alice.

Revenons au Wallet 1 et vous verrez qu'il n'y a pas d'actions possibles, car le contrat d'entiercement ne peut progresser que si alice fait un dépôt (ou si le contrat expire).

 

Prendre des Actions

Revenons au Wallet 2 et ajoutons le dépôt au compositeur de transactions en cliquant sur le bouton + . Vous devriez voir un message d'erreur Insufficient funds to add this input. Le wallet a besoin de déposer 450 lovelace mais il n'en a pas ! Allez en haut de la page et ajoutez 1000 lovelace à l'aide de la boîte de saisie et cliquez sur le bouton + . Vous devriez maintenant voir sous les actifs que le Wallet 2 a 1000 lovelace. Maintenant, nous pouvons ajouter l'entrée au compositeur de transactions à nouveau.

Vous devriez voir que le dépôt a été déplacé vers le compositeur de transactions et qu'une nouvelle entrée est disponible. Il est possible de créer plusieurs entrées dans une seule transaction, mais pour l'instant nous n'en ajouterons qu'une. Cliquez sur le bouton " Apply " et vous devriez voir que l'état et le contrat ont changé. Vous remarquerez également dans la rubrique " Assets " que le Wallet 2 ne possède plus que 550 lovelace.

À ce stade, Alice est toujours le seul rôle qui peut faire progresser le contrat, alors allons-y et créons une nouvelle transaction avec l'entrée d'Alice choisissant 0. Une fois que nous appliquons cette transaction, nous verrons qu'il n'y a maintenant plus d'autres actions possibles que nous pouvons prendre. Revenons au Wallet 1 et nous pouvons voir qu'il y a maintenant une entrée possible que nous pouvons prendre. Construisons une transaction où Bob choisit 0 et cliquez sur " Apply ".

L'état change à nouveau et le contrat est maintenant fermé, aucune autre action ne peut être entreprise. Nous pouvons également voir que les 450 ont été transférés au Wallet 1. Ceci est dû au fait que le Wallet 1 possède le rôle bob et que le contrat stipulait que si alice et bob choisissaient tous les deux 0, les 450 lovelace devaient être transférés à bob.

 

Autres caractéristiques

Il est possible d'avoir plusieurs contrats en cours d'exécution en même temps. Vous pouvez retourner à l'onglet Simulation et créer un contrat différent, puis aller à l'onglet Wallets et " Load Contract from Simulation " à nouveau.

Vous pouvez passer au slot suivant dans la blockchain en cliquant sur le lien "Next Slot" sur le côté droit.

L'état de la blockchain peut être réinitialisé en cliquant sur le lien "Reset Blockchain", également sur le côté droit. Cette opération permet de "revenir en arrière", d'annuler toutes les actions effectuées et de remettre le slot à zéro.

Finalement, vous pouvez réinitialiser toute la simulation en cliquant sur le lien "Clear All" en haut de la page. Cela supprimera tous les wallets et les contrats chargés et réinitialisera la blockchain au slot 0.

 

Notes finales

Comme indiqué au début de cette section, la simulation de Wallets est une nouvelle fonctionnalité et nous avons l'intention de la développer davantage à l'avenir. Nous espérons cependant qu'elle vous a permis de mieux comprendre comment un contrat se développe dans le monde réel et comment il apparaît aux utilisateurs réels.

© Copyright 2020, IOHK Revision 1b7b1fc1.

 

Vous trouverez une copie officielle de ce document ici :

https://alpha.marlowe.iohkdev.io/doc/marlowe/tutorials/wallets-simulation.html

https://docs.cardano.org/projects/plutus/en/latest/marlowe/tutorials/wallets-simulation.html

 

Plus de traductions de Cardano à: Cardano For The World