Monad : la blockchain qui parallélise l’EVM pour atteindre les 10 000 tx/s
Il y a quelques semaines, le projet Monad a finalisé une ronde de financement à hauteur de 255 millions de dollars. Parmi les investisseurs, nous retrouvons plusieurs noms bien connus de l’industrie tels que Paradigm ou Electric Capital. De son côté, le magazine Fortune présente Monad comme « le layer 1 qui s’attaque à Ethereum et Solana ». Explorons ensemble ce que propose Monad, le nouvel arrivant dans l’horizon des layers 1.
Qu’est-ce que Monad ?
Comme nous venons de l’aborder, Monad est une blockchain de layer 1, au même titre qu’Ethereum, Solana ou encore la BNB Smart Chain.
En pratique, la blockchain Monad est développée par Monad Labs, une équipe de près de 40 personnes.
À l’origine du projet, nous retrouvons trois cofondateurs, Keone Hon, James Hunsaker et Eunice Giarta. Keone et James ont fait leurs armes chez Jump Trading et Jump Crypto, pour lesquels ils ont aussi bien travaillé sur des systèmes de trading que sur des applications décentralisées. De son côté, Eunice a travaillé auprès de la Bank of America Merrill Lynch et a également été impliquée dans la création d’un système de trading pour Broadway Technology.
Cette appétence pour les systèmes de trading, qui sont connus pour nécessiter une latence très basse et un haut degré d’optimisation, les a amenés à imaginer Monad. En effet, Monad a pour objectif de devenir le layer 1 le plus rapide de l’écosystème.
Un L1 aux performances hors du commun
Dans sa documentation, le projet Monad déclare qu’il sera en mesure de traiter 10 000 transactions par seconde. À titre de comparaison, Ethereum peut traiter entre 10 et 20 transactions par seconde. De son côté, Solana est en mesure de traiter environ 5 000 transactions par seconde.
Ainsi, Monad souhaite se démarquer en doublant le nombre de transactions par seconde proposé par Solana, qui est l’une des blockchains ayant le meilleur débit à ce jour.
Toutefois, Monad ne souhaite pas améliorer les performances au détriment de la décentralisation.
Pour ce faire, le layer 1 a mis en place plusieurs méthodes qui permettent d’arriver à de tels niveaux de performances. Ainsi, Monad opère une exécution parallèle des transactions ainsi qu’un procédé appelé Superscalar pipelining. Ne vous inquiétez pas, nous allons explorer plus en détail ces concepts plus loin dans l’article.
Toujours du côté des performances, Monad propose un temps de bloc d’une seconde, à savoir qu’un nouveau bloc y sera produit toutes les secondes et une finalité d’une seconde également. Pour rappel, le concept de finalité se réfère à la garantie qu’une fois qu’une transaction est validée, elle est définitive et ne peut plus être modifiée ou annulée.
Une blockchain EVM compatible
En parallèle, Monad a fait le choix de la compatibilité à l’EVM (Ethereum Vitrual Machine). Cela permet d’une part aux applications développées sur Ethereum (ou toute autre blockchain EVM) d’être déployées sur Monad sans avoir à apporter de modification au code source.
De plus, cela permet d’utiliser l’ensemble des outils déjà disponibles et répandus tels que Metamask ou encore Etherscan.
De surcroît, Monad utilise la même architecture d’adresses qu’Ethereum. Par conséquent, il sera possible de réutiliser votre adresse Ethereum sur Monad. Comme expliqué dans la documentation :
« Du point de vue de l’utilisateur, Monad se comporte de manière très similaire à Ethereum. Vous pouvez utiliser les mêmes portefeuilles (par exemple MetaMask) ou explorateurs de blocs (par exemple Etherscan) pour signer ou visualiser des transactions. L’espace d’adressage de Monad est le même que celui d’Ethereum, vous pouvez donc réutiliser vos clés existantes. »
Les spécificités de Monad
Lors de cette présentation, vous vous demandez peut-être ce qui différencie Monad des autres L1 déployées les dernières années.
Eh bien, Monad présente deux spécificités majeures et pas des moindres. À savoir la parallélisation et le pipelining superscalaire. Pas de crainte, nous allons expliciter ces concepts aux intitulés quelque peu barbares.
Exécution parallèle
Premièrement, Monad a recours à une méthode appelée exécution parallèle. En pratique, cela consiste à exécuter les transactions simultanément au lieu de les traiter une par une.
Ainsi, plutôt que de les exécuter les unes après les autres comme c’est, par exemple, le cas sur Ethereum, les transactions sont exécutées en même temps, réduisant ainsi drastiquement le temps d’exécution.
Sans trop entrer dans le détail, Monad utilise une méthode appelée Optimistic Execution.
« Cela signifie que Monad commencera à exécuter les transactions avant que les transactions précédentes du bloc ne soient terminées. »
Toutefois, bien que l’exécution soit parallèle, le résultat des transactions est ordonné linéairement au sein du bloc, comme c’est le cas sur Ethereum. Ainsi, l’exécution parallèle se déroule sous le capot, mais du point de vue de l’utilisateur, le résultat est le même que sur Ethereum, en plus rapide.
Mais alors que se passe-t-il s’il y a une erreur d’exécution, car deux transactions sont dépendantes l’une de l’autre ? Vous vous en doutez, Monad a prévu ce cas de figure.
Pour cela, Monad utilise un système de contrôle qui compare les données utilisées par la Transaction 2 avec les résultats de la Transaction 1. Si les données diffèrent, cela signifie que la Transaction 2 a utilisé des informations incorrectes et doit être exécutée à nouveau avec les bonnes données. Le cas échéant, la blockchain va réexécuter la transaction en se basant sur les bonnes données. D’autant plus que cette dernière utilise un système de cache afin de réduire le besoin en ressources.
« Lors de la réexécution d’une transaction en raison d’un échec de la fusion, il arrive souvent que le(s) compte(s) et l’espace de stockage accédé ne changent pas. Cet état est toujours mis en cache dans la mémoire, il s’agit donc d’un travail coûteux qui n’a pas besoin d’être répété. »
Superscalar pipelining
Dans un second temps, Monad espère pouvoir atteindre les 10 000 transactions par seconde en utilisant une méthode appelée superscalar pipelining. Cette méthode consiste à créer des groupes d’actions et à les exécuter en parallèle.
En pratique, l’architecture en pipeline de Monad va découper l’exécution des transactions en étapes plus petites. Ces étapes sont exécutées simultanément et indépendamment. Par conséquent, cela permet de réduire le temps de traitement des transactions et de ce fait améliore le débit.
Pour imager ce concept, Monad propose une métaphore plutôt bien pensée en prenant pour exemple le fait de faire sa lessive.
« Lorsque vous faites quatre lessives, la stratégie naïve consiste à laver, sécher, plier et ranger la première lessive avant de commencer la seconde. La stratégie pipelinière consiste à commencer à laver la deuxième lessive lorsque la première est mise dans le sèche-linge. L’organisation en pipeline permet d’effectuer le travail plus efficacement en utilisant plusieurs ressources simultanément. »
MonadBFT : le consensus utilisé par la blockchain
Du côté du consensus, Monad opère un système de Proof of Stake intitulé MonadBFT. Dans les faits, il s’agit d’un dérivé de HotStuff utilisé par Libra/Diem, le projet de blockchain avorté de Facebook ou encore Aptos, qui utilise également une version modifiée.
Qui dit Proof of Stake, dit nœuds validateurs. Ainsi, pour opérer correctement, ces nœuds validateurs doivent être connectés à un nœud complet (full node). L’une des principales composantes de la décentralisation réside dans l’accessibilité de ces nœuds complets et par conséquent aux besoins matériels nécessaires pour les opérer.
Pour opérer un full node il faudra un CPU 16-core, 32 GO de RAM, 2 TB de SSD pour le stockage ainsi qu’une bande passante de 100 Mbit/s.
À titre de comparaison, voici un comparatif entre les besoins matériels pour un full node sur Ethereum, Solana et Monad :
Blockchain | CPU | RAM | Disque SSD | Bande passante |
Ethereum | 4-core CPU | 16 GB RAM | 1 TB SSD | 25 Mbit/s |
Monad | 16-core CPU | 32 GB RAM | 2 TB SSD | 100 Mbit/s |
Solana | 12 cores / 24 threads ou plus | 256 GB RAM | PCIe Gen3 x4 NVME SSD ou mieux | 10 Gbit/s |
Ainsi, Monad arrive à atteindre des performances théoriquement supérieures à celle de Solana, en ayant des besoins matériels bien en dessous. Néanmoins, les besoins restent plus importants que ceux pour opérer un full node Ethereum.
Un projet à l’état embryonnaire
Néanmoins, il faut souligner que l’ensemble des performances annoncées par Monad ne sont encore que théoriques.
En effet, le projet est actuellement intensivement développé. Celui-ci ne dispose pas de mainnet et son testnet devrait voir le jour dans les mois à venir, mais aucune date exacte n’a pour le moment été dévoilée. Toutefois, les équipes de Monad ont opéré plusieurs Devnet en interne, afin d’assurer que l’ensemble de la pile technologique fonctionne correctement avant le déploiement du testnet.
Ainsi, nous attendons avec impatience le testnet de Monad afin de pouvoir tester les performances annoncées par les équipes de développement. Quoi qu’il en soit, le succès de Monad semble bien parti. En effet, le projet dispose d’une communauté vibrante et a su mettre l’accent sur cette dernière.