馃嚜馃嚫 La concurrencia y todo lo dem谩s: Los contratos inteligentes de Cardano y el modelo eUTXO

:cuba: :es: Traducci贸n de Concurrency and all that: Cardano smart contracts and the eUTXO model publicado en el blog de IOG.

El modelo eUTXO de Cardano proporciona un entorno seguro y vers谩til para procesar m煤ltiples operaciones sin fallos del sistema

image

Cardano es una blockchain basada en UTXO, que utiliza un paradigma de programaci贸n para aplicaciones descentralizadas (DApps) diferente de otras blockchains basadas en cuentas como Ethereum. La especificaci贸n que utiliza Cardano es el modelo Extended Unspent Transaction Output (eUTXO) introducido por la actualizaci贸n de Alonzo. El modelo eUTXO ofrece una mayor seguridad que permite la predictibilidad de los costes de ejecuci贸n de los contratos inteligentes (sin sorpresas desagradables) y, como resultado, ofrece un enfoque diferente de la paralelizaci贸n.

eUTXO hereda el dise帽o por ramas del modelo UTXO (Bitcoin), donde una rama es por definici贸n una secuencia de transacciones que requiere una secuencia de validaciones. Para dividir la l贸gica en diferentes ramas y aplicar m谩s paralelismo, es esencial construir DApps y otras soluciones utilizando m煤ltiples UTXOs. Esto proporciona beneficios en t茅rminos de escalado, al igual que el desarrollo de los servicios de Bitcoin requiere dividir una billetera en sub-billeteras.

Las DApps construidas sobre Cardano no est谩n limitadas a una transacci贸n por bloque. De hecho, el presupuesto del bloque (es decir, el n煤mero m谩ximo de transacciones que puede contener) permite la ejecuci贸n de cientos de transacciones simples y de varios scripts complejos. Sin embargo, el modelo eUTXO permite gastar la salida de una transacci贸n s贸lo una vez. Dado que los usuarios pueden enfrentarse a problemas de contenci贸n al intentar acceder al mismo UTXO, es importante utilizar muchos UTXO diferentes. Tenga en cuenta que esto es importante a menos que un dise帽o de este tipo se beneficie de un ordenamiento estricto de los clientes. Los conjuntos de UTXOs pueden utilizarse para implementar patrones de dise帽o que incluyan sem谩foros. Adem谩s, diferentes usuarios pueden interactuar con un contrato inteligente sin ning煤n fallo de concurrencia. Esto se debe a que un contrato inteligente puede manejar un n煤mero de UTXOs diferentes que conforman su estado actual y metadatos off-chain que permiten interpretar esos UTXOs.

Hacer las cosas en paralelo

Las blockchain logran la inmutabilidad y la transparencia del procesamiento de las transacciones de manera diferente. Cualquier sistema de blockchain debe tener un conjunto de propiedades para satisfacer la necesidad cada vez mayor de procesar las operaciones de forma segura y a la vez r谩pida, llamadas:

  • Procesamiento: el n煤mero de operaciones que un sistema puede realizar en un periodo de tiempo determinado. Esto se refiere, por ejemplo, al n煤mero de transacciones o contratos inteligentes procesados en un segundo.

  • Rendimiento: la rapidez con la que funciona el sistema. El rendimiento mide el tiempo de ejecuci贸n de las transacciones o de los contratos inteligentes.

  • Escalabilidad - la capacidad del sistema para realizar m煤ltiples operaciones sin sobrecargar la red o influir en las propiedades de rendimiento.

Aumentando el paralelismo, podemos en 煤ltima instancia mejorar el rendimiento del sistema manteniendo el rendimiento de las operaciones individuales, pero este tipo de escalabilidad siempre estar谩 limitada por el grado de contenci贸n.

En cuanto a la escalabilidad, tambi茅n distinguimos propiedades del sistema como la concurrencia, el paralelismo y la contenci贸n. La concurrencia es esencial para permitir que varios actores progresen en una determinada tarea sin interferir entre s铆. El paralelismo permite ese progreso al mismo tiempo sin ninguna interferencia. La contenci贸n se produce cuando esos m煤ltiples actores interfieren entre s铆 mientras trabajan de forma concurrente o paralela.

Entendiendo la concurrencia

La concurrencia puede o no mejorar el rendimiento, el procesamiento, o la capacidad de respuesta de un sistema. La cantidad de concurrencia limita el n煤mero m谩ximo de operaciones simult谩neas que se pueden realizar.

Para obtener mejoras reales de rendimiento en una blockchain basada en UTXO, los procesadores u otros actores deben ser capaces de realizar m煤ltiples acciones simult谩neamente. Cuanto mayor sea el nivel de concurrencia, mayor ser谩 el m谩ximo paralelismo posible. Este enfoque se traduce entonces en una mejora del rendimiento y de la producci贸n. Tambi茅n proporciona ventajas significativas sobre los sistemas basados en cuentas (como Ethereum).

El despliegue de DApps en las blockchain UTXO es diferente

El enfoque de Cardano para el despliegue de DApps es diferente y por lo tanto requiere una curva de aprendizaje y un enfoque diferente. Esto es como trabajar con diferentes lenguajes de programaci贸n: hay un objetivo - desplegar una soluci贸n, pero, muchos lenguajes de programaci贸n a utilizar para este prop贸sito.

