馃嚜馃嚫 Tutoriales de Marlowe: 9. El Marlowe Playground

El Marlowe Playground

Este tutorial ofrece una visi贸n general del Marlowe Playground, una herramienta en l铆nea que permite a los usuarios crear, analizar, interactuar y simular el funcionamiento de los contratos integrados de Marlowe.

Introduciendo el Marlowe Playground

Para que Marlowe sea utilizable en la pr谩ctica, los usuarios deben ser capaces de entender c贸mo se comportar谩n los contratos una vez desplegados en la blockchain, pero sin hacer el despliegue. Podemos hacerlo simulando su comportamiento fuera de la cadena, pasando interactivamente por la evaluaci贸n de un contrato en la herramienta basada en el navegador, el Marlowe Playground, una herramienta web que soporta la construcci贸n interactiva, la revisi贸n y la simulaci贸n de contratos inteligentes escritos en Marlowe.

Los contratos se pueden redactar de cuatro maneras diferentes en el Playground. Podemos escribir directamente en Marlowe, o utilizar la representaci贸n Blockly de Marlowe. Marlowe tambi茅n est谩 integrado en Haskell y JavaScript, y podemos crear contratos en estos lenguajes y luego convertirlos (鈥渃ompilarlos鈥) a Marlowe en el Playground.

MT-9-1

Una vez escrito un contrato en Blockly, Haskell o JavaScript, podemos pasar al Simulador para analizar y simular el contrato.

El trabajo del Playground puede guardarse como un gist de github. Esto guarda, como proyecto , todo lo que hay en el Playground: no s贸lo los contratos, sino el estado actual de la simulaci贸n, los registros, etc. Los proyectos pueden ser recargados o duplicados en un momento posterior. Incluso sin usar github el proyecto se guarda entre sesiones, pero esto es vol谩til, y se perder谩 si se actualizan las cach茅s del navegador.

En el resto de esta secci贸n se tratar谩 con m谩s detalle el funcionamiento del Playground. En secciones posteriores, tambi茅n se cubren dos caracter铆sticas experimentales , que est谩n en desarrollo activo: Actus Labs y la simulaci贸n a nivel de Wallet.

En lo que sigue utilizamos letra negrita para los botones y otros componentes.

C贸mo empezar

La p谩gina de inicio del Marlowe Playground tiene el siguiente aspecto

MT-9-2

La barra de t铆tulo tiene, en el lado derecho, enlaces a este tutorial y a la funci贸n Actus Labs, y las operaciones del men煤 principal se muestran por debajo de esto.

  • New Project Esto borra el proyecto existente, y crea uno nuevo, en un entorno de codificaci贸n a elecci贸n del usuario:

MT-9-3

  • Open Project Esto abre un proyecto que ha sido guardado previamente. Consulta la secci贸n sobre c贸mo guardar y abrir proyectos m谩s adelante para obtener m谩s detalles sobre su configuraci贸n.
  • Open Example Esto cargar谩 un ejemplo en el proyecto existente, en el entorno elegido por el usuario.

MT-9-4

  • Rename Project Cambia el nombre de un proyecto: el nombre se muestra en el centro de la barra de t铆tulo.
  • Save Project Guarda un proyecto. Consulta la secci贸n Guardar y Abrir Proyectos m谩s abajo.
  • Save as New Project Guarda el proyecto actual con un nuevo nombre.

El editor de programas utilizado en el Playground es el editor Monaco Monaco Editor y muchas de sus funciones est谩n disponibles, incluido el men煤 disponible al hacer clic con el bot贸n derecho del rat贸n.

El editor de Haskell: desarrollo de contratos integrados

El editor soporta el desarrollo de contratos Marlowe descritos en Haskell. Podemos utilizar Haskell para hacer que las definiciones de los contratos sean m谩s legibles utilizando definiciones de Haskell para los subcomponentes, las abreviaturas y las funciones de plantilla simples. El editor Haskell se muestra en la siguiente imagen.

MT-9-5

