Plutus: Costes de transacción y determinismo
El enfoque de Cardano para la fijación de precios se basa principalmente en la demanda del mercado sobre la oferta real. Con el reciente lanzamiento de los contratos inteligentes, habrá más de un tipo de demanda compitiendo por la oferta común. Por lo tanto, es crucial considerar tanto los precios relativos como los absolutos. Una forma de hacerlo es inspeccionar los efectos de los precios de los contratos inteligentes, las operaciones con tokens no fungibles (NFT), etc., con respecto a algún valor común - en nuestro caso, el consumo del poder de procesamiento de Cardano.
El diseño del libro mayor de Cardano se centra en la alta garantía, la seguridad y la verificación formal probada. En consonancia con esta estrategia, también es importante garantizar que el procesamiento de las transacciones sea determinista, lo que significa que un usuario puede predecir el impacto y el resultado de una transacción antes de su ejecución real.
La capacidad de garantizar el coste de la ejecución de la transacción y el comportamiento de la misma en el libro mayor antes de su presentación, adquiere mayor relevancia con la introducción del soporte de contratos inteligentes. Esta característica es diferente de otras blockchains, incluyendo Ethereum, donde otra actividad de la red puede influir en el coste del gas. Esta capacidad también está garantizada por la naturaleza determinista de Cardano y los scripts de Plutus.
El cálculo del valor mínimo de ada para procesar una transacción en Alonzo es diferente a los cálculos anteriores de Mary. Ya no hay un parámetro de protocolo minUTxOValue en Alonzo, ya que fue obsoleto al final de la era Mary. Sin embargo, el requisito de que cada UTXO debe contener una cantidad de ada que depende del tamaño de la entrada se sigue aplicando en Alonzo. La cantidad mínima de ada dependiente del tamaño en un UTXO se denomina valor min-ada, y ahora se calcula utilizando el parámetro de Alonzo coinsPerUTxOWord. Para saber más, lee los detalles del Alonzo min-ada-value calculation.
Determinismo
Determinismo, en el contexto del procesamiento de transacciones y scripts, es un sinónimo de previsibilidad. Esto significa que un usuario puede predecir localmente (fuera de la cadena) cómo afectará su transacción al estado del libro mayor en la cadena, sin encontrarse con lo siguiente:
- resultados o fallos inesperados en la validación de scripts
- tarifas inesperadas
- actualizaciones inesperadas del libro mayor o del estado del script
Validación
Un aspecto importante del procesamiento de una transacción es la validación de las acciones que realiza. Una transacción realiza una acción cuando contiene datos en el campo específico de esa acción. Por ejemplo, una transacción está gastando UTXO U cuando contiene una referencia a U en su campo de entrada, y está acuñando un token X cuando su campo de acuñación contiene X.
Cardano utiliza scripts para validar acciones. Estos scripts, que son trozos de código, implementan funciones puras con salidas True o False. La validación de scripts es el proceso de invocar el intérprete de scripts para ejecutar un determinado script con los argumentos adecuados.
La validación de scripts puede realizarse para las siguientes acciones:
- Gastar un UTXO asegurado por una dirección de script: el script que se ejecuta es aquel cuyo hash forma la dirección.
- Acuñación de un token: el script que se ejecuta es aquel cuyo hash forma el ID de la política del token que se acuña.
- Retiro de recompensa: la secuencia de comandos que se ejecuta es aquella cuyo hash forma la dirección de staking.
- Aplicar un certificado: la secuencia de comandos que se ejecuta es aquella cuyo hash forma la credencial del autor del certificado.
Además de permitir que el nodo sepa qué script ejecutar, todas las acciones de transacción indican cómo montar los argumentos pasados a ese script. Alonzo introduce un nuevo enfoque para la validación de transacciones en Cardano debido a la implementación de scripts Plutus.
Actualizaciones del libro mayor
Alonzo modifica los datos del libro mayor de la siguiente manera:
- Los scripts de Plutus pueden bloquear los UTXOs.
- Un nuevo componente, añadido al contenido de las partes de salida de los UTXO, permite una funcionalidad similar a la de los scripts. Además de los activos y una dirección, un UTXO bloqueado por los scripts de Plutus también contiene un datum. Un datum es una pieza de datos que puede considerarse como una interpretación del estado del script.
- Hay una serie de nuevos parámetros de protocolo que se utilizan para imponer requisitos de validación adicionales a las transacciones. Entre ellos se encuentran los límites máximos de recursos informáticos que pueden consumir los scripts.
Para soportar los scripts de Plutus, las transacciones se han actualizado de la siguiente manera:
- Para cada una de sus acciones, la transacción lleva ahora un argumento especificado por el usuario, llamado redeemer. Dependiendo del script, un redeemer puede servir para un propósito diferente. Por ejemplo, puede actuar como la puja que el usuario hace en una subasta, o la suposición del usuario en un juego de adivinanzas, entre otras muchas funciones.
- La transacción especifica los presupuestos de ejecución computacional para cada script.
- Para garantizar que una transacción pueda pagar su tasa de ejecución, Alonzo introduce un colateral.
- Las transacciones contienen un hash de integridad, necesario para garantizar que no ha sido comprometido, obsoleto, etc.
El nodo realiza nuevas comprobaciones específicas de Alonzo que aseguran que la transacción se construye correctamente. Por ejemplo, no debe superar el presupuesto máximo de recursos de ejecución. También invoca el intérprete de scripts Plutus para ejecutar los scripts.
El modelo de gas no determinista puede cobrar a los usuarios tasas imprevisiblemente grandes. En los scripts de Cardano, esta fuente de indeterminismo se aborda requiriendo que el presupuesto de recursos en sí mismo, así como la tarifa requerida para cubrir este presupuesto, se incluyan en la transacción. En Alonzo, un usuario puede predecir ambos localmente al construir la transacción. La ejecución de los scripts devuelve necesariamente o bien True o bien False, y no hará un ciclo indefinido. La razón de esto es que cada operación que realiza un script toma una cantidad no nula de recursos, que son rastreados por el intérprete. Si se supera el presupuesto especificado por la transacción, la ejecución del script termina y devuelve False.
Los siguientes puntos clave hacen que los resultados de la validación de scripts y transacciones sean predecibles:
- el intérprete de scripts siempre terminará y devolverá el mismo resultado de validación cuando se aplique a los mismos argumentos.
- una transacción fija necesariamente todos los argumentos que se pasarán al intérprete del script durante la validación.
- una transacción especifica todas las acciones que realiza que requieren la validación del script.
- las firmas obligatorias en una transacción garantizan que ésta no pueda ser alterada por un adversario de manera que haga fallar los scripts.
- la aplicación de una transacción en el modelo de libro mayor EUTXO es determinista.
El fracaso o el éxito de la validación del script afecta a la forma en que se procesa una transacción. Sin embargo, el resultado True o False, así como los cambios en el libro mayor asociados a cualquiera de los dos resultados, son predecibles para una transacción determinada.
Más información:
Encuentra una copia oficial de este documento aquí:
https://docs.cardano.org/plutus/transaction-costs-determinism
Más traducciones de Cardano en: https://cardanofortheworld.com/es-es/