Plutus.V2.Ledger.EvaluationContext
Table des matières
📜 Overview
🔧 LANGUAGE PRAGMAS & IMPORTS
🗄️ Core Types
🔖 SerializedScript
🏷️ LedgerPlutusVersion
📦 ProtocolVersion
🛠️ ScriptForExecution
🚨 EvaluationError
🔄 VerboseMode
🏗️ EvaluationContext
⚙️ Core Functions
🤝 Typeclass Instances
📚 Glossary
1 📜 Overview
Plutus.ApiCommon
fournit des définitions et utilitaires partagés pour décoder, valider et évaluer les scripts Plutus Core en fonction des versions spécifiques du protocole Cardano. Il gère :
La gestion des versions du langage Plutus et du protocole Cardano.
La disponibilité conditionnelle des fonctions "built-in".
La désérialisation sûre en termes UPLC.
La configuration de la machine CEK avec les paramètres de cost-model.
L’évaluation de script avec gestion de budget et des logs.
2 🔧 LANGUAGE PRAGMAS & IMPORTS
Pragmas pour :
dérivation automatique,
surcharges de chaînes,
spécialisation stricte des données,
options GHC pour les optimisations du compilateur.
Imports : Modules PlutusCore, gestion des budgets, paramétrisation de la machine, UPLC, CBOR, sérialisation, contrôle monadique, structures de données, affichage pretty, utilitaires.
3 🗄️ Core Types
3.1 🔖 SerializedScript
Encodage opaque on-chain des programmes UPLC.
3.2 🏷️ LedgerPlutusVersion
Permet de distinguer les révisions majeures du langage Plutus sur le ledger (ex : PlutusV1, PlutusV2).
3.3 📦 ProtocolVersion
Version sémantique du protocole Cardano utilisée pour contrôler la disponibilité des built-ins.
Implémente Ord
(ordre lexicographique sur major puis minor) et Pretty
.
3.4 🛠️ ScriptForExecution
Type utilitaire pour la désérialisation CBOR spécialisée en forme NamedDeBruijn
.
3.5 🚨 EvaluationError
Capture les erreurs attendues et internes lors de l’évaluation CEK (ex : exception CEK, erreur de variable libre, erreur de codec, incompatibilité de version, mismatch cost-model).
3.6 🔄 VerboseMode
Active ou désactive les logs lors de l’évaluation (Verbose
ou Quiet
).
3.7 🏗️ EvaluationContext
Contient les paramètres de machine CEK, immédiats et différés, pour le cache des évaluations.
4 ⚙️ Core Functions
builtinsIntroducedIn : Mappe l’introduction de chaque fonction built-in (ex : à Alonzo V1, V2...).
builtinsAvailableIn : Retourne tous les built-ins disponibles jusqu’à une version donnée.
scriptCBORDecoder : Décode un script flat-encodé en terme UPLC NamedDeBruijn, en filtrant les built-ins autorisés.
isScriptWellFormed : Vérifie la désérialisation et la conformité des built-ins via CBOR.
mkTermToEvaluate : Désérialise, vérifie la version, applique les arguments constants, vérifie la portée d’un script.
unliftingModeIn : Choisit le mode de "unlifting" (immédiat ou différé) selon le seuil de version de protocole (>=7.0).
toMachineParameters : Sélectionne les bons paramètres de la machine CEK dans le contexte.
mkMachineParametersFor : Applique les paramètres du cost-model au modèle de coût CEK par défaut pour obtenir des paramètres.
mkEvaluationContext : Construit les paramètres immédiats et différés dans un contexte d’évaluation.
assertWellFormedCostModelParams : Vérifie la conformité des nouveaux paramètres de cost-model avec le modèle par défaut, lève une erreur en cas de problème.
evaluateScriptRestricting : Exécute la CEK sous une contrainte de budget, retourne les logs et le budget restant.
evaluateScriptCounting : Exécute la CEK en mode "counting", retourne les logs et le budget total utilisé.
5 🤝 Typeclass Instances
Ord
pourProtocolVersion
: ordonnancement lexicographique sur major puis minor.Pretty
pourProtocolVersion
etEvaluationError
: affichage lisible (« major.minor », messages d’erreur formatés).
6 📚 Glossary
CPOR : version du protocole Cardano.
CEK : machine d’évaluation pour Plutus Core.
Builtins : fonctions primitives dans Plutus Core (opérations entières, hash, etc.).
NamedDeBruijn : termes UPLC annotés avec des noms fictifs pour l’évaluation.
Unlifting : conversion de données on-chain vers valeurs Haskell (immédiate vs différée).
CostModelParams : paramètres pour ajuster l’estimation des ressources.
ExBudget : type pour les budgets de ressources (mémoire, CPU).
traceError : arrêt d’exécution on-chain avec message d’erreur.
Last updated