Plutus: À propos du modèle de Grand livre (Ledger)

 

Cardano, comme toute autre blockchain, est un grand livre distribué ou une base de données qui enregistre toutes les transactions et tous les blocs créés sur la chaîne. Cette base de données partage les enregistrements entre tous les participants et se synchronise en permanence avec les activités de la blockchain afin de fournir des informations transparentes et actualisées auxquelles tout le monde peut accéder.

Cardano DB Sync récupère ces enregistrements de blockchain et permet aux utilisateurs d'interroger les détails des transactions et des blocs à l'aide de commandes CLI. Pour une exploration des données plus pratique et plus agréable, vous pouvez utiliser le Cardano Explorer – une interface graphique qui présente les détails de manière simple.

Un producteur de blocs valide chaque transaction avant qu'elle ne soit soumise à un bloc. L'expéditeur doit disposer de fonds suffisants, ce qui évite de dépenser deux fois la même somme, et tous les nodes du ledger doivent parvenir à un consensus.

Voyons de plus près comment cela fonctionnait dans le grand livre de Shelley et comment les scripts Plutus modifient ce processus pour prendre en charge les transactions de multi-actifs et les contrats intelligents.

 

Validation des transactions à l'aide des scripts natifs de Shelley

Cardano fonctionne sur la base du modèle comptable UTXO (unspent transaction output). Ce processus signifie qu'il utilise les entrées et sorties de transaction comme enregistrements pour suivre les transferts de fonds, la propriété et les soldes. Les fonds des utilisateurs sont stockés sous forme de sorties de transaction non dépensées, chacune d'entre elles ayant une quantité qui peut être dépensée. Les entrées sont des sorties non dépensées provenant de transactions précédentes. Dès qu'une sortie est utilisée comme entrée dans une transaction, elle est dépensée et ne peut plus jamais être utilisée. La sortie est spécifiée par:

  • une addresse: qui contient un justificatif de paiement et un justificatif de mise en jeu facultatif, soit un hachage de clé publique/de vérification, soit un hachage de script. Techniquement, le justificatif d'enjeu peut également être un pointeur vers le certificat d'enregistrement.
  • une valeur : reflète le montant réel de l'ada qui peut être dépensé.

Une transaction doit être signée par le propriétaire de la clé privée (également appelée clé de signature), qui correspond à l'identifiant de paiement inclus dans l'adresse.

Cardano Shelley supportait uniquement les transactions ada. Cependant, la spécification formelle de Shelley a introduit le concept de multi-signature (multisig) scripts, qui, natifs par nature, sont entièrement capturés par les règles du ledger. Ce schéma multisig permettait d'utiliser la sortie d'une transaction non utilisée comme entrée d'une nouvelle transaction si une combinaison prédéfinie de signatures était fournie. Par exemple, si deux personnes doivent signer la transaction simultanément, deux clés sur trois doivent être fournies, etc.

Multisig est un langage très simple, qui permet de travailler avec quatre constructeurs tels que RequireSignature, RequireAllOf, RequireAnyOf et RequireMOf. Cependant, au fur et à mesure que de nouvelles fonctionnalités seront ajoutées au grand livre, les scripts devront être étendus pour prendre en charge des termes supplémentaires permettant d'exprimer une série d'autres conditions.

 

Mise à niveau de multisig vers Plutus Core

Avec l'introduction du support de multi-actifs et des contrats intelligents sur Cardano, il est essentiel d'étendre le langage de script multisig de base avec des options plus avancées. Après avoir intégré les règles Alonzo dans le grand livre (ce qui signifie l'ajout de capacités de contrats intelligents à Cardano), nous avons ajouté les outils et l'infrastructure nécessaires, ainsi que le support d'un nouveau langage de script - Plutus Core.

Pour mettre à niveau multisig vers Plutus Core, le grand livre d'Alonzo met en œuvre le modèle comptable EUTXO (extended unspent transaction output), en utilisant Plutus Core pour fournir de puissantes capacités de script.

EUTXO étend le modèle UTXO en permettant aux adresses de sortie de contenir une logique complexe pour décider quelles transactions peuvent être utilisées pour les déverrouiller et en ajoutant des données personnalisées à toutes les sorties. Pour ce faire, les scripts nécessitent un langage de script défini et bien spécifié, et des données doivent être attachées aux sorties, qui seront transmises au script pendant l'exécution. Plutus Core permet l'exécution de ces scripts complexes par les nodes lors de la validation des transactions en direct sur la chaîne. Ils verrouillent les UTXO sous la forme de scripts de validation ou de politiques de frappe, qui contrôlent la frappe et la combustion des jetons natifs. Les données du rédempteur sont alors spécifiées comme un type de données simple (algébrique) qui peut être défini facilement en Haskell. En pratique, un développeur de contrats intelligents écrira des scripts de validation en Haskell, qui seront ensuite automatiquement compilés dans Plutus Core.

Les bibliothèques Haskell appropriées simplifient l'écriture de cette logique de validation en fournissant des types de données de base pour l'inspection des transactions pendant la validation. Elles offrent également de nombreuses fonctions d'aide et des abstractions de plus haut niveau, permettant aux auteurs de contrats de se concentrer sur la logique métier sans se soucier de trop de détails de bas niveau.

 

Vous trouverez une copie officielle de ce document ici :

https://docs.cardano.org/plutus/ledger-model

Plus de traductions de Cardano à: https://cardanofortheworld.com/fr-fr