🇪🇸 Marlowe 10: presentando el Playground Marlowe

:es: Traducción al español de “Marlowe 10: introducing the Marlowe Playground

Publicado en el canal de Youtube de Simon Thompson el 16 de Abril de 2020

Enlace a la versión doblada al español


En este video lo que me gustaría hacer es presentar el Playground Marlowe, una aplicación basada en la web para interactuar con los contratos Marlowe, podemos hacer un número de cosas aquí, podemos redactar contratos incrustados, así que contratos que usan Haskell para ayudarnos a describir el contrato, podemos convertir esos contratos en Marlowe puro, podemos analizar los contratos en la nube, podemos simular su comportamiento con una entrada inteligente y también podemos desarrollar contratos en un lenguaje totalmente visual, llamado Blockly, puedes ver la URL para el Playground aquí. Otra cosa que yo diría es que hay un tutorial ahí que cubre todo el material en estos videos pero en forma escrita.

Así que lo que me gustaría hacer en este primer video es mostrarte, darte una visión general de las tres partes diferentes del Playground. El Playground está construido con tres pestañas diferentes que puedes ver abajo en el lado izquierdo, en este punto estamos en el editor Haskell, puedes ver que he indicado que estamos ahí. Ahora, este es un editor que nos permite editar programas completos de Haskell que representan contratos, ¿qué quiero decir con eso?, podemos mostrarte algunas demostraciones, así que haciendo clic en la barra superior aquí te llevará a la demostración y aquí hice clic en el contrato de garantía, el contrato de garantía que que vimos antes en este conjunto de videos, pero también tenemos el bono de cupón cero, tenemos un intercambio, etc, puedes cargar estos contratos de ejemplo en el editor. ¿Qué más podemos hacer?, bien podemos compilar, lo que queremos decir con compilar es convertirlos en Marlowe puro y en esta etapa, si hay cualquier error en lo que hemos hecho, recibiremos reportes de ello.

Si estamos conformes con la compilación, la otra cosa que podemos hacer es enviar ese contrato al simulador, que está en otra de las pestañas que ves aquí. Ahora, describamos un contrato en sí mismo, de hecho lo que hacemos es para que esto sea adecuado, para que podamos compilarlo, tenemos que adherirnos a la convención de que lo que estamos haciendo es definido como una cosa llamada contrato, con una C, un contrato con C mayúscula. Así que la cosa llamada contrato aquí es la cosa que se compila y se envia al simulador. Así que tenemos un entorno Haskell en línea, puedes editar tu Haskell, puedes compilar en un contrato Marlowe puro. Y luego, cuando estás contento con eso, lo que podemos hacer es enviar eso al simulador, así que hagamos eso, haremos clic en la pestaña del simulador, podemos ver que hay un poco más en la pantalla aquí. Lo que quiero hacer es pasarte por lo que estamos dándote en la pantalla, como dije, estamos en la pestaña de simulación, siempre puedes decir qué pestaña estás mirando en la columna izquierda y dije al principio de esto que hay un tutorial, encontrarás que el enlace al tutorial está siempre en la esquina inferior izquierda donde quiera que estés en el Playground.

