Plutus.V1.Ledger.Crypto

Table des matières

  1. 📜 Overview

  2. 🔧 LANGUAGE EXTENSIONS AND IMPORTS

  3. 🗄️ Data Structures

    • 🔑 PubKeyHash (newtype)

  4. 🤝 Typeclass Instances

  5. 🏭 On‑chain Derivations

  6. 📚 Glossary


1 📜 Overview

Le module Plutus.V1.Ledger.Crypto introduit le type PubKeyHash, un wrapper léger autour d’un byte string intégré, utilisé pour identifier les clés publiques on-chain.

Il couvre :

  • Un newtype sans surcoût pour les hachages de clés publiques

  • Des dérivations pour les typeclasses on-chain et off-chain (Eq, Ord, ToData, etc.)

  • IsString et pretty-printing via LedgerBytes

  • Lifting on-chain avec makeLift


2 🔧 LANGUAGE EXTENSIONS AND IMPORTS

Pragmas LANGUAGE :

  • DataKinds, DeriveAnyClass, DeriveGeneric, DerivingVia, OverloadedStrings, TemplateHaskell, TypeApplications

OPTIONS_GHC : évite la suppression des pragmas d’interface.

Imports :

  • NFData et Generic pour l’évaluation profonde et les génériques

  • IsString pour la conversion de littéraux de chaînes via LedgerBytes

  • Modules PlutusTx pour les typeclasses et utilitaires on-chain

  • Prettyprinter pour les instances lisibles


3 🗄️ Data Structures

3.1 🔑 PubKeyHash (newtype)

Champ : getPubKeyHash extrait le BuiltinByteString sous-jacent.

Stratégies de dérivation : sépare stock, anyclass, newtype et via.

Exemple d’utilisation :

let pkh = "aabbcc" :: PubKeyHash  -- via IsString
print pkh                       -- via Pretty (affichage hexadécimal)

4 🤝 Typeclass Instances

  • Eq, Ord (stock) pour l’égalité et l’ordre

  • NFData (anyclass) pour l’évaluation profonde

  • PlutusTx.Eq, PlutusTx.Ord, PlutusTx.ToData, PlutusTx.FromData, PlutusTx.UnsafeFromData (newtype) pour la sérialisation et la comparaison on-chain

  • IsString (via LedgerBytes) pour parser des littéraux hexadécimaux

  • Show, Pretty (via LedgerBytes) pour afficher en texte hexadécimal


5 🏭 On‑chain Derivations

makeLift : génère l’instance Lift permettant d’incorporer des valeurs PubKeyHash dans le code PlutusTx.


6 📚 Glossary

  • PubKeyHash : identifiant haché d’une clé publique pour l’utilisation on-chain

  • BuiltinByteString : représentation Plutus des octets bruts

  • newtype : wrapper Haskell sans surcoût pour un champ unique

  • DerivingVia : permet d’utiliser les instances d’un type existant (LedgerBytes) pour un nouveau type

  • IsString : typeclass pour la conversion à partir de littéraux de chaîne

  • makeLift : fonction Template Haskell pour créer les instances Lift pour l’inclusion on-chain

  • PlutusTx.ToData / FromData : sérialisation on-chain pour BuiltinData

  • NFData : classe pour l’évaluation profonde (forme normale)

  • Pretty : classe pour l’affichage lisible (Prettyprinter)


Last updated