Plutus.V1.Ledger.Crypto
Table des matières
📜 Overview
🔧 LANGUAGE EXTENSIONS AND IMPORTS
🗄️ Data Structures
🔑 PubKeyHash (newtype)
🤝 Typeclass Instances
🏭 On‑chain Derivations
📚 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 viaLedgerBytes
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
etGeneric
pour l’évaluation profonde et les génériquesIsString
pour la conversion de littéraux de chaînes viaLedgerBytes
Modules
PlutusTx
pour les typeclasses et utilitaires on-chainPrettyprinter
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’ordreNFData
(anyclass) pour l’évaluation profondePlutusTx.Eq
,PlutusTx.Ord
,PlutusTx.ToData
,PlutusTx.FromData
,PlutusTx.UnsafeFromData
(newtype) pour la sérialisation et la comparaison on-chainIsString
(viaLedgerBytes
) pour parser des littéraux hexadécimauxShow
,Pretty
(viaLedgerBytes
) 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 typeIsString : 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-chainPlutusTx.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