L’émergence des blockchains et des contrats intelligents a suscité un intérêt généralisé pour la création de dapps et l’utilisation de contrats intelligents à des fins pratiques. Solidity – un langage de contrat intelligent d’Ethereum – est le principal langage de programmation utilisé pour le réseau public de blockchain d’Ethereum et reste le langage de contrat intelligent le plus répandu..
Malgré son succès et son utilisation généralisée pour la rédaction de contrats intelligents sur Ethereum, Solidity est un langage de programmation relativement nouveau, naturellement sensible aux bugs et à certaines erreurs logiques de haut niveau. De la demande de création de contrats intelligents et de méthodes de sécurité améliorées pour les écrire, les langages de programmation Vyper et Scilla ont émergé.
Solidité & Contrats intelligents
Solidity a été proposé par Bois de Gavin en 2014 et est le langage de programmation dominant pour l’écriture de contrats intelligents. Il est spécialement conçu pour la machine virtuelle Ethereum (EVM) et présente des Documentation sur ce que c’est et comment l’utiliser.
Solidity est un langage de programmation de haut niveau qui se compile en bytecode compatible EVM qui s’exécute sur les nœuds Ethereum. Notamment, Solidity est un langage de programmation relativement simple (comparé à d’autres) avec une syntaxe très familière qui ressemble à JavaScript. La solidité est également construite avec des considérations importantes en tant que langage de contrat intelligent pour l’exécution sur des blockchains, y compris la nécessité pour les contrats intelligents d’être déterministes.
Lire: Qu’est-ce que la solidité? Notre guide du langage des contrats intelligents Ethereum
Solidity est disponible pour en savoir plus sur plusieurs plateformes éducatives en ligne, y compris Udemy – et a plusieurs vastes livres écrit à ce sujet. Les effets de réseau de Solidity en ont fait le langage de programmation incontournable pour les contrats intelligents et les dapps basés sur Ethereum.
Malgré sa popularité généralisée, l’existence de Solidity en tant que langage de programmation spécifique à EVM limite son utilisation pour d’autres plates-formes blockchain. En outre, les problèmes de sécurité liés aux langages de haut niveau et leurs problèmes potentiels ont conduit à mettre l’accent sur l’audit intelligent des contrats et sur des langages plus simples et plus sécurisés. Haut profil hacks et recherche études révéler l’ampleur des vulnérabilités a inévitablement conduit à un besoin pressant de meilleures pratiques de contrats intelligents.
Vyper
Vyper est un langage de programmation expérimental qui est similaire à Solidity en ce qu’il est également spécialement conçu pour l’EVM. Vyper est syntaxiquement similaire à Python et est orienté contrat comme Solidity.
Cependant, Vyper est conçu avec des objectifs spécifiques de sécurité, de simplicité et d’auditabilité. Cela est largement dû à des problèmes de sécurité dans les premières itérations de contrats intelligents. En raison des principes et des objectifs de Vyper, des exemples explicites de fonctionnalités qu’il fait délibérément ne pas ont sont esquissé comme:
- Modificateurs
- Héritage de classe
- Fonction & Surcharge de l’opérateur
- Appel récursif
- Boucles infinies
Notamment, les appels récursifs rendent impossible la fixation d’une limite supérieure sur les limites de gaz et peuvent conduire à des attaques de limites de gaz. De plus, la suppression des modificateurs a été effectuée dans un souci de vérification, car ils peuvent rendre le code trompeur et difficile à interpréter d’un point de vue lisible par l’homme..
Vyper se débarrasse des fonctionnalités vulnérables à la sécurité, mais ajoute également certaines fonctionnalités clés, notamment la vérification des limites et des débordements, la décidabilité et une frappe forte. En ce qui concerne les limites de gaz, la décidabilité permet à un développeur de calculer une limite supérieure précise pour la consommation de gaz d’un appel de fonction.
Une distinction majeure entre Vyper et Solidity est que – bien qu’ils se ressemblent – Vyper supprime une grande partie des archétypes orientés objet présents dans Solidity. L’accent mis sur la simplicité pour Vyper lui permet également d’être beaucoup plus lisible dans les cas où l’audit par des parties peu familiarisées avec la programmation est nécessaire. L’utilisation potentielle de Vyper est donc attrayante pour de nombreuses applications commerciales pratiques qui peuvent être écrites en Vyper.
Les considérations de sécurité au niveau du langage de programmation sont importantes à prendre en compte. La simplicité conduit souvent à une complexité logique moins requise et peut intrinsèquement offrir une meilleure sécurité. Vyper n’est pas non plus nécessairement conçu pour remplacer Solidity, mais plutôt pour fournir un langage plus simple et plus sécurisé comme option alternative lorsque cela est nécessaire..
Vyper comprend un Protocole d’amélioration Vyper (VIP) et a même un éditeur de texte avec un en ligne compilateur pour jouer avec le code Vyper. Ethereum Casper FFG l’implémentation est également écrite en Vyper.
Scilla
Scilla est un langage de contrat intelligent de niveau intermédiaire utilisé par Zilliqa. Scilla est explicitement conçu avec la sécurité et la sécurité des contrats intelligents à l’esprit. Surtout, il se concentre sur la fourniture vérification formelle de contrats intelligents.
Lire: Guide du débutant sur Zilliqa
Vérification formelle est conçu pour fournir des garanties statiques des contrats intelligents avant qu’ils ne soient immuablement engagés dans la blockchain. La vérification formelle des contrats intelligents est de plus en plus répandue sur le terrain et est activement poursuivie et appliquée par plusieurs plates-formes, dont Tezos et Cardano. L’utilisation de la vérification formelle devrait réduire considérablement les instances de code bogué engagées dans les blockchains et, par la suite, réduire la nécessité d’un audit intensif des contrats intelligents par des tiers..
Scilla est soigneusement conçu pour être suffisamment expressif pour créer des dapps utiles, tout en garantissant le raisonnement formel sur le comportement du contrat. Semblable à Vyper, le principe principal est la simplicité et la sécurité plutôt que l’expressivité. Une distinction importante qui doit être faite à propos de Scilla est qu’il s’agit d’un langue de niveau intermédiaire, ce qui signifie qu’il est destiné à être une cible de traduction pour les langages de haut niveau et à être ensuite compilé en bytecode exécutable. En conséquence, la langue est plus difficile à comprendre qu’une langue de haut niveau comme Solidity.
Scilla sépare la communication et le calcul, ce qui a des conséquences importantes sur la façon dont les contrats sont exécutés. Les contrats sont structurés comme automates communicants où les calculs en contrat sont exécutés comme des transitions atomiques sans pour autant impliquant toute autre partie. De plus, un cas d’implication requise par une autre partie entraîne une fin de transition explicitement communiquée. Les effets spécifiques au contrat tels que les transitions peuvent ensuite être découplés des interactions blockchain comme les messages et l’envoi / la réception de fonds.
De plus, Scilla fournit une séparation entre efficace et pur calculs avec séparation entre invocation et continuation. En ce qui concerne les calculs efficaces et purs, Scilla s’inspire de la programmation fonctionnelle en citant:
«En concevant soigneusement la sémantique de l’interaction entre les aspects linguistiques purs et impurs, nous garantissons un certain nombre de propriétés fondamentales sur les transitions contractuelles, telles que la progression et la préservation du type, tout en les rendant également accessibles à une vérification interactive et / ou automatique avec des outils autonomes»
La séparation de l’appel et de la continuation fait référence à la structuration des contrats en tant qu’automates communicants pour fournir un CPS modèle de calcul. En utilisant ce modèle avec des suites explicites, des langages comme Solidity peuvent être traduits directement en Scilla sans compromettre l’intégrité de la structure des automates.
Le composant de vérification formelle de Scilla est activé par son intégration dans le Assistant de preuve Coq, un système de gestion des preuves formel conçu pour fournir des preuves vérifiées mécaniquement des contrats intelligents et des applications distribuées. Le résultat est la vérification formelle des contrats qui raisonnent à la fois sur les propriétés de sécurité et vivacité. Exactitude dans les systèmes distribués peuvent être séparés en sécurité et vivacité. Selon Zilliqa:
Sécurité est quand “rien ne va pas»- C’est une garantie que quelque chose de mauvais va jamais se produire. Dans le consensus, c’est à ce moment qu’aucun processus ne décide de valeurs différentes. Un autre exemple serait qu’il n’y a pas de blocage dans les systèmes de transaction distribués. La sécurité a des conséquences importantes sur l’intégrité globale des contrats intelligents à long terme.
Vivacité est ou “certaines choses peuvent éventuellement arriver»- Une garantie que quelque chose de bon va finalement se produire. Le mot «éventuellement» n’implique pas non plus une limite de temps, mais si le système fonctionne assez longtemps, alors la vivacité est garantie. Par exemple, dans le consensus, tous les processus décideront finalement d’une valeur. Un autre exemple est l’exhaustivité des détecteurs de panne qui finiront par détecter les processus défectueux.
Le développement de Scilla par Zilliqa parallèlement à la formalisation et à son intégration dans Coq devrait s’avérer une décision précieuse pour la sécurité future des contrats intelligents qui fonctionnent sur sa blockchain à haut débit.
Enfin, Scilla est indépendante de la blockchain et peut être utilisée pour d’autres blockchains. Cependant, il est toujours en recherche et développement actifs, principalement avec l’équipe Zilliqa. La Scilla site Internet fournit également un tutoriel et IDE en ligne pour essayer la langue.
Conclusion
L’innovation continue dans le développement de contrats intelligents verra certainement l’essor de langages de programmation et de solutions plus orientés contrat pour lutter contre leur sécurité. Le besoin de sécurité des dapps et des contrats intelligents est de la plus haute importance compte tenu des montants de valeur qui sont transférés sur de grands réseaux de crypto-monnaie comme Ethereum.
Les premières itérations de contrats intelligents ont montré un potentiel important dans leurs capacités futures. Désormais, une nouvelle classe de développements se concentre sur l’amélioration de leur sécurité au niveau du langage de programmation pour assurer leur durabilité.