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 "Simulation" y carga el contrato de ejemplo "Escrow". Ahora vuelva a la pestaña "Wallets" y haz clic en "Load 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 "Wallet 1" y transfiramos la propiedad del rol "alice" al "Wallet 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 "Load Contract from Simulation" de nuevo.

Puedes pasar a al siguiente slot de la blockchain pulsando el enlace "Next 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 "retrocederá 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