Plutus: Apprenez-en plus sur Plutus

 

Plutus est le langage natif des contrats intelligents pour Cardano. Il s'agit d'un langage Turing-complet écrit en Haskell, et les contrats intelligents Plutus sont effectivement des programmes Haskell. En utilisant Plutus, vous pouvez être sûr de l'exécution correcte de vos contrats intelligents. Il s'inspire de la recherche moderne sur les langages pour fournir un environnement de programmation sûr et complet basé sur Haskell, le principal langage de programmation purement fonctionnel.

La mise à jour d'Alonzo apporte des capacités intéressantes et très attendues à Cardano grâce à l'intégration des scripts Plutus sur la blockchain. Ces scripts permettent maintenant la mise en œuvre de contrats intelligents sur Cardano, permettant pour la première fois une multitude de nouveaux cas d'utilisation pour les applications décentralisées (DApps).

Si vous voulez commencer, visitez le Plutus Playground pour apprendre à écrire des programmes Plutus et utilisez les tutoriels pour vous aider. Vous devriez également lire les explications et les didacticiels fournis ici et vous référer aux explications de Plutus pour en savoir plus sur le langage Plutus lui-même.

Nous sommes là pour vous aider ! Si vous avez besoin d'aide pendant l'utilisation de Plutus, veuillez enregistrer un problème dans le dépôt Plutus et inclure autant de détails que possible.

 

Contrats intelligents Plutus

Les contrats intelligents Plutus se composent de parties qui s'exécutent sur la blockchain (code on-chain) et de parties qui s'exécutent sur la machine d'un utilisateur (code off-chain ou client). Le code off-chain peut être écrit à l'aide du Plutus Application Framework (PAF), et ce code est ensuite compilé par le GHC (Glasgow Haskell Compiler), tandis que le code on-chain est compilé par le compilateur Plutus en Plutus Core.

 

Modèle comptable utilisé par Plutus

Cardano utilise le extended UTXO accounting model (EUTXO) qui étend le modèle de comptabilité UTXO (unspent (U) transaction (TX) output (O)) (utilisé par Bitcoin). Dans le modèle UTXO, une transaction a des entrées et des sorties, où les entrées sont des sorties non dépensées 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 adresse (une clé publique ou un hash de clé publique) et une valeur (composée d'un montant ada et de montants additionnels optionnels de jetons natifs).

EUTXO étend le modèle UTXO en permettant aux adresses de sortie de contenir une logique complexe pour décider quelles transactions peuvent les déverrouiller, et en ajoutant des données personnalisées à toutes les sorties. Ce modèle offre des avantages uniques par rapport aux autres modèles comptables. Le succès ou l'échec de la validation d'une transaction dépend uniquement de la transaction elle-même et de ses entrées, et non de quoi que ce soit d'autre sur la blockchain. Par conséquent, la validité d'une transaction peut être vérifiée hors chaîne avant que la transaction ne soit envoyée à la blockchain. Une transaction peut toujours échouer si une autre transaction consomme simultanément une entrée que la transaction attend. Cependant, si toutes les entrées sont toujours présentes, le succès de la transaction est garanti.

 

Plutus Core

Plutus Core est le langage de script utilisé par Cardano pour mettre en œuvre le modèle EUTXO. Il s'agit d'un langage simple et fonctionnel similaire à Haskell, et un large sous-ensemble de Haskell peut être utilisé pour écrire des scripts Plutus Core. En tant qu'auteur de contrat intelligent, vous n'écrivez pas de Plutus Core, mais tous les scripts Plutus Core sont générés par un plugin de compilateur Haskell.

Ces scripts seront exécutés par les nodes pendant la validation des transactions "en direct" sur la chaîne. Ils verrouilleront les EUTXO sous la forme de validator scripts ou de politiques de frappe, qui contrôlent la frappe et la combustion des jetons natifs.

En pratique, lors du développement de contrats intelligents, vous écrirez des scripts de validation en Haskell, qui seront ensuite automatiquement compilés dans Plutus Core à l'aide d'un plug-in GHC appelé Plutus Tx.

 

Plutus Application Framework (PAF)

Le PAF fournit un accès facile aux services qui sont couramment utilisés par les applications Plutus. Les applications déployées à l'aide des bibliothèques du framework peuvent être exécutées sur le backend d'application Plutus, qui fournit un support d'exécution pour l'accès à la blockchain et d'autres fonctionnalités telles que la persistance, la journalisation et la surveillance. Les applications écrites sur le PAF fournissent automatiquement une interface HTTP et WebSocket qui permet d'interagir avec l'application à partir du navigateur web.

L'état on-chain des scripts du validateur ne peut être modifié que par les transactions qui dépensent et produisent des sorties de script. Lorsque nous écrivons une application Plutus, nous devons prendre en compte non seulement la partie on-chain de l'application (les scripts Plutus Core), mais aussi la partie off-chain qui construit et soumet les transactions.

Le code hors chaîne est écrit en Haskell, tout comme le code sur chaîne, contrairement à Ethereum où le code sur chaîne est écrit en Solidity, mais le code hors chaîne est écrit en JavaScript. Ainsi, la logique commerciale ne doit être écrite qu'une seule fois. Cette logique peut ensuite être utilisée dans le script du validateur et dans le code qui construit les transactions qui exécutent le script du validateur.

 

Plutus Application Backend (PAB)

Le PAB est en cours de développement et exécutera la composante hors chaîne des applications Plutus. Il gérera les requêtes des applications vers le backend et le node du porte-monnaie, stockera l'état des applications et offrira une API HTTP pour la gestion des instances d'applications.

 

Plutus et tokens natifs

Chaque jeton natif est accompagné de sa propre politique de frappe, qui détermine les conditions dans lesquelles les jetons peuvent être frappés et brûlés. Avec le déploiement de Plutus, les utilisateurs pourront écrire des politiques de frappe en Haskell et les compiler dans Plutus Core. Pendant le processus de frappe ou de combustion, le script de politique de Plutus Core sera exécuté dans le contexte de la transaction de frappe ou de combustion, et le script devra approuver ou interdire l'action. Cette fonctionnalité accélérera encore la croissance des Jetons Non Fongibles (NFTs) sur Cardano en permettant la création de politiques de frappe beaucoup plus complexes et en permettant la création de NFTs sans besoin d'aucune confiance.

 

Avantages de Plutus

Plutus offre des avantages considérables en matière de sécurité. Il offre un moyen plus facile et plus robuste de démontrer que vos contrats intelligents sont corrects et ne rencontreront pas les problèmes rencontrés dans les langages de contrats intelligents précédemment conçus.

Plutus permet une nouvelle approche intégrée du développement de contrats intelligents et d'applications distribuées qui est plus pratique et plus sûre que les alternatives précédentes. Le code on-chain et off-chain est basé sur le même langage. Vous utilisez une base de code uniforme, que la chaîne d'outils Plutus sépare ensuite automatiquement en code on-chain et off-chain et conditionne pour le déploiement.

En outre, contrairement à Ethereum, Plutus prend en charge les jetons définis par l'utilisateur (fongibles et non fongibles) de manière native, ce qui nécessite beaucoup moins de code.

 

Vous trouverez une copie officielle de ce document ici :

https://docs.cardano.org/plutus/learn-about-plutus

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