Plutus: Scripts de Plutus
Cardano utilise des scripts pour valider les actions. Ces scripts, qui sont des morceaux de code, mettent en œuvre des fonctions pures avec des sorties Vrai ou Faux. La validation des scripts consiste à invoquer l'interpréteur de script pour exécuter un script donné avec les arguments appropriés.
Que sont les scripts?
Un script est un programme qui décide si la transaction qui dépense la sortie est autorisée ou non à le faire. Un tel script est appelé script validateur, car il valide si la dépense est autorisée.
Un simple script de validation vérifierait si la transaction de dépense a été signée par une clé particulière - cela reproduirait exactement le comportement des sorties simples de pay-to-pubkey. Cependant, avec un peu d'extension prudente, nous pouvons utiliser des scripts pour exprimer une logique utile sur la chaîne.
Le modèle EUTXO fonctionne de la manière suivante : les scripts de validation reçoivent trois arguments:
- Datum: c'est un morceau de données attaché à la sortie que le script verrouille (strictement, encore une fois, seul le hash est présent). Il est généralement utilisé pour transporter l'état.
- Redeemer: Il s'agit d'un élément de données attaché à l'entrée des dépenses. Elle est généralement utilisée pour fournir une entrée au script de la part du dépensier.
- Context: il s'agit d'un élément de données qui représente des informations sur la transaction de dépense. Il est utilisé pour faire des affirmations sur la façon dont la sortie est envoyée (comme "Bob l'a signé").
Exemple intuitif
Par exemple, un enfant veut monter sur une grande roue, mais avant de monter, il doit être plus haut que le panneau de sécurité.
Nous pourrions exprimer cette idée en pseudo-code, par exemple:
Dans cet exemple, les éléments suivants s'appliquent:
- Le datum est l'information sur cette transaction: michael.height.
- Le context est l'état du monde, à ce point, soit: ferrisWheel.minimumHeight.
- Le reedemer, est l'action à effectuer: getOnFerrisWheel()
Le script validateur est la fonction qui utilise toutes ces informations : isTallEnough
Exemple Defi
Examinons maintenant un exemple du domaine DeFi.
Nous pourrions mettre en œuvre un échange atomique, comme suit:
- Le datum contient les clés des deux parties de l'échange et une description de ce qu'elles échangent
- Le redeemer n'est pas utilisé.
- Le context contient une représentation de la transaction.
La logique du script validateur est la suivante : la transaction effectue-t-elle un paiement de la seconde partie à la première partie, contenant la valeur qu'ils sont censés envoyer ? Si c'est le cas, alors ils peuvent dépenser cette sortie et l'envoyer où ils veulent (ou nous pourrions insister pour qu'ils l'envoient à leur clé, mais nous pourrions tout aussi bien les laisser en faire ce qu'ils veulent).
Exemples de code
Vous pouvez trouver des exemples réels de code de scripts validateurs sur chaque contrat intelligent, par exemple:
Paramètres du modèle de coûts
Le modèle de coût des scripts Plutus Core comporte un certain nombre de paramètres, qui font partie des paramètres du protocole Cardano. Les développeurs peuvent régler ces paramètres individuellement.
Pour plus de détails, voir ce qui suit:
Vous trouverez une copie officielle de ce document ici :
https://docs.cardano.org/plutus/Plutus-validator-scripts
Plus de traductions de Cardano à: https://cardanofortheworld.com/fr-fr