Plutus: Comprender el modelo Extended UTXO
Cardano (al igual que Bitcoin) es una blockchain basada en Unspent Transaction Output (UTXO), que utiliza un modelo de contabilidad diferente para su libro mayor de otras blockchains basadas en cuentas como Ethereum. Cardano implementa un innovador modelo de Extended Unspent Transaction Output (EUTXO) model, que es introducido por la actualización de Alonzo para soportar multi-activos y contratos inteligentes.
Visión general del modelo UTXO
En el modelo UTXO, una transacción tiene entradas y salidas, donde las entradas son salidas no gastadas de transacciones anteriores. Los activos se almacenan en el libro mayor en salidas no gastadas, en lugar de en cuentas.
Tan pronto como una salida se utiliza como entrada en una transacción, se gasta y no puede volver a utilizarse. La salida se especifica mediante una dirección (una clave pública o un hash de clave pública) y un valor (que consiste en una cantidad de ada y cualquier cantidad adicional de tokens nativos). La dirección de una salida determina qué transacciones pueden "desbloquear" la salida y utilizarla como entrada. Una transacción debe estar firmada por el propietario de la clave privada correspondiente a la dirección. Piense en una dirección como un "candado" que sólo puede ser "desbloqueado" por la "llave" adecuada: la firma correcta.
Cada una de estas salidas especifica las cantidades de activos almacenados en ella, junto con su dirección. Las salidas no gastadas son inmutables, por lo que una transacción puede consumir toda la salida, pero no puede alterarla.
En resumen, las transacciones consumen las salidas no gastadas de las transacciones anteriores, y producen nuevas salidas que pueden ser utilizadas como entradas para las transacciones futuras.
Los monederos de los usuarios gestionan estos UTXOs e inician las transacciones que implican los UTXOs propiedad del usuario. Cada nodo de la cadena de bloques mantiene un registro del subconjunto de todos los UTXO en todo momento. Esto se llama el conjunto de UTXO. En términos técnicos, se trata del estado de la cadena, que se almacena en el directorio de datos de cada nodo. Cuando se añade un nuevo bloque a la cadena, el estado de la cadena se actualiza en consecuencia. Este nuevo bloque contiene la lista de las últimas transacciones (incluyendo, por supuesto, un registro de los UTXOs gastados, y los nuevos creados desde que el chainstate fue actualizado por última vez). Cada nodo mantiene una copia exacta del estado de la cadena.
El modelo de extended UTXO de Cardano
El modelo EUTXO amplía el modelo UTXO de dos maneras:
- Generaliza el concepto de "dirección" utilizando la analogía del candado y la llave. En lugar de restringir los bloqueos a las claves públicas y las claves a las firmas, las direcciones en el modelo EUTXO pueden contener una lógica arbitraria en forma de scripts. Por ejemplo, cuando un nodo valida una transacción, el nodo determina si la transacción puede o no utilizar una determinada salida como entrada. La transacción buscará el script proporcionado por la dirección de la salida y ejecutará el script si la transacción puede utilizar la salida como entrada.
- La segunda diferencia entre UTXO y EUTXO es que las salidas pueden llevar datos (casi) arbitrarios además de una dirección y un valor. Esto hace que los scripts sean mucho más potentes al permitirles llevar información de estado.
Además, EUTXO amplía el modelo UTXO permitiendo que las direcciones de salida contengan una lógica compleja para decidir qué transacciones pueden desbloquearlas, y añadiendo datos personalizados a todas las salidas. Al validar una dirección, el script accederá a los datos que lleva la salida, a la transacción que se está validando y a unos datos adicionales llamados redimidores, que la transacción proporciona para cada entrada. Al consultar toda esta información, el script tiene suficiente contexto para dar una respuesta afirmativa o negativa en lo que pueden ser situaciones y casos de uso muy complejos.
EUTXO permite una lógica arbitraria en forma de scripts. Esta lógica arbitraria inspecciona la transacción y los datos para decidir si la transacción puede utilizar una entrada o no.
El modelo UTXO, con su estructura de diagrama, es fundamentalmente diferente del modelo basado en cuentas que utilizan algunas cadenas de bloques con contratos inteligentes. Como resultado, los patrones de diseño que funcionan para DApps en blockchains basados en cuentas no se traducen directamente a Cardano. Se necesitan nuevos patrones de diseño porque la representación subyacente de los datos es diferente.
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 cartera en subcarteras.
Ventajas de EUTXO
El modelo EUTXO de Cardano proporciona un entorno seguro y versátil para procesar múltiples operaciones sin fallos del sistema. Este modelo ofrece una mejor escalabilidad y privacidad, así como una lógica de transacciones más simplificada, ya que cada UTXO solo puede consumirse una vez y en su totalidad, lo que hace que la verificación de las transacciones sea mucho más sencilla.
El modelo EUTXO ofrece ventajas únicas sobre otros modelos de contabilidad. El éxito o el fracaso de la validación de las transacciones depende únicamente de la propia transacción y de sus entradas, y no de nada más en la blockchain. Como consecuencia, la validez de una transacción puede comprobarse fuera de la cadena, antes de que la transacción se envíe a la blockchain. Una transacción puede fallar si alguna otra transacción consume simultáneamente una entrada que la transacción está esperando, pero si todas las entradas están presentes, la transacción está garantizada.
Esto contrasta con un modelo basado en cuentas (como el utilizado por Ethereum), en el que una transacción puede fallar en mitad de la ejecución del script. Esto nunca puede ocurrir en EUTXO.
Debido a la naturaleza "local" de la validación de transacciones, es posible un alto grado de paralelismo. Un nodo podría, en principio, validar transacciones en paralelo, si esas transacciones no intentan consumir la misma entrada. Esto es genial tanto para la eficiencia como para el razonamiento, simplificando el análisis de los posibles resultados, y demostrando que "nada malo" puede ocurrir. Puedes profundizar en la entrada del blog del modelo EUTXO.
Una potente característica del modelo EUTXO es que las comisiones necesarias para una transacción válida pueden predecirse con precisión antes de contabilizarla. Esta es una característica única que no se encuentra en los modelos basados en cuentas. Las blockchains basadas en cuentas, como Ethereum, son indeterministas, lo que significa que no pueden garantizar el efecto de la transacción en la cadena. Esta incertidumbre presenta riesgos de pérdida monetaria, tarifas inesperadamente altas y oportunidades adicionales para el comportamiento adverso.
En resumen, EUTXO ofrece mayor seguridad, previsibilidad del coste de ejecución de los contratos inteligentes (sin sorpresas desagradables) y una paralelización más potente.
Encuentra una copia oficial de este documento aquí:
https://docs.cardano.org/plutus/eutxo-explainer
Más traducciones de Cardano en: https://cardanofortheworld.com/es-es/