El editor Haskell est谩 abierto aqu铆 en el ejemplo Escrow contenido en los ejemplos. Para describir un contrato Marlowe en el editor, tenemos que definir un valor de nivel superior contract de tipo Contract; es este valor el que se convierte en Marlowe puro con el bot贸n Compile (en la esquina superior derecha). Si la compilaci贸n tiene 茅xito, el c贸digo compilado se muestra en una superposici贸n (que puede minimizarse):

MT-9-6

Una vez compilado con 茅xito, el resultado puede enviarse al simulador o a Blockly: estas opciones se ofrecen mediante los botones Send to Simulator (Enviar al simulador) y Send to Blockly (Enviar a Blockly) en la esquina superior derecha de la p谩gina.

Si el contrato no se puede convertir con 茅xito a Marlowe, los errores tambi茅n se muestran en una superposici贸n:

MT-9-7

El editor de JavaScript: desarrollo de contratos integrados

El editor soporta el desarrollo de contratos Marlowe descritos en JavaScript, tambi茅n. Podemos utilizar JavaScript para hacer m谩s legibles las definiciones de los contratos mediante el uso de definiciones JS para los subcomponentes, las abreviaturas y las funciones simples de las plantillas. El editor JS se muestra en la siguiente imagen.

MT-9-8

El editor JS est谩 abierto aqu铆 en el ejemplo de Escrow contenido en los ejemplos. Para describir un contrato Marlowe en el editor, un valor del tipo Contract debe ser devuelto como resultado de la funci贸n proporcionada utilizando la instrucci贸n return.

MT-9-9

El editor soporta el autocompletado, la comprobaci贸n de errores durante la edici贸n y la informaci贸n sobre los bindings al pasar el rat贸n por encima. En particular, al pasar el rat贸n por encima de cualquiera de los enlaces importados se mostrar谩 su tipo (en TypeScript).

Al hacer clic en el bot贸n Compile (en la esquina superior derecha), se ejecuta el c贸digo en el editor, y el objeto JSON devuelto por la funci贸n resultante de la ejecuci贸n se convierte en un contrato Marlowe real que puede enviarse a la pesta帽a Simulaci贸n, donde puede simularse.

Si la compilaci贸n tiene 茅xito, el c贸digo compilado se muestra en una superposici贸n (que puede minimizarse):

MT-9-10

Una vez compilado con 茅xito, el resultado puede enviarse al simulador mediante el bot贸n Send to Simulator situado en la esquina superior derecha de la p谩gina.

Si el contrato no se puede convertir con 茅xito a Marlowe, los errores tambi茅n se muestran en una superposici贸n:

MT-9-11

Desarrollar contratos en Blockly

El playground ofrece un mecanismo para crear y ver los contratos de forma visual, en lugar de en texto. Esto se discute en esta secci贸n anterior sobre Blockly.

Desarrollar contratos en Marlowe

Tambi茅n es posible crear contratos en Marlowe 鈥渃rudo鈥, y esto se realiza en el entorno de simulaci贸n. Marlowe se edita en el editor de M贸naco, que permite formatear autom谩ticamente (al hacer clic con el bot贸n derecho) y tambi茅n soporta agujeros .

MT-9-12

Los agujeros permiten construir un programa de arriba abajo. Al hacer clic en la bombilla situada junto a un agujero, se presenta un men煤 de finalizaci贸n, en el que se sustituye cada subcomponente por un nuevo agujero. Por ejemplo, al elegir Pay para rellenar el agujero del nivel superior resultar谩 en esto:

MT-9-13

Los agujeros pueden combinarse con la edici贸n de texto ordinaria, de modo que se puede utilizar una mezcla de construcciones de abajo a arriba y de arriba a abajo en la construcci贸n de contratos de Marlowe. Adem谩s, los contratos con agujeros pueden transferirse a y desde Blockly: los agujeros en Marlowe se convierten en agujeros literales en Blockly. Para transferirlos a Blockly, utiliza el bot贸n View in Blockly Editor , situado en la esquina superior derecha de la pantalla.

Simulaci贸n de contratos Marlowe

Independientemente de c贸mo se redacte un contrato, cuando se env铆a a la simulaci贸n esta es la vista que se ve primero.

MT-9-14

