馃嚜馃嚫 Plutus: Sobre el mecanismo de colateral

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 鈥渕ultifirma鈥. 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: Home