Monad est une nouvelle plate-forme de contrats intelligents de couche 1 qui a récemment levé 225 millions de dollars auprès de la société de capital-risque Paradigm. 

Bien que Monad n'ait pas encore été lancé, il devrait être opérationnel sur son réseau de test public fin 2024, et le déploiement du réseau principal est prévu pour début 2025.

Monad est un projet parallèle de machine virtuelle Ethereum (EVM) et, comme des projets similaires tels que Aurora (construit sur le protocole Near) ou Sei, il tente de paralléliser l'exécution des instructions EVM afin que le réseau puisse traiter plusieurs transactions simultanément. Cela permet de gérer un plus grand volume de transactions, augmente le débit et réduit les coûts.

La parallélisation implique de décomposer l'exécution des transactions en tâches plus petites et indépendantes pouvant être traitées simultanément. Monad introduit quatre optimisations pour améliorer son consensus, son exécution et son stockage de données : MonadBFT, exécution différée, exécution parallèle et MonadDb.

MonadBFT

MonadBFT est un algorithme pipeline byzantin en deux phases, tolérant aux pannes, conçu pour améliorer l'évolutivité et l'efficacité de la blockchain. C'est un dérivé de l'algorithme HotStuff optimisé pour fonctionner dans des conditions partiellement synchrones. 

Cette optimisation est importante, car la plupart des réseaux du monde réel ne présentent pas un comportement parfaitement synchrone en raison des délais de livraison variables des messages causés par la congestion du réseau, la latence et d'autres facteurs. En s'adaptant à ces conditions partiellement synchrones, MonadBFT garantit des performances et une fiabilité décentes dans les déploiements pratiques.

L'algorithme HotStuff est un protocole de consensus conçu pour que les systèmes blockchain atteignent la tolérance aux pannes byzantine (BFT), qui est la capacité d'un système informatique à continuer de fonctionner même si certains de ses nœuds agissent de manière malveillante ou sont défectueux.

Il atteint cette robustesse grâce à une série de cycles de communication entre les nœuds pour se mettre d'accord sur le bloc suivant de la chaîne. HotStuff nécessite trois cycles de communication pour parvenir à un consensus, ce qui peut devenir un goulot d'étranglement en termes d'évolutivité et d'efficacité. MonadBFT améliore HotStuff en réduisant les cycles de communication nécessaires au consensus de trois à deux.

Le mécanisme de consensus fonctionne par phases. Un nœud leader propose des blocs et les validateurs les examinent. À chaque tour, le leader envoie un nouveau bloc avec soit un certificat de quorum (QC), soit un certificat de délai d'attente (TC) pour le tour précédent. Un QC est la preuve qu’un bloc a été approuvé par une majorité de validateurs, indiquant qu’ils sont d’accord sur la validité du bloc.

Un TC, en revanche, indique que le nombre requis de validateurs n'a pas atteint un consensus dans un délai donné. Cela agit comme un mécanisme de repli pour empêcher le système de caler.

Les validateurs votent sur le nouveau bloc proposé par le leader. Si un nombre suffisant de validateurs (deux tiers) approuvent, le bloc est finalisé lors des tours suivants et des QC sont émis.

Si les validateurs ne reçoivent pas de bloc valide à temps, ils envoient des messages de délai d'attente signés, qui peuvent être regroupés dans un TC. Ce TC est ensuite envoyé directement au leader suivant. Un bloc est finalisé lorsque les validateurs voient deux blocs certifiés consécutifs.

Cette règle de validation en deux phases garantit une finalisation rapide des blocs tout en maintenant la sécurité du réseau et la tolérance aux pannes. Comme dans tous les paramètres BFT asynchrones, les deux tiers des nœuds de validation de Monad doivent être non contradictoires et avoir un poids de vote égal pour maintenir la sécurité.

Exécution différée

L’exécution différée dissocie l’exécution des transactions du consensus. Contrairement aux blockchains traditionnelles comme Ethereum, où les nœuds doivent exécuter des transactions avant d'établir un consensus, le consensus MonadBFT se concentre uniquement sur l'ordre des transactions.

Sur Ethereum, les nœuds doivent parvenir à un consensus à la fois sur la liste des transactions dans le bloc et sur la racine de l'arborescence Merkle pour l'exécution de l'état après la transaction. Cela signifie que le leader du consensus doit exécuter les transactions avant de soumettre le bloc, et les nœuds de validation doivent tous refaire cette exécution avant de voter.

Les temps de blocage peuvent donc devenir assez longs et la complexité des calculs que le réseau peut gérer est réduite. Le mécanisme de consensus de MonadBFT détermine uniquement l'ordre des transactions et permet l'exécution indépendamment une fois le consensus atteint.

Pour garantir que l'exécution est effectuée correctement, Monad retarde l'accord sur la racine Merkle de l'état de blocs D. D est un paramètre à l’échelle du système qui devrait actuellement être égal à 10.

Cette conception atténue les risques associés à un nœud malveillant qui n'exécute pas correctement les transactions. Une fois que le réseau atteint un consensus sur le bloc N avec un vote majoritaire des deux tiers, il se met également d'accord sur l'état représenté par l'arbre de Merkle dans le bloc N-D.

Si un nœud découvre une erreur lors de l'exécution du bloc N-D, il vote contre la proposition pour le bloc N. Cela déclenche un retour à l'état final du bloc N-D-1, suivi de la réexécution des transactions du bloc N-D. Un nœud peut vérifier et corriger ses résultats d'exécution par rapport à d'autres nœuds du réseau en vérifiant sa propre racine Merkle. Les nœuds légers peuvent interroger des nœuds complets pour obtenir des preuves Merkle des valeurs des variables d'état.

