🇪🇸 Conociendo el Campo de Práctica de Marlowe

Aprenda a crear sus propias plantillas a partir de los contratos de Marlowe y a proporcionar indicaciones a los usuarios de estos, a través de metadatos personalizados

Diving deeper into the Marlowe Playground

Marlowe es un Lenguaje Específico de Dominio (DSL) incorporado a Haskell que permite que cualquiera pueda codificar contratos financieros para la tecnología blockchain. Se trata de una plataforma para las finanzas descentralizadas (DeFi) capaz de soportar préstamos directos entre pares, contratos por diferencia (CFD) y otros instrumentos similares. En Marlowe, los usuarios pueden aprovechar su experiencia en el ámbito de la escritura y la gestión de contratos de forma cómoda, sin necesidad de una curva de aprendizaje pronunciada asociada al desarrollo de software, la blockchain o los contratos inteligentes.

El :uk:Campo de Prácticas de Marlowe [Marlowe Playground] es el lugar donde se puede experimentar con la redacción de contratos financieros. Este espacio de pruebas le ofrece la opción de trabajar directamente en una serie de lenguajes como el propio Marlowe, :uk:JavaScript, :uk:Haskell, o :uk:Blockly, en función de lo que prefiera utilizar. Recientemente hemos añadido nuevas funciones al Marlowe Playground para construir y editar plantillas y personalizar metadatos, así como una nueva opción de descarga de JSON para los propios contratos. En este post, echamos un vistazo a estas nuevas características.

Desde los Contratos a las Plantillas

Desde la introducción de Marlowe Run, ampliamos el Campo de Prácticas de Marlowe para dar soporte a lo que llamamos plantillas . Estas se realizan utilizando una versión extendida de Marlowe (conocida como Extended Marlowe, la versión disponible en el Campo de Prácticas). Gracias a estas nuevas plantillas, los usuarios podrán reutilizar y reutilizar fácilmente los contratos para diferentes escenarios y contextos.

Extended Marlowe [Marlowe Extendido] ofrece mayor flexibilidad que el Marlowe simple (o Core Marlowe [Nucleo de Marlowe]). Los contratos son muy concretos y especifican los tiempos de espera en valores absolutos, originalmente a través de números de ranura, y más recientemente utilizando marcas de tiempo estandarizadas (tiempo POSIX).

Además, los Valores [ Values] de Marlowe normalmente están codificados en Marlowe, menos los que se pasan como Entradas [Inputs ]. Es decir, se puede implementar un préstamo para ₳100 o uno que pregunte al usuario cuánto prestar a través de una Selección [Choice] en una construcción Cuando [When], pero no podríamos tener un contrato Marlowe reutilizable que pudiera desplegarse en cualquier momento y con cualquier parámetro dado. Marlowe Extendido aborda estas limitaciones añadiendo la opción de incluir parámetros de contrato. Actualmente, el Marlowe Extendido es prácticamente idéntico a Marlowe simple, excepto en que incluye dos constructores extra que representan parámetros de la plantilla :

  • SlotParam - puede ser escrito en lugar de un tiempo de espera en una construcción When.
  • ConstantParam - es un tipo de construcción Value.

Los dos constructores toman, como único parámetro, una cadena que sirve como identificador del parámetro, por ejemplo

  • SlotParam "Plazo de pago
  • ConstantParam "Precio"

Se considera que dos parámetros del mismo tipo (ya sea SlotParam o ConstantParam ) y con el mismo identificador son el mismo parámetro, aunque aparezcan en lugares diferentes.

Cuando un contrato contiene parámetros (en otras palabras, si es una plantilla ), se solicita al usuario que introduzca valores para esos parámetros antes de iniciar una simulación del contrato, o antes de desplegar el contrato en Marlowe Run:

Figura 1. Cuadro de diálogo de la Simulación

Observe que la entrada del parámetro de la plantilla de valores en la imagen no es sólo un campo de entrada de números enteros. Al contrario, espera un número con decimales, y tiene una etiqueta con un símbolo de moneda que indica que el número esperado representa una cantidad de ada. Esta norma también se aplica a los valores requeridos a través de una “opción” en una construcción “cuando”. Además, las opciones no necesitan representar cantidades de ada. Podrían representar cualquier cosa, como una proporción, de la siguiente manera

Figura 2. Diálogo de acciones

Existen también indicaciones para cada parámetro que el usuario puede mostrar haciendo clic en el signo de interrogación púrpura que aparece junto a cada término. El texto de las pistas es específico del modelo de contrato y contiene texto formateado, por ejemplo, negrita, texto en cursiva o texto subrayado.

Figura 3. Indicaciones de los parámetros

En los contratos definidos por el usuario se pueden personalizar todos estos detalles mediante el uso de metadatos . Veamos cómo se hace esto.

Personalización de los metadatos

Existe una pestaña de Metadatos en la parte inferior de cada uno de los editores de Marlowe Playground. En ella, los usuarios pueden modificar los metadatos según sus necesidades. Por ejemplo:

Figura 4. Pestaña de metadatos

