Plutus.V2.Ledger.EvaluationContext

Table des matières

  1. 📜 Overview

  2. 🔧 LANGUAGE PRAGMAS & IMPORTS

  3. 🗄️ Core Types

    • 🔖 SerializedScript

    • 🏷️ LedgerPlutusVersion

    • 📦 ProtocolVersion

    • 🛠️ ScriptForExecution

    • 🚨 EvaluationError

    • 🔄 VerboseMode

    • 🏗️ EvaluationContext

  4. ⚙️ Core Functions

  5. 🤝 Typeclass Instances

  6. 📚 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 pour ProtocolVersion : ordonnancement lexicographique sur major puis minor.

  • Pretty pour ProtocolVersion et EvaluationError : 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