Le module Plutus.V1.Ledger.Scripts fournit les abstractions et utilitaires de base pour travailler avec des scripts on-chain dans Plutus :
Script : représentation opaque d’un programme UPLC.
Wrappers : Validator, MintingPolicy, StakeValidator pour des rôles spécifiques de script.
Wrappers de données : Datum, Redeemer, Context pour les entrées des scripts.
Types de hash : ScriptHash, ValidatorHash, DatumHash, etc., pour l’identification des scripts.
Évaluation : fonctions pour appliquer et exécuter des scripts, avec extraction des budgets et des logs.
Utilitaires : scriptSize, fromCompiledCode, applyArguments et les exemples unitDatum/unitRedeemer.
2 🔧 LANGUAGE PRAGMAS AND IMPORTS
Nombreux pragmas pour la génération automatique, Template Haskell, et la désactivation de certains warnings.
Imports pour la sérialisation, ByteString, les builtins, et les modules UPLC non typés.
3 🗄️ Core Types
3.1 🖥️ Script
Wrapper opaque autour d’un programme UPLC.
Instances : Generic, NFData, Serialise via Flat.
3.2 📐 Validator, MintingPolicy, StakeValidator
Wrappers spécifiques à un rôle, ajoutant l’égalité, l’ordre, la sérialisation, et Pretty via LedgerBytes.
3.3 📊 Datum, Redeemer, Context
Enveloppent le type BuiltinData pour les entrées de scripts et le contexte blockchain.
3.4 🔑 Hash Types
ScriptHash, ValidatorHash, etc. : wrappers de bytestring pour l’identification des scripts.
Littéraux de chaînes via IsString, égalité, ordre, conversions de données, affichage Pretty via LedgerBytes.
3.5 ⚙️ ScriptError
Capture les erreurs utilisateur attendues et les exceptions internes à l’évaluation.
4 ⚙️ Key Functions
4.1 📏 scriptSize
Retourne la taille du programme sérialisé.
4.2 🔄 fromCompiledCode
Convertit du code Plutus Tx compilé GHC en Script sans nom.
4.3 🏗️ applyArguments
Applique une liste d’arguments Data à un programme UPLC.
4.4 🚀 evaluateScript
Exécute l’évaluateur CEK, retourne le budget de ressources et les logs, ou lève une erreur ScriptError.