Plutus.V1.Ledger.Scripts

Table des matières

  1. 📜 Overview

  2. 🔧 LANGUAGE PRAGMAS AND IMPORTS

  3. 🗄️ Core Types

    • 🖥️ Script

    • 📐 Validator, MintingPolicy, StakeValidator

    • 📊 Datum, Redeemer, Context

    • 🔑 Hash Types

    • ⚙️ ScriptError

  4. ⚙️ Key Functions

    • 📏 scriptSize

    • 🔄 fromCompiledCode

    • 🏗️ applyArguments

    • 🚀 evaluateScript

    • 🎬 runScript / runMintingPolicyScript / runStakeValidatorScript

    • 🔗 applyValidator / applyMintingPolicyScript / applyStakeValidatorScript

    • 📚 unitDatum, unitRedeemer

  5. 🤝 Typeclass Instances

  6. 🏭 On-Chain Derivations

  7. 📚 Glossary


1 📜 Overview

Le module Plutus.V1.Ledger.Scripts fournit les abstractions et utilitaires de base pour travailler avec des scripts on-chain dans Plutus :

  • Script : représentation opaque d’un programme UPLC.

  • Wrappers : Validator, MintingPolicy, StakeValidator pour des rôles spécifiques de script.

  • Wrappers de données : Datum, Redeemer, Context pour les entrées des scripts.

  • Types de hash : ScriptHash, ValidatorHash, DatumHash, etc., pour l’identification des scripts.

  • Évaluation : fonctions pour appliquer et exécuter des scripts, avec extraction des budgets et des logs.

  • Utilitaires : scriptSize, fromCompiledCode, applyArguments et les exemples unitDatum/unitRedeemer.


2 🔧 LANGUAGE PRAGMAS AND IMPORTS

Nombreux pragmas pour la génération automatique, Template Haskell, et la désactivation de certains warnings.

Imports pour la sérialisation, ByteString, les builtins, et les modules UPLC non typés.


3 🗄️ Core Types

3.1 🖥️ Script

Wrapper opaque autour d’un programme UPLC.

Instances : Generic, NFData, Serialise via Flat.


3.2 📐 Validator, MintingPolicy, StakeValidator

Wrappers spécifiques à un rôle, ajoutant l’égalité, l’ordre, la sérialisation, et Pretty via LedgerBytes.


3.3 📊 Datum, Redeemer, Context

Enveloppent le type BuiltinData pour les entrées de scripts et le contexte blockchain.


3.4 🔑 Hash Types

ScriptHash, ValidatorHash, etc. : wrappers de bytestring pour l’identification des scripts. Littéraux de chaînes via IsString, égalité, ordre, conversions de données, affichage Pretty via LedgerBytes.


3.5 ⚙️ ScriptError

Capture les erreurs utilisateur attendues et les exceptions internes à l’évaluation.


4 ⚙️ Key Functions

4.1 📏 scriptSize

Retourne la taille du programme sérialisé.


4.2 🔄 fromCompiledCode

Convertit du code Plutus Tx compilé GHC en Script sans nom.


4.3 🏗️ applyArguments

Applique une liste d’arguments Data à un programme UPLC.


4.4 🚀 evaluateScript

Exécute l’évaluateur CEK, retourne le budget de ressources et les logs, ou lève une erreur ScriptError.


4.5 🎬 runScript / runMintingPolicyScript / runStakeValidatorScript

Fonctions d’assistance combinant application et évaluation pour les validateurs, minting policies et stake validators.


4.6 🔗 applyValidator / applyMintingPolicyScript / applyStakeValidatorScript

Applique les wrappers de type pour produire un Script avec arguments appliqués.


4.7 📚 unitDatum, unitRedeemer

Valeurs pratiques pour les données ().


5 🤝 Typeclass Instances

  • Eq Script, Ord Script : basées sur les bytes sérialisés pour l’alpha-équivalence.

  • Show Script : affiche <Script> comme placeholder.

  • Pretty via PrettyShow pour les wrappers.

  • Functor pour applyArguments utilisant PLC.mkIterApp.


6 🏭 On-Chain Derivations

Instances makeLift pour permettre l’intégration de ces types dans le code PlutusTx.


7 📚 Glossary

  • UPLC : Untyped Plutus Core.

  • CEK : machine d’évaluation pour Plutus Core.

  • BuiltinData : type de données on-chain.

  • Script : programme on-chain encodé comme UPLC.

  • Validator / MintingPolicy / StakeValidator : rôles typés pour les scripts.

  • Datum / Redeemer / Context : entrées pour les validateurs.

  • ScriptHash / ValidatorHash / ... : identifiants hachés pour les scripts.

  • CompiledCode : code produit par le plugin PlutusTx.

  • SerialiseViaFlat : sérialisation CBOR utilisant Flat.

  • ProgramSize : métrique de consommation de ressources approximative.

  • Alpha-equivalence : égalité des programmes modulo renommage des variables.


Last updated