Cours obligatoire pour les développeurs Web3 : analyse complète des langages de smart contracts

L'éducation personnelle des développeurs Web3 - langages de smart contracts

Introduction de base

Les smart contracts sont des protocoles d'exécution automatisés qui fonctionnent sur des plateformes de blockchain, permettant aux parties contractantes d'effectuer des transactions fiables directement sans intermédiaire ou tiers de confiance, ces transactions étant traçables et irréversibles. Les smart contracts contiennent des fonctions de code et peuvent interagir avec d'autres contrats ; lorsque les conditions prédéfinies sont remplies, le smart contract exécute automatiquement les fonctions de code spécifiées dans le contrat.

Le concept de smart contracts a été proposé pour la première fois par le scientifique en informatique Nick Szabo dans les années 1990, mais ce n'est qu'avec l'apparition de la blockchain Ethereum que les smart contracts ont commencé à être largement utilisés. Ethereum a été lancé en 2015, prenant en charge le déploiement et l'exécution des smart contracts. Contrairement à Bitcoin, qui est principalement utilisé pour des transactions simples de cryptomonnaie, Ethereum permet de construire des applications décentralisées sur sa plateforme grâce à son langage de programmation Turing-complet, c'est pourquoi il est surnommé la deuxième génération de blockchain.

Le langage des smart contracts est un langage de programmation utilisé pour écrire des smart contracts, compilé en bytecode et exécuté sur la machine virtuelle de la plateforme de smart contracts de la blockchain, réalisant le code de la logique prédéfinie. Un langage de smart contracts doit permettre aux développeurs d'exprimer les règles du contrat de manière sécurisée et efficace, et fournit généralement une série d'outils et d'abstractions pour traiter les transactions et les états de la blockchain.

L'auto-amélioration des développeurs Web3 — langages de smart contracts

smart contracts langage

La plupart des développeurs de smart contracts travaillent sur Ethereum et sur des blockchains compatibles EVM, tandis que Solana est la blockchain non compatible EVM avec le plus de développeurs, et Move a été spécialement conçu pour développer des smart contracts de manière sécurisée.

Bien qu'il existe de nombreuses autres blockchains publiques avec des langages de smart contracts dédiés, tels que TON/FunC, Cardano/Plutus, ICP/Motoko, Flow/Cadence, Starknet/Cairo, elles sont trop fragmentées.

Ainsi, cet article classera les langages de contrats intelligents selon les systèmes EVM, Solana et Move.

EVM

EVM est le noyau d'Ethereum, responsable de l'exécution des smart contracts et du traitement des transactions. Le protocole Ethereum définit un bytecode qui fonctionne sur l'EVM, et construit au-dessus de celui-ci le langage intermédiaire Yul et Yul+, puis construit à nouveau des langages de haut niveau tels que Solidity/Vyper/Fe au-dessus du langage intermédiaire, ces langages de haut niveau réduisant la difficulté de développement des smart contracts pour les utilisateurs en front-end. Le principal avantage d'une architecture multi-niveaux est que le langage intermédiaire est adapté à la traduction en langage machine, ainsi qu'à l'optimisation de programmes complets, et qu'il est facile à vérifier manuellement, à valider formellement, etc. Cependant, plus il y a de niveaux, plus le coût de la garantie de la vérifiabilité augmente, chaque niveau nécessitant une validation correspondante. Bien sûr, les langages de niveau inférieur, étant plus simples, ont un coût de validation plus faible.

Sur Ethereum et les blockchains compatibles EVM, les développeurs peuvent utiliser différents langages de programmation de haut niveau. Les langages les plus populaires et les mieux entretenus sont Solidity et Vyper. De plus, il est possible de choisir Yul, Yul+, Fe et Huff.