Exécution parallèle

Les blockchains d'exécution parallèle populaires sont soit déterministes, soit optimistes.

Monad utilise une exécution optimiste pour réaliser un traitement de transactions parallèle. Cette méthode est quelque peu analogue à l'exécution spéculative utilisée par les unités centrales de traitement (CPU), où les processeurs prédisent le chemin des instructions de branchement et les exécutent à l'avance. 

Le moteur d'exécution de Monad commence à traiter les nouvelles transactions avant même que l'exécution des transactions précédentes ne soit finalisée, augmentant ainsi le débit global.

Cependant, cette stratégie, appelée contrôle de concurrence optimiste, peut conduire à des erreurs lorsque les transactions ultérieures sont interdépendantes. Si un conflit est détecté (par exemple, lorsque deux transactions tentent de modifier le même solde du compte), les transactions concernées sont réexécutées pour corriger les écarts.

Dans le pire des cas, une transaction doit être exécutée deux fois, mais au total, cela n’ajoute qu’une surcharge de 1,5 %. Monad utilise également un analyseur de code statique pour prédire à l'avance les dépendances entre les transactions. Cette analyse statique permet à Monad d'identifier les conflits potentiels avant l'exécution et, bien qu'elle n'empêche pas tous les conflits, contribue à optimiser la planification initiale des transactions pour une exécution parallèle plus efficace et optimiste.

Sei utilise également la parallélisation optimiste, en supposant que les transactions ne seront pas conflictuelles, mais elle poursuit une approche distincte pour gérer les conflits. Au cours du processus de parallélisation, Sei suit les parties de l'état modifiées par chaque transaction. S'il détecte que deux transactions sont en conflit, ce qui signifie qu'elles tentent de modifier la même partie de l'état, le système arrête temporairement l'exécution et retraite les transactions en conflit de manière séquentielle, à l'instar de Monad.

Cependant, l'utilisation par Monad d'un analyseur de code statique permet une planification plus efficace des transactions, réduisant ainsi les risques de conflit, tandis que Sei résout simplement les conflits au fur et à mesure qu'ils surviennent pendant l'exécution.

L’exécution optimiste élimine également le besoin d’algorithmes complexes de planification et d’analyse des dépendances, nécessaires aux méthodologies déterministes. Dans une approche déterministe employée par Sui et Solana, les transactions doivent déclarer à quelles parties de l'État elles accéderont avant leur exécution.

Cette déclaration initiale permet au système de planifier les transactions de manière à éviter les conflits lors de l'exécution. Le principal avantage de cette méthode est la prévisibilité : puisque les dépendances sont connues à l’avance, le système peut garantir que les transactions n’interfèrent pas les unes avec les autres, ce qui donne lieu à des résultats cohérents et fiables.

Toutefois, cette prévisibilité a un coût. L'analyse des dépendances et la planification des transactions nécessitent des algorithmes sophistiqués, qui doivent prendre en compte toutes les interactions potentielles entre les transactions et introduire une surcharge de calcul, ce qui entraîne des exigences matérielles plus élevées.

La nécessité d'une analyse et d'une planification en temps réel ajoute également à la complexité, car le système doit surveiller et ajuster en permanence l'ordre d'exécution pour éviter les conflits.

De plus, une approche déterministe peut avoir du mal à évoluer efficacement. À mesure que le nombre de transactions augmente, la complexité de l’analyse des dépendances augmente de façon exponentielle.

MonadDB

MonadDB est une base de données personnalisée conçue spécifiquement pour optimiser la mise en œuvre de l'exécution parallèle. Dans les blockchains traditionnelles telles qu’Ethereum, l’accès aux entrées/sorties (E/S) devient un goulot d’étranglement important, principalement parce que ces systèmes reposent sur des opérations d’E/S synchrones. 

Les processus doivent attendre la fin de chaque opération de lecture ou d'écriture avant de passer à la suivante, ce qui limite considérablement le débit et les performances globales. Pour surmonter cette limitation, MonadDB utilise des opérations de disque asynchrones, qui permettent au système de lancer plusieurs opérations de lecture et d'écriture simultanément sans attendre la fin de chacune. Cela améliore la vitesse globale du traitement des transactions, en particulier lorsqu'il est combiné à une exécution parallèle.

Conclusion

Monad représente une avancée significative dans la technologie blockchain. Il utilise des techniques innovantes telles que l'exécution optimiste, l'exécution différée et une base de données personnalisée, MonadDB, pour améliorer l'évolutivité et l'efficacité. 

Sa méthode de parallélisation optimiste, semblable à l'exécution spéculative dans les processeurs, permet un débit élevé en traitant les transactions simultanément et en réexécutant les transactions conflictuelles uniquement lorsque cela est nécessaire.

Combinée à l'analyse de code statique, cette méthode optimise la planification des transactions et réduit le risque de conflits. Comparée à d'autres projets EVM parallèles comme Sei et à des systèmes déterministes comme Sui et Solana, l'approche de Monad équilibre efficacité et complexité, offrant une solution robuste pour les volumes de transactions élevés.

L'introduction de MonadBFT, un algorithme pipeline byzantin à deux phases et tolérant aux pannes, garantit en outre une finalisation rapide des blocs et la sécurité du réseau.

Alors que Monad se prépare pour son réseau de test public fin 2024 et son déploiement sur le réseau principal début 2025, elle se positionne comme un acteur redoutable dans la prochaine génération de plateformes blockchain évolutives.