Documento original Publicado el 11 de Diciembre de 2018
Ver link de Simon Thompson a IOHK
Ver Documento Original aquí.
Las primeras computadoras fueron programadas en "código máquina". Cada tipo de sistema tenía un código diferente, y estos códigos eran de bajo nivel e inexpresivos: los programas eran largas secuencias de instrucciones muy simples, incomprensibles para cualquiera que no las hubiera escrito. Hoy en día somos capaces de utilizar lenguajes de alto nivel como C, Java y Haskell para programar sistemas. Los mismos lenguajes pueden utilizarse en máquinas muy diferentes, y las estructuras de los programas reflejan lo que hacen; en la cadena de bloques (blockchain), sus equivalentes son lenguajes como Solidity y Simplicity. Estos lenguajes modernos de nivel superior son de uso general - pueden ser usados para resolver todo tipo de problemas - pero las soluciones que expresan siguen siendo programas, y todavía requieren habilidades de programación para usarlos efectivamente.
Por el contrario, Marlowe es un lenguaje de dominio específico (DSL) que está diseñado para ser utilizado por alguien que es experto en un campo en particular: en el caso de Marlowe, los contratos financieros, en lugar de requerir conocimientos de programación para su uso.
El uso de un DSL tiene muchas ventajas más allá de su uso por parte de los no programadores:
-
Podemos asegurarnos de que ciertos tipos de programas malos ni siquiera puedan ser escritos diseñando esas posibilidades fuera del lenguaje, y al hacerlo podemos tratar de evitar algunas de las hazañas imprevistas que han sido un problema para las blockchains existentes.
-
También podemos comprobar más fácilmente que los programas tienen las propiedades que queremos: por ejemplo, en el caso de un contrato financiero, podemos asegurarnos de que el contrato nunca deje de hacer un pago que debería hacer.
-
Debido a que es una DSL, podemos construir herramientas especiales para ayudar a la gente a escribir programas en el idioma. En el caso de Marlowe podemos emular cómo se comportará un contrato antes de que se ejecute de verdad en el sistema; esto nos ayuda a asegurarnos de que el contrato que hemos escrito hace lo que se pretende.
Marlowe se inspira en los contratos financieros DSL popularizados en la última década por académicos y empresas como LexiFi, que proporciona software de contratos en el sector financiero. En el desarrollo de Marlowe hemos adaptado estos lenguajes para trabajar en blockchain. Marlowe se implementa en la capa de asentamiento (SL) de la cadena de bloques Cardano, pero también podría implementarse en Ethereum/Solidity u otras plataformas de cadenas de bloques; en este sentido es "agnóstico de plataformas" al igual que los lenguajes de programación modernos como Java y C++. La herramienta de emulador en línea de Meadow le permite experimentar, desarrollar e interactuar con los contratos de Marlowe en su navegador web, sin tener que instalar ningún software para usted.
¿Cómo es un contrato Marlowe? Se construye combinando un pequeño número de bloques de construcción que describen la realización de un pago, la observación de algo en el "mundo real", la espera hasta que se cumpla una determinada condición, etc. Donde diferimos de los enfoques anteriores es en cómo nos aseguramos de que se cumpla el contrato. Esto significa no sólo que las instrucciones del contrato no son desobedecidas, sino también que los participantes no se van temprano, dejando el dinero encerrado en el contrato para siempre. Hacemos esto usando dos herramientas, compromisos y tiempos muertos: un compromiso requiere que un participante "ponga su dinero sobre la mesa", y a través de los tiempos muertos nos aseguramos de que este compromiso ocurra de manera oportuna o que se tomen medidas correctivas. Al juntar estas construcciones, podemos incentivar a los participantes para que continúen con el contrato una vez que se hayan comprometido con él.
Estamos trabajando en una versión completa de Marlowe para mediados de 2019, cuando estará disponible en Cardano SL. A partir de hoy, podrás explorar Marlowe por ti mismo utilizando Meadow, y descubrir muchos más detalles en nuestro documento en línea. En los próximos seis meses puliremos el diseño del lenguaje y desarrollaremos un conjunto de plantillas para los instrumentos financieros más populares, además de utilizar herramientas lógicas formales para probar las propiedades de los contratos de Marlowe, lo que proporcionará a los usuarios el mayor nivel de seguridad de que sus contratos se comportan según lo previsto.