Solidity a été proposé pour la première fois en 2014 par Gavin Wood, CTO d'Ethereum, et a ensuite été développé par l'équipe Ethereum dirigée par Christian Reitwiessner. Solidity, en tant que langage de programmation orienté objet, est fortement influencé par C++, Python et JavaScript, et est spécialement conçu pour l'EVM. Pour permettre la réutilisation du code, les smart contracts sont considérés comme des objets de classe, utilisant l'héritage multiple. En particulier, Solidity définit une norme d'interface binaire d'application (ABI) pour interagir avec ses contrats. Actuellement, l'ABI de Solidity est considérée comme la norme de fait pour le DSL de l'EVM.

Vyper a été développé par l'équipe de Vitalik Buterin, l'un des fondateurs d'Ethereum, dans le but d'être une alternative à Solidity, lancé en 2017. Vyper est un langage de programmation similaire à Python, orienté vers les contrats, et conçu pour l'EVM. Vyper est optimisé pour la sécurité, la lisibilité, l'auditabilité et l'efficacité du Gas. Vyper n'utilise pas de modèle orienté objet et ne peut pas utiliser d'assemblage en ligne.

Yul est un langage d'assemblage avec un contrôle de flux avancé et de nombreuses abstractions, faisant partie de la chaîne d'outils Solidity. La plupart des fonctionnalités de Yul sont exposées dans des blocs d'assemblage en ligne dans Solidity, permettant d'exploiter des fonctionnalités non prises en charge par Solidity et de personnaliser le stockage, la mémoire et le calldata. Yul+ est une extension de Yul qui peut être considérée comme une mise à niveau expérimentale de Yul.

Fe est un langage de haut niveau similaire à Rust, lancé en janvier 2021. Fe n'utilise pas de modèle orienté objet, mais réutilise le code via un système basé sur des modules, permettant de déclarer des variables, des types et des fonctions à l'intérieur des modules, et d'importer de manière similaire à Rust.

Huff est un langage d'assemblage, avec un contrôle de pile manuel et une abstraction minimisée de l'ensemble d'instructions EVM. Grâce à la directive « #include », tout fichier Huff inclus peut être résolu à la compilation, permettant ainsi la réutilisation du code.

Sur Ethereum, la majorité des smart contracts sont développés en Solidity, représentant environ 90%, soit dix fois plus que Vyper, qui arrive en deuxième position, tandis que Fee, ayant démarré plus tard, est rarement utilisé par les développeurs. Yul et Yul+ sont généralement utilisés comme blocs d'assemblage en ligne de Solidity, permettant un accès de bas niveau à l'ensemble d'instructions EVM, souvent utilisés pour l'optimisation du Gas. Huff est plus bas niveau que Yul/Yul+, permettant de manipuler manuellement la pile et d'appeler des instructions EVM, souvent utilisé pour une optimisation extrême du Gas.

L'art de l'auto-discipline des développeurs Web3 - langages de smart contracts

Solana系

Solana est connue pour son mécanisme PoH (Proof of History) ainsi que pour sa faible latence et son haut débit, c'est l'un des "tueurs d'Ethereum" les plus célèbres. Solana est également l'une des chaînes publiques ayant connu la plus forte croissance de sa capitalisation boursière et de son écosystème au cours de l'année dernière, ce qui a catalysé une croissance significative de sa communauté de développeurs.

Solana appelle les smart contracts des programmes on-chain (Program), principalement écrits en Rust, mais contrairement à d'autres blockchains publiques utilisant le langage Rust, Solana n'utilise pas de runtime WASM. Solana a sa propre machine virtuelle unique SVM et son code bytecode SBF.

SVM est le runtime qui exécute des smart contracts et traite des transactions sur le réseau Solana, avec Sealevel comme composant clé. Sealevel permet l'exécution simultanée de plusieurs smart contracts sans que leurs performances n'affectent les autres, réalisant ainsi un traitement parallèle dans le runtime de Solana. Les smart contracts de Solana spécifient quels états (comptes) seront lus ou écrits à l'exécution, ce qui permet l'exécution parallèle de transactions sans conflit tout en garantissant la cohérence des données.

