馃嚜馃嚫 Reducci贸n de los costes de ejecuci贸n de Marlowe

Sumario ejecutivo

Las recientes mejoras en la eficiencia del validador Plutus de Marlowe han dado como resultado unos costes de ejecuci贸n significativamente m谩s bajos para las transacciones de smart contract de Marlowe en la blockchain Cardano. Esto tiene dos implicaciones importantes para los usuarios de Marlowe, los dise帽adores de contratos y los desarrolladores de DApp:

  1. Las transacciones de Marlowe tienen ahora tarifas m谩s bajas y pueden incluir una l贸gica m谩s compleja que antes. Una nueva versi贸n del compilador PlutusTx reduce los costes de ejecuci贸n de los contratos Marlowe en m谩s de un 20%.
  2. Adem谩s, el empleo juicioso del nuevo m贸dulo Haskell PlutusTx.AsData en el c贸digo fuente del validador sem谩ntico de Marlowe ofrece otro 25% de reducci贸n para los contratos Marlowe t铆picos. Especializar la forma en que el validador compara los valores multiactivos reduce a煤n m谩s los costes para los contratos que implican tokens nativos.

Estos cambios en el validador sem谩ntico de Marlowe no provocan una nueva auditor铆a externa. M谩s all谩 de estas optimizaciones que reducen costes, los desarrolladores expertos pueden personalizar opcionalmente el validador para desactivar algunas de las comprobaciones redundantes previas y posteriores a la condici贸n que realiza. En conjunto, estas actualizaciones permiten hacer m谩s con Marlowe a un coste menor.

Necesidad de reducir los costes de ejecuci贸n

Al igual que el resto de validadores de smart contract en Cardano, los validadores de Marlowe est谩n sujetos a la regla del ledger que limita la cantidad de c贸mputo que puede producirse en una 煤nica transacci贸n de Plutus. Las reglas actuales limitan las transacciones a catorce millones de unidades de memoria Plutus y a diez mil millones de unidades de paso Plutus (CPU). El lenguaje Marlowe no impone l铆mites al n煤mero de c贸mputos l贸gicos, aritm茅ticos y contables en un contrato Marlowe o en una transacci贸n Marlowe, por lo tanto, siempre habr谩 situaciones en las que un contrato pueda intentar realizar m谩s c贸mputos de los permitidos en una transacci贸n Cardano. Nuestro art铆culo en el blog sobre la seguridad de Marlowe ofrece ejemplos de esto, y la Gu铆a de Mejores Pr谩cticas de Marlowe sugiere patrones de dise帽o para contratos que se mantienen por debajo de estos l铆mites de coste de ejecuci贸n. En consecuencia, hacer que el validador de Marlowe sea m谩s eficiente dejar谩 espacio para hacer m谩s computaci贸n en cada transacci贸n de Marlowe si un contrato lo requiere. Ese 鈥減resupuesto de computaci贸n鈥 extra permite a los contratos m谩s complejos

  • gestionar m谩s cuentas en el estado interno de Marlowe
  • pagar a m谩s partes a la vez
  • realizar m谩s acciones en una sola transacci贸n
  • realizar c谩lculos aritm茅ticos y l贸gicos m谩s elaborados
  • tomar m谩s decisiones o asignar m谩s variables a lo largo de la vida de un contrato.

Nuevas eficiencias en Marlowe

La 煤ltima revisi贸n del validador sem谩ntico de Marlowe incluye varias actualizaciones que mejoran su eficiencia. Algunos de estos cambios reducen el coste de todas las transacciones de Marlowe, mientras que otros se centran en 鈥減untos calientes鈥 del validador de Marlowe en los que antes resultaba especialmente caro en determinadas situaciones.

Compilar el validador Marlowe utilizando el compilador PlutusTx versi贸n 1.15.0.0 ofrece mejoras 鈥渙ut-of-the-box鈥 para todos los contratos Marlowe. Esa versi贸n de PlutusTx incorpora las lecciones aprendidas en las 茅pocas de Alonzo y Babbage para optimizar la compilaci贸n del c贸digo Plutus escrito en Haskell (como Marlowe) en el eficiente Untyped Plutus Core (UPLC) que se ejecuta cuando los nodos de Cardano validan las transacciones.

Como se ilustra en el histograma siguiente, para un ejemplo representativo seleccionado al azar de cien transacciones Marlowe, observamos una reducci贸n m铆nima del coste de memoria del 23%, pero con reducciones superiores al 30% en algunos casos. La reducci贸n del coste por paso es similar.

measured memory benchmark

