Plutus: Sobre el mecanismo de colateral

 

Alonzo ha inaugurado la era de los contratos inteligentes en Cardano. El mecanismo de colateral es una característica importante que ha sido diseñada para asegurar la ejecución exitosa de los contratos inteligentes.

Basándose en las garantías proporcionadas por el diseño determinista del libro mayor Alonzo, Cardano implementa un esquema de validación en dos fases. La razón principal para introducir la validación en dos fases es limitar la cantidad de trabajo de validación no compensado por los nodos. Cada fase tiene un propósito para lograr este objetivo:

  • En la primera fase se comprueba si la transacción está construida correctamente y puede pagar su tasa de tramitación
  • La segunda fase ejecuta los scripts incluidos en la transacción

Si la transacción es fase-1 válida, se ejecutan los scripts de la fase-2. Si la fase-1 falla, no se ejecuta ningún script y la transacción se descarta inmediatamente.

El colateral se utiliza para garantizar que los nodos sean compensados por su trabajo en caso de que la validación de la fase-2 falle. Por lo tanto, la garantía es el aval monetario que un usuario da para asegurar que el contrato ha sido diseñado cuidadosamente y probado a fondo. El importe de la garantía se especifica en el momento de construir la transacción. No directamente, sino añadiendo entradas de garantía a la transacción. El saldo total en los UTXOs correspondiente a estas entradas especialmente marcadas es el importe de la garantía de la transacción. Si el usuario cumple las condiciones de la garantía, y se ejecuta un contrato, la garantía está a salvo.

 

El escenario

Sin colateral, no se cobra al usuario si un contrato inteligente falla. Sin embargo, en el momento en que la transacción falla, la red ya ha incurrido en algunos costes para iniciar y validar la transacción. Esto significa que un actor malintencionado podría inundar la red con transacciones no válidas, negando el servicio a otros usuarios con poco coste.

 

La solución

Cuando un usuario inicia una transacción, compromete suficiente ada para cubrir su coste de ejecución. En Alonzo, las transacciones que llaman y utilizan contratos inteligentes no nativos (conocidos como contratos de fase-2) también necesitan una garantía suficiente para cubrir los costes relacionados con posibles fallos de la transacción. Esta cantidad puede ser pequeña, pero es suficiente para que un ataque de denegación de servicio (DOS) sea prohibitivamente caro.

Las comisiones de colateral sólo se cobran si una transacción no es validada. Si el contrato pasa la validación, se cobran las comisiones de la transacción, pero el colateral no.

 

El razonamiento

Un usuario honesto nunca corre el riesgo de perder su colateral.

La  blockchain Cardano es determinista con respecto a los costes de las transacciones porque estos costes dependen sólo de los valores locales y del estado local. Esto significa que un usuario puede calcular el coste de ejecución (en ada) de una transacción antes de enviarla. Esta característica es diferente de otras blockchains, incluyendo Ethereum, donde otra actividad de la red puede influir en el coste del gas. La cantidad de colateral requerida depende únicamente del coste de ejecución.

La Cardano testnet proporciona un entorno seguro con ada de prueba gratuitos, para que los desarrolladores de aplicaciones distribuidas (DApp) puedan probar a fondo sus contratos inteligentes antes de desplegarlos en la red principal. Si las transacciones tienen éxito en la red de prueba, el desarrollador puede estar perfectamente seguro de que todos los scripts tendrán efectivamente éxito.

Si las condiciones en la cadena han cambiado desde que se construyó la transacción, ésta será rechazada por completo y no se cobrará ninguna comisión. Si falta una firma, por ejemplo, no se cobrará ningún colateral.

 

Detalles técnicos

El término colateral se refiere a la ada total contenida en los UTXOs referenciados por las entradas de colateral. Una operación utiliza entradas de colateral para cubrir sus tasas si falla un script de fase-2.

La especificación formal de Shelley introdujo el concepto de scripts "multifirma". Los scripts de la fase-1, como estos, son capturados en su totalidad por las reglas del libro mayor. Por lo tanto, los costes de ejecución pueden evaluarse fácilmente antes de que sean procesados por la implementación, y cualquier tasa puede calcularse directamente dentro de la implementación de las reglas del libro mayor, basándose en el tamaño de la transacción que incluye el script, por ejemplo.

Por el contrario, los scripts de fase-2 pueden realizar cálculos arbitrarios (y, en principio, Turing-completos). Requerimos que las transacciones que utilizan scripts de fase-2 tengan un presupuesto en términos de un número de ExUnits abstractas. Este presupuesto proporciona un límite cuantitativo sobre el uso de recursos en términos de una serie de métricas específicas, incluyendo el uso de memoria o los pasos de ejecución abstractos. El presupuesto se utiliza como parte del cálculo de la tarifa de la transacción.

Lo anterior está extraído de la especificación formal de la red Alonzo. Para más detalles, lea la especificación del ledger de Cardano para Plutus Core.


Encuentra una copia oficial de este documento aquí:

https://docs.cardano.org/plutus/collateral-mechanism

Más traducciones de Cardano en: https://cardanofortheworld.com/es-es/