馃嚜馃嚫 Tutoriales de Marlowe: 14. Simulaci贸n de Wallets

Simulaci贸n de Wallets

La simulaci贸n de wallets es una funci贸n de vanguardia que a煤n est谩 en desarrollo, pero ya es una forma interesante de entender c贸mo funcionar谩 un contrato de Marlowe con m谩s detalle y c贸mo aparecer谩 un contrato desde la perspectiva de cada una de las partes implicadas.

Si haces clic en la quinta pesta帽a del playground, etiquetada como " Wallets", se te presentar谩 una pantalla casi en blanco con s贸lo unas pocas acciones posibles. Este panel pronto mostrar谩 varios wallets involucrados en un contrato, sin embargo, primero debes crear esos wallets. Haz clic en el bot贸n + para crear un nuevo wallet.

Contenido del Wallet

Un wallet contiene lo siguiente:

  • Assets - son tokens que posee el wallet, como algunos Ada.
  • Roles - Estos son los roles de contrato que posee un wallet. Si eres due帽o de un rol, entonces puedes tomar acciones de contrato en nombre de esos roles.
  • Contracts - un wallet puede estar involucrado en m煤ltiples contratos en marcha.

Para empezar necesitamos un contrato v谩lido, as铆 que vuelve a la pesta帽a 鈥淪imulation鈥 y carga el contrato de ejemplo 鈥淓scrow鈥. Ahora vuelva a la pesta帽a 鈥淲allets鈥 y haz clic en 鈥淟oad Contract from Simulation鈥. Esto cargar谩 el contenido del editor de la Simulaci贸n siempre y cuando sea v谩lido (en nuestro caso, el contrato Escrow). Ver谩s el contenido del contrato as铆 como los roles que aparecen (en nuestro caso alice, bob y carol).

Roles

Los roles son propiedad del wallet que carg贸 el contrato al principio, pero podemos transferirlos a otros wallets. Haz clic de nuevo en el bot贸n + para crear un nuevo wallet. Este wallet estar谩 ahora vac铆o pero volvamos al 鈥淲allet 1鈥 y transfiramos la propiedad del rol 鈥渁lice鈥 al 鈥淲allet 2鈥 seleccion谩ndolo de la lista desplegable.

Ahora vuelve al " Wallet 2 " y ver谩s que el rol " alice " ha sido transferido al " Wallet 2 " as铆 como el " Contract 1 " ha sido mostrado. El contrato se muestra porque Wallet 2 est谩 ahora involucrado en el contrato (ya que posee el rol alice).

Ejecuci贸n de un contrato

Qu茅date en Wallet 2 e inicia el contrato haciendo clic en el bot贸n " Start ". Ahora ver谩s el estado actual del contrato y las posibles acciones. En nuestro caso es posible hacer un dep贸sito en nombre de alice.

Volvamos a Wallet 1 y ver谩s que no hay acciones posibles, esto es porque el contrato de custodia s贸lo puede progresar si alice hace un dep贸sito (o si el contrato expira).

Tomar Acciones

Volvamos a Wallet 2 y a帽adamos la entrada del dep贸sito al compositor de transacciones haciendo clic en el bot贸n + . Deber谩s ver un mensaje de error Insufficient funds to add this input. 隆El wallet necesita depositar 450 lovelace pero no tiene ninguno! Ve a la parte superior de la p谩gina y a帽ade 1000 lovelace utilizando el cuadro de entrada y haz clic en el bot贸n + . Ahora deber铆as ver en los activos que la Cartera 2 tiene 1000 lovelace. Ahora podemos volver a a帽adir la entrada al compositor de transacciones.

Deber铆as ver que el Dep贸sito se ha movido al compositor de transacciones y que hay una nueva entrada disponible. Es posible hacer m煤ltiples entradas en una sola transacci贸n, pero por ahora s贸lo a帽adiremos una. Haz clic en el bot贸n " Apply " y deber铆as ver que tanto el estado como el contrato han cambiado. Tambi茅n notar谩s en Activos que Wallet 2 ahora s贸lo tiene 550 lovelace.

En este punto, alice sigue siendo el 煤nico rol que puede hacer progresar el contrato, as铆 que vamos a crear una nueva transacci贸n con la entrada de alice eligiendo 0. Una vez que apliquemos esta transacci贸n veremos que ahora ya no hay m谩s acciones posibles que podamos tomar. Volvamos a Wallet 1 y podemos ver que ahora hay una entrada posible que podemos tomar. Construyamos una transacci贸n de Bob eligiendo 0 y hagamos clic en " Apply ".

El estado cambia de nuevo y el contrato est谩 ahora cerrado, no se pueden realizar m谩s acciones. Tambi茅n podemos ver que los 450 han sido transferidos a Wallet 1. Esto se debe a que Wallet 1 posee el rol de bob y el contrato establec铆a que si tanto alice como bob eleg铆an 0 entonces los 450 lovelace deber铆an ser transferidos a bob.

Otras caracter铆sticas

Es posible tener varios contratos funcionando al mismo tiempo. Puedes volver a la pesta帽a de Simulation y crear un contrato diferente y luego ir a la pesta帽a de Wallets y 鈥淟oad Contract from Simulation鈥 de nuevo.

Puedes pasar a al siguiente slot de la blockchain pulsando el enlace 鈥淣ext Slot鈥 en el lado derecho.

El estado de la blockchain puede restablecerse haciendo clic en el enlace " Reset Blockchain ", tambi茅n en el lado derecho. Esto 鈥渞etroceder谩 en el tiempo鈥 y deshar谩 todas las acciones realizadas, adem谩s de restablecer el n煤mero de slot a 0.

Por 煤ltimo, puedes reiniciar toda la simulaci贸n haciendo clic en el enlace " Clear All" de la parte superior. Esto borrar谩 todos los wallets y contratos cargados y reiniciar谩 el blockchain al slot 0.

Notas finales

Como se ha dicho al principio de esta secci贸n, la simulaci贸n de Wallets es una nueva caracter铆stica y tenemos la intenci贸n de desarrollarla m谩s en el futuro, sin embargo, esperamos que te haya dado una mejor comprensi贸n de c贸mo se desarrollar谩 un contrato en el mundo real y c贸mo aparecer谩 a los usuarios reales.

漏 Copyright 2020, IOHK Revision 1b7b1fc1.

Encuentra una copia oficial de este documento aqu铆:

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

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

M谩s traducciones de Cardano en: Cardano For The World