Plutus.V2.Ledger.Contexts

Table des matières

  1. 📜 Overview

  2. 🔧 LANGUAGE PRAGMAS & IMPORTS

  3. 🗄️ Data Structures

    • 🍪 TxInInfo

    • 📄 TxInfo

    • 🖋️ ScriptContext

    • 🎯 ScriptPurpose

  4. ⚙️ Core Functions

  5. 🤝 Typeclass Instances

  6. 🏭 On-Chain Derivations

  7. 📚 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 et ScriptContext 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 et makeLift.


2 🔧 LANGUAGE PRAGMAS & IMPORTS

  • NoImplicitPrelude : utilise PlutusTx.Prelude pour l’exécution on-chain.

  • DerivingVia et TemplateHaskell 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 et makeIsDataIndexed 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