Plutus.V1.Ledger.Contexts
Table des matières
📜 Overview
🔧 LANGUAGE EXTENSIONS AND IMPORTS
🗄️ Data Types
📥 TxInInfo
🎯 ScriptPurpose
📋 TxInfo
📜 ScriptContext
⚙️ Utility Functions
🔍 findOwnInput
🔎 findDatum
🔖 findDatumHash
🔗 findTxInByTxOutRef
🔄 findContinuingOutputs
📥 getContinuingOutputs
✔️ txSignedBy
🔑 pubKeyOutput
🧩 ownHashes
🏷️ ownHash
🔃 fromSymbol
🖋️ scriptOutputsAt
💰 valueLockedBy
💳 pubKeyOutputsAt
🏦 valuePaidTo
🔥 valueSpent
🏭 valueProduced
💱 ownCurrencySymbol
⚔️ spendsOutput
🤝 Typeclass Instances
📚 Glossary
1 📜 Overview
Le module Plutus.V1.Ledger.Contexts
définit les types principaux et les fonctions d’assistance pour accéder au contexte de transaction dans les validateurs Plutus :
Types de données :
TxInInfo
,ScriptPurpose
,TxInfo
,ScriptContext
capturent les entrées, sorties et le but des transactions en attente.Fonctions utilitaires pour inspecter et interroger les éléments de la transaction courante (
findDatum
,valuePaidTo
, etc.).Instances de typeclass pour l’égalité et le pretty-printing, toutes annotées
INLINABLE
ou avec des pragmas de compilation pour l’utilisation on-chain.
Ce tutoriel détaille les pragmas du langage/imports, chaque type de données (champs, constructeurs), les fonctions utilitaires (entrées, traitement, sorties), puis conclut par un glossaire.
2 🔧 LANGUAGE EXTENSIONS AND IMPORTS
De nombreuses pragmas LANGUAGE pour prendre en charge les génériques, les stratégies de dérivation et les exigences on-chain.
Les options OPTIONS_GHC contrôlent l’inlining et la spécialisation des interfaces.
Imports depuis PlutusTx et d’autres modules du ledger (Address, Crypto, Tx, Value).
3 🗄️ Data Types
3.1 📥 TxInInfo
Champs :
txInInfoOutRef
: référence vers la sortie dépenséetxInInfoResolved
: la sortie complète (TxOut
) consommée
Instances : Égalité personnalisée et pretty-printing définis ci-dessous.
3.2 🎯 ScriptPurpose
Constructeurs : indique la raison de l’exécution du script :
Minting : forgeage de tokens
Spending : consommation d’une sortie
Rewarding : distribution de récompenses de staking
Certifying : gestion de certificats
L’égalité personnalisée permet le pattern matching on-chain.
3.3 📋 TxInfo
Agrège toutes les parties pertinentes de la transaction en attente, telles que vues par un validateur.
Champs principaux :
Entrées (
txInfoInputs
), sorties (txInfoOutputs
)Frais, mint, certificats, retraits, plage de validité
Signataires, données (
Datum
/DatumHash
), identifiant (TxId
)
Égalité personnalisée et pretty-printing définis ci-dessous.
3.4 📜 ScriptContext
Enveloppe le contexte complet passé à un validateur : informations de transaction + but.
Égalité personnalisée et pretty-printing ci-dessous.
4 ⚙️ Utility Functions
Chaque fonction est annotée {-# INLINABLE #-}
pour la compilation on-chain.
4.1 🔍 findOwnInput
Trouve le TxInInfo
correspondant à la sortie en cours de validation lorsque purpose = Spending
.
Exemple : retourne Just
si une entrée correspond, sinon Nothing
.
4.2 🔎 findDatum
Recherche dans txInfoData
par hash, retourne le Datum
associé.
4.3 🔖 findDatumHash
Inverse de findDatum
: retrouve le hash pour un Datum
donné dans la transaction.
4.4 🔗 findTxInByTxOutRef
Cherche une entrée (TxInInfo
) par sa clé TxOutRef
dans txInfoInputs
.
4.5 🔄 findContinuingOutputs
Retourne les indices des sorties qui payent vers la même adresse de script en cours de validation.
Erreur (traceError
) si aucune entrée correspondante n’est trouvée.
4.6 📥 getContinuingOutputs
Filtre txInfoOutputs
pour ne garder que celles avec la même adresse de script que l’entrée.
4.7 ✔️ txSignedBy
Vérifie si une clé publique donnée a signé la transaction.
4.8 🔑 pubKeyOutput
Extrait le PubKeyHash
verrouillant une sortie (TxOut
), si présent.
4.9 🧩 ownHashes
Obtient le hash du script de validation et le hash de datum pour l’entrée en validation.
4.10 🏷️ ownHash
Extrait uniquement le hash du validateur via fst . ownHashes
.
4.11 🔃 fromSymbol
Convertit un CurrencySymbol
en ValidatorHash
.
4.12 🖋️ scriptOutputsAt
Rassemble les sorties qui paient vers une adresse de script donnée.
4.13 💰 valueLockedBy
Somme la valeur (Value
) de toutes les sorties de script pour un hash donné.
4.14 💳 pubKeyOutputsAt
Liste les valeurs envoyées à une adresse de clé publique.
4.15 🏦 valuePaidTo
Agrège toutes les sorties vers une clé publique en une valeur totale.
4.16 🔥 valueSpent
Somme la valeur des entrées consommées par la transaction.
4.17 🏭 valueProduced
Somme la valeur des sorties créées par la transaction.
4.18 💱 ownCurrencySymbol
Retourne le symbole de la monnaie en cours de forgeage lorsque purpose = Minting
.
4.19 ⚔️ spendsOutput
Vérifie si la transaction dépense une sortie spécifique par ID et index.
5 🤝 Typeclass Instances
Instance d’égalité personnalisée pour
TxInInfo
,ScriptPurpose
,TxInfo
,ScriptContext
adaptée à chaque structure.Instance
Pretty
pour chaque type, affichage lisible pour le debug.Génération automatique d’instances pour le lifting et la sérialisation on-chain via Template Haskell (
makeLift
,makeIsDataIndexed
).
6 📚 Glossary
TxInInfo : Entrée d’une transaction en attente (référence + sortie résolue).
ScriptPurpose : Raison d’exécution d’un validateur (minting, spending, rewarding, certifying).
TxInfo : Résumé des entrées, sorties, frais, mint, certificats, etc. de la transaction.
ScriptContext : Contexte complet passé au validateur :
TxInfo
+ScriptPurpose
.TxOutRef : Pointeur vers une sortie de transaction (
TxId
+ index).Datum / DatumHash : Données off-chain associées à des sorties.
CurrencySymbol : Identifiant pour un token minté.
INLINABLE / INLINE : Pragmas pour contrôler la compilation on-chain et la spécialisation.
makeLift / makeIsDataIndexed : Template Haskell pour la sérialisation des données on-chain.
Last updated