Existen algunos metadatos básicos que se espera que incluyan todos los contratos, como por ejemplo

  • Tipo de contrato - ¿De qué tipo de contrato se trata? Con esta categoría se podrán clasificar los contratos para que sean más fáciles de encontrar en el futuro. Por el momento, hay muy pocas categorías disponibles, pero añadiremos más en el futuro. En caso de que ninguna categoría se ajuste a su contrato, siempre puede elegir “Otros”.
  • Nombre del contrato** - Un nombre corto para identificar el contrato.
    Descripción corta del contrato - Una breve descripción para mostrar en los listados.
  • Descripción larga del contrato - Descripción detallada que se mostrará a continuación de la descripción corta en los casos en los que el usuario ya haya seleccionado la plantilla y quiera saber más (por ejemplo, al crear un contrato en Marlowe Run).

Observe que el texto de las descripciones admite el uso de algunas de las funciones de formato incluidas en Markdown. Así, por ejemplo, añadir dos asteriscos antes y después de una parte del texto de una descripción hará que ese texto aparezca en negrita al simular el contrato, como vimos en el apartado anterior. De esta forma el texto plano:

Cantidad de dinero a pagar

se convertirá en

Cantidad de dinero a pagar

Es recomendable que utilice esta funcionalidad para resaltar qué palabras clave representan entidades que tienen un significado especial en el contexto del contrato, como los nombres de los roles o las opciones, por ejemplo.

La pestaña de metadatos también permite especificar sugerencias para los roles, opciones, ranuras y parámetros de valor definidos en el contrato, así como el formato de las opciones y los parámetros de valor.

Cualquier nuevo rol o elección, ranura o parámetro de valor que se añada a un contrato aparecerá en la pestaña de Metadatos en color rojo. Para los editores Haskell y JavaScript, puede ser necesario compilar el código con éxito antes de que esto ocurra.

Figura 5. Pestaña de metadatos - añadiendo entradas de metadatos

Al pulsar el botón rojo “+” se creará una nueva entrada de metadatos para el elemento en cuestión. Del mismo modo, si un rol, elección o parámetro de ranura o valor deja de utilizarse en el contrato, los metadatos existentes se marcarán en rojo para su eliminación, y el usuario deberá pulsar el botón “-” para eliminar la entrada de metadatos del contrato.

Figura 6. Pestaña de metadatos: eliminación de entradas de metadatos

En los casos de parámetros de elección y valor, además de la descripción, el usuario puede especificar opcionalmente un formato para el número que desea que el usuario final proporcione. Para ello, seleccione “Cantidad de punto fijo” en el menú desplegable. Esto proporcionará dos campos adicionales:

  • Número de dígitos decimales para el valor (abajo a la izquierda) - los números en Marlowe son internamente siempre enteros, pero por comodidad, los usuarios pueden introducir números como punto fijo. En Marlowe, por ejemplo, las cantidades de ada se representan en lovelace (una millonésima parte de un ada) pero, en general, los usuarios finales prefieren trabajar con cantidades de ada (ya que son más legibles). Los desarrolladores pueden apoyar esto escribiendo 6 en el número de decimales. En consecuencia, el usuario final verá un separador decimal en la 6ª posición, a pesar de que internamente el contrato sigue trabajando con lovelace (unidades ada).
  • Etiqueta de moneda para el valor (abajo a la derecha) - los desarrolladores también pueden presentar un símbolo de moneda cerca de la caja de entrada del valor como una pista para los usuarios finales sobre la unidad de la cantidad que esperamos de ellos. Por ejemplo, en el caso de ada, basta con escribir el símbolo de ada “₳”.

Figura 7. Formato de los números

Por último, es importante el orden de los parámetros. Supongamos, que el usuario final puede elegir varios parámetros de ranura. Lo lógico sería mostrar esos parámetros en orden cronológico.

A fin de organizar los metadatos, arrastre las entradas en el orden deseado, por ejemplo

Figura 8. Ordenación de los metadatos

El orden de los parámetros en los metadatos se utilizará para generar el formulario que se muestra al inicio de la simulación o ejecución del contrato.

Conclusión

Gracias a las nuevas extensiones de plantillas y metadatos de Marlowe, es posible que los desarrolladores de contratos proporcionen pistas y parámetros para facilitar a los usuarios finales la reutilización del mismo contrato en varias circunstancias, evitando así tener que entender la implementación completa y los detalles del contrato.

Estas son sólo algunas de las nuevas mejoras en las que sigue trabajando el equipo de Marlowe, y esperamos compartir pronto los detalles de más mejoras.

  • Para obtener los detalles de los próximos lanzamientos de Marlowe y las nuevas características, permanezca atento a nuestros canales de medios sociales o al nuevo canal de Marlowe Discord para obtener más información. Además, mantente atento a los detalles de nuestro primer Programa de Pioneros de Marlowe, que se lanzará pronto.

Traducción al español de “Diving deeper into the Marlowe Playground”, escrito por Pablo Lamela, de IOG el 03 de marzo de 2022.


Notas del traductor

  • Corchetes del traductor.

  • :uk: indica que el enlace apunta a un contenido en idioma inglés.

  • :es: indica que el enlace apunta a un contenido en idioma español.


  • Desde :es:Cardanians Hispanos en Twitter, puede usted seguir a los tweets oficiales traducidos al español, de la Fundación Cardano, EMURGO, IOG, Yoroi y Comunidad Cardano.

  • Desde :es:Anuncios de Cardano en Español en Telegram, puede usted seguir los anuncios oficiales traducidos al español, de Cardano, EMURGO y Yoroi.

  • Desde :es:Cardano en Castellano puede usted acceder a videos oficiales de Cardano doblados al español.

  • Desde :es:El Blog de LiberLion puede usted acceder a artículos de Cardano en inglés y español.