Plutus: Scripts de Plutus
Cardano utiliza scripts para validar acciones. Estos scripts, que son bloques 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.
¿Qué son los scripts?
Un script es un programa que decide si la transacción que gasta la salida está autorizada o no a hacerlo. Un script de este tipo se llama script validador, porque valida si el gasto está permitido.
Un simple script validador comprobaría si la transacción de gasto fue firmada por una clave en particular - esto replicaría exactamente el comportamiento de las salidas simples pay-to-pubkey. Sin embargo, con un poco de extensión cuidadosa, podemos usar scripts para expresar una lógica útil en la cadena.
El modelo EUTXO funciona de la siguiente manera: los scripts de validación reciben tres argumentos:
- Datum: este es un pedazo de datos adjuntos a la salida que el script está bloqueando (estrictamente, una vez más, sólo el hash está presente). Esto se utiliza típicamente para llevar estado.
- Redeemer: es un dato que se adjunta a la entrada del gasto. Normalmente se utiliza para proporcionar una entrada al script del gastador.
- Context: es un dato que representa información sobre la transacción de gasto. Se utiliza para hacer afirmaciones sobre la forma en que se envía la salida (como "Bob lo firmó").
Ejemplo intuitivo
Por ejemplo, un niño quiere subir a una noria, pero antes de subir debe ser más alto que la señal de seguridad.
Podríamos expresar esa idea en pseudocódigo, como:
En este ejemplo se aplica lo siguiente:
- El datum es la información sobre esta transacción: michael.height.
- El context es el estado del mundo, en ese momento, es decir: ferrisWheel.minimumHeight.
- El reedemer, es la acción a realizar: getOnFerrisWheel()
El script validador es la función que utiliza toda esa información: isTallEnough
Ejemplo Defi
Veamos ahora un ejemplo del ámbito DeFi.
Podríamos implementar un intercambio atómico, de la siguiente manera:
- El datum contiene las claves de las dos partes en el intercambio, y una descripción de lo que están intercambiando
- El redeemer no se utiliza.
- El context contiene una representación de la transacción.
La lógica del script validador es la siguiente: ¿la transacción realiza un pago de la segunda parte a la primera, que contiene el valor que se supone que deben enviar? Si es así, entonces pueden gastar esta salida y enviarla donde quieran (o podríamos insistir en que la envíen a su clave, pero también podríamos dejar que hagan lo que quieran con ella).
Ejemplos de código
Puedes encontrar ejemplos reales de código de scripts validadores en cada contrato inteligente, por ejemplo:
Parámetros del modelo de costes
El modelo de costes para los scripts de Plutus Core tiene una serie de parámetros, que forman parte de los parámetros del protocolo de Cardano. Los desarrolladores pueden ajustar esos parámetros individualmente.
Para más detalles, consulta lo siguiente:
Encuentra una copia oficial de este documento aquí:
https://docs.cardano.org/plutus/Plutus-validator-scripts
Más traducciones de Cardano en: https://cardanofortheworld.com/es-es/