馃嚜馃嚫 Plutus: Scripts de Plutus

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 鈥淏ob 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:

Plutus_scripts1

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: Home