Plutus.V1.Ledger.Address
Table des matières
1 Aperçu
2 Extensions du langage et importations
3 Structures de données
3.1 Exemple de
newtype3.2 Exemple de synonyme de type
3.3 Exemple de type
data3.4 Type de données
Address
4 ⚙️ Fonctions
4.1
pubKeyHashAddress4.2
toPubKeyHash4.3
toValidatorHash4.4
scriptHashAddress4.5
stakingCredential
5 Instances de classes de type
6 Glossaire
1 Aperçu
Ce tutoriel présente un script Address Plutus en Haskell :
Définit un type de données
Addresspersonnalisé avec des credentials de paiement et de staking.Implémente des fonctions utilitaires pour construire et interroger des adresses.
Montre comment dériver les instances pour les données on-chain (
IsData) et le lifting.Explique les extensions de langage, les importations et les classes de type associées.
Il illustre également des exemples basiques de définitions newtype, de synonymes de type et de types algébriques data pour comparaison.
2 Extensions du langage et importations
DerivingStrategies : choisit entre
stocketanyclasspour le dérivé.DeriveAnyClass : permet de dériver des classes comme
NFData.TemplateHaskell : utilisé par
PlutusTx.makeIsDataIndexedetmakeLiftpour le code on-chain.OverloadedStrings : pour des littéraux de chaîne pratiques avec
Prettyprinter.INLINABLE pragma : marque les fonctions pour la compilation et l’optimisation on-chain.
Imports :
NFData,Generic: pour une évaluation stricte et un dérivé générique.Modules
PlutusTx: utilitaires on-chain (Bool,Eq,makeIsDataIndexed,makeLift).Prettyprinter: pour l’instancePrettylisible par l’humain.Ledger.Credential,Crypto,Scripts: types de grand livre on-chain (PubKeyHash,ValidatorHash,Credential).
3 Structures de données
Ci-dessous, trois exemples de définitions de types Haskell, suivis de notre Address.
3.1 Exemple de newtype
Entrée : valeur
IntTraitement : aucun (wrapper à coût nul)
Sortie :
MyInt
3.2 Exemple de synonyme de type
Entrée/Sortie : identique à
String, simplement renommé.
3.3 Exemple de type data
Entrée : paramètres
DoubleTraitement : aucun à la construction
Sortie : valeur
Shape
3.4 Type de données Address
Champs :
addressCredential:Credentialon-chain (soit clé publique, soit script)addressStakingCredential:Maybe StakingCredential(optionnel)
Dérivations :
Eq,Ord,Show,GenericviastockNFDataviaanyclass
Exemple d’utilisation :
4 ⚙️ Fonctions
Chaque fonction ci-dessous est marquée {-# INLINABLE #-} pour une utilisation on-chain.
4.1 pubKeyHashAddress
Entrée :
PubKeyHashTraitement : wrappe en
PubKeyCredential, pas de stakingSortie :
Address
Exemple :
4.2 toPubKeyHash
Entrée :
AddressTraitement : correspondance de motif sur
CredentialSortie :
Maybe PubKeyHash
Exemples :
4.3 toValidatorHash
Entrée :
AddressTraitement : correspondance de motif sur
ScriptCredentialSortie :
Maybe ValidatorHash
Exemple :
4.4 scriptHashAddress
Entrée :
ValidatorHashTraitement : wrappe en
ScriptCredential, pas de stakingSortie :
Address
Exemple :
4.5 stakingCredential
Entrée :
AddressTraitement : projection du champ
Sortie :
Maybe StakingCredential
Exemple :
5 Instances de classes de type
Pretty : classe de
Prettyprinterpour l’affichagePlutusTx.Eq : classe
Eqon-chain,(==)doit êtreINLINABLEmakeIsDataIndexed : génère l’instance
IsDataavec index de constructeurmakeLift : permet de “lifter” les valeurs Haskell dans le code on-chain
6 Glossaire
Address : identifiant on-chain combinant les credentials de paiement et de staking.
Credential : soit
PubKeyCredential PubKeyHash, soitScriptCredential ValidatorHash.StakingCredential : credential optionnel pour les récompenses de staking.
PubKeyHash : hachage d’une clé publique.
ValidatorHash : hachage d’un script de validation.
INLINABLE : pragma GHC rendant une fonction disponible pour spécialisation.
makeIsDataIndexed : Template Haskell pour la sérialisation des données on-chain.
makeLift : Template Haskell pour le lifting en code on-chain.
newtype : wrapper à coût nul autour d’un seul champ.
type : synonyme pour un autre type.
data : définit un nouveau type algébrique.
NFData : classe pour l’évaluation profonde (
rnf).Pretty : classe pour le “pretty-printing” des valeurs.
Dernière mise à jour : il y a 1 heure.
Last updated