Foresight Ventures : WASM - Le moteur d'une nouvelle ère

Débutant1/1/2024, 2:25:51 AM
Cet article examine certaines des relations et des cas d'utilisation entre Wasm et la blockchain : contrats intelligents, interactions entre les chaînes, calcul hors chaîne et confidentialité des données.

TL;DR

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 :

  1. Contrats intelligents : Wasm peut servir d'environnement d'exécution pour les contrats intelligents, permettant aux contrats de s'exécuter sur différentes plateformes blockchain. La haute performance et la portabilité de Wasm permettent une exécution plus efficace des contrats intelligents et une utilisation multiplateforme.
  2. Interopérabilité entre chaînes : Wasm peut être utilisé pour mettre en œuvre l'interopérabilité entre chaînes. En compilant la logique de différentes blockchains dans le code Wasm, la même logique peut être exécutée sur différentes blockchains, ce qui permet le transfert de données et l'interaction entre les chaînes.
  3. Calcul hors chaîne : Wasm peut être utilisé pour des calculs en dehors de la blockchain et soumettre les résultats des calculs à la blockchain. Cela permet d'améliorer l'efficacité et la flexibilité des calculs tout en maintenant la sécurité et la fiabilité des données.
  4. Confidentialité des données : Wasm peut être utilisé pour protéger la confidentialité des données sur la blockchain. En compilant la logique de traitement des données sensibles dans le code Wasm et en l'exécutant sur la blockchain, la confidentialité des données peut être préservée tout en garantissant la vérifiabilité des calculs.

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.

1. Qu'est-ce que l'assemblage Web ?

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 :

  • Efficacité : WASM dispose d'un ensemble complet de fonctionnalités linguistiques et constitue un format binaire compact et rapide à charger. Son objectif est d'exploiter pleinement les capacités du matériel pour obtenir des performances en langue maternelle.
  • Sécurité : WASM fonctionne dans un environnement d'exécution sans risque pour la mémoire et dans un bac à sable, et il peut même être mis en œuvre dans des machines virtuelles JavaScript existantes. Dans un environnement web, WASM respecte strictement la politique de la même origine et les politiques de sécurité du navigateur. Lors de la compilation, WASM limite l'interface afin de réduire les risques de sécurité. La plupart des applications WASM ne peuvent pas accéder à l'internet (par exemple, pas de support de socket) et sont limitées à l'accès aux bases de données locales. De nombreux problèmes de sécurité découlent d'un accès non autorisé à la mémoire, ce qui peut être atténué lors de la compilation à l'aide de WASM.
  • Compatibilité : WASM est conçu pour être sans version, testable et rétrocompatible sur le web. Il peut être invoqué par JavaScript, entrer dans le contexte JavaScript et accéder aux fonctionnalités du navigateur comme une API Web. WASM peut fonctionner non seulement dans les navigateurs web, mais aussi dans des environnements non web tels que Node.js, Deno, et les appareils IoT. Contrairement aux approches traditionnelles qui nécessitent plusieurs compilations, WASM n'a besoin d'être compilé qu'une seule fois pour une exécution instantanée et prête à l'emploi.

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.

2. Pourquoi avons-nous besoin de l'assemblage Web ?

2.1 Web2

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.

2.2 Web3

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.

2.3 Comment l'EVM est-il conçu ? Pourquoi est-ce inefficace ?

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.