Las 煤ltimas bibliotecas de Plutus tambi茅n contienen un nuevo m贸dulo PlutusTx.AsData que contiene c贸digo Template Haskell (TH) para crear tipos de datos algebraicos (ADT) como objetos Data en Plutus Core, en lugar de t茅rminos de sumas de productos. Las capacidades AsData de Plutus est谩n evolucionando y es posible que con el tiempo incluyan tipos PlutusTx como Map y ScriptContext, lo que puede suponer una mejora a煤n mayor del rendimiento. Envolver una de las ADT clave de Marlowe, Case, con la funci贸n TH asData ofrece algunas mejoras espectaculares en la deserializaci贸n que convierte los bytes brutos del ledger que representan un contrato Marlowe o una acci贸n sobre 茅l en las estructuras de datos sem谩nticamente significativas del lenguaje Marlowe. Los dos "gr谩ficos de llama鈥欌 siguientes, obtenidos utilizando las herramientas de perfilado de Plutus, para un ejemplo de transacci贸n Marlowe, muestran c贸mo la 鈥渕onta帽a鈥 (1a) de c贸digo de deserializaci贸n en el lado izquierdo del gr谩fico m谩s a la izquierda (donde no se emplea asData) se convierte en una peque帽a 鈥渃olina鈥 (1b) en el gr谩fico m谩s a la derecha (donde se emplea asData). Otros detalles de los gr谩ficos muestran la secuencia de llamadas a funciones y costes dentro de la UPLC. Los beneficios de asData dependen tanto de la implementaci贸n Plutus de Marlowe como del contrato Marlowe espec铆fico que se est茅 ejecutando. Aunque al principio del perfil redujo la monta帽a a una peque帽a colina, cre贸 una sobrecarga adicional en partes posteriores del perfil. En general, asData empuja la carga de un c谩lculo m谩s cerca de donde se utiliza un valor, en un sentido burdo haciendo la evaluaci贸n menos estricta y m谩s perezosa.

Uso de memoria antes de la optimizaci贸n|3840x1487](upload://6PF0AVB1dNP9sZj8leNL50AOHKK.png) Uso de memoria despu茅s de la optimizaci贸n|3840x1695](upload://vuZcTLgq6NpBM3HL2KzA6vGxR79.png)

Los contratos m谩s grandes con m谩s acciones posibles tienden a beneficiarse m谩s de esta optimizaci贸n, y algunas transacciones se benefician muy poco de ella. Normalmente, la reducci贸n de costes oscila entre el 10% y el 50%.

Comprobar la validez de una transacci贸n Marlowe en la que intervienen varios activos nativos de Cardano implica muchas comparaciones de identificadores y cantidades de activos nativos para garantizar la seguridad y el correcto funcionamiento del smart contract. Acumulativamente, estas comparaciones, que corresponden a la segunda y a la 煤ltima de las 鈥渃olinas鈥 (2a y 2b) en los gr谩ficos de llamas anteriores, pueden ser bastante costosas. Muchos contratos de Marlowe pagan un solo activo a la vez, por lo que esta optimizaci贸n sustituye algunas de las comprobaciones exhaustivas por otras m谩s sencillas en esos casos de un solo activo. Una revisi贸n directa del validador sem谩ntico de Marlowe aprovecha este caso especial realizando la comparaci贸n m谩s barata en las situaciones en las que se aplica. Para los casos de referencia, esto se traduce en una reducci贸n media de costes de alrededor del 4%, pero hay bastantes de los casos de referencia en los que la reducci贸n es el doble.

Las eficiencias computacionales enumeradas anteriormente tambi茅n consiguen reducir el tama帽o del validador Marlowe de aproximadamente 12 kilobytes a 11 kilobytes. Eso reduce la cantidad de ada almacenada en el UTXO de referencia que contiene la versi贸n en cadena del validador Marlowe.

Impacto global

Combinadas, las 煤ltimas verificaciones del validador Marlowe mejoran su rendimiento en el peor de los casos en un 15% y su rendimiento t铆pico en un 50% sin sacrificar la seguridad. Los gr谩ficos siguientes muestran (en escala logar铆tmica) el coste de memoria antes (eje horizontal) y despu茅s (eje vertical) de las revisiones, en relaci贸n con los l铆mites del protocolo, para las cien transacciones Marlowe de referencia. Las l铆neas vertical y horizontal en 1,0 muestran los l铆mites del protocolo. Las transacciones por encima o a la derecha, respectivamente, de estas l铆neas son demasiado costosas para ejecutarse en la red principal. Dado que todos los puntos caen por debajo de la l铆nea diagonal, todas las transacciones son m谩s baratas con el validador revisado. Los puntos cercanos a la l铆nea diagonal representan transacciones con mejoras relativamente menores, mientras que los puntos situados m谩s a la derecha de la l铆nea diagonal representan mejoras dr谩sticas. Los puntos a la derecha de la l铆nea vertical roja representan transacciones antes imposibles, pero que ahora son posibles dentro de los l铆mites del ledger. El nuevo validador de Marlowe est谩 disponible en la versi贸n 1.0.0 de Marlowe Runtime.

WebsiteTwitterGitHubDiscordCardano ForumCardano Stack Exchange


Traducci贸n al espa帽ol de 鈥淟ower Marlowe execution costs鈥, escrito por Brian Bush, Ingeniero de software de Marlowe, en enero 25 de 2024.


Notas del traductor

  • Corchetes del traductor.
  • Asuma que todo enlace apunta a un contenido en idioma :uk: ingl茅s.
  • :es: Indica que el enlace apunta a un contenido en idioma espa帽ol.

Considere suscribirse a las siguientes fuentes de informaci贸n en espa帽ol de Cardano seg煤n su inter茅s.