SBF basé sur eBPF, qui est l'ancêtre du BPF (Berkeley Packet Filter), initialement conçu pour le filtrage efficace des paquets de données réseau, eBPF offre un ensemble d'instructions plus riche, permettant d'intervenir dynamiquement sur le noyau du système d'exploitation et de modifier son comportement sans changer le code source, avec des performances élevées, de la sécurité et de la portabilité. SBF par rapport à eBPF utilise un validateur personnalisé qui non seulement vérifie que le programme doit s'arrêter dans un certain nombre d'instructions (c'est-à-dire le célèbre problème de l'arrêt), mais vérifie également si les instructions sont correctes et s'il y a des sauts hors limites. En plus du validateur, il résout également certains détails d'eBPF qui posent problème pour la compilation de smart contracts.

LLVM (Low Level Virtual Machine) est une architecture de compilation moderne et une chaîne d'outils, le compilateur peut traduire Rust en langage intermédiaire LLVM IR, qui est ensuite traduit par LLVM IR en eBPF pour la plateforme cible. En théorie, tous les langages de programmation qui prennent en charge la compilation en LLVM IR peuvent être utilisés pour écrire des contrats intelligents Solana, mais en réalité, Solana Labs a apporté plusieurs modifications à Rust et au backend eBPF LLVM, dont certaines modifications ne sont pas disponibles en amont (Rust et LLVM). Le développement de contrats Solana prend actuellement en charge uniquement Rust et Solang.

Rust est un langage de programmation développé sous la direction de Mozilla, lancé en 2011, dont la syntaxe est similaire à celle de C++. C'est un langage de programmation compilé statiquement, conçu pour la performance et la sécurité, en particulier pour la sécurité, et ne se limite pas aux programmes de smart contracts. Comparé à Solidity, Rust est un langage de programmation de bas niveau (low-level) et multi-paradigme, offrant de hautes performances et une sécurité mémoire. Le compilateur officiel de Rust est rustc, qui effectue l'analyse lexicale, l'analyse syntaxique et l'analyse sémantique du code source Rust, pour finalement compiler le code en LLVM IR.

Solang, développé sous la direction de Hyperlege Labs, a été lancé en 2023. C'est un compilateur basé sur l'architecture LLVM pour Solidity sur Solana et Polkadot, qui prend en charge l'écriture de smart contracts en Solidity, mais la syntaxe réelle a été modifiée pour être cohérente avec l'architecture de Solana et Polkadot. L'objectif de Solang est de simplifier la transition des développeurs vers Solana ou Polkadot et d'élargir la portée du développement en Solidity.

Rust est le principal langage soutenu par Solana, offrant une plus grande stabilité ; Solang se distingue principalement par sa compatibilité avec le langage Solidity.

L'auto-discipline des développeurs Web3 - langages de smart contracts

Move系

Move est un nouveau langage de programmation de smart contracts, lancé en 2019, initialement développé pour le projet de blockchain Diem de Meta. Move vise à résoudre les problèmes de sécurité liés aux actifs et aux transactions, permettant ainsi aux actifs et transactions d'être strictement définis et contrôlés. Ses caractéristiques linguistiques sont :

  1. Protection des types de ressources de première classe (Frist Class Resources) : Un type de ressource de première classe est d'abord un type de variable, puis cette variable est définie : ne peut pas être copiée ; ne peut pas être détruite implicitement ; ne peut être "déplacée" que sur des adresses de programmes différentes ;

  2. Flexibilité : Le bytecode Move peut être exécuté directement ou appeler le code d'autres Modules publiés, il est possible d'appeler plusieurs programmes dans une seule transaction, permettant ainsi de réaliser des transferts à plusieurs personnes dans une seule opération.

  3. Sécurité et vérifiabilité : Le système de codage Move offre une protection de sécurité ciblée pour les ressources. Les ressources Move ne peuvent pas être copiées, réutilisées ou détruites. Un type de ressource ne peut être créé ou détruit que par le module qui définit son type. La machine virtuelle Move effectuera une vérification par le biais de bytecode statique et refusera l'exécution des programmes qui n'ont pas passé la vérification du bytecode, afin d'assurer leur sécurité.