2.4 Comparaison entre EVM et WASM VM

  • Vitesse : WASM vise à fournir une vitesse d'exécution plus rapide que l'EVM. EVM peut avoir des problèmes d'efficacité dans la compilation et l'exécution des contrats intelligents, tandis que WASM améliore la vitesse de chargement et la capacité de traitement en convertissant directement en code compilé.
  • Contrats précompilés : L'EVM s'appuie sur des contrats précompilés pour une exécution efficace des calculs cryptographiques, mais cela peut présenter des risques de "hard forks". WASM élimine le besoin de contrats précompilés, ce qui permet aux développeurs de créer des contrats intelligents efficaces et rapides.
  • Coûts de transaction : Avec une machine virtuelle WASM plus rapide, le débit des transactions augmente considérablement, ce qui permet de réduire les coûts de déploiement et de transaction des contrats. Les contrats WASM répondent aux problèmes des frais de transaction élevés et de la congestion du réseau Ethereum.
  • Flexibilité et interopérabilité : WASM élargit la gamme des langages disponibles pour le développement de contrats intelligents, en permettant l'utilisation de n'importe quel langage de haut niveau qui se compile à WASM, comme Rust, C++ et JavaScript. Cela signifie que les développeurs peuvent écrire des contrats intelligents dans leur langage préféré, y compris des frameworks matures comme ink ! pour Rust ou Ask ! pour AssemblyScript.

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.

2.5 Stylus(Arbitrum)

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.

2.6 Gear(Polkadot)

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 :

  • Mémoire persistante pour les programmes immuables
  • Traitement asynchrone des messages
  • Surface d'API minimale, intuitive et suffisante pour le contexte de la blockchain
  • Modèle de proxy de communication d'acteur entre les composants de la chaîne pour une plus grande composabilité et une meilleure compatibilité avec l'exécution de code parallèle et le partage.

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.

2.7 CosmWasm(Cosmos)

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

  1. Sécurité : Améliore la sécurité des contrats intelligents en utilisant le langage de programmation Rust.
  2. Compatibilité inter-chaînes : Prise en charge du protocole IBC (Inter-Blockchain Communication) au sein de l'écosystème Cosmos.
  3. Performance : Démontre une plus grande efficacité et des coûts de transaction plus faibles dans certains cas par rapport à la machine virtuelle Ethereum (EVM) traditionnelle.
  4. Convivialité pour les développeurs : les caractéristiques de sécurité de type et de mémoire du langage Rust permettent de réduire certains types d'erreurs dans les contrats intelligents.

Défis et limites

  1. Courbe d'apprentissage : La courbe d'apprentissage de Rust peut être plus raide que celle de langages de contrats intelligents plus couramment utilisés comme Solidity. Pour augmenter le potentiel d'adoption à grande échelle, CosmWasm doit prendre en charge la compilation dans un plus grand nombre de langues.
  2. Ecosystème et outils : Bien qu'en pleine croissance, les outils de développement et l'écosystème de CosmWasm peuvent encore être relativement limités par rapport aux plateformes de contrats intelligents matures comme Ethereum.
  3. Part de marché et notoriété : Dans l'espace des plateformes de contrats intelligents, CosmWasm pourrait être moins connu que des plateformes comme Ethereum et Binance Smart Chain, ce qui affecte sa capacité à attirer les développeurs et les utilisateurs.
  4. Défis liés à la maintenance et à la mise à jour : Bien que CosmWasm offre une fonctionnalité de mise à niveau des contrats, la maintenance et la gestion des mises à niveau des contrats intelligents restent une tâche complexe qui doit être gérée avec soin pour éviter les vulnérabilités en matière de sécurité.
  5. Problèmes de compatibilité : Les projets habitués à l'EVM ou à d'autres environnements de contrats intelligents peuvent rencontrer des problèmes de compatibilité lors de la migration vers CosmWasm.

2.8 ZK-WASM

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é.

3. Conclusion

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.

4. Index

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.

Clause de non-responsabilité:

  1. Cet article est repris de[Foresight Research]. Tous les droits d'auteur appartiennent à l'auteur original[Mike@ Foresight Ventures]. Si vous avez des objections à cette réimpression, veuillez contacter l'équipe de Gate Learn, qui s'en chargera rapidement.
  2. Clause de non-responsabilité : Les points de vue et les opinions exprimés dans cet article sont uniquement ceux de l'auteur et ne constituent pas un conseil en investissement.
  3. Les traductions de l'article dans d'autres langues sont effectuées par l'équipe de Gate Learn. Sauf mention contraire, il est interdit de copier, distribuer ou plagier les articles traduits.

