Plutus.V1.Ledger.Bytes
Table des matières
📜 Overview
🔧 LANGUAGE EXTENSIONS AND IMPORTS
🗄️ Data Structures and Type Synonyms
🏗️ LedgerBytes (newtype)
⚙️ Functions
🧩 fromHex
📦 bytes
🔙 fromBytes
🔤 encodeByteString
🤝 Typeclass Instances
📚 Glossary
1 📜 Overview
Le module Plutus.V1.Ledger.Bytes
fournit des utilitaires pour travailler avec des séquences d’octets brutes dans du code Plutus, aussi bien on-chain qu’off-chain :
Définit un wrapper
LedgerBytes
autour deBuiltinByteString
, sans coût additionnel.Permet de parser des littéraux hexadécimaux en
LedgerBytes
.Convertit entre
ByteString
Haskell etLedgerBytes
.Encode des octets en texte hexadécimal pour l’affichage.
Dérive des instances pour la sérialisation on-chain et le pretty printing.
Ce tutoriel détaille les pragmas du langage/imports, le newtype, les fonctions principales, les instances, et finit par un glossaire.
2 🔧 LANGUAGE EXTENSIONS AND IMPORTS
Pragmas LANGUAGE :
DataKinds, DeriveAnyClass, DeriveGeneric, DerivingStrategies, DerivingVia, GeneralizedNewtypeDeriving, FlexibleContexts, FlexibleInstances, OverloadedStrings, TemplateHaskell, TypeApplications
L’option -Wno-orphans
supprime les avertissements pour les instances orphelines.
OPTIONS_GHC : aucune alerte additionnelle pour les instances orphelines.
Imports principaux :
ByteString
etBase16
pour les opérations sur les bytes bruts et hexadécimauxData.Word
pour la manipulation deWord8
PlutusTx
,PlutusTx.Lift
, etPlutusTx.Prelude
pour le lifting et la manipulation d’octets on-chainPrettyprinter.Extras
pour dériver Pretty via PrettyShow
3 🗄️ Data Structures and Type Synonyms
3.1 🏗️ LedgerBytes (newtype)
Entrées : encapsule un BuiltinByteString
(type on-chain)
Dérivations :
Eq
,Ord
,Generic
via stocknewtype
deriving pour les conversions on-chainToData
,FromData
, égalité, etc.NFData
pour l’évaluation profondePretty
via PrettyShow générique pour l’affichage
Exemple :
let lb = LedgerBytes (P.toBuiltin someBS)
print lb -- utilise PrettyShow pour afficher en hexadécimal
4 ⚙️ Functions
4.1 🧩 fromHex
Entrées : ByteString
brut représentant des chiffres hexadécimaux
Traitement :
Découpe la chaîne en paires de chiffres hexadécimaux (“nybbles”)
Convertit chaque paire en
Word8
Emballe le tout en ByteString puis en
LedgerBytes
Sortie : Either String LedgerBytes
Exemples :
fromHex "a6b4" == Right (LedgerBytes <builtin 0xa6b4>)
fromHex "zz" == Left "not a hexit: z"
4.2 📦 bytes
Entrée : LedgerBytes
Traitement : désemballe et convertit depuis BuiltinByteString
Sortie : ByteString
Haskell
Exemple :
bytes lb == originalBS
4.3 🔙 fromBytes
Entrées/Sorties : conversion sans coût vers la forme on-chain
Exemple :
fromBytes someBS == LedgerBytes (P.toBuiltin someBS)
4.4 🔤 encodeByteString
Entrée : ByteString brut
Traitement : encode en Base16, puis décode en texte UTF8
Sortie : texte hexadécimal (Text
)
Exemple :
encodeByteString "\x0a\x6b" == "0a6b"
5 🤝 Typeclass Instances
Permet d’interpréter des littéraux de chaînes (ex: "a6b4"
) directement comme des LedgerBytes
.
Rend LedgerBytes
affichable sous forme de chaîne hexadécimale pour le debug et les logs.
Génère une instance Lift
pour l’inclusion on-chain dans du code PlutusTx grâce à Template Haskell.
6 📚 Glossary
BuiltinByteString : représentation Plutus on-chain des octets bruts.
Word8 : entier non signé sur 8 bits.
Hexit : un chiffre hexadécimal (0–9, a–f).
Base16 : encodage hexadécimal pour
ByteString
.unsafeFromEither : utilitaire qui déclenche une erreur si le
Either
estLeft
.PrettyShow : dérive Pretty à partir de l’implémentation Show.
makeLift : Template Haskell pour le lifting de valeurs on-chain.
Last updated