Plutus.V1.Ledger.EvaluationContext
Table des matières
📜 Overview
🔧 LANGUAGE PRAGMAS, OPTIONS, AND IMPORTS
🗄️ Type Synonyms and Data Types
🔤 SerializedScript (type)
📊 LedgerPlutusVersion (data)
🔢 ProtocolVersion (data)
🧪 EvaluationError (data)
🔄 VerboseMode (data)
🛠️ ScriptForExecution (newtype)
🏗️ EvaluationContext (data)
⚙️ Core Functions
🤝 Typeclass Instances
🏭 On-Chain Derivations
📚 Glossary
1 📜 Overview
Cette variante du module Plutus.ApiCommon
ajoute le pragma StrictData
afin de garantir que tous les champs sont stricts, tout en conservant les outils d’évaluation et de sérialisation :
Champs de données stricts pour éviter les thunks liés à la paresse (laziness).
Configure le budget de ticks du simplificateur GHC.
Définit
SerializedScript
, les types de versionnement, les types d’erreur, le logging et le contexte d’évaluation.Fonctions principales pour décoder, vérifier la validité et exécuter des scripts sous contraintes de coûts.
2 🔧 LANGUAGE PRAGMAS, OPTIONS, AND IMPORTS
Pragmas Haskell :
DeriveAnyClass
,OverloadedStrings
,TypeApplications
,StrictDataStrictData
: rend tous les champs des types de données stricts par défaut.
OPTIONS_GHC :
-fsimpl-tick-factor=200
: augmente le budget de ticks du simplificateur.-fno-omit-interface-pragmas
: conserve toutes les pragmas d’interface.
Imports : identiques à la version précédente, couvrant Plutus Core, CBOR, contrôle, et modules utilitaires.
3 🗄️ Type Synonyms and Data Types
3.1 🔤 SerializedScript (type)
Un simple alias de type :
type SerializedScript = ShortByteString
3.2 📊 LedgerPlutusVersion (data)
Type de données représentant la version du ledger pour Plutus :
data LedgerPlutusVersion = PlutusV1 | PlutusV2
deriving stock (Eq, Ord)
3.3 🔢 ProtocolVersion (data)
Version du protocole Cardano :
data ProtocolVersion = ProtocolVersion { pvMajor :: Int, pvMinor :: Int }
deriving stock (Show, Eq)
3.4 🧪 EvaluationError (data)
Type pour modéliser les erreurs à l’évaluation des scripts :
data EvaluationError
= CekError (UPLC.CekEvaluationException NamedDeBruijn DefaultUni DefaultFun)
| DeBruijnError FreeVariableError
| CodecError CBOR.DeserialiseFailure
| IncompatibleVersionError (ScriptPlutus.Version ())
| CostModelParameterMismatch
deriving stock (Show, Eq)
3.5 🔄 VerboseMode (data)
Contrôle du niveau de verbosité lors de l’évaluation :
data VerboseMode = Verbose | Quiet
deriving stock (Eq)
3.6 🛠️ ScriptForExecution (newtype)
Programme UPLC prêt à être exécuté :
newtype ScriptForExecution = ScriptForExecution (UPLC.Program UPLC.NamedDeBruijn DefaultUni DefaultFun ())
3.7 🏗️ EvaluationContext (data)
Contexte d’évaluation contenant deux ensembles de paramètres pour l’unlifting immédiat et différé :
data EvaluationContext = EvaluationContext
{ machineParametersImmediate :: DefaultMachineParameters
, machineParametersDeferred :: DefaultMachineParameters
}
deriving stock Generic
deriving anyclass (NFData, NoThunks)
4 ⚙️ Core Functions
Voir la Section 4 du précédent tutoriel ApiCommon pour le détail du code, des entrées, traitements et sorties. Cette variante est strictement "data-strict", mais les signatures et comportements des fonctions restent inchangés.
5 🤝 Typeclass Instances
Identique à la version précédente :
Ord
pourProtocolVersion
Pretty
pourProtocolVersion
etEvaluationError
Aucune modification au niveau des définitions, si ce n’est la stricte stricte des données.
6 🏭 On-Chain Derivations
Les mêmes appels à makeIsDataIndexed
et makeLift
que précédemment ; non affectés par StrictData
.
7 📚 Glossary
Tous les termes correspondent au glossaire précédent, avec l’ajout de :
StrictData : pragma qui rend tous les champs des types de données stricts, prévenant la création de thunks inattendus.
NoThunks : classe qui assure l’absence de paresse inattendue (laziness) dans les structures de données.
Last updated