Vyper, Solidity et Scrypto : comparaison des langages de contrats intelligents

Un regard sur trois langages de programmation différents pour les réseaux blockchain et comment ils se comparent.

Le réseau Ethereum a introduit des contrats intelligents dans l'espace blockchain, créant des concepts tels que finance décentralisée (DeFi) de qualité. 

Les contrats intelligents peuvent exécuter automatiquement des processus une fois que certaines conditions sont remplies. Parallèlement à cette nouvelle technologie, un nouveau langage de codage a été développé appelé Solidity.

Alors que l'industrie de la blockchain continue de croître et que de nouveaux réseaux de blockchain émergent, des langages de programmation supplémentaires sont introduits dans l'espace, notamment Vyper et Scrypto.

Langages de programmation sont un ensemble de règles qui convertissent des chaînes de texte et des nombres en code lisible par machine. En termes simples, les langages de programmation permettent aux ordinateurs de comprendre les instructions saisies par les êtres humains. En ce qui concerne l'industrie de la blockchain, Solidity, Python et Javascript sont parmi les langages les plus couramment utilisés, mais ils fonctionnent tous différemment.

Qu'est-ce que la solidité?

Solidity est un langage de programmation orienté objet et de haut niveau permettant de créer des contrats intelligents sur la blockchain Ethereum et d'autres réseaux de blockchain comme BNB Smart Chain et Avalanche. Le langage a été développé en 2014 et partage des similitudes avec des langages de programmation comme JavaScript, C++ et Python.

Étant donné que Solidity est un langage de haut niveau, le code informatique est saisi d'une manière facilement compréhensible et lisible par l'homme au lieu de uns et de zéros. Par exemple, le code Solidity inclura des mots et des expressions comme « fonction » et « contrat », ainsi que des accolades et des chiffres.

Être un langage de codage orienté objet signifie que Solidity tourne autour de l'utilisation d'"objets", qui sont des morceaux de code qui peuvent être réutilisés pour créer des morceaux de code similaires sans réécrire le code d'origine à chaque fois.

Solidity utilise également un compilateur pour convertir le code de haut niveau lisible par l'homme en code lisible par machine qui est exécuté sur la machine virtuelle Ethereum (EVM).

Qu'est-ce que Vyper ?

Vyper est un langage de programmation pythonic orienté contrat pour les contrats intelligents conçu pour être utilisé avec l'EVM. Le langage a été conçu pour améliorer Solidity en améliorant la sécurité et la lisibilité du code. Vyper met l'accent sur l'audibilité de son code. Pour cette raison, l'un de ses principes est que les humains devraient être capables de lire autant de code Vyper que possible. 

Vyper vise également à rendre aussi difficile que possible l'écriture de code trompeur. La simplicité pour le lecteur (c'est-à-dire un auditeur) est plus importante que la simplicité pour l'auteur (c'est-à-dire un développeur). De cette façon, il sera plus facile d'identifier le code malveillant au sein d'un contrat intelligent ou d'une application décentralisée (DApp).

Qu'est-ce que Scrypto ?

Scrypto est un langage de contrat intelligent orienté actifs. Le langage a été développé par Radix, est basé sur Rust et conserve la plupart des fonctionnalités de Rust tout en ajoutant des fonctions et une syntaxe spécifiques pour Radix Engine v2. Étant donné que Scrypto est orienté actifs, il peut interagir avec des actifs tels que des jetons, qui sont un type de ressource dans le langage. 