El c贸digo mostrado aqu铆 presenta lo que queda por simular del contrato, y el panel al pie da datos sobre la simulaci贸n, adem谩s de dar acceso al an谩lisis est谩tico del contrato (desde su estado actual).

La simulaci贸n se inicia haciendo clic en el bot贸n Start simulation , y una vez hecho esto, se presentan las acciones disponibles que har谩n avanzar el contrato;

MT-9-15

En este caso hay dos acciones potenciales: Alice puede hacer un dep贸sito, o el slot (tiempo) puede avanzar a 10 en el que se agota la espera de un dep贸sito. Tambi茅n se pueden realizar otras dos acciones gen茅ricas

  • Undo deshar谩 la 煤ltima acci贸n realizada en el simulador. Esto significa que podemos explorar un contrato de forma interactiva, haciendo algunos movimientos, deshaciendo algunos de ellos, y luego procediendo en una direcci贸n diferente.
  • Reset devolver谩 el contrato y su estado a sus valores iniciales: el contrato completo y un estado vac铆o. Tambi茅n detiene la simulaci贸n.

Para nuestro ejemplo, vamos a seleccionar que Alice haga el dep贸sito de 450 lovelace. Podemos hacerlo con el bot贸n + al lado de esta entrada. Despu茅s de hacer eso vemos

MT-9-16

Donde vemos al pie de la pantalla que el dep贸sito se ha producido.

Esto queda a la vista si luego hacemos la elecci贸n de Alice y luego la de Bob. Observa tambi茅n que el estado actual del contrato se muestra en la parte principal de la ventana, y de hecho estamos esperando en este momento una elecci贸n de Alice.

Si Alice y Bob hacen elecciones diferentes, entonces vemos

MT-9-17

y en este punto de la evoluci贸n del contrato estamos a la espera de la elecci贸n de Carol para arbitrar el resultado.

Simulaci贸n de Or谩culo

Como hemos se帽alado anteriormente en la secci贸n de Or谩culos, el Playground proporciona valores de or谩culo a las simulaciones para el rol "kraken". Cuando la simulaci贸n llega al punto de simular esta construcci贸n

MT-9-18

entonces el valor se pre-llena en la simulaci贸n as铆:

MT-9-19

Guardar y Abrir Proyectos

Los proyectos se pueden guardar en github, por lo que la primera vez que guardes un proyecto se te pedir谩 lo siguiente:

MT-9-20

y, si eliges Login all铆, ser谩s llevado a una pantalla de acceso a github:

MT-9-21

Cuando optes por Open Project te aparecer谩 una opci贸n como esta:

MT-9-22

Marlowe Playground no proporciona un mecanismo para borrar proyectos, pero esto se puede hacer directamente en github.

Analizar un contrato

El an谩lisis est谩tico de un contrato se realiza seleccionando la pesta帽a Static analysis en el panel del pie de p谩gina.

MT-9-23

Al hacer clic en el bot贸n Analyse for warnings se analiza el contrato en el estado actual . El resultado es o bien decir que el contrato ha pasado todas las pruebas, o bien explicar c贸mo falla, y dar la secuencia de transacciones que llevan al error. Como ejercicio, prueba esto con el contrato Escrow , cambiando el dep贸sito inicial de Alice a algo menor que 450 lovelace. M谩s detalles en la secci贸n de an谩lisis est谩tico m谩s abajo.

El bot贸n Analyse reachability comprobar谩 si alguna de las partes de un contrato no se ejecutar谩 nunca, independientemente de c贸mo interact煤en los participantes con 茅l.

Utiliza el Marlowe Playground para interactuar con el contrato escrow en los distintos escenarios tratados en el tutorial sobre el uso de Marlowe.

Explora la realizaci贸n de algunos cambios en el contrato y las interacciones con esos contratos modificados.

Utiliza el Marlowe Playground para explorar los otros ejemplos que all铆 se presentan: el contrato de incentivo de dep贸sito, y el ejemplo de crowdfunding.

漏 Copyright 2020, IOHK Revision b1894eb4.

Encuentra una copia oficial de este documento aqu铆:

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

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

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