Foresight Ventures : WASM - Le moteur d'une nouvelle ère

Débutant1/1/2024, 2:25:51 AM
Cet article examine certaines des relations et des cas d'utilisation entre Wasm et la blockchain : contrats intelligents, interactions entre les chaînes, calcul hors chaîne et confidentialité des données.

TL;DR

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 :

  1. Contrats intelligents : Wasm peut servir d'environnement d'exécution pour les contrats intelligents, permettant aux contrats de s'exécuter sur différentes plateformes blockchain. La haute performance et la portabilité de Wasm permettent une exécution plus efficace des contrats intelligents et une utilisation multiplateforme.
  2. Interopérabilité entre chaînes : Wasm peut être utilisé pour mettre en œuvre l'interopérabilité entre chaînes. En compilant la logique de différentes blockchains dans le code Wasm, la même logique peut être exécutée sur différentes blockchains, ce qui permet le transfert de données et l'interaction entre les chaînes.
  3. Calcul hors chaîne : Wasm peut être utilisé pour des calculs en dehors de la blockchain et soumettre les résultats des calculs à la blockchain. Cela permet d'améliorer l'efficacité et la flexibilité des calculs tout en maintenant la sécurité et la fiabilité des données.
  4. Confidentialité des données : Wasm peut être utilisé pour protéger la confidentialité des données sur la blockchain. En compilant la logique de traitement des données sensibles dans le code Wasm et en l'exécutant sur la blockchain, la confidentialité des données peut être préservée tout en garantissant la vérifiabilité des calculs.

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.

1. Qu'est-ce que l'assemblage Web ?

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 :

  • Efficacité : WASM dispose d'un ensemble complet de fonctionnalités linguistiques et constitue un format binaire compact et rapide à charger. Son objectif est d'exploiter pleinement les capacités du matériel pour obtenir des performances en langue maternelle.
  • Sécurité : WASM fonctionne dans un environnement d'exécution sans risque pour la mémoire et dans un bac à sable, et il peut même être mis en œuvre dans des machines virtuelles JavaScript existantes. Dans un environnement web, WASM respecte strictement la politique de la même origine et les politiques de sécurité du navigateur. Lors de la compilation, WASM limite l'interface afin de réduire les risques de sécurité. La plupart des applications WASM ne peuvent pas accéder à l'internet (par exemple, pas de support de socket) et sont limitées à l'accès aux bases de données locales. De nombreux problèmes de sécurité découlent d'un accès non autorisé à la mémoire, ce qui peut être atténué lors de la compilation à l'aide de WASM.
  • Compatibilité : WASM est conçu pour être sans version, testable et rétrocompatible sur le web. Il peut être invoqué par JavaScript, entrer dans le contexte JavaScript et accéder aux fonctionnalités du navigateur comme une API Web. WASM peut fonctionner non seulement dans les navigateurs web, mais aussi dans des environnements non web tels que Node.js, Deno, et les appareils IoT. Contrairement aux approches traditionnelles qui nécessitent plusieurs compilations, WASM n'a besoin d'être compilé qu'une seule fois pour une exécution instantanée et prête à l'emploi.

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.

2. Pourquoi avons-nous besoin de l'assemblage Web ?

2.1 Web2

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.

2.2 Web3

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.

2.3 Comment l'EVM est-il conçu ? Pourquoi est-ce inefficace ?

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.