Dans les langages de codage comme Solidity, les jetons ERC-20 existent en tant que contrats intelligents sur l'EVM. Les actifs de Scrypto sont des ressources qui existent dans des conteneurs et des coffres. En termes simples, c'est comme avoir un seau (le conteneur) et le remplir de pièces (l'actif) qui peuvent être stockées dans une tirelire (le coffre-fort).

Récent: La demande de talents dans la cryptographie est moins dépendante du marché à mesure que l'industrie mûrit

Scrypto se concentre également sur la convivialité pour les développeurs en leur permettant d'écrire uniquement le code nécessaire tout en interagissant avec les conteneurs et les ressources pour activer les fonctionnalités dans un DApp. La sécurité est un autre principe, les développeurs pouvant donner des instructions spécifiques à un DApp au lieu de donner des autorisations générales.

Comparaison des langages de contrats intelligents

Solidity dispose d'un large éventail de ressources d'apprentissage en ligne et d'un grand soutien communautaire en raison de son utilisation dans les principaux réseaux de chaînes de blocs comme Ethereum. Solidity dispose également d'un large éventail de fonctionnalités issues de la programmation orientée objet (POO), ce qui le rend modulaire et plus facile à dépanner en cas de problème. Par exemple, si un objet d'une certaine classe devait mal fonctionner, il pourrait être retracé jusqu'à l'origine de la classe. 

Cela fonctionne parce que Solidity utilise l'encapsulation, ce qui signifie que chaque objet est autonome, chaque fonction fonctionnant indépendamment. La modularité du langage de codage permet également aux développeurs de travailler sur plusieurs objets simultanément, ce qui rend plus efficace la création, la correction et le déploiement de contrats intelligents.

Vyper est un langage de codage plus simple que Solidity, mettant l'accent sur la transparence, la simplicité de la structure du langage et l'audibilité. Vyper a également moins de fonctionnalités que Solidity, ce qui a été fait intentionnellement pour des raisons de sécurité. L'ensemble limité de fonctionnalités réduit le nombre de vulnérabilités que les acteurs malveillants peuvent exploiter.

Par exemple, Solidity utilise des modificateurs indiquant que des vérifications ont été effectuées avant et après l'exécution d'un processus. Cependant, Vyper n'utilise pas de modificateurs car les développeurs pensent que cela facilite l'écriture de code trompeur. Cela encourage également les individus à développer un code qui rebondit dans tout le fichier, réduisant ainsi l'audibilité. Étant donné que les modificateurs ne sont pas présents dans Vyper, il est impossible d'ajouter des changements d'état au code.

Une autre fonctionnalité exclue de Vyper est l'héritage. Dans Solidity, plusieurs contrats peuvent hériter des fonctionnalités d'un contrat parent. S'il y a un désaccord, cela nécessite également que les individus comprennent les normes de préséance. Vyper n'utilise pas l'héritage de classe car il élimine une source potentielle de complexité dans le code, ce qui contribue à améliorer l'audibilité. En général, Vyper est un langage de codage plus minimaliste qui échange certaines fonctionnalités contre une sécurité accrue et un meilleur examen de sa base de code afin de mieux protéger les utilisateurs de contrats intelligents basés sur Vyper.

Bien que Solidity soit l'un des langages de programmation les plus populaires et les plus connus dans l'espace blockchain, certains langages ont des courbes d'apprentissage plus faciles pour les développeurs. De plus, des langages de programmation plus simples facilitent l'attraction de nouveaux développeurs dans l'industrie.

Adam Simmons, directeur de la stratégie chez RDX Works – les développeurs derrière Radix – a déclaré à Cointelegraph : « Avoir les bons outils pour le travail fait une grande différence – et pour le moment, les développeurs de blockchain n'ont pas les bons outils. Il ne s'agit pas seulement de simplifier les langages, mais de créer des outils de développement intuitifs et sécurisés », poursuit :

«À son apogée, DeFi a atteint plus de 200 milliards de dollars TVL en seulement deux ans – il est donc clair que la demande est très élevée. Pourtant, malgré cette croissance du capital multipliée par 200, le nombre de développeurs n'a été multiplié que par 2, pour atteindre un total d'environ 19,000 30 (sur environ XNUMX millions de développeurs dans le monde).

Malgré le niveau élevé de croissance observé dans l'espace financier décentralisé, le nombre de développeurs n'a pas augmenté pour répondre à la demande. Simmons pense que les développeurs ont peut-être trouvé Solidity trop difficile pour eux de passer au développement de la blockchain :

"Les développeurs hésitent à passer à plein temps dans Web3 en raison de la courbe d'apprentissage abrupte de Solidity et des niveaux élevés de risque liés à la sécurité. Malgré les développeurs très talentueux et les millions de dollars dépensés en audits de sécurité, DeFi continue de saigner de l'argent à cause des hacks et des exploits. Cela seul suffit à dissuader les développeurs d'entrer dans l'espace.

« Disposer des langages et des outils appropriés permettra aux développeurs de développer l'ensemble de l'industrie beaucoup plus rapidement. Tout comme les moteurs de jeu ont donné aux développeurs les outils nécessaires pour révolutionner la production de jeux vidéo dans les années 90, les bons langages et outils Web3 permettront aux développeurs d'accélérer la croissance du Web3 », a ajouté Simmons.

Scrypto mise également sur la sécurité, la simplicité et la convivialité. Les transactions Scrypto sont axées sur les actifs. Ils définissent la manière dont l'utilisateur souhaite que les ressources système soient distribuées. Ils peuvent également indiquer comment les ressources renvoyées doivent être gérées par l'utilisateur ou un autre composant dans une transaction à plusieurs composants.

Les transactions sur Ethereum sont généralement un appel à un contrat intelligent (puisque les DApp et les jetons sur Ethereum sont des contrats intelligents). En revanche, les transactions sur Scrypto impliquent de déplacer des actifs d'un composant à un autre.

Par exemple, si l'utilisateur A souhaite envoyer 10 jetons personnalisés à l'utilisateur B, sa transaction indiquera qu'il essaie de retirer 10 jetons du coffre qui les contient. La transaction indiquera également qu'ils enverront ces jetons à la méthode de dépôt du composant de compte de l'utilisateur B. Étant donné que les ressources (dans ce cas, les jetons) doivent être situées quelque part, un seau (conteneur) sera utilisé pour transférer les jetons de l'utilisateur A à l'utilisateur B.

Dans l'exemple ci-dessus, l'utilisateur transfère un compartiment contenant les ressources (les jetons) à la méthode de dépôt du deuxième utilisateur au lieu de faire un appel à un contrat intelligent de jeton. L'interaction avec les DApps fonctionne de la même manière, les utilisateurs retirant des jetons de leurs comptes et les transmettant au composant pertinent avec lequel ils souhaitent interagir. En résumé, Scrypto adopte une approche basée sur les actifs, les utilisateurs stockant et transmettant les actifs réels. L'approche basée sur les actifs permet également aux développeurs de coder plus facilement les DApp, car il est plus facile d'interagir avec les jetons (ressources), les pools de jetons (coffres) et les utilisateurs (composants).

Pour un autre exemple, si un DApp d'échange (comme Uniswap) était codé avec Scrypto, les développeurs n'auraient qu'à coder la méthode d'échange pour l'échange. Tout d'abord, le DEX devrait identifier le conteneur entrant de jeton A d'un utilisateur, puis calculer le taux de change. Ensuite, les jetons entrants seront déposés et le DEX renverra le montant correct de jeton B à l'utilisateur.

Quel langage de programmation les développeurs de blockchain devraient-ils choisir ?

Les développeurs peuvent utiliser des langages de programmation traditionnels (C++, Python, JavaScript) pour le développement de chaînes de blocs ainsi que des solutions spécialement conçues comme Solidity, Vyper et Scrypto. Plusieurs langages de programmation peuvent être bénéfiques pour l'espace blockchain car ils offrent aux développeurs une gamme d'outils avec lesquels travailler. 

Par exemple, les développeurs qui connaissent C++, JavaScript et Python peuvent trouver Solidity attrayant. Les développeurs qui connaissent Python peuvent graviter vers Vyper, tandis que les développeurs familiarisés avec Rust peuvent choisir d'utiliser le langage Scrypto.

Récent: Les jetons sociaux seront le moteur du Web3, des fanbases à l'incitation

Simmons est d'accord, déclarant à Cointelegraph: «Avec plus de langages à venir sur Web3, nous verrons probablement une période où il y aura pas mal d'approches concurrentes. Au fur et à mesure que ces langages s'adaptent au marché des produits avec les développeurs et, surtout, permettent à ces développeurs de créer des DApps puissants, utiles et sécurisés, nous verrons probablement l'industrie graviter vers ceux qui offrent les meilleurs résultats.

La solidité sera naturellement le choix des développeurs qui souhaitent travailler sur Ethereum et des réseaux blockchain similaires. Dans le même temps, Vyper et Scrypto pourraient attirer les développeurs qui préfèrent la simplicité et une sécurité supplémentaire. Scrypto peut également être préférable pour les développeurs en raison de sa simplicité accrue et de son approche axée sur les actifs.

Source : https://cointelegraph.com/news/vyper-solidity-and-scrypto-how-the-smart-contract-languages-compare