Plutus.V1.Ledger.Examples

Table des matières

  1. 📜 Overview

  2. 🔧 LANGUAGE PRAGMAS AND IMPORTS

  3. ⚙️ Example Scripts

    • ✅ alwaysSucceedingNAryFunction

    • ❌ alwaysFailingNAryFunction

    • ➕ summingFunction

    • 🧂 saltFunction

  4. 📚 Glossary


1 📜 Overview

Le module Plutus.V1.Ledger.Examples fournit des scripts Plutus Core faits main pour le test :

  • Scripts n-aires qui réussissent toujours ou échouent toujours, paramétrés par le nombre d’arguments lambda.

  • Un script simple d’addition.

  • Un wrapper de "salage" (salt) pour changer le hash d’un script sans modifier son comportement.

Ces fonctions produisent des valeurs SerializedScript adaptées pour des exercices ou des tests de régression, et ne doivent jamais être utilisées en production.


2 🔧 LANGUAGE PRAGMAS AND IMPORTS

Pragmas :

  • TypeApplications : pour les constantes littérales dans summingFunction.

  • StrictData : évite toute paresse inattendue dans les données (peu utilisé ici).

Imports pour la sérialisation CBOR, la conversion des bytes, les nombres naturels et Plutus Core.


3 ⚙️ Example Scripts

3.1 ✅ alwaysSucceedingNAryFunction

Entrées : arité n :: Natural.

Traitement : construit une chaîne de n lambdas dont le corps retourne toujours son premier paramètre, garantissant le succès.

Sortie : un script sérialisé qui réussit toujours lorsqu’il est appliqué à n arguments.

Exemple :

let script1 = alwaysSucceedingNAryFunction 3
-- script1 attend 3 arguments ; retourne toujours le premier.

3.2 ❌ alwaysFailingNAryFunction

Entrées : arité n :: Natural.

Traitement : construit une chaîne de n lambdas dont le corps termine sur une erreur, échouant systématiquement.

Sortie : script sérialisé qui échoue quel que soit l’argument.

Exemple :

let scriptFail = alwaysFailingNAryFunction 1
-- scriptFail x == Error

3.3 ➕ summingFunction

Entrées : aucune.

Traitement : applique la fonction intégrée AddInteger aux constantes 1 et 2.

Sortie : script sérialisé qui calcule 1 + 2.

Exemple :

-- Lors de l’exécution, ce script retourne l’entier 3.

3.4 🧂 saltFunction

Entrées : salt :: Integer et un script existant b0.

Traitement : désérialise b0, l’entoure d’un nouveau lambda acceptant le salt, puis l’applique à la constante salt — le comportement ne change pas mais le hash du script on-chain est différent.

Sortie : nouveau script sérialisé avec un hash on-chain différent mais une logique identique.

Exemple :

let salted = saltFunction 42 summingFunction
-- `salted` agit comme `summingFunction`, mais avec un hash de script différent.

4 📚 Glossary

  • SerializedScript : un ShortByteString représentant un programme Plutus Core.

  • DeBruijn index : représentation de variable sans nom, par profondeur d’entier.

  • LamAbs : abstraction lambda dans UPLC.

  • Error : échec d’exécution à l’exécution dans UPLC.

  • Builtin : fonctions intégrées de Plutus Core (ex : AddInteger).

  • Script hash : hash calculé du script, utilisé pour la référence on-chain.

  • Salt : argument additionnel pour modifier le hash d’un script sans changer la logique.

Last updated