🇪🇸 Marlowe 6: Marlowe en su totalidad

:es: Traducción al español de “Marlowe 6: Marlowe in full

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

Enlace a la versión doblada al español


En este video lo que quiero hacer es mostrarles Marlowe en su totalidad, les explicaré los tipos de datos que construyen Marlowe, las diferentes construcciones que tenemos y algunos de los otros aspectos del lenguaje. Así que en pocas palabras lo que tenemos en Marlowe es un lenguaje de dominio específico incrustado, Marlowe está incrustado en Haskell como un simple tipo de dato Haskell. Hemos modelado su semántica paso a paso mientras un contrato evoluciona como en Haskell en sí mismo y podemos usar eso en la blockchain utilizando Plutus, pero podemos usar la misma semántica para entender cómo se comportan los contratos al simularlos en el Playground Marlowe, del cual hablaré un poco más tarde.

Se ejecuta en una blockchain UTXO pero una que tiene una ligera extensión en la que los datos pueden ser transmitidos cuando un gasto de la UTXO no sólo obtiene un activo transferido, pero también somos capaces de transmitir algunos datos en ese punto y eso es suficiente para asegurarnos de que el contrato persiste cuando efectivamente pasan los datos entre transacciones. Ahora, de hecho, modelamos a Marlowe como un sólo programa Plutus, el programa Plutus es lo que se llama un intérprete de Marlowe, es la cosa que dirige los programas Marlowe, así que tenemos, en términos de confiabilidad, un sólo programa, que podemos comprobar, es de código abierto, que ejecuta los contratos en la blockchain. Así que creemos que es mejor que escribir un compilador que traduciría cada contrato en un contrato Plutus diferente, puede ser más difícil de ver que eso hace precisamente lo que debería hacer. Hacemos análisis de los programas Marlowe usando el solucionador SMT EG3, hablaremos de eso en un video posterior ya que hablaremos de cómo hemos hecho pruebas formales de comprobación de máquinas usando Isabel. Y finalmente tenemos el Playground Marlowe donde podemos desarrollar, analizar y simular los programas Marlowe.

Esa es una visión general de toda la proposición Marlowe si quieres, pero lo que yo quiero hacer en este video es hablar sobre la el tipo de datos, el tipo de datos de contrato, que es lo que Marlowe es. Hay cinco tipos diferentes de contratos, hay un contrato cerrado, hay un pago, hay un condicional que depende de una observación particular, uno de dos contratos se realiza, hay un “cuando” construir que espera que ocurran acciones y un “cuando” puede esperar un número de acciones diferentes, “cuando” la primera de esas dos cosas ocurre, se desencadena un contrato particular. Pero el “cuándo” del contrato también tiene un tiempo límite, así que el tiempo límite está ahí para asegurar que si ninguna de las acciones ocurre, el contrato continuará como la alternativa del contrato de tiempo límite de espera y también se nos permite dar un nombre a los valores en los contratos usando un permiso.

Ok, así que vamos a hablar de ellos con un poco más de detalle, la construcción de cierre cierra un contrato y reembolsa cualquier dinero dejado a los propietarios de las cuentas, dentro un contrato Marlowe hay cuentas locales que pertenecen a los participantes en el contrato y si una cuenta pertenece a Alice y se deja algo de dinero en esa cuenta, será regresado a Alice cuando el contrato se cierra. Podemos hacer un pago ahora, los pagos se realizan de cuentas a pagos y especificamos el valor a ser pagado y la parte final del contrato de pago es la continuación, como el contrato continúa después de que el pago haya sido hecho. De manera que tenemos un pago siendo realizado y tenemos el condicional aquí, tenemos si la condición es cierta, hacemos un contrato contT si no es cierto hacemos contF, eso nos permite, basados en condiciones, que el contrato pueda evolucionar de una manera u otra.

