Traducción al español de Marlowe: Financial Smart Contracts in Cardano
Publicado en el blog de Emurgo en Medium por Sebastien Guillemot, el 3 de Septiembre de 2018.
¿Por qué Marlowe?
Muchas personas en el mundo de los negocios están familiarizadas con los fideicomisos y demás contratos financieros convencionales. Dichas personas, interesadas en el espacio de las cadenas de bloques, podrían querer escribir su contrato en una cadena de bloques. Sin embargo, esto acarrea dos problemas:
- Alto costo de ingeniería para contratar a un desarrollador, incluso para contratos simples.
- Difícil convencer a todas las partes de que el código realmente coincide con el contrato que acordaron.
Para resolver estos problemas y permitir la adopción de la cadena de bloques en el mundo de los negocios, necesitamos una forma de escribir contratos inteligentes que:
- Puedan ser escrito sin saber cómo codificar programas altamente seguros.
- Puedan ser leídos y comprendidos fácilmente por todas las partes.
Parece que debería ser necesario construir un sistema de este tipo. Después de todo, muchos contratos se construyen a partir de una composición conocida como “building blocks”. De hecho, este es el problema que intentamos resolver con Marlowe.
¿Qué es Marlowe?
Marlowe es un proyecto construido y financiado por IOHK, en conjunto con la Universidad de Kent (UKC). Aunque está construido para la cadena de bloques de Cardano, intenta ser un framework independiente a la cadena de bloques, que permite escribir contratos financieros inteligentes mediante una simple composición visual.
Estos contratos se concretan a través de acciones precisas como el depósito o el retiro de dinero por parte de los usuarios. Cada acción concreta hace que el estado del programa avance irreversiblemente hacia un estado final (el estado final se define como un contrato vacío). Esto es útil porque queremos garantizar que los contratos financieros siempre terminan (el contrato se cumplió, expiró, etc.).
Más formalmente, cada bloque de la cadena de bloques se considera un “paso”. En cada paso, capturamos los siguientes inputs:
- El contrato en sí.
- Las transacciones del usuario (depósito de dinero, etc.).
- El estado actual del contrato (quién ha depositado, cuánto, etc.).
- El entorno (número de bloque, etc.).
A continuación, producimos el siguiente output:
- El contrato actualizado (el contenido del contrato puede haber cambiado debido a un tiempo muerto, etc.).
- El estado del contrato actualizado.
Por ejemplo, visualicemos un contrato que recibe dinero de 2 usuarios diferentes y luego simplemente se termina. El contenido del contrato no es demasiado importante - lo importante es que el contrato progresa con el tiempo hasta que se vacía.
¿Cómo usar Marlowe?
Marlowe se ejecuta actualmente dentro del navegador, en un sistema que simula una cadena de bloques llamada Meadow. Esto permite una fácil creación de prototipos y desarrollo, sabiendo que Marlowe funcionará provisoriamente en su propia red de pruebas, para luego formar parte de la red principal de Cardano.
Explicamos las 6 secciones de Meadow
(1) Caja de herramientas de bloques
Existen algunos bloques diferenciados, lo cuales se organizan en 3 categorías:
- Observaciones: Representa valores que provienen del exterior. Aunque lo que puede hacer ahora es limitado, en el futuro esta sección incluirá todo lo relacionado con eventos y datos relacionados con la cadena de bloques.
- Contrato: Estos son los principales bloques de construcción componibles para el contrato inteligente.
- Dinero: Representa operaciones o valores en ADA.
(2) Espacio de diseño
En este espacio se pueden crear un contratos inteligentes arrastrando y soltando bloques.
(3) Vista de código
En esta sección se puede ver el código generado por el espacio de diseño. Esto es lo que se debe guardar si desea compartir el contrato inteligente creado con otras personas, o guardarlo para una fecha posterior. El lenguaje generado es un domain-specific language (DSL) personalizado, que deberá ser traducido a cualquier lenguaje soportado por una cadena de bloques determinada (en el caso de Cardano, esto se traduciría a Plutus). Dado que la versión actual de Marlowe se ejecuta en Haskell, también se puede abrir un editor Haskell, y escribir un script personalizado propio.
(4) Estado del contrato
El estado representa la parte del contrato inteligente que debe almacenarse en la cadena de bloques (es decir, la información necesaria para volver a ejecutar y verificar el resultado de un contrato inteligente).
Actualmente sólo almacena el estado de los compromisos en efectivo (depósitos en el contrato) y las “opciones” de los usuarios (uno de los comportamientos observables), pero en el futuro almacenará los datos capturados del entorno.
(5) Inputs del usuario
Los inputs están formados por:
- Compromisos en efectivo (depósitos).
- Reembolsos en efectivo (retiros).
- Órdenes de pago.
- Opciones (ej: elija 1 de 2 opciones).
Estos inputs pueden ser obligatorios, a través de la “interfaz manual”, pero Meadow proporciona una “interfaz inteligente” que sólo mostrará las acciones que harán progresar el contrato inteligente.
Una vez ingresado el input, se puede pulsar el botón “Ejecutar” situado en la parte superior derecha de la pantalla. Esto hará que el contrato progrese al siguiente bloque, absorviendo todo el input.
(6) Resultados
Esta sección muestra el resultado de registrar el input sobre un bloque dado. El output se utiliza para registrar información, y en un sistema del mundo real se usaría para manejar una interfaz web (similar a cómo se interactúa con muchos contratos inteligentes de Ethereum a través de interfaces web).
Aprende más y pruébalo por ti mismo!