Après la dissolution du projet Diem, l'équipe fondatrice a quitté pour créer Aptos et Sui, qui utilisent également Move comme langage principal des smart contracts. Aptos hérite de Diem Move (Core Move), tandis que Sui utilise sa propre version personnalisée de Sui Move pour rédiger ses smart contracts.

Dans Move, chaque smart contract est un module composé de définitions de fonctions et de structures, les structures étant instanciées dans les fonctions et pouvant être passées à d'autres modules via des appels de fonction. Sui Move, par rapport à Core Move, utilise un modèle de données basé sur des objets, et il existe trois types d'objets différents dans Sui : les objets propriétaires, les objets partagés et les objets immuables. La stratégie de parallélisation de Sui est similaire à celle de Solana, les transactions devant également spécifier quels objets manipuler. Cette conception permet à Sui de traiter efficacement les transactions concurrentes, réalisant ainsi une capacité de traitement parallèle sans nécessiter de tri global requis par les blockchains traditionnelles.

Le compilateur, le vérificateur et la machine virtuelle de Move sont tous conçus de zéro. Le vérificateur est l'un des mécanismes de sécurité fondamentaux de Move, utilisé pour maintenir le modèle de programmation centré sur les ressources de Move. Le vérificateur de Move est un outil d'analyse statique qui analyse le bytecode de Move et détermine s'il respecte les règles de sécurité des types, de la mémoire et des ressources requises. Tous les modules téléchargés sur la chaîne doivent passer par le vérificateur.

Comparé à des langages comme Solidity, Move est un langage convivial pour la vérification formelle, par exemple, il ne prend pas en charge des caractéristiques comme l'appel dynamique (dynamic dispatch), toutes les voies de contrat peuvent être déterminées au moment de la compilation, sans avoir besoin de déterminer la fonction à exécuter lors de l'exécution du contrat, ce qui permet une analyse et une vérification approfondies.

Move dispose également d'un outil de vérification formelle pour les smart contracts, appelé Move Prover. Les développeurs doivent écrire des conditions de vérification pour les smart contracts (sous forme d'assertions), et Move Prover convertit ces conditions de vérification en formules SMT en arrière-plan, puis utilise un solveur SMT pour les vérifier.

Développement Web3 : l'auto-cultivation des développeurs - langages de smart contracts

smart contracts développement d'outils

Pour ceux qui souhaitent entrer dans le monde de Web3 ou apprendre le développement de contrats sur Ethereum et d'autres blockchains compatibles avec l'EVM, Solidity est le choix incontournable. De plus, grâce à la popularité de Solidity, les outils de développement sont également plus matures, parmi lesquels on trouve :

  • Hardhat est un environnement de développement pour compiler, déployer, tester et déboguer des applications Ethereum. Il aide les développeurs à gérer et automatiser les tâches répétitives inhérentes au processus de construction de smart contracts et de DApps, et permet d'introduire facilement plus de fonctionnalités autour de ce flux de travail;

  • OpenZeppelin propose des contrats OpenZeppelin open source, écrits en Solidity, pour construire des smart contracts sécurisés. Les contrats OpenZeppelin permettent

Voir l'original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Récompense
  • 3
  • Partager
Commentaire
0/400
ApeWithNoFearvip
· Il y a 19h
smart contracts搞不定 这可咋混!
Voir l'originalRépondre0
ImpermanentLossFanvip
· Il y a 19h
smart contracts bullp un poil... en fait, c'est juste un bloc de code
Voir l'originalRépondre0
0xOverleveragedvip
· Il y a 19h
Je ne joue pas avec les jetons virtuels, je ne trade que des futures. Un effet de levier élevé est ce qui est intéressant.
Voir l'originalRépondre0
  • Épingler
Trader les cryptos partout et à tout moment
qrCode
Scan pour télécharger Gate app
Communauté
Français (Afrique)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)