Plutus: À propos du mécanisme de collatéral

 

Alonzo a inauguré l'ère des contrats intelligents sur Cardano. Le mécanisme de collatéral est une fonctionnalité importante qui a été conçue pour garantir l'exécution réussie des contrats intelligents.

S'appuyant sur les garanties fournies par la conception déterministe du grand livre Alonzo, Cardano met en œuvre un schéma de validation en deux phases. La principale raison de l'introduction de la validation en deux phases est de limiter la quantité de travail de validation non compensé par les nodes. Chaque phase a un rôle à jouer dans la réalisation de cet objectif:

  • La première phase vérifie si la transaction est construite correctement et si elle peut payer ses frais de traitement
  • La deuxième phase exécute les scripts inclus dans la transaction

Si la transaction est phase-1 valide, les scripts de la phase-2 sont exécutés. Si la phase-1 échoue, aucun script n'est exécuté et la transaction est immédiatement abandonnée.

Le collatéral est utilisée pour assurer que les nodes sont rémunérés pour leur travail en cas d'échec de la validation de la phase-2. Le collatéral est donc la caution monétaire qu'un utilisateur donne pour s'assurer que le contrat a été soigneusement conçu et testé. Le montant du collatéral est spécifié au moment de la construction de la transaction. Pas directement, mais en ajoutant des entrées de collatéral à la transaction. Le solde total des UTXO correspondant à ces entrées spécialement marquées est le montant du collatéral de la transaction. Si l'utilisateur remplit les conditions de collatéral et qu'un contrat est exécuté, le collatéral est sauve.

 

Le scénario

Sans collatéral, l'utilisateur n'est pas facturé si un contrat intelligent échoue. Cependant, au moment où la transaction échoue, le réseau a déjà encouru certains coûts pour initier et valider la transaction. Cela signifie qu'un acteur malveillant pourrait inonder le réseau de transactions invalides, privant ainsi les autres utilisateurs de services à peu de frais.

 

La solution

Lorsqu'un utilisateur initie une transaction, il engage suffisamment d'ada pour couvrir son coût d'exécution. Dans Alonzo, les transactions qui appellent et utilisent des smart contracts non natifs (connus sous le nom de contrats de phase-2) ont également besoin de suffisamment de collatérals pour couvrir les coûts liés aux échecs potentiels des transactions. Ce montant peut être faible, mais il est suffisant pour rendre une attaque par déni de service (DOS) prohibitive.

Les frais de collatéral ne sont perçus que si une transaction échoue à la validation. Si le contrat est validé, les frais de transaction sont perçus, mais le collatéral n'est pas perçue.

 

Le raisonnement

Un utilisateur honnête ne risque jamais de perdre son collatéral.

La  blockchain Cardano est déterministe en ce qui concerne les coûts de transaction car ces coûts ne dépendent que des valeurs locales et de l'état local. Cela signifie qu'un utilisateur peut calculer le coût d'exécution (en ada) d'une transaction avant de la soumettre. Cette caractéristique est différente de celle des autres blockchains, notamment Ethereum, où d'autres activités du réseau peuvent influencer le coût d'exécution. Le montant de collatéral requise dépend uniquement du coût d'exécution.

La Cardano testnet fournit un environnement sûr avec des ada de test gratuits, afin que les développeurs d'applications distribuées (DApp) puissent tester de manière approfondie leurs contrats intelligents avant de les déployer sur le réseau principal. Si les transactions réussissent sur le réseau de test, le développeur peut être parfaitement sûr que tous les scripts réussiront effectivement.

Si les conditions sur la chaîne ont changé depuis que la transaction a été construite, cette transaction sera entièrement rejetée, et aucun frais ne sera facturé. Si une signature est manquante, par exemple, aucun collatéral ne sera facturée.

 

Détails techniques

Le terme collatéral fait référence à l'ada total contenu dans les UTXO référencés par les entrées de collatéral. Une transaction utilise des entrées de collatéral pour couvrir ses frais si un script de phase 2 échoue.

La spécification formelle de Shelley a introduit le concept de scripts "multi-signatures". Les scripts de phase-1, tels que ceux-ci, sont entièrement capturés par les règles du grand livre. Les coûts d'exécution peuvent donc être facilement évalués avant d'être traités par l'implémentation, et les frais éventuels peuvent être calculés directement dans l'implémentation de la règle du grand livre, en fonction de la taille de la transaction qui inclut le script, par exemple.

En revanche, les scripts de phase-2 peuvent effectuer des calculs arbitraires (et, en principe, Turing-complets). Nous demandons aux transactions qui utilisent les scripts de phase-2 d'avoir un budget en termes de nombre d'ExUnits abstraits. Ce budget donne une limite quantitative à l'utilisation des ressources en termes d'un certain nombre de mesures spécifiques, y compris l'utilisation de la mémoire ou les étapes d'exécution abstraites. Le budget est ensuite utilisé dans le cadre du calcul des frais de transaction.

Ce qui précède est extrait de la spécification formelle du réseau Alonzo. Pour plus de détails, lisez la spécification du ledger Cardano pour Plutus Core.


Vous trouverez une copie officielle de ce document ici :

https://docs.cardano.org/plutus/collateral-mechanism

 

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