Maximizar la concurrencia es una habilidad que hay que aprender: los desarrolladores tienen que escribir el c贸digo de manera que se restrinjan mucho las oportunidades de contenci贸n (por ejemplo, evitando los estados compartidos y las dependencias accidentales). A continuaci贸n, el sistema debe traducir esta concurrencia en paralelismo. Algunos desarrolladores ya han identificado formas de abordar esto, mientras que otros todav铆a est谩n desarrollando soluciones. Trasplantar simplemente las lecciones aprendidas en otra blockchain no funcionar谩; aunque la curva de aprendizaje es un poco m谩s pronunciada, los resultados hacen que merezca la pena.

En cualquier caso, es importante entender que para desplegar una DApp escalable en Cardano, un desarrollador no puede limitarse a utilizar un contrato adaptado de Ethereum. Cardano se basa en el modelo UTXO; no est谩 basado en cuentas. Y esto significa que un 煤nico estado en la cadena no cumplir谩 con la propiedad de concurrencia en Cardano. En su lugar, las DApps deben dividir su estado on-chain entre muchos UTXOs. Esto aumentar谩 la concurrencia en su aplicaci贸n, permitiendo as铆 un mayor rendimiento.

Nuestro equipo de educaci贸n ha compartido previamente una implementaci贸n simple de DEX de estilo AMM en el curso Plutus Pioneer. Si bien esto es 煤til para fines de ense帽anza, esta arquitectura no soportar铆a directamente una DEX comercial donde se requiere un enfoque de libro de 贸rdenes y concurrencia adicional. Un desarrollador que quiera desplegar en la red principal de Cardano tendr铆a que mejorar la escalabilidad de la arquitectura en consecuencia.

Propusimos una soluci贸n en nuestro reciente documento sobre la stablecoin Djed. Para la implementaci贸n de Djed en Cardano, se favorece un patr贸n de modelado de libro de 贸rdenes en el que un creador de 贸rdenes es responsable de enviar cualquier orden de acu帽aci贸n o quema al contrato inteligente de stablecoin, con una tarifa de incentivo adicional impuesta a cada posible comprador o vendedor de stablecoins y monedas de reserva. Tambi茅n se utilizan varios mecanismos de seguridad -mediante el uso extensivo de tokens no fungibles (NFT)- para garantizar la unicidad de las transacciones, la correcci贸n de cada orden enviada, y para evitar ataques frontales. Los tokens NFT tambi茅n se utilizan para informar de las 贸rdenes de acu帽aci贸n y quema exitosas o fallidas. En breve publicaremos un art铆culo m谩s completo sobre este tema.

Para aprender m谩s sobre la escalabilidad, puedes leer c贸mo dise帽ar una aplicaci贸n Plutus escalable y descubrir c贸mo organizar DApps en Cardano utilizando patrones de libro de 贸rdenes. Los desarrolladores tambi茅n han presentado enfoques concurrentes y deterministas para la arquitectura de contratos inteligentes eUTXO que podr铆an considerarse como una generalizaci贸n de los pasos de la m谩quina de estado paralela introducidos en el documento Hydra para realizar m谩quinas de estado de varios pasos. Otros desarrolladores y miembros de la comunidad tambi茅n han publicado documentos, v铆deos, art铆culos e hilos 煤tiles en Twitter que describen sus enfoques. Es una brillante lecci贸n de c贸mo la comunidad seguir谩 desarrollando sus propias soluciones innovadoras, a medida que los enfoques se estandarizan con la madurez de la plataforma.

Avanzando

El evento del hardfork de Alonzo introducir谩 la producci贸n principal de bloques de Plutus 1.0. Este es el comienzo del crecimiento del ecosistema. Aunque todav铆a es pronto, la red de pruebas Alonzo permite a nuestros desarrolladores evaluar las propiedades del sistema y construir DApps escalables por adelantado, preparando su lanzamiento en la red principal. Decenas de proyectos ya han estado trabajando con instancias locales de entornos Plutus. Dado que la red de pruebas p煤blica principal pronto soportar谩 contratos inteligentes, esperamos un aumento significativo de la actividad en las pr贸ximas semanas y en los meses venideros. A finales de este mes, la cumbre de Cardano (25 y 26 de septiembre) mostrar谩 muchos de estos proyectos, adem谩s de proporcionar importantes actualizaciones sobre la hoja de ruta de los contratos inteligentes y la continua evoluci贸n de la tecnol贸gica. Los eventos para desarrolladores, los hackathons y, por supuesto, los resultados del Proyecto Catalyst seguir谩n aportando nuevas herramientas y abstracciones a este ecosistema de desarrolladores en r谩pido crecimiento.

Si eres un desarrollador, aseg煤rate de unirte a nuestra comunidad de Discord y participa en el Proyecto Catalyst si quieres financiar tu proyecto.

Me gustar铆a agradecer a Lars Br眉njes, Jann M眉ller y Manuel Chakravarty, por su aportaci贸n t茅cnica y su apoyo durante la preparaci贸n de este blog.