Plutus: Coûts de transaction et déterminisme
L'approche de Cardano en matière de fixation des prix repose principalement sur la demande du marché par rapport à l'offre réelle. Avec le lancement récent des contrats intelligents, il y aura plus d'un type de demande en concurrence pour l'offre commune. Il est donc crucial de prendre en compte les prix relatifs et absolus. Une façon de procéder consiste à examiner les effets de la tarification des contrats intelligents, des opérations sur les jetons non fongibles (NFT), etc., par rapport à une valeur commune - dans notre cas, la consommation de la capacité de calcul de Cardano.
La conception du ledger Cardano est axée sur la haute assurance, la sécurité et la vérification formelle éprouvée. Dans le cadre de cette stratégie, il est également important de veiller à ce que le traitement des transactions soit déterministe, ce qui signifie qu'un utilisateur peut prédire l'impact et le résultat d'une transaction avant son exécution.
La capacité de garantir le coût d'exécution d'une transaction et le comportement de la transaction sur le grand livre avant qu'elle ne soit soumise, devient encore plus importante avec l'introduction du support des contrats intelligents. 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 de l'essence. Cette capacité est également garantie par la nature déterministe de Cardano et des scripts de Plutus.
Le calcul de la valeur ada minimale pour traiter une transaction dans Alonzo est différent des calculs précédents de Mary. Il n'y a plus de paramètre de protocole minUTxOValue dans Alonzo car il a été déprécié à la fin de l'ère Mary. Cependant, l'exigence selon laquelle chaque UTXO doit contenir une quantité d'ada qui dépend de la taille de l'entrée est toujours appliquée dans Alonzo. La quantité minimale d'ada dépendant de la taille dans une UTXO est appelée la valeur min-ada, et est maintenant calculée en utilisant le paramètre Alonzo coinsPerUTxOWord. Pour en savoir plus, lisez les spécificités du paramètre Alonzo min-ada-value calculation.
Determinisme
Determinisme, dans le contexte du traitement des transactions et des scripts, est un synonyme de prévisibilité. Cela signifie qu'un utilisateur peut prédire localement (hors chaîne) comment sa transaction aura un impact sur l'état du grand livre de comptes sur la chaîne, sans rencontrer les problèmes suivants :
- résultats ou échecs inattendus de la validation du script
- frais imprévus
- mises à jour inattendues de l'état du grand livre ou du script
Validation
Un aspect important du traitement d'une transaction est la validation des actions qu'elle effectue. Une transaction effectue une action lorsqu'elle contient des données dans le champ spécifique à cette action. Par exemple, une transaction dépense UTXO U lorsqu'elle contient une référence à U dans son champ d'entrée, et elle frappe un token X lorsque son champ de frappe contient X.
Cardano utilise des scripts pour valider les actions. Ces scripts, qui sont des morceaux de code, mettent en œuvre des fonctions pures avec des sorties Vrai ou Faux. La validation des scripts consiste à invoquer l'interpréteur de script pour exécuter un script donné avec les arguments appropriés.
La validation du script peut être effectuée pour les actions suivantes :
- Dépenser un UTXO verrouillé par l'adresse d'un script : le script qui est exécuté est celui dont le hachage forme l'adresse.
- Frappe d'un token : le script qui est exécuté est celui dont le hachage forme l'ID de politique du token frappé.
- Retirer la récompense : le script qui est exécuté est celui dont le hachage constitue l'adresse de staking.
- Application d'un certificat : le script exécuté est celui dont le hachage constitue la référence de l'auteur du certificat.
En plus de faire savoir au node quel script exécuter, toutes les actions de transaction indiquent comment assembler les arguments passés à ce script. Alonzo présente une nouvelle approche de la validation des transactions sur Cardano grâce à l'implémentation des scripts Plutus.
Mises à jour du grand livre
Alonzo modifie les données du grand livre comme suit :
- Les scripts de Plutus peuvent verrouiller les UTXOs.
- Un nouveau composant, ajouté au contenu des parties de sortie des UTXO, permet une fonctionnalité de type état de script. En plus des actifs et d'une adresse, un UTXO verrouillé par des scripts Plutus contient également un datum. Un datum est un élément de données qui peut être considéré comme une interprétation de l'état du script.
- Il existe un certain nombre de nouveaux paramètres de protocole utilisés pour imposer des exigences de validation supplémentaires aux transactions. Il s'agit notamment de la limite supérieure des ressources informatiques que les scripts peuvent consommer.
Pour supporter les scripts Plutus, les transactions ont été mises à jour comme suit :
- Pour chacune de ses actions, la transaction porte maintenant un argument spécifié par l'utilisateur, appelé un redeemer. Selon le script, un redemer peut servir un objectif différent. Par exemple, il peut servir d'enchère pour l'utilisateur lors d'une vente aux enchères, ou de devinette pour l'utilisateur lors d'un jeu de devinettes, entre autres fonctions.
- La transaction spécifie les budgets d'exécution de calcul pour chaque script.
- Pour s'assurer qu'une transaction peut payer ses frais d'exécution, Alonzo introduit un collateral.
- Les transactions contiennent un hachage d'intégrité, nécessaire pour garantir qu'elles n'ont pas été compromises, périmées, etc.
Le node effectue de nouveaux contrôles, spécifiques à Alonzo, qui garantissent que la transaction est construite correctement. Par exemple, elle ne doit pas dépasser le budget maximal de ressources d'exécution. Il invoque également l'interpréteur de script Plutus pour exécuter les scripts.
Le modèle de gaz non déterministe peut faire payer aux utilisateurs un grand montant de frais imprévisibles. Dans les scripts Cardano, cette source d'indéterminisme est traitée en exigeant que le budget des ressources lui-même, ainsi que les frais nécessaires pour couvrir ce budget, soient inclus dans la transaction. Dans Alonzo, un utilisateur peut prédire les deux localement lors de la construction de la transaction. L'exécution de script retourne nécessairement soit True ou False, et ne bouclera pas indéfiniment. La raison en est que chaque opération effectuée par un script prend une quantité non nulle de ressources, qui sont suivies par l'interprète. Si le budget spécifié par la transaction est dépassé, l'exécution du script se termine et renvoie False.
Les points clés suivants rendent les résultats de la validation des scripts et des transactions prévisibles:
- l'interpréteur de script se termine toujours et renvoie le même résultat de validation lorsqu'il est appliqué aux mêmes arguments.
- une transaction fixe nécessairement tous les arguments qui seront passés à l'interpréteur de script lors de la validation.
- une transaction spécifie toutes les actions qu'elle entreprend qui requièrent une validation du script.
- les signatures obligatoires sur une transaction garantissent qu'elle ne peut pas être modifiée par un adversaire d'une manière qui ferait échouer les scripts.
- l'application d'une transaction dans le modèle de grand livre d'EUTXO est déterministe.
L'échec ou la réussite de la validation du script affecte le traitement d'une transaction. Cependant, le résultat True ou False, ainsi que les changements de grand livre associés à l'un ou l'autre résultat, sont prévisibles pour une transaction donnée.
Lectures complémentaires :
Vous trouverez une copie officielle de ce document ici :
https://docs.cardano.org/plutus/transaction-costs-determinism
Plus de traductions de Cardano à: https://cardanofortheworld.com/fr-fr