Skip to main content

L’écosystème blockchain et WebAssembly

Cette section est assez spécifique au monde de la blockchain, nous allons donc redéfinir certains termes.

Une blockchain est un réseau qui permet le partage de données sans intermédiaire. Techniquement, c'est une base de données distribuée.

Un nœud est une machine qui fait partie du réseau et qui héberge une copie de la base de données.

Dans les blockchains plus modernes, comme celles dont nous allons parler par la suite, il est possible d'utiliser la blockchain à la fois comme une base de données, mais aussi comme une puissance de calcul pour exécuter des programmes.

WebAssembly est une technologie très populaire dans le monde de la blockchain. Beaucoup de projets ont commencé, mais très peu sont matures.

Les objectifs d'une blockchain sont les suivants :

  • Cross-plateforme : Pouvoir s'exécuter sur une grande variété de machines, car la blockchain est une forme de gros ordinateur décentralisé.
  • Compact : Les programmes et les transactions effectués sur la blockchain doivent être stockés pour toujours. Ils doivent donc être aussi petits que possible.
  • Sandboxé : Un programme malveillant dans la blockchain ne doit pas pouvoir corrompre la machine de celui qui héberge le nœud.
  • Déterministe : Les contributeurs de la blockchain doivent effectuer le même nombre d'opérations pour arriver à un résultat.

On se rend compte que ces objectifs sont alignés sur les objectifs du WASM qui sont :

  • Cross-plateforme
  • Compact
  • Sandboxé
  • Performance

Le seul souci est l'aspect déterministe : chaque blockchain qui a décidé de mettre l'accent sur le WebAssembly a dû résoudre d'une manière ou d'une autre ce problème.

Ethereum

Le projet Ethereum fonctionne sur la base d’une machine virtuelle appelée EVM. Cette machine permet de programmer en Solidity, un langage spécifiquement conçu pour le développement blockchain. Cependant, ce langage a des défauts qui limitent l'ouverture de la plateforme à une plus large communauté de développeurs. La fondation Ethereum souhaite donc utiliser une destination de compilation intermédiaire comme le WebAssembly.

Pour ce faire, la communauté Ethereum a travaillé à développer un sous-ensemble d’instructions qui soient totalement déterministes. Toutefois, ce projet de mise à jour a été mis en pause temporairement. Il est possible que les équipes du projet Ethereum reprennent le développement après la mise à jour de janvier 2023.

Comsos

COSMOS est un réseau de blockchain interopérable. Sa plateforme de machines virtuelles WebAssembly, COSMOWASM, a été lancée avec sa version 1.0 en juin 2022. Il s'agit du projet WebAssembly dans la blockchain le plus abouti.

La Fondation COSMOS recommande d'utiliser le langage Rust, car il est officiellement intégré dans l’écosystème COSMOS. AssemblyScript est en cours d'ajout à la liste des langages supportés par COSMOWASM, et le support complet devrait être disponible en 2023.

Polkadot

Polkadot est semblable à Cosmos, un réseau blockchain (qu'on appelle aussi une blockchain de layer 0). Ils expérimentent un système d'exécution de programme en WASM sur leur réseau "canary", appelé Kusama. Il s'agit d'un réseau en "bêta publique", où l'on peut tester nos programmes en WebAssembly. Malheureusement, le développement de ce réseau est en early-stage et il n'est pas recommandé pour une utilisation en production.

Elrond

L’écosystème blockchain et WebAssembly est dominé par Elrond. Elrond est une blockchain qui fait appel à wasmer comme moteur d’exécution. Malgré sa jeunesse et sa peu grande maturité, Elrond est la seule plateforme qui exécute des programmes basés sur le WebAssembly. Ces programmes peuvent être écrits dans n'importe quel langage qui peut être compilé en WASM.

La plateforme Elrond encourage le développement en Rust en raison de sa compatibilité avec l’écosystème.

Ressources

https://medium.com/@rauljordan/webassembly-the-future-of-blockchain-computing-1a0ae28f7e40

https://ewasm.readthedocs.io/en/mkdocs/

https://github.com/ewasm/design

https://github.com/openethereum/pwasm-tutorial

https://www.youtube.com/watch?v=2eISBAbT3GM

https://medium.com/nearprotocol/wasm-for-blockchain-2019-d093bfeb6133

https://wasmer.io/

https://medium.com/oasislabs/blockchain-flavored-wasi-50e3612b8eba

https://github.com/beriberikix/awesome-wasm-blockchain