En résumé : Ce document de recherche fournit un aperçu des architectures de conception parallèle pour les blockchains, en utilisant trois exemples pertinents : Solana, Sei et Monad. Il met en évidence les différences entre la parallélisation optimiste et déterministe et examine les subtilités de l'accès à l'état et à la mémoire à travers ces chaînes.

L'Univers Parallèle
Le calcul parallèle permet à de nombreuses calculs ou processus d'être exécutés simultanément, par opposition aux calculs exécutés séquentiellement ou les uns après les autres. L'informatique parallèle désigne la division des problèmes plus importants en parties plus petites et indépendantes pouvant être exécutées par plusieurs processeurs communiquant via une mémoire partagée. Les systèmes parallèles présentent plusieurs avantages, tels qu'une efficacité et une vitesse accrues, une évolutivité, une fiabilité et une tolérance aux pannes améliorées, une meilleure utilisation des ressources et la capacité de traiter des ensembles de données très volumineux.
Cependant, il est crucial de reconnaître que l'efficacité de la parallélisation dépend des spécificités de l'architecture sous-jacente et de sa mise en œuvre. Deux goulots d'étranglement principaux pour les blockchains sont les fonctions cryptographiques (fonctions de hachage, signatures, courbes elliptiques, etc.) et l'accès à la mémoire/à l'état. Avec les blockchains, l'un des composants clés de la conception d'un système parallèle efficace réside dans les subtilités de l'accès à l'état. L'accès à l'état fait référence à la capacité d'une transaction à lire et écrire dans l'état d'une blockchain, y compris le stockage, les contrats intelligents et les soldes de compte. Pour qu'une blockchain parallélisée soit efficace et performante, l'accès à l'état doit être optimisé.
Il existe actuellement deux écoles de pensée sur l'optimisation de l'accès à l'état pour les blockchains parallélisées : la parallélisation déterministe par rapport à la parallélisation optimiste. La parallélisation déterministe nécessite que le code déclare explicitement à l'avance quelles parties de l'état de la blockchain seront accessibles et modifiées. Cela permet à un système de déterminer quelles transactions peuvent être traitées en parallèle sans conflits à l'avance. La parallélisation déterministe permet la prévisibilité et l'efficacité (surtout lorsque les transactions sont principalement indépendantes). Cependant, cela crée plus de complexité pour les développeurs.
La parallélisation optimiste ne nécessite pas que le code déclare l'accès à son état à l'avance et traite les transactions en parallèle comme s'il n'y avait pas de conflits. Si un conflit survient, la parallélisation optimiste réexécutera, retraitera ou exécutera séquentiellement les transactions en conflit. Bien que la parallélisation optimiste offre plus de flexibilité aux développeurs, une réexécution est nécessaire en cas de conflit, ce qui fait que cette méthode est la plus efficace lorsque les transactions ne sont pas en conflit. Il n'y a pas de réponse correcte quant à laquelle de ces approches est meilleure. Ce sont simplement deux approches différentes (et viables) de la parallélisation.
Dans la première partie de cette série, nous explorerons d'abord quelques notions de base des systèmes parallèles non crypto, suivies de l'espace de conception pour l'exécution parallèle des blockchains, en mettant l'accent sur trois domaines principaux :
Aperçu des systèmes parallèles de cryptographie- Approches d'Accès à la Mémoire & à l'État- Opportunités de conception parallèle## Systèmes Parallèles Non-CryptoEn tenant compte de ce que nous venons de lire ci-dessus sur ce que permet la computation parallèle et les avantages des systèmes parallèles, il est facile de comprendre pourquoi l'adoption de la computation parallèle a pris son envol ces dernières années. L'adoption accrue de l'informatique parallèle a permis de nombreuses percées rien que ces dernières décennies.
Imagerie médicale: Le traitement parallèle a fondamentalement transformé l'imagerie médicale, entraînant des augmentations significatives de vitesse et de résolution dans diverses modalités telles que l'IRM, la TDM, les rayons X et la tomographie optique. Nvidia est à l'avant-garde de ces avancées, offrant aux radiologues des capacités améliorées d'intelligence artificielle grâce à sa trousse à outils de traitement parallèle, qui permet aux systèmes d'imagerie de gérer de manière plus efficace des charges de données et de calcul accrues.- Astronomie: Certains nouveaux phénomènes, comme la compréhension des trous noirs, n'ont été rendus possibles que grâce à l'utilisation de supercalculateurs parallèles.- Le moteur de jeu Unity : Le moteur de Unity utilise les capacités des GPU, conçus pour des charges de travail graphiques massives, pour améliorer les performances et la vitesse. Le moteur est équipé de fonctionnalités de traitement multithread et parallèle, offrant une expérience de jeu fluide et créant des environnements de jeu complexes et détaillés.Examinons trois blockchains qui ont mis en place des environnements d'exécution parallèles. Tout d'abord, nous allons décortiquer Solana, suivi de deux chaînes basées sur EVM, Monad et Sei.
Solana utilise la parallélisation déterministe, qui provient de l'expérience passée d'Anatoly dans le domaine des systèmes embarqués, où vous déclarez généralement tout l'état au préalable. Cela permet au processeur de connaître toutes les dépendances, ce qui lui permet de précharger les parties nécessaires de la mémoire. Le résultat est une exécution optimisée du système, mais cela nécessite encore que les développeurs fassent un travail supplémentaire au préalable. Sur Solana, toutes les dépendances en mémoire pour un programme sont requises et déclarées dans la transaction construite (c'est-à-dire les listes d'accès), ce qui permet au runtime de planifier et d'exécuter efficacement de multiples transactions en parallèle.
Le prochain composant majeur de l'architecture de Solana est le Sealevel VM, qui est l'exécution parallèle des contrats intelligents de Solana. Sealevel prend en charge nativement le traitement multiple de contrats et de transactions en parallèle en fonction du nombre de cœurs qu'un validateur possède. Un validateur dans une blockchain est un participant du réseau chargé de vérifier et de valider les transactions, de proposer de nouveaux blocs et de maintenir l'intégrité et la sécurité de la blockchain. Comme les transactions déclarent quels comptes doivent être lus et écrits bloqués à l'avance, l'ordonnanceur de Solana est capable de déterminer quelles transactions peuvent être exécutées simultanément. En conséquence, en matière de validation, le « Producteur de Bloc » ou Leader est capable de trier des milliers de transactions en attente et de planifier les transactions non chevauchantes en parallèle.
L'élément de conception final pour Solana est le « pipelining ». Le pipelining se produit lorsque les données doivent être traitées en une série d'étapes, et que du matériel différent est responsable de chacune d'elles. L'idée clé ici est de prendre les données qui doivent être exécutées séquentiellement et de les paralléliser en utilisant le pipelining. Ces pipelines peuvent être exécutés en parallèle, et chaque étape du pipeline peut traiter différents lots de transactions.
Ces optimisations permettent à Sealevel d'organiser et d'exécuter simultanément des transactions indépendantes, en utilisant la capacité matérielle de traiter plusieurs points de données à la fois avec un seul programme. Sealevel trie les instructions par programID et exécute la même instruction sur tous les comptes pertinents en parallèle.
Avec ces innovations à l'esprit, nous pouvons voir que Solana a été intentionnellement conçu pour prendre en charge la parallélisation.
Les approches de blockchain de Sei exécutent des transactions en utilisant le "contrôle de concurrence optimiste (OCC)." Le traitement de transactions concurrentes se produit lorsque plusieurs transactions sont simultanément actives dans un système. Il existe deux phases dans cette approche de transaction : l'exécution et la validation.
Dans la phase d'exécution, les transactions sont traitées de manière optimiste, avec toutes les lectures/écritures temporairement stockées dans un magasin spécifique à la transaction. Après cela, chaque transaction entrera dans la phase de validation, où les informations dans les opérations de magasin temporaire sont vérifiées par rapport à tout changement d'état effectué par les transactions précédentes. Si une transaction est indépendante, la transaction s'exécute en parallèle. Si une transaction lit des données modifiées par une autre transaction, cela créerait un conflit. Le système parallèle de Sei identifiera chaque conflit en comparant les ensembles de lectures des transactions par rapport aux derniers changements d'état dans un magasin multi-version (ceux-ci sont indexés par ordre de transaction). Sei réexécutera et révalidera les instances où des conflits surviennent. Il s'agit d'un processus itératif impliquant l'exécution, la validation et la réexécution afin de résoudre les conflits. Le graphique ci-dessous illustre l'approche de Sei vis-à-vis des transactions lorsqu'un conflit survient.
Source : https://blog.sei.io/sei-v2-le-premier-evm-parallélisé/L'implémentation de Sei se traduit par des frais de gaz moins chers et un espace de conception plus large pour les développeurs EVM. Historiquement, les environnements EVM ont été limités à
Diagramme illustratif de la hiérarchie de la mémoireEn mettant à l'échelle horizontalement et en distribuant les données d'état sur plusieurs appareils, Cloudbreak réduit la latence et améliore l'efficacité, la décentralisation et la résilience du réseau au sein de l'écosystème Solana.
Accès à Six États: SeiDB
Sei a repensé son stockage, SeiDB, pour résoudre plusieurs problèmes : amplification de l'écriture (combien de métadonnées sont nécessaires pour maintenir des structures de données, plus petites = mieux), l'enflure de l'état, les opérations lentes et la dégradation des performances avec le temps. Le nouveau redisgn est maintenant divisé en deux composants : le magasin d'état et l'engagement d'état. L'enregistrement et la vérification de tout changement apporté aux données sont gérés par l'engagement d'état, tandis que la base de données qui conserve un compte de toutes les données à tout moment est gérée par le stockage d'état (SS).
Dans Sei V2, l'engagement d'État utilise une mémoire mappée Architecture de l'arbre IAVL (MemIAVL). L'arbre IAVL mappé en mémoire stocke moins de métadonnées, ce qui réduit le stockage d'état et les temps de synchronisation d'état et rend l'exécution d'un nœud complet beaucoup plus facile. L'arbre IAVL mappé en mémoire est représenté par trois fichiers sur le disque (kv, branche, feuilles); par conséquent, moins de métadonnées doivent être suivies, ce qui aide à réduire le stockage d'état de plus de 50%. La nouvelle structure MemIAVL aide à réduire le facteur d'amplification d'écriture car elle réduit les métadonnées nécessaires pour maintenir les structures de données.
La mise à jour de SeiDB permet un support flexible de la base de données backend pour la couche de stockage d'état. Sei estime que les différents opérateurs de nœuds auront des besoins et des exigences de stockage diversifiés. Par conséquent, le SS a été conçu pour accueillir différents backends, offrant aux opérateurs la liberté et la flexibilité, c'est-à-dire PebbleDB, RocksDB, SQLite, etc.
Accès à l'état : MonadDB
Il existe quelques nuances importantes pour l'accès à l'état de Monad. Tout d'abord, la plupart des clients Ethereum utilisent deux types de bases de données : des bases de données B-Tree (c'est-à-dire LMDB) ou des bases de données de fusion structurée par journal (LSM) (c'est-à-dire RocksDB, LevelDB). Les deux sont des structures de données génériques qui ne sont pas explicitement conçues pour les blockchains. De plus, ces bases de données ne tirent pas parti des avancées les plus récentes de la technologie Linux, en particulier en ce qui concerne les opérations asynchrones et les optimisations I/O. Enfin, Ethereum lui-même gère l'état en utilisant Patricia Merkle Trie, qui se spécialise dans la cryptographie, la vérification et les preuves. Le principal problème est que les clients doivent intégrer ce Trie spécifique de Patricia Merkle dans des bases de données plus génériques (c'est-à-dire, B-Tree / LSM), avec des inconvénients de performance significatifs tels qu'un accès excessif au disque.
Tout ce qui précède contribue à expliquer pourquoi Monad a décidé de créer sa base de données personnalisée MonadDB, spécialement conçue pour gérer plus efficacement les données et l'accès à l'état de la blockchain. Certaines des principales caractéristiques de MonadDB incluent une base de données à accès parallèle, une base de données personnalisée optimisée pour les données de Merkle Trie, un accès à l'état efficace par rapport à l'utilisation standard de la RAM, ainsi que la décentralisation et la scalabilité.
MonadDB est spécifiquement conçu pour les blockchains, ce qui le rend plus performant que l'utilisation de bases de données génériques. Le MonadDB personnalisé est spécialisé et conçu pour gérer efficacement les données de type arbre de Merkle, permettant un accès parallèle à plusieurs nœuds d'arbre en même temps. Bien que le coût d'une seule lecture sur MonadDB par rapport à certaines des bases de données génériques énumérées ci-dessus soit le même, la propriété clé ici est que MonadDB peut exécuter de nombreuses lectures en parallèle, ce qui entraîne une accélération massive.
MonadDB permet un accès simultané à l'état de la base de données à accès parallèle. Étant donné que Monad construit cette base de données à partir de zéro, il est capable de tirer parti des technologies de noyau Linux les plus récentes et de la pleine puissance des SSD pour les E/S asynchrones. Avec les E/S asynchrones, si une transaction nécessite la lecture d'un état à partir du disque, cela ne devrait pas arrêter les opérations en attente de leur achèvement. Au lieu de cela, il devrait commencer la lecture et continuer simultanément à traiter d'autres transactions. C'est ainsi que les E/S asynchrones accélèrent considérablement le traitement pour MonadDB. Monad est capable d'extraire de meilleures performances du matériel en optimisant l'utilisation des SSD et en réduisant la dépendance à une RAM excessive. Cela a l'avantage supplémentaire de s'aligner sur la décentralisation et la scalabilité.

Résumé des comparaisons pour Solana vs Sei vs Monad
Chaque blockchain présente une approche distincte pour relever les défis de la parallélisation, avec son propre ensemble de compromis. La conception de Solana vise à maximiser l'utilisation du matériel et le débit, tandis que Sei se concentre sur la facilitation du processus de développement, et Monad met l'accent sur une solution de base de données sur mesure pour les données de la blockchain. Ces différences mettent en évidence la diversité de l'écosystème blockchain et l'importance de choisir la bonne plateforme en fonction des besoins spécifiques de l'application.
Alors que l'espace de la blockchain continue d'évoluer, les avancées dans les techniques de parallélisation démontrées par Solana, Monad et Sei inspireront sans aucun doute davantage d'innovations. Le chemin vers des blockchains plus efficaces, évolutives et conviviales pour les développeurs est en cours, et les leçons tirées de ces plateformes joueront un rôle crucial dans la définition de l'avenir de la technologie blockchain.
Dans la deuxième partie de cette série, nous plongerons dans les implications économiques et les compromis associés à ces systèmes de conception parallèle.





