WebAssembly (Wasm) est un format d'instructions binaires portable et très performant qui peut être exécuté dans les navigateurs web. Il est conçu comme une cible de compilation universelle qui peut être utilisée avec plusieurs langages de programmation et fonctionner sur différentes plates-formes.
La blockchain est une technologie de registre distribué décentralisé qui garantit la sécurité et la fiabilité des données grâce à l'utilisation de la cryptographie et d'algorithmes de consensus. La blockchain peut être utilisée pour enregistrer des transactions, stocker des données et exécuter des contrats intelligents, entre autres applications.
Il existe plusieurs relations et scénarios d'application entre Wasm et blockchain :
En résumé, la combinaison de Wasm et de la blockchain permet d'obtenir des applications et des services blockchain plus efficaces, plus sûrs et plus flexibles. La portabilité et les performances élevées de Wasm en font une technologie importante dans le domaine de la blockchain.
WebAssembly est une norme de jeu d'instructions efficace et légère développée par le World Wide Web Consortium (W3C). Il est considéré comme un élément perturbateur pour le web et l'informatique à haute performance, car il prend en charge l'exécution inter-navigateurs. Cela signifie que nous pouvons compiler différents langages de programmation, dont C/C++, Go, Rust et d'autres, dans un format binaire standard unifié et l'utiliser en remplacement de JavaScript, avec une efficacité de code quasi native dans les navigateurs web.
WebAssembly, également connu sous le nom de WASM, est une technologie indépendante de la plate-forme et sans danger pour la mémoire, qui peut s'adapter efficacement à différentes architectures de CPU. Il offre plusieurs avantages clés :
En outre, le web est la seule véritable plateforme universelle qui permet d'accéder à vos applications sur n'importe quel appareil. Cela vous permet également de maintenir une base de code unique, de simplifier les mises à jour et de garantir que tous les utilisateurs peuvent accéder à vos applications. WASM prend en charge les opérations sur les nombres entiers 64 bits et 32 bits, qui correspondent directement aux instructions du processeur. En supprimant les opérations en virgule flottante, il est facile d'obtenir un comportement déterministe, ce qui est nécessaire pour les algorithmes de consensus. Soutenu par le projet d'infrastructure de compilateur LLVM, WASM peut bénéficier de plus d'une décennie d'optimisations de compilateur dans LLVM. WASM est continuellement développé par de grandes entreprises telles que Google, Apple, Microsoft, Mozilla et Facebook, et il est pris en charge par les backends des navigateurs développés par ces entreprises.
La beauté de WASM réside dans sa capacité à fonctionner n'importe où, sans téléchargement ni installation, puisqu'il s'agit d'un format binaire. En un seul clic, les applications web peuvent être exécutées immédiatement en cas de besoin. Cette méthode est encore plus sûre que le téléchargement et l'exécution directs de fichiers binaires, car les navigateurs intègrent des mécanismes de sécurité qui empêchent le code exécuté d'endommager votre système. En outre, le partage des applications web est simple : les liens peuvent être placés n'importe où sous forme de chaînes cliquables.
Le web est passé d'une plate-forme pour contenu statique et petits langages de script à une plate-forme puissante et populaire remplie d'applications et de caractéristiques étonnantes, grâce à la fonctionnalité intégrée des navigateurs et à l'interactivité offerte par le web. Cependant, les applications Web sont encore principalement pilotées par le même langage de script (JavaScript), qui n'a pas été conçu à l'origine pour accomplir ces tâches.
JavaScript était à l'origine un simple langage de script destiné à apporter de l'interactivité à des documents hypertextes légers dans des applications Web. Sa conception était facile à apprendre et à écrire, et il ne donnait pas la priorité à la vitesse d'exécution. Au fil des ans, des améliorations significatives dans l'analyse de JavaScript par les navigateurs ont conduit à des gains de performance notables.
Avec l'accélération de la vitesse d'exécution du JavaScript, l'éventail de ce qui peut être fait dans les navigateurs s'est considérablement élargi. De nouvelles API ont introduit des fonctionnalités telles que les graphiques interactifs, la diffusion vidéo, la navigation hors ligne, etc. En outre, un nombre croissant d'applications qui étaient auparavant limitées aux environnements de bureau ont fait leur entrée sur le Web. Désormais, vous pouvez facilement modifier des documents et envoyer des courriers électroniques dans votre navigateur. Cependant, dans certains domaines, la performance de JavaScript reste un défi. Pensez aux applications logicielles que vous utilisez en dehors des navigateurs : jeux, montage vidéo, rendu 3D ou production musicale. Ces applications nécessitent des calculs importants et des performances élevées. JavaScript a du mal à répondre à ces exigences de haute performance.
Cependant, il n'est pas pratique de remplacer JavaScript, et il faudra peut-être même des décennies pour atteindre cet objectif, car l'ensemble de l'internet repose sur lui. De plus, il existe une grande communauté qui améliore constamment JavaScript. En effet, comparé à d'autres langages, JavaScript présente quelques lacunes sur des aspects tels que null et ==. Toutefois, ces problèmes ne sont pas suffisamment graves pour justifier le remplacement de l'ensemble de la technologie.
WebAssembly ne remplacera donc pas JavaScript, mais cela ne signifie pas que WASM ne sera pas utilisé à l'avenir. En fait, l'utilisation des WASM sera de plus en plus répandue. En effet, WASM peut apporter de puissantes capacités de calcul sur le web, telles que le traitement d'images ou les jeux. Avec WASM, vous pouvez créer une version web de Photoshop qui fonctionne bien, ou un jeu 3D qui tourne à 60 images par seconde ou même à des taux de rafraîchissement plus élevés dans le navigateur. Les jeux, en particulier, représentent un défi car ils nécessitent l'exécution simultanée de traitements audio et vidéo, ainsi que la coordination d'effets physiques et de l'IA. WASM a la capacité d'exécuter efficacement des jeux dans le navigateur, ce qui ouvre la voie à de nombreuses autres applications dans le navigateur.
La figure ci-dessus montre une comparaison du flux de travail entre JavaScript et WebAssembly (wasm). On peut observer que wasm est beaucoup plus concis que JavaScript.
WASM VM
En 2018, l'écosystème Ethereum a commencé à discuter de l'utilisation d'une VM WASM comme machine virtuelle de contrat intelligent, car elle était considérée comme plus performante que l'EVM. Gavin Wood, l'inventeur de l'EVM, a exprimé la possibilité de le remplacer par le WASM, et Vitalik a également déclaré qu'Ethereum 2.0 serait mis à jour pour prendre en charge les contrats WASM (eWASM) afin de répondre à davantage de besoins en matière de développement. Aujourd'hui, le développement des contrats WASM a déjà pris forme.
La question de la taille de l'architecture
Les ordinateurs traditionnels ont des jeux d'instructions qui acceptent des entrées de 32 ou 64 bits. EVM, cependant, est différent et unique car c'est un ordinateur 256 bits conçu pour gérer l'algorithme de hachage d'Ethereum plus facilement, ce qui produit des sorties explicites de 256 bits.
Cependant, l'ordinateur qui exécute les programmes EVM doit diviser les mots de 256 bits dans leurs architectures natives pour exécuter les contrats intelligents, ce qui rend l'ensemble du système inefficace et peu pratique.
En outre, si vous souhaitez mettre en œuvre un algorithme complexe comme SHA256 en utilisant les OPCODES de base d'EVM sur Ethereum, vous allez avoir du mal ! Pour résoudre le problème du coût élevé du gaz lié à l'exécution de programmes complexes dans le jeu d'instructions, Ethereum a introduit le concept de précompilation, qui compile le programme en EVM et consomme une quantité fixe de gaz. Une précompilation notable est l'algorithme de hachage Ethereum, car sa mise en œuvre au sein de la machine virtuelle entraînerait des frais extrêmement coûteux lors de l'appel des contrats.
Pré-compilation gonflée
Le problème de la précompilation est qu'elle augmente continuellement la taille et la complexité de la machine virtuelle, sans s'attaquer au problème principal : la conception inefficace et médiocre du jeu d'instructions et des spécifications actuels.
Et si nous pouvions définir une nouvelle spécification et un nouveau jeu d'instructions qui ne nécessitent pas la précompilation de ces programmes complexes, mais qui permettent d'obtenir efficacement les résultats souhaités à l'aide d'instructions de base ? C'est là que les WASM entrent en jeu.
L'équipe EWASM intègre actuellement WebAssembly sur Ethereum afin de garantir une couche d'exécution plus efficace et simplifiée, faisant d'Ethereum une plateforme informatique entièrement décentralisée. WASM a été adopté comme norme par de nombreux autres projets, notamment Dfinity et EOS, qui l'utilisent tous deux pour améliorer leurs couches d'exécution.
Le projet Stylus est une initiative sur le réseau Arbitrum Ethereum Layer 2 qui vise à améliorer la performance de l'exécution des contrats intelligents en introduisant la machine virtuelle WebAssembly (WASM). Les contrats peuvent être exécutés plus rapidement qu'avec Solidity, tout en réduisant les coûts de gaz. Cela facilite la construction de contrats intelligents de haute performance sur le réseau Arbitrum, et prend actuellement en charge la compilation en C, C++ et Rust.
Support des précompilations personnalisées : Stylus supporte également les précompilations personnalisées, ce qui permet aux développeurs de déployer leurs propres précompilations Rust ou C++ sur le réseau Arbitrum. Cela peut permettre d'introduire de nouveaux algorithmes cryptographiques ou d'autres fonctionnalités spécifiques sur la chaîne sans attendre les mises à niveau de la chaîne. Par exemple, le calcul des tenseurs peut être précompilé pour réduire les coûts d'inférence, ce qui peut être bénéfique pour l'apprentissage automatique sur la chaîne.
Interopérabilité avec l'EVM : Stylus s'intègre à l'écosystème Ethereum existant grâce à l'interopérabilité avec la machine virtuelle Ethereum (EVM). Cela signifie que les contrats Stylus peuvent interagir avec les contrats EVM existants et partager le même état global que l'EVM.
Réentrance : Contrairement à Cosmos Wasm, Stylus Rust SDK introduit une fonctionnalité de réentrance et permet aux développeurs de l'activer manuellement. Cela permet aux contrats d'être plus flexibles en matière d'interopérabilité, mais les développeurs doivent gérer soigneusement l'état pour garantir la sécurité.
Basée sur l'écosystème florissant d'Arbitrum, l'intégration de Stylus est peut-être l'intégration la plus significative de WASM. Il renforce également la compétitivité d'Arbitrum parmi les champs de zkRollup.
Le protocole Gear crée une technologie qui peut être déployée en tant que parachain Polkadot, servant d'outil pour héberger des contrats intelligents. À l'instar de Polkadot, Gear utilise également le cadre Substrate, qui simplifie le processus de création de différentes blockchains pour des applications spécifiques. Substrate fournit des fonctionnalités prêtes à l'emploi, ce qui permet aux utilisateurs de se concentrer sur la création de moteurs personnalisés au-dessus du protocole.
Auparavant, le coût de lancement d'une blockchain était élevé, mais la Gear permet aux développeurs de dApp de se concentrer sur leurs projets au lieu de construire et d'exploiter une blockchain entière à partir de zéro.
Le principal moteur du protocole Gear est le module de contrat intelligent. Dans le cas de Gear, tout contrat intelligent est un programme WebAssembly compilé dans différents langages tels que Rust, C et C++. Pour les développeurs extérieurs au monde de la cryptographie, la barrière à l'entrée est faible car ils peuvent créer des contrats intelligents dans un environnement familier. Les développeurs ont plus de facilité à expérimenter les langages de programmation des contrats intelligents.
L'architecture du contrat intelligent de Gear utilise le modèle d'acteur sous le capot et fournit les fonctionnalités suivantes :
Chaque programme dispose d'une quantité fixe de mémoire, que Gear permet de contrôler. Un programme ne peut lire et écrire que dans sa propre mémoire et ne peut pas accéder à l'espace mémoire d'autres programmes. Chaque programme dispose d'un espace mémoire indépendant et les informations sur les nœuds Gear peuvent être traitées en parallèle.
CosmWasm est une plateforme moderne et puissante de contrats intelligents basée sur Wasm qui peut facilement s'intégrer à Cosmos-SDK. Cela illustre l'un des principaux avantages de CosmWasm : les contrats écrits avec CosmWasm sont étroitement intégrés à l'IBC (Inter-Blockchain Communication), ce qui permet aux développeurs et aux utilisateurs d'entrer dans un avenir multi-chaînes. Actuellement, seul le langage Rust est pris en charge.
Avantages de CosmWasm
Défis et limites
Outre la machine virtuelle wasm, il existe également une technologie émergente récente appelée ZKWASM. L'inventeur, Delphinus Labs, a ouvert le code de ZK-WASM sur GitHub. ZKWASM permet aux développeurs de vérifier l'exactitude des calculs exécutés sans les réexécuter. En s'appuyant sur ZKWASM, les développeurs peuvent créer des applications à preuve de connaissance nulle (ZKP) de manière flexible en utilisant différents langages de programmation. Ces applications peuvent être exécutées de manière transparente dans les navigateurs web.
ZKWASM est dérivé de ZKSNARK, qui est une combinaison de SNARG et de preuves à connaissance nulle. Expliquons-le plus en détail. En général, pour utiliser ZKSNARK, vous devez écrire un programme dans un langage de circuit arithmétique ou un langage adapté aux circuits, tel que Pinocchio, TinyRAM, Buffet/Pequin, Geppetto, xJsnark framework, ZoKrates, etc. Cela constitue un obstacle pour les programmes existants, qui ont du mal à tirer parti de la puissance de ZKSNARK. Il existe cependant une autre solution, qui consiste à ne pas utiliser ZKSNARK au niveau du code source mais au niveau du bytecode d'une machine virtuelle, puis à mettre en œuvre une machine virtuelle qui prend en charge ZKSNARK. Delphinus Labs a adopté cette dernière approche en incorporant l'ensemble de la machine virtuelle WASM dans un circuit ZKSNARK. Par conséquent, les applications WASM existantes peuvent fonctionner directement sur ZKWASM sans aucune modification. Par conséquent, les fournisseurs de services en nuage peuvent prouver à tout utilisateur que les résultats des calculs sont calculés honnêtement et qu'ils ne divulgueront aucune information privée.
ZKWASM offre plusieurs cas d'utilisation, comme la vérification en cours de chaîne des opérations effectuées dans le navigateur. Il permet des interactions basées sur le web qui sont vérifiables sur la blockchain. Parmi les autres cas d'utilisation, citons les services d'oracle, le calcul hors chaîne, l'automatisation, la réduction de l'écart entre Web2 et Web3, la génération de preuves pour l'apprentissage automatique et le traitement des données, et même les jeux et les applications sociales. De plus en plus adopté, zkWASM élargit les possibilités du Web3 et intègre les développeurs Web2 dans ce paysage en pleine mutation.
Grâce à la mise en œuvre de ZKWASM par Delphinus Lab, les développeurs peuvent exploiter la puissance des preuves à connaissance nulle pour renforcer la sécurité et la confidentialité de leurs applications, ouvrant ainsi la voie à un écosystème numérique plus fiable et décentralisé.
Les performances de Web et l'avenir de la couche d'exécution de la plateforme de contrats intelligents sont prometteurs. Non seulement les dApps seront plus performantes, mais l'intégration de WASM permettra également aux personnes familiarisées avec des langages courants comme Rust et Go de développer plus facilement des contrats intelligents, sans avoir à apprendre les subtilités de solidity ou d'autres langages de développement de blockchain. Selon Evans Data Corporation, il y a près de 27 millions de développeurs dans le monde, et ce nombre ne cesse de croître, avec une augmentation prévue à plus de 28,7 millions d'ici 2024. Toutefois, le nombre de développeurs dans le domaine de la blockchain est encore inférieur à 30 000, ce qui ne représente qu'un millième environ du nombre total de développeurs. Bien que ce nombre soit en constante augmentation, l'apprentissage de nouveaux langages de contrats intelligents peut encore constituer un obstacle à l'entrée des développeurs dans l'industrie de la blockchain.
Mais de plus en plus de blockchains commencent à prendre en charge Web Assembly en tant que bytecode pour les contrats intelligents compilés. WASM apporte efficacité, interopérabilité et un large éventail de cas d'utilisation aux blockchains. Il sert également de clé pour déverrouiller la porte pour les développeurs, en abaissant la barrière à l'entrée dans le développement de la blockchain. Imaginez, dans un avenir proche, lorsque les développeurs Web 2.0 voudront s'essayer au développement de la blockchain, ils pourront utiliser des langages familiers comme Python, C++ et JavaScript pour créer des applications à grande échelle sur la blockchain, maximisant ainsi la valeur des réseaux décentralisés. Il faut d'abord abaisser les barrières pour les créateurs (développeurs), puis pour les utilisateurs, et enfin passer à une adoption massive.
https://blog.scottlogic.com/2022/06/20/state-of-wasm-2022.html
https://www.notion.so/18f67cee15c147dfae68b06269a455c0?pvs=21
https://wiki.polkadot.network/docs/learn-wasm
https://docs.arbitrum.io/stylus/stylus-gentle-introduction
https://medium.com/@gear_techs/introducing-gear-easy-to-use-polkadot-parachain-9ccd05437a9c
https://medium.com/cosmwasm/cosmwasm-for-ctos-f1ffa19cccb8
https://www.cncf.io/wp-content/uploads/2023/09/The-State-of-WebAssembly-2023.pdf
https://github.com/DelphinusLab/zkWasm
Nous remercions Maggie et Xinyou Ji (CMU) pour leurs avis et conseils sur cet article.
Clause de non-responsabilité : Tous les articles de Foresight Ventures ne constituent pas des conseils d'investissement. Les investissements comportent des risques. Veuillez donc évaluer votre propre tolérance au risque et prendre vos décisions d'investissement avec prudence.
WebAssembly (Wasm) est un format d'instructions binaires portable et très performant qui peut être exécuté dans les navigateurs web. Il est conçu comme une cible de compilation universelle qui peut être utilisée avec plusieurs langages de programmation et fonctionner sur différentes plates-formes.
La blockchain est une technologie de registre distribué décentralisé qui garantit la sécurité et la fiabilité des données grâce à l'utilisation de la cryptographie et d'algorithmes de consensus. La blockchain peut être utilisée pour enregistrer des transactions, stocker des données et exécuter des contrats intelligents, entre autres applications.
Il existe plusieurs relations et scénarios d'application entre Wasm et blockchain :
En résumé, la combinaison de Wasm et de la blockchain permet d'obtenir des applications et des services blockchain plus efficaces, plus sûrs et plus flexibles. La portabilité et les performances élevées de Wasm en font une technologie importante dans le domaine de la blockchain.
WebAssembly est une norme de jeu d'instructions efficace et légère développée par le World Wide Web Consortium (W3C). Il est considéré comme un élément perturbateur pour le web et l'informatique à haute performance, car il prend en charge l'exécution inter-navigateurs. Cela signifie que nous pouvons compiler différents langages de programmation, dont C/C++, Go, Rust et d'autres, dans un format binaire standard unifié et l'utiliser en remplacement de JavaScript, avec une efficacité de code quasi native dans les navigateurs web.
WebAssembly, également connu sous le nom de WASM, est une technologie indépendante de la plate-forme et sans danger pour la mémoire, qui peut s'adapter efficacement à différentes architectures de CPU. Il offre plusieurs avantages clés :
En outre, le web est la seule véritable plateforme universelle qui permet d'accéder à vos applications sur n'importe quel appareil. Cela vous permet également de maintenir une base de code unique, de simplifier les mises à jour et de garantir que tous les utilisateurs peuvent accéder à vos applications. WASM prend en charge les opérations sur les nombres entiers 64 bits et 32 bits, qui correspondent directement aux instructions du processeur. En supprimant les opérations en virgule flottante, il est facile d'obtenir un comportement déterministe, ce qui est nécessaire pour les algorithmes de consensus. Soutenu par le projet d'infrastructure de compilateur LLVM, WASM peut bénéficier de plus d'une décennie d'optimisations de compilateur dans LLVM. WASM est continuellement développé par de grandes entreprises telles que Google, Apple, Microsoft, Mozilla et Facebook, et il est pris en charge par les backends des navigateurs développés par ces entreprises.
La beauté de WASM réside dans sa capacité à fonctionner n'importe où, sans téléchargement ni installation, puisqu'il s'agit d'un format binaire. En un seul clic, les applications web peuvent être exécutées immédiatement en cas de besoin. Cette méthode est encore plus sûre que le téléchargement et l'exécution directs de fichiers binaires, car les navigateurs intègrent des mécanismes de sécurité qui empêchent le code exécuté d'endommager votre système. En outre, le partage des applications web est simple : les liens peuvent être placés n'importe où sous forme de chaînes cliquables.
Le web est passé d'une plate-forme pour contenu statique et petits langages de script à une plate-forme puissante et populaire remplie d'applications et de caractéristiques étonnantes, grâce à la fonctionnalité intégrée des navigateurs et à l'interactivité offerte par le web. Cependant, les applications Web sont encore principalement pilotées par le même langage de script (JavaScript), qui n'a pas été conçu à l'origine pour accomplir ces tâches.
JavaScript était à l'origine un simple langage de script destiné à apporter de l'interactivité à des documents hypertextes légers dans des applications Web. Sa conception était facile à apprendre et à écrire, et il ne donnait pas la priorité à la vitesse d'exécution. Au fil des ans, des améliorations significatives dans l'analyse de JavaScript par les navigateurs ont conduit à des gains de performance notables.
Avec l'accélération de la vitesse d'exécution du JavaScript, l'éventail de ce qui peut être fait dans les navigateurs s'est considérablement élargi. De nouvelles API ont introduit des fonctionnalités telles que les graphiques interactifs, la diffusion vidéo, la navigation hors ligne, etc. En outre, un nombre croissant d'applications qui étaient auparavant limitées aux environnements de bureau ont fait leur entrée sur le Web. Désormais, vous pouvez facilement modifier des documents et envoyer des courriers électroniques dans votre navigateur. Cependant, dans certains domaines, la performance de JavaScript reste un défi. Pensez aux applications logicielles que vous utilisez en dehors des navigateurs : jeux, montage vidéo, rendu 3D ou production musicale. Ces applications nécessitent des calculs importants et des performances élevées. JavaScript a du mal à répondre à ces exigences de haute performance.
Cependant, il n'est pas pratique de remplacer JavaScript, et il faudra peut-être même des décennies pour atteindre cet objectif, car l'ensemble de l'internet repose sur lui. De plus, il existe une grande communauté qui améliore constamment JavaScript. En effet, comparé à d'autres langages, JavaScript présente quelques lacunes sur des aspects tels que null et ==. Toutefois, ces problèmes ne sont pas suffisamment graves pour justifier le remplacement de l'ensemble de la technologie.
WebAssembly ne remplacera donc pas JavaScript, mais cela ne signifie pas que WASM ne sera pas utilisé à l'avenir. En fait, l'utilisation des WASM sera de plus en plus répandue. En effet, WASM peut apporter de puissantes capacités de calcul sur le web, telles que le traitement d'images ou les jeux. Avec WASM, vous pouvez créer une version web de Photoshop qui fonctionne bien, ou un jeu 3D qui tourne à 60 images par seconde ou même à des taux de rafraîchissement plus élevés dans le navigateur. Les jeux, en particulier, représentent un défi car ils nécessitent l'exécution simultanée de traitements audio et vidéo, ainsi que la coordination d'effets physiques et de l'IA. WASM a la capacité d'exécuter efficacement des jeux dans le navigateur, ce qui ouvre la voie à de nombreuses autres applications dans le navigateur.
La figure ci-dessus montre une comparaison du flux de travail entre JavaScript et WebAssembly (wasm). On peut observer que wasm est beaucoup plus concis que JavaScript.
WASM VM
En 2018, l'écosystème Ethereum a commencé à discuter de l'utilisation d'une VM WASM comme machine virtuelle de contrat intelligent, car elle était considérée comme plus performante que l'EVM. Gavin Wood, l'inventeur de l'EVM, a exprimé la possibilité de le remplacer par le WASM, et Vitalik a également déclaré qu'Ethereum 2.0 serait mis à jour pour prendre en charge les contrats WASM (eWASM) afin de répondre à davantage de besoins en matière de développement. Aujourd'hui, le développement des contrats WASM a déjà pris forme.
La question de la taille de l'architecture
Les ordinateurs traditionnels ont des jeux d'instructions qui acceptent des entrées de 32 ou 64 bits. EVM, cependant, est différent et unique car c'est un ordinateur 256 bits conçu pour gérer l'algorithme de hachage d'Ethereum plus facilement, ce qui produit des sorties explicites de 256 bits.
Cependant, l'ordinateur qui exécute les programmes EVM doit diviser les mots de 256 bits dans leurs architectures natives pour exécuter les contrats intelligents, ce qui rend l'ensemble du système inefficace et peu pratique.
En outre, si vous souhaitez mettre en œuvre un algorithme complexe comme SHA256 en utilisant les OPCODES de base d'EVM sur Ethereum, vous allez avoir du mal ! Pour résoudre le problème du coût élevé du gaz lié à l'exécution de programmes complexes dans le jeu d'instructions, Ethereum a introduit le concept de précompilation, qui compile le programme en EVM et consomme une quantité fixe de gaz. Une précompilation notable est l'algorithme de hachage Ethereum, car sa mise en œuvre au sein de la machine virtuelle entraînerait des frais extrêmement coûteux lors de l'appel des contrats.
Pré-compilation gonflée
Le problème de la précompilation est qu'elle augmente continuellement la taille et la complexité de la machine virtuelle, sans s'attaquer au problème principal : la conception inefficace et médiocre du jeu d'instructions et des spécifications actuels.
Et si nous pouvions définir une nouvelle spécification et un nouveau jeu d'instructions qui ne nécessitent pas la précompilation de ces programmes complexes, mais qui permettent d'obtenir efficacement les résultats souhaités à l'aide d'instructions de base ? C'est là que les WASM entrent en jeu.
L'équipe EWASM intègre actuellement WebAssembly sur Ethereum afin de garantir une couche d'exécution plus efficace et simplifiée, faisant d'Ethereum une plateforme informatique entièrement décentralisée. WASM a été adopté comme norme par de nombreux autres projets, notamment Dfinity et EOS, qui l'utilisent tous deux pour améliorer leurs couches d'exécution.
Le projet Stylus est une initiative sur le réseau Arbitrum Ethereum Layer 2 qui vise à améliorer la performance de l'exécution des contrats intelligents en introduisant la machine virtuelle WebAssembly (WASM). Les contrats peuvent être exécutés plus rapidement qu'avec Solidity, tout en réduisant les coûts de gaz. Cela facilite la construction de contrats intelligents de haute performance sur le réseau Arbitrum, et prend actuellement en charge la compilation en C, C++ et Rust.
Support des précompilations personnalisées : Stylus supporte également les précompilations personnalisées, ce qui permet aux développeurs de déployer leurs propres précompilations Rust ou C++ sur le réseau Arbitrum. Cela peut permettre d'introduire de nouveaux algorithmes cryptographiques ou d'autres fonctionnalités spécifiques sur la chaîne sans attendre les mises à niveau de la chaîne. Par exemple, le calcul des tenseurs peut être précompilé pour réduire les coûts d'inférence, ce qui peut être bénéfique pour l'apprentissage automatique sur la chaîne.
Interopérabilité avec l'EVM : Stylus s'intègre à l'écosystème Ethereum existant grâce à l'interopérabilité avec la machine virtuelle Ethereum (EVM). Cela signifie que les contrats Stylus peuvent interagir avec les contrats EVM existants et partager le même état global que l'EVM.
Réentrance : Contrairement à Cosmos Wasm, Stylus Rust SDK introduit une fonctionnalité de réentrance et permet aux développeurs de l'activer manuellement. Cela permet aux contrats d'être plus flexibles en matière d'interopérabilité, mais les développeurs doivent gérer soigneusement l'état pour garantir la sécurité.
Basée sur l'écosystème florissant d'Arbitrum, l'intégration de Stylus est peut-être l'intégration la plus significative de WASM. Il renforce également la compétitivité d'Arbitrum parmi les champs de zkRollup.
Le protocole Gear crée une technologie qui peut être déployée en tant que parachain Polkadot, servant d'outil pour héberger des contrats intelligents. À l'instar de Polkadot, Gear utilise également le cadre Substrate, qui simplifie le processus de création de différentes blockchains pour des applications spécifiques. Substrate fournit des fonctionnalités prêtes à l'emploi, ce qui permet aux utilisateurs de se concentrer sur la création de moteurs personnalisés au-dessus du protocole.
Auparavant, le coût de lancement d'une blockchain était élevé, mais la Gear permet aux développeurs de dApp de se concentrer sur leurs projets au lieu de construire et d'exploiter une blockchain entière à partir de zéro.
Le principal moteur du protocole Gear est le module de contrat intelligent. Dans le cas de Gear, tout contrat intelligent est un programme WebAssembly compilé dans différents langages tels que Rust, C et C++. Pour les développeurs extérieurs au monde de la cryptographie, la barrière à l'entrée est faible car ils peuvent créer des contrats intelligents dans un environnement familier. Les développeurs ont plus de facilité à expérimenter les langages de programmation des contrats intelligents.
L'architecture du contrat intelligent de Gear utilise le modèle d'acteur sous le capot et fournit les fonctionnalités suivantes :
Chaque programme dispose d'une quantité fixe de mémoire, que Gear permet de contrôler. Un programme ne peut lire et écrire que dans sa propre mémoire et ne peut pas accéder à l'espace mémoire d'autres programmes. Chaque programme dispose d'un espace mémoire indépendant et les informations sur les nœuds Gear peuvent être traitées en parallèle.
CosmWasm est une plateforme moderne et puissante de contrats intelligents basée sur Wasm qui peut facilement s'intégrer à Cosmos-SDK. Cela illustre l'un des principaux avantages de CosmWasm : les contrats écrits avec CosmWasm sont étroitement intégrés à l'IBC (Inter-Blockchain Communication), ce qui permet aux développeurs et aux utilisateurs d'entrer dans un avenir multi-chaînes. Actuellement, seul le langage Rust est pris en charge.
Avantages de CosmWasm
Défis et limites
Outre la machine virtuelle wasm, il existe également une technologie émergente récente appelée ZKWASM. L'inventeur, Delphinus Labs, a ouvert le code de ZK-WASM sur GitHub. ZKWASM permet aux développeurs de vérifier l'exactitude des calculs exécutés sans les réexécuter. En s'appuyant sur ZKWASM, les développeurs peuvent créer des applications à preuve de connaissance nulle (ZKP) de manière flexible en utilisant différents langages de programmation. Ces applications peuvent être exécutées de manière transparente dans les navigateurs web.
ZKWASM est dérivé de ZKSNARK, qui est une combinaison de SNARG et de preuves à connaissance nulle. Expliquons-le plus en détail. En général, pour utiliser ZKSNARK, vous devez écrire un programme dans un langage de circuit arithmétique ou un langage adapté aux circuits, tel que Pinocchio, TinyRAM, Buffet/Pequin, Geppetto, xJsnark framework, ZoKrates, etc. Cela constitue un obstacle pour les programmes existants, qui ont du mal à tirer parti de la puissance de ZKSNARK. Il existe cependant une autre solution, qui consiste à ne pas utiliser ZKSNARK au niveau du code source mais au niveau du bytecode d'une machine virtuelle, puis à mettre en œuvre une machine virtuelle qui prend en charge ZKSNARK. Delphinus Labs a adopté cette dernière approche en incorporant l'ensemble de la machine virtuelle WASM dans un circuit ZKSNARK. Par conséquent, les applications WASM existantes peuvent fonctionner directement sur ZKWASM sans aucune modification. Par conséquent, les fournisseurs de services en nuage peuvent prouver à tout utilisateur que les résultats des calculs sont calculés honnêtement et qu'ils ne divulgueront aucune information privée.
ZKWASM offre plusieurs cas d'utilisation, comme la vérification en cours de chaîne des opérations effectuées dans le navigateur. Il permet des interactions basées sur le web qui sont vérifiables sur la blockchain. Parmi les autres cas d'utilisation, citons les services d'oracle, le calcul hors chaîne, l'automatisation, la réduction de l'écart entre Web2 et Web3, la génération de preuves pour l'apprentissage automatique et le traitement des données, et même les jeux et les applications sociales. De plus en plus adopté, zkWASM élargit les possibilités du Web3 et intègre les développeurs Web2 dans ce paysage en pleine mutation.
Grâce à la mise en œuvre de ZKWASM par Delphinus Lab, les développeurs peuvent exploiter la puissance des preuves à connaissance nulle pour renforcer la sécurité et la confidentialité de leurs applications, ouvrant ainsi la voie à un écosystème numérique plus fiable et décentralisé.
Les performances de Web et l'avenir de la couche d'exécution de la plateforme de contrats intelligents sont prometteurs. Non seulement les dApps seront plus performantes, mais l'intégration de WASM permettra également aux personnes familiarisées avec des langages courants comme Rust et Go de développer plus facilement des contrats intelligents, sans avoir à apprendre les subtilités de solidity ou d'autres langages de développement de blockchain. Selon Evans Data Corporation, il y a près de 27 millions de développeurs dans le monde, et ce nombre ne cesse de croître, avec une augmentation prévue à plus de 28,7 millions d'ici 2024. Toutefois, le nombre de développeurs dans le domaine de la blockchain est encore inférieur à 30 000, ce qui ne représente qu'un millième environ du nombre total de développeurs. Bien que ce nombre soit en constante augmentation, l'apprentissage de nouveaux langages de contrats intelligents peut encore constituer un obstacle à l'entrée des développeurs dans l'industrie de la blockchain.
Mais de plus en plus de blockchains commencent à prendre en charge Web Assembly en tant que bytecode pour les contrats intelligents compilés. WASM apporte efficacité, interopérabilité et un large éventail de cas d'utilisation aux blockchains. Il sert également de clé pour déverrouiller la porte pour les développeurs, en abaissant la barrière à l'entrée dans le développement de la blockchain. Imaginez, dans un avenir proche, lorsque les développeurs Web 2.0 voudront s'essayer au développement de la blockchain, ils pourront utiliser des langages familiers comme Python, C++ et JavaScript pour créer des applications à grande échelle sur la blockchain, maximisant ainsi la valeur des réseaux décentralisés. Il faut d'abord abaisser les barrières pour les créateurs (développeurs), puis pour les utilisateurs, et enfin passer à une adoption massive.
https://blog.scottlogic.com/2022/06/20/state-of-wasm-2022.html
https://www.notion.so/18f67cee15c147dfae68b06269a455c0?pvs=21
https://wiki.polkadot.network/docs/learn-wasm
https://docs.arbitrum.io/stylus/stylus-gentle-introduction
https://medium.com/@gear_techs/introducing-gear-easy-to-use-polkadot-parachain-9ccd05437a9c
https://medium.com/cosmwasm/cosmwasm-for-ctos-f1ffa19cccb8
https://www.cncf.io/wp-content/uploads/2023/09/The-State-of-WebAssembly-2023.pdf
https://github.com/DelphinusLab/zkWasm
Nous remercions Maggie et Xinyou Ji (CMU) pour leurs avis et conseils sur cet article.
Clause de non-responsabilité : Tous les articles de Foresight Ventures ne constituent pas des conseils d'investissement. Les investissements comportent des risques. Veuillez donc évaluer votre propre tolérance au risque et prendre vos décisions d'investissement avec prudence.