Plutus.V2.Ledger.Contexts
Table des matières
📜 Overview
🔧 LANGUAGE PRAGMAS & IMPORTS
🗄️ Data Structures
🍪 TxInInfo
📄 TxInfo
🖋️ ScriptContext
🎯 ScriptPurpose
⚙️ Core Functions
🤝 Typeclass Instances
🏭 On-Chain Derivations
📚 Glossary
1 📜 Overview
Le module Plutus.V2.Ledger.Contexts
définit la vue on-chain des transactions en attente pour les scripts Plutus V2. Il fournit :
Structures de données :
TxInInfo
,TxInfo
etScriptContext
qui capturent les entrées, sorties, redeemers et les métadonnées de transaction.ScriptPurpose
: tags qui indiquent pourquoi un script s’exécute (ex : spending, minting…).Fonctions : pour localiser l’entrée courante, récupérer des datums, calculer les sorties continues et résumer les valeurs.
Instances : égalité on-chain, Pretty, et sérialisation via
makeIsDataIndexed
etmakeLift
.
2 🔧 LANGUAGE PRAGMAS & IMPORTS
NoImplicitPrelude
: utilisePlutusTx.Prelude
pour l’exécution on-chain.DerivingVia
etTemplateHaskell
pour les instances.Imports des modules cœur V1 pour la réutilisation des types et fonctions.
3 🗄️ Data Structures
3.1 🍪 TxInInfo
Chaque entrée associe un pointeur à la donnée résolue TxOut
.
3.2 📄 TxInfo
Vue complète de la transaction disponible pour les validateurs, incluant :
Entrées dépensées et de référence,
Sorties produites,
Frais,
Valeur mintée,
Certificats,
Retraits,
Période de validité,
Signataires,
Redeemers,
Datums attachés,
Hash de transaction.
Nouveauté V2 : ajoute txInfoReferenceInputs
et txInfoRedeemers
.
3.3 🖋️ ScriptContext
Regroupe la vue complète de la transaction (TxInfo
) et la raison d’appel du script (ScriptPurpose
).
3.4 🎯 ScriptPurpose
Indique le rôle du script (minting, spending, etc.) pour l’identification de l’entrée propre.
4 ⚙️ Core Functions
findOwnInput : Localise le
TxInInfo
correspondant à la référence de dépense actuelle.findDatum / findDatumHash : Recherche un datum via son hash, ou retrouve le hash à partir du datum.
findTxInByTxOutRef : Donne les informations d’entrée à partir de sa référence.
findContinuingOutputs / getContinuingOutputs : Indices ou valeurs
TxOut
qui retournent à la même adresse script.Erreur (traceError) si aucune entrée propre n’est trouvée.
txSignedBy : Vérifie si une clé publique est parmi les signataires.
ownHashes / ownHash : Extrait le hash du validateur et le datum associé à l’entrée courante.
ownHash
: version simplifiée (hash seul).
scriptOutputsAt : Filtre les sorties payant à un validateur donné.
valueLockedBy / valuePaidTo : Somme les valeurs à une adresse script ou clé publique.
valueSpent / valueProduced : Total des valeurs consommées ou produites par la transaction.
spendsOutput : Vérifie si une entrée correspond à une paire (TxId, index).
5 🤝 Typeclass Instances
Eq pour
TxInInfo
,TxInfo
,ScriptContext
: En V2,TxInfo
inclut une implémentation personnalisée INLINABLE (==) pour comparer tous les champs, y compris les maps.Pretty pour le debug lisible.
6 🏭 On-Chain Derivations
makeLift
etmakeIsDataIndexed
fournissent les instances on-chain Lift et IsData pour la sérialisation.
7 📚 Glossary
TxInInfo : entrée associant une référence à une sortie résolue.
TxInfo : vue complète de la transaction pour le validateur (inclut redeemers, entrées de référence…).
ScriptContext : encapsule
TxInfo
+ScriptPurpose
pour le script courant.ScriptPurpose : code raison (ex : Spending txOutRef, Minting cs).
OutputDatum : datum attaché à un
TxOut
(inline ou via hash).Continuing outputs : nouveaux UTXO à la même adresse script que celle dépensée.
traceError : provoque l’arrêt d’exécution en cas d’invariant non respecté.
makeLift / makeIsDataIndexed : Template Haskell pour la conversion et la sérialisation on-chain.
Last updated