Y el contrato “cuando” tiene tres componentes, tiene un conjunto de casos, tiene un valor de tiempo límite y tiene un contrato que realizamos si ese tiempo límite es alcanzado y cada caso consiste en una acción y el contrato que es desencadenado si esa acción ocurre. Así que antes del tiempo límite, cuando una de las acciones que corresponde al contrato sucede es realizada. Por otra parte, cuando el tiempo límite ocurre, hacemos el contrato “cont”. Así que eso es lo que nos permite asegurarnos que las cosas sigan sucediendo. Ahora si miras atrás en el tipo de datos de contrato he resaltado aquí algunos de los otros componentes de Marlowe, hablé de contrato pero también hay acciones, que son cosas que afectan al contrato desde afuera, hay observaciones y hay valores y déjame decir un poquito sobre ellos. Las acciones pueden ser una de tres tipos, pueden ser un depósito, así que estamos esperando a una parte para depositar un valor dentro de una cuenta, así es como el dinero se pone en el contrato, el contrato espera a que esa acción ocurra y como dije, tenemos que tener tiempos límite en eso porque la parte puede elegir no realizar esa acción. A una parte se le podría pedir que eligiera una opción entre un rango de valores y el ID del contrato contiene el nombre de la opción y la persona haciéndolo, así Alice hace una acción con un nombre de una gama de valores potenciales y puede haber una notificación de una observación ocurriendo desde fuera de la cadena, las observaciones simplemente nos permiten comparar valores usando su tamaño relativo, utilizando igualdad y combinando y usando la lógica. Y los valores que se nos permite mirar incluyen dinero en una cuenta, el momento actual, en términos de número de franja, opciones realizadas, valores definidos usando LET, etc. Son simples combinaciones de cosas sobre el estado actual del contrato, dinero en la cuenta, tiempo actual, etc y por eso creo que los valores son un reflejo, valores simples de datos que se combinan con observaciones y luego sobre la base de si una observación es verdadera o no el contrato puede evolucionar en diferentes direcciones, incluidos en esos valores están las elecciones hechas, así la dirección de un contrato puede ser y será influenciada por las elecciones que los participantes hacen. Y eso es realmente todo, este tipo de datos de contrato con observaciones y valores también, especificamos la semántica, se ejecuta, como dije, en el UTXO extendido, podemos ver aquí en el diagrama que he tratado de sugerir las líneas amarillas, aquí indican datos fluyendo a través de transacciones que se gastan y hacer eso nos permite hacer un seguimiento del estado actual de un contrato, hasta qué punto hemos llegado con la ejecución de un contrato. Pero de nuevo, este modelo es funcional, flujo de datos a través de una red, ya he subrayado mucho esto antes, pero IOHK está tomando esta visión funcional del mundo muy seriamente, está usando el lenguaje funcional Haskell para hacer toda la programación, pero su modelo blockchain es funcional, no tiene un estado inherente y como dije, el intérprete Marlowe es un único programa Plutus.

Vale la pena subrayar aquí que cuando ejecutamos el contrato podemos poner billeteras de los usuarios, esto es algo en lo que estamos en proceso de desarrollo, no estamos ahí todavía, pero estará ahí en el sistema final, vamos a ser capaces de automatizar acciones, así que si se requiere un depósito, podemos automatizar, con el uso de permiso, automatizar esa acción en su billetera y generar transacciones para ir en la blockchain. Así que desde un contrato Marlowe podemos generar componentes en cadena y fuera de cadena y sólo para subrayar el punto de que dentro de Marlowe, dentro del mundo Cardano, lo que tenemos es un subconjunto Haskell GX completo que compila en Plutus central y se ejecuta en la propia blockchain, así que alimentamos las cosas desde Haskell. Y sólo para tener claro cómo se ve una transacción, las transacciones que se construyen contendrán un número potencial de entradas y un número de pagos, así que una única transacción puede incluir la toma de una variedad de entradas y pagos y esos pasos del contrato, el número de pasos de un contrato se plasman en una única transacción que se coloca en la cadena.

Ok, así que creo que eso es suficiente acerca de las generalidades de Marlowe, lo que quiero hacer a continuación es hablar a través de algunos ejemplos, de cómo escribimos contratos reales utilizando Marlowe y luego hablar un poco sobre un estándar financiero con que hemos estado trabajando.