2.4 Comparaison entre EVM et WASM VM

  • Vitesse : WASM vise à fournir une vitesse d'exécution plus rapide que l'EVM. EVM peut avoir des problèmes d'efficacité dans la compilation et l'exécution des contrats intelligents, tandis que WASM améliore la vitesse de chargement et la capacité de traitement en convertissant directement en code compilé.
  • Contrats précompilés : L'EVM s'appuie sur des contrats précompilés pour une exécution efficace des calculs cryptographiques, mais cela peut présenter des risques de "hard forks". WASM élimine le besoin de contrats précompilés, ce qui permet aux développeurs de créer des contrats intelligents efficaces et rapides.
  • Coûts de transaction : Avec une machine virtuelle WASM plus rapide, le débit des transactions augmente considérablement, ce qui permet de réduire les coûts de déploiement et de transaction des contrats. Les contrats WASM répondent aux problèmes des frais de transaction élevés et de la congestion du réseau Ethereum.
  • Flexibilité et interopérabilité : WASM élargit la gamme des langages disponibles pour le développement de contrats intelligents, en permettant l'utilisation de n'importe quel langage de haut niveau qui se compile à WASM, comme Rust, C++ et JavaScript. Cela signifie que les développeurs peuvent écrire des contrats intelligents dans leur langage préféré, y compris des frameworks matures comme ink ! pour Rust ou Ask ! pour AssemblyScript.

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.

2.5 Stylus(Arbitrum)

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.

2.6 Gear(Polkadot)

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 :

  • Mémoire persistante pour les programmes immuables
  • Traitement asynchrone des messages
  • Surface d'API minimale, intuitive et suffisante pour le contexte de la blockchain
  • Modèle de proxy de communication d'acteur entre les composants de la chaîne pour une plus grande composabilité et une meilleure compatibilité avec l'exécution de code parallèle et le partage.

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.

2.7 CosmWasm(Cosmos)

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

  1. Sécurité : Améliore la sécurité des contrats intelligents en utilisant le langage de programmation Rust.
  2. Compatibilité inter-chaînes : Prise en charge du protocole IBC (Inter-Blockchain Communication) au sein de l'écosystème Cosmos.
  3. Performance : Démontre une plus grande efficacité et des coûts de transaction plus faibles dans certains cas par rapport à la machine virtuelle Ethereum (EVM) traditionnelle.
  4. Convivialité pour les développeurs : les caractéristiques de sécurité de type et de mémoire du langage Rust permettent de réduire certains types d'erreurs dans les contrats intelligents.

Défis et limites

  1. Courbe d'apprentissage : La courbe d'apprentissage de Rust peut être plus raide que celle de langages de contrats intelligents plus couramment utilisés comme Solidity. Pour augmenter le potentiel d'adoption à grande échelle, CosmWasm doit prendre en charge la compilation dans un plus grand nombre de langues.
  2. Ecosystème et outils : Bien qu'en pleine croissance, les outils de développement et l'écosystème de CosmWasm peuvent encore être relativement limités par rapport aux plateformes de contrats intelligents matures comme Ethereum.
  3. Part de marché et notoriété : Dans l'espace des plateformes de contrats intelligents, CosmWasm pourrait être moins connu que des plateformes comme Ethereum et Binance Smart Chain, ce qui affecte sa capacité à attirer les développeurs et les utilisateurs.
  4. Défis liés à la maintenance et à la mise à jour : Bien que CosmWasm offre une fonctionnalité de mise à niveau des contrats, la maintenance et la gestion des mises à niveau des contrats intelligents restent une tâche complexe qui doit être gérée avec soin pour éviter les vulnérabilités en matière de sécurité.
  5. Problèmes de compatibilité : Les projets habitués à l'EVM ou à d'autres environnements de contrats intelligents peuvent rencontrer des problèmes de compatibilité lors de la migration vers CosmWasm.

2.8 ZK-WASM

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é.

3. Conclusion

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.

4. Index

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.

Clause de non-responsabilité:

  1. Cet article est repris de[Foresight Research]. Tous les droits d'auteur appartiennent à l'auteur original[Mike@ Foresight Ventures]. Si vous avez des objections à cette réimpression, veuillez contacter l'équipe de Gate Learn, qui s'en chargera rapidement.
  2. Clause de non-responsabilité : Les points de vue et les opinions exprimés dans cet article sont uniquement ceux de l'auteur et ne constituent pas un conseil en investissement.
  3. Les traductions de l'article dans d'autres langues sont effectuées par l'équipe de Gate Learn. Sauf mention contraire, il est interdit de copier, distribuer ou plagier les articles traduits.
即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!