Ahora, estamos, como dije, en el simulador y lo que ves en la ventana principal aquí, la parte principal de la ventana, es el contrato Marlowe y de nuevo, tenemos ejemplos aquí, podemos cargar directamente el contrato de garantía aquí, podemos cargar todos los contratos vacíos. Ok, pero ¿qué más tenemos aquí?, esto es un simulador, ¿qué podemos hacer en la simulación?, antes de hacer eso, podemos guardar cualquier contrato que desarrollemos aquí en Github, como un Github gist, si estás familiarizado con eso y también este botón hará que el contrato que tenemos aquí, el contrato Marlowe, sea una forma visual en Blockly, así que podemos convertir entre forma textual y forma visual y veremos la forma visual en breve. ¿Qué es lo que la simulación nos permite hacer?, si miras la parte inferior de este panel, esto nos permite correr paso a paso a través de la ejecución del contrato, puedes ver aquí, hay varias pestañas en el fondo de este panel, el estado actual, así que el estado actual es toda la información sobre cómo evoluciona el contrato hasta ahora. Pero también puedes ver aquí que hay una pestaña de análisis estático y hay pestañas de advertencias y errores y también nos dice cuándo el contrato expirará, sabemos que en cien bloques expirará y te dice cuál es el bloque actual. Bien, ese panel de ahí nos da toda la información sobre el estado actual y un análisis estático, de hecho, se ejecuta desde ese estado, pero, ¿cómo podemos realmente producir entradas y transacciones que alimenten el contrato? Eso es lo que ocurre aquí en el compositor de entrada y lo bueno de esto es que las únicas entradas posibles que se te ofrecen aquí son unas que moverán el contrato. Lo que esto dice es que lo único que el contrato hará en el momento es conseguir un depósito de 450 ADA en la cuenta de Alice 0 como Alice, y el botón más de ahí, es la cosa que de hecho añadirá esa entrada a la transacción actual. Si recuerdas cuando discutimos esto, cuando hablamos de la ejecución, podrías tener un número de entradas y pagos que pueden ocurrir y se agrupan en una sola transacción y es aquí donde el compositor de la transacción funciona, a medida que las entradas están alrededor se pondrán dentro del compositor de transacción y los controles debajo de eso nos permiten hacer una serie de cosas, nos permiten aplicar esta transacción, elimina el contrato hacia adelante, nos permite avanzar el tiempo del bloque hacia adelante si queremos, pero también podemos deshacer los movimientos previos que hemos hecho, presionando deshacer o podemos resetear el contrato a su estado inicial presionando reset. Así que usando esos controles somos capaces de movernos hacia adelante y atrás con la ejecución de un contrato, podemos intentar algunas cosas, deshacerlas, intentar algo, así que podemos explorar el árbol del contrato.

Y al final, en la esquina inferior derecha, tenemos un asesoramiento dependiente del contexto, dependiendo de dónde estés en el sistema. Así que eso explica la simulación, vamos a ver un ejemplo de simulación en el siguiente video, pero aquí has visto lo que hacen todos los controles. Ahora finalmente, movámonos al último panel que es Bloclky, puedes ver que estamos aquí y lo que ves en este panel es que tienes una representación visual de un contrato. He creado este contrato llevándolo del código a Blockly, también puedo, usando el control en la parte superior, a la izquierda de aquí, codificar, para convertir el código visual aquí en código en el simulador, así que me puedo mover de Blockly a código y de hecho puedo mover, como vimos en la pestaña de simulación, podemos mover de código a Blockly, así que podemos movernos hacia atrás y hacia delante entre estos dos. Pero lo mejor de Blockly es que podemos construir un contrato en esta forma enteramente visual y ¿cómo hacemos eso?, bien en el nivel superior tenemos este contrato, aquí es donde encajamos un contrato y ¿cómo construimos contratos?, bueno la respuesta es que, ya hemos hablado de codificar, lo que podemos hacer es seleccionar, seleccionar cada uno de estos nos dará acceso a las construcciones disponibles, así que el ¿cómo podemos construir observaciones?, hacemos clic en las observaciones aquí y nos muestra. Así que, por ejemplo, si hacemos clic en contrato, lo que vemos es esto, vemos estas representaciones visuales de un cuando, pagar y una observación y puedes ver que esto nos dice precisamente lo que tienen que rellenar para cada una de esas plantillas, así que si elegimos un “si” por ejemplo tendríamos que poner una observación en este punto y luego un contrato dentro de esos. Aquí tenemos un “cuando”, lo que tenemos que hacer es poner casos ahí y luego continuamos, Tenemos que decir cuál es el tiempo de finalización rellenando este cuadro de texto aquí con un número de franja. Así que eso cubre brevemente cómo usamos los tres componentes y lo que haremos a continuación es hablar un poco más en detalle sobre la simulación.