JavaScript est-il l’avenir des contrats intelligents ? – La nouvelle pile

Comme nous l’avons souligné dans notre article The Web3 Stack, une partie considérable du développement frontal dans Web3 est réalisée avec une technologie très familière aux développeurs Web 2.0 : JavaScript. Cela signifie que les quelque 16 millions de développeurs JavaScript dans le monde ont de nombreuses opportunités de participer à la construction de la prochaine phase du Web. Maintenant, Agoric, une blockchain de preuve de pile de couche 1, fait un gros pari que JavaScript peut également être utilisé pour les contrats intelligents, qui sont fondamentaux pour la confiance décentralisée qui est au cœur du développement d’applications décentralisées Web3. Jusqu’à présent, les contrats intelligents étaient principalement programmés à l’aide de langages tels que Solidity ou Rust.

Qu’est-ce qu’un contrat intelligent ?

Les contrats intelligents sont antérieurs à la blockchain de plusieurs décennies, bien qu’ils soient devenus synonymes de technologies blockchain et Web3. Comme Dean Tribble d’Agoric l’a dit dans une interview avec The New Stack, “à la base, un contrat intelligent est un logiciel qui applique les termes d’un accord, comme un contrat légal conclu entre des tiers”.

Certains exemples familiers pourraient être quelque chose comme Uber utilisant un logiciel pour vous connecter à un chauffeur inconnu qui accepte de vous emmener vers une destination présélectionnée ; c’est une sorte de contrat intelligent. La transaction nécessite un intermédiaire de confiance, dans ce cas, une société de logiciels centralisée, qui a un accès privilégié à des informations telles que votre carte de crédit et votre emplacement côté paiement, et la disponibilité du conducteur. Le logiciel relie les deux côtés, vous donnant un trajet et le conducteur une redevance.

“Les chaînes de blocs apportent une exécution répliquée”, a déclaré Tribble, “où vous avez des machines dans plusieurs juridictions et domaines administratifs qui votent tous pour s’entendre sur ce qui se passe. Ce consensus entre les juridictions signifie qu’aucune organisation ou gouvernement ne peut compromettre l’intégrité de l’exécution.

Cela permet des choses comme des transactions financières qui traversent les frontières dans une fiducie plus compliquée qu’un chauffeur et un passager situés dans la même ville. L’objectif d’Agoric est de permettre à une grande partie du monde du commerce de travailler dans cet environnement, ce qui signifie qu’il doit être programmable par plus de quelques milliers de développeurs. Il n’y a donc rien de mieux qu’un langage compris par 16 millions de développeurs, leur permettant d’utiliser un environnement de développement familier.

À l’heure actuelle, la programmation de contrats intelligents blockchain est limitée au nombre relativement restreint de personnes qui savent programmer avec Solidity, le langage de contrat intelligent pour Ethereum et ses sidechains de couche 2, ou d’autres langages comme Rust on Solana. Agoric aide les développeurs JavaScript à surmonter rapidement les obstacles à la mise en œuvre de contrats intelligents, de la même manière que React a facilité la création d’applications JavaScript à l’aide de composants réutilisables.

Inconvénients de l’utilisation de JavaScript pour les contrats intelligents

J’ai interrogé Tribble sur les inconvénients potentiels, et il a commencé par une réponse concise, en disant: «Il y a probablement des inconvénients, mais cela n’a pas d’importance. Github a fait une analyse et 97% du code dans [applications on Github] provient de bibliothèques tierces.

Mais il a suivi avec un peu plus de détails.

“Il y a beaucoup d’inconvénients à des modèles de composants spécifiques”, a-t-il déclaré. « Vous voulez vraiment un langage, un framework et des bibliothèques qui minimisent les risques de sécurité tout en facilitant leur assemblage. React en est un bon exemple car le modèle avait les moyens et a résolu les bons défis pour relier les choses ensemble. Il y avait beaucoup de cadres d’expérience utilisateur avant React, mais React a bien compris. Nos composants sont comme des composants React et notre framework prend en charge l’utilisation de nos composants et la composition d’une application avec d’autres composants.

Qu’en est-il de la sécurité ?

Agoric utilise du JavaScript renforcé dans son modèle de composants pour créer des contrats intelligents composables, ce qui limite ce qu’un environnement d’exécution JavaScript peut faire.

“Le JavaScript renforcé vous permet de verrouiller votre JavaScript afin qu’il soit impossible de faire des choses que vous ne voulez pas qu’il fasse”, a expliqué Tribble. “L’autorité qui entre dans un programme est entièrement contrôlée par la portée dans laquelle le programme s’exécute. Nous contrôlons la portée. Vous exécutez avec exactement l’accès et l’autorité que nous fournissons, donc [that] nous obtenons une véritable exécution confinée de JavaScript arbitraire.

Agoric a une exploration détaillée de JavaScript renforcé, qui comprenait cet exemple d’image :

modèle JavaScript renforcé

Le modèle de programmation Solidity, en revanche, présente des risques de sécurité et des problèmes avec des choses comme la réentrance. La réentrance a été un problème avec les modèles de programmation synchrone aussi longtemps qu’il y a eu des programmes synchrones. Cela se produit lorsqu’un programme peut effectivement répéter plusieurs fois la même demande à un autre programme avant que le demandeur ne reçoive un accusé de réception indiquant que la demande initiale a été exécutée. Cela signifie, par exemple, que vous pouvez demander le même montant d’ETH à plusieurs reprises et continuer à en obtenir plus avant que le programme auquel vous le demandez ait le temps de reconnaître que vous avez reçu votre argent. Will Shahda en offre un bon exemple sur Medium.

Selon Tribble, le risque de ces attaques de réentrance a été souligné par l’ingénieur principal d’Agric, Brian Warner, dans un examen de la sécurité d’Ethereum avant sa mise en service. Il a également reconnu que c’était potentiellement le bon compromis à faire à l’époque. Passer à un modèle asynchrone vous permet d’éviter un problème de réentrance, mais comme il s’agit d’une caractéristique fondamentale de la conception d’Ethereum, ce n’est pas quelque chose qui peut être résolu.

Réduction des frais d’utilisation

L’une des plus grandes plaintes concernant Ethereum concerne les frais de gaz associés à la preuve de travail. Au cœur de ce problème se trouve un désalignement fondamental entre les personnes qui souhaitent augmenter l’activité sur le réseau Ethereum et les mineurs qui souhaitent augmenter les frais. Comme le dit Tribble, « les mineurs sont les seigneurs des bidonvilles et Ethereum est l’immeuble. La seule façon pour le propriétaire d’obtenir plus d’argent est d’augmenter le loyer.

En plus d’être un réseau de preuve de participation de couche 1, Agoric cherche à remédier à cette incompatibilité économique afin d’aligner les priorités de leur réseau blockchain sur la dynamique d’une économie qui fonctionne. En conséquence, ils ont séparé leur jeton de gouvernance, BLD, et leur jeton de frais, RUN, dans le but que RUN soit un jeton stable qui ne fluctue pas.

Tribble explique le raisonnement de cette façon : « Considérez les frais de gaz comme votre loyer ou votre facture d’électricité. Ethereum, c’est comme payer votre loyer avec des actions Apple. Ce n’est pas génial du point de vue de la planification d’entreprise. Il est difficile de comparer si le loyer a augmenté ou diminué d’un mois à l’autre. Ce que vous voulez à la place, c’est payer un jeton stable pour le gaz, ce qui signifie qu’il doit être intrinsèque à la chaîne et qu’il ne devrait pas aller dans la poche des validateurs – il n’y a donc pas d’incitation à augmenter le loyer. ”

C’est là que RUN entre en jeu. “RUN qui est utilisé dans l’exécution va dans les réserves de change pour assurer la stabilité et la croissance de l’exécution de la chaîne”, a déclaré Tribble. “Tous les frais pour les validateurs proviennent des frais d’emprunt de RUN, et non du paiement de l’exécution. Cela signifie qu’à mesure que l’économie se développe, à mesure que je vous envoie plus de chèques, à mesure que j’achète plus de NFT, à mesure que je verrouille plus de jetons, la quantité de RUN en circulation augmente et une petite fraction va aux détenteurs de BLD pour le jalonnement et la délégation. Ainsi, leur récompense augmente à mesure que l’économie se développe.

JavaScript comme avenir des contrats intelligents

Il reste à voir si Agoric réussira à générer une adoption massive de ses composants de contrats intelligents JavaScript composables, mais React semble certainement être un modèle réussi pour construire un framework basé sur des composants. La superposition d’une structure de contrôle des coûts prévisible jouera également un rôle en aidant les applications décentralisées qui comprennent le coût de faire des affaires. Agoric prévoit également l’interopérabilité, en rendant possible la connexion avec Ethereum et Cosmos via le protocole de communication Inter-Blockchain et le réseau oracle Chainlink.

Ce qui semble très logique, c’est de permettre aux développeurs JavaScript qui ont déjà une expérience approfondie, dans le secteur financier en particulier, de tirer parti de ces connaissances ainsi que de leur expérience dans le respect des directives de conformité financière et des normes de sécurité. Ce segment particulier de développeurs a également tendance à avoir une solide expérience dans la mise en œuvre d’applications pour des centaines de milliers d’utilisateurs avec divers degrés de maîtrise de la technologie, donc associer leurs connaissances UX à un moyen simple de composer des contrats intelligents pourrait être une combinaison gagnante.

Image sélectionnée de DepositPhotos par peshkova.

Leave a Comment