Plutus.V1.Ledger.DCert

Table des matières

  1. 📜 Overview

  2. 🔧 LANGUAGE EXTENSIONS AND IMPORTS

  3. 🗄️ Data Type

    • 📜 DCert Constructors

  4. 🤝 Typeclass Instances

    • 🧮 PlutusTx.Eq DCert

    • 📖 Pretty DCert

  5. 🏭 On-chain Derivations

  6. 📚 Glossary


1 📜 Overview

Le module Plutus.V1.Ledger.DCert définit une représentation compacte des certificats de délégation et de pool de staking inclus dans les transactions Cardano. Il fournit :

  • Un type de données algébrique unique (DCert) capturant toutes les variantes de certificats.

  • Des instances d’égalité on-chain et de pretty-printing.

  • La sérialisation et le lifting pour le support dans Plutus Core.


2 🔧 LANGUAGE EXTENSIONS AND IMPORTS

Pragmas :

  • DataKinds, DeriveAnyClass, DerivingVia, OverloadedStrings, TemplateHaskell pour le support générique et on-chain.

Options GHC pour contrôler la spécialisation et les pragmas d’interface.

Imports :

  • StakingCredential, PubKeyHash pour les champs des certificats.

  • Modules PlutusTx et P pour les utilitaires on-chain.

  • Prettyprinter pour l’affichage lisible.


3 🗄️ Data Type

3.1 📜 DCert Constructors

Les constructeurs capturent chaque type de certificat :

  • Délégation : enregistrement, désenregistrement, délégation à un pool.

  • Pool : enregistrement ou retrait d’un pool de staking.

  • Système : certificats genesis et MIR.

Exemple :

let cert1 = DCertDelegRegKey someStakingCred
let cert2 = DCertPoolRetire somePoolId 120
print cert1   -- uses Show: DCertDelegRegKey ...

4 🤝 Typeclass Instances

4.1 🧮 PlutusTx.Eq DCert

Classe : Eq de PlutusTx, utilisée pour les comparaisons on-chain.

Le pragma INLINABLE permet la spécialisation par GHC dans Plutus Core.


4.2 📖 Pretty DCert

Dérive le pretty-printing via l’instance Show pour plus de simplicité.


5 🏭 On-chain Derivations

  • makeIsDataIndexed : crée IsData pour la sérialisation vers des données on-chain, chaque constructeur ayant un indice explicite.

  • makeLift : génère l’instance Lift pour intégrer les valeurs DCert dans le code PlutusTx.


6 📚 Glossary

  • DCert : digest d’un certificat de délégation ou de pool de staking.

  • StakingCredential : identifiant d’une clé de staking (hash ou pointeur).

  • PubKeyHash : hash d’une clé publique, identifiant l’opérateur de pool.

  • Genesis Certificate : certificat initial présent à la genèse de la distribution.

  • MIR : certificat Move Instantaneous Rewards.

  • makeIsDataIndexed : Template Haskell pour la sérialisation on-chain.

  • makeLift : Template Haskell pour le lifting des valeurs dans PlutusTx.

  • INLINABLE : pragma GHC permettant la spécialisation et l’inclusion dans le code on-chain.


Last updated