Introduction
Nos industries sont en constante évolution, en recherche permanente de performance et de croissance. Au 19e siècle, Henry Ford décide de découper l’ancien modèle monolithique de la construction automobile en une structure décomposée. Cette transformation s’est organisée autour d’une main-d’œuvre spécialisée, et une décomposition accrue des tâches et des postes.
Savoir tout faire n’est plus indispensable, il faut savoir imbriquer et connecter les différentes parties de la chaîne de production pour gagner en productivité, croissance et performance.
Cette révolution de la modularité est d’autant plus présente aujourd’hui, dans un monde où la performance prime dans un contexte de compétition. La spécialisation et l’expertise se sont imposées face à des profils plus généraux et polyvalents.
Dans l’ère contemporaine, la modularité au sein de l’entreprise permet de déléguer une partie des tâches à des prestataires experts dans ce domaine et d’avoir des employés spécialisés, avec des qualifications et responsabilités précises.
Depuis l’arrivée des géants du cloud, les architectures de microservices sont très répandues dans le domaine de l’informatique et du développement.
Aujourd’hui, les entreprises pratiquent le concept des microservices et les déploient dans des containers sur un cloud, qui comportent chacun un aspect de l’application. Ceci permet la décomposition des composants pour des fonctionnalités précises communicants entre elles, comme le frontend qui est l’interface utilisateur, les serveurs applicatifs et leurs API, la base de données etc.
Cette séparation des composants permet aux développeurs de s’organiser et de répartir les tâches en relation avec les fonctionnalités et les connaissances requises.
Alors que cette évolution a amélioré les performances au sein des entreprises, elle pourrait avoir le même effet pour le monde des cryptomonnaies et de la blockchain. Face aux défis posés par la “mass adoption” et aux limites de performance, de sécurité et de décentralisation existantes, certains écosystèmes blockchain font le pari de la modularité face aux blockchains monolithiques (comme Solana). Les équipes de développement misent sur une performance accrue reposant sur l’optimisation et la décomposition des tâches.
Ainsi, on peut se demander comment la modularité fonctionne sur la blockchain et quelles sont les avancées actuelles?
Les couches et composants d’une blockchain
Présentons brièvement les différents composants d’une blockchain à l’heure actuelle.
Une blockchain est un registre de blocs, qui contient des transactions, que des validateurs vérifient et produisent. Ces blocs contiennent l’entête du bloc, le hash du Merkle Root et les données des transactions de ce bloc.
Une blockchain vérifie, produit, ordonne et sauvegarde publiquement les blocs horodatés, liés entre eux, et leurs transactions respectives.
La modularité dans la blockchain consiste à décomposer tous les composants cités ci-dessous :
Couche de Règlement (Settlement Layer)
Cette couche est spécifique aux blockchains modulaires. La couche de règlement règle et départage les litiges. Ces litiges apparaissent lors d’une preuve de faute valide ou preuve de validité erronée. La couche de règlement permet d’assurer l’arbitrage final durant les problèmes rencontrés entre les différentes couches.
Consensus
Les nœuds complets gèrent la couche de consensus, ordonnance et sauvegarde de façon immuable la finalité des blocs. Les validateurs ayant un nœud complet vérifient et produits les blocs.
Voici un article plus détaillé sur le consensus.
Exécution
La couche d’exécution effectue chaque transaction et changement d’état, compresse les données puis les sauvegarde dans la couche de consensus.
Un utilisateur interagit avec la couche d’exécution lorsqu’il signe une transaction, transfère des fonds ou déploie/utilise un smart contract.
Disponibilités des données (Data Availability)
Il est nécessaire d’avoir toutes les transactions dans ce bloc à disposition, afin de confirmer et valider le bloc. Les données doivent être facilement vérifiables en cas d’attaques où des producteurs de blocs malveillants retiennent des données/transactions.
Il est nécessaire d’avoir toutes les données pour vérifier qu’une transition d’état est valide.
Ainsi, les données doivent être disponibles pour tous, et publiées puis stockées sur cette couche. Grâce à cette disponibilité des données, on peut mieux déterminer si un mineur à été malveillant.
Cette couche est un des grands enjeux de la blockchain. C’est le socle du trilemme, car elle permet de sécuriser le réseau, en améliorant la scalabilité et la décentralisation.
Le trilemme de la blockchain
Le trilemme de la blockchain est une notion qui présente les piliers d’une blockchain ainsi que ses limites.
La sécurité est inévitable et non négligeable pour bâtir un système informatique robuste et de confiance.
La décentralisation, qui est le nature de la blockchain, permet une participation d’acteurs qui garantissent la sécurité et le bon fonctionnement d’une blockchain. Cela signifie qu’il y est la possibilité de participer sans avoir de grosse contrainte en termes de matériels informatiques et de ressources requises.
La scalabilité réfère au débit de transaction par seconde, divisée par le coût de la vérification et de production d’un bloc. C’est le défi à relever pour créer un système financier capable de supporter une augmentation du nombre de transactions.
Aujourd’hui les blockchains monolithiques augmentent leurs transactions par seconde, tout en augmentant ce coût de vérification et production. Ceci à pour effet de réduire drastiquement la décentralisation si on les compare à des réseaux comme Bitcoin et Ethereum.
Blockchain modulaire : Un écosystème croissant
Vitalik Buterin a présenté dans l’article “Endgame” la roadmap d’Ethereum 2.0 qui permet une augmentation du nombre de transactions.
Cette augmentation doit être effectuée tout en réduisant la corrélation entre le débit de transaction et le coût de vérification.
Il explique les choix techniques en développement, qui doivent au mieux tendre vers ses standards de décentralisation.
Ces standards permettent de respecter la nature de la blockchain : la décentralisation. Afin de rassembler scalabilité et décentralisation, la solution est de séparer la production des blocs de la vérification.
Comme décrit par Vitalik Buterin, la production de blocs s’annonce centralisée, car elle nécessite du matériel et des ressources. Tandis qu’un client léger peut participer à la vérification des blocs, ce qui permet une vérification décentralisée et peu coûteuse.
Ethereum 2.0, Celestia et Polkadot utilisent le concept de blockchain modulaire. La décomposition des couches est une des solutions les plus en recherche pour obtenir l’optimum du trilemme.
Problématique de la disponibilité des données
Un producteur de blocs malveillants peut choisir de ne publier que des en-têtes de blocs et de retenir une partie ou la totalité des données correspondantes.
Ce manque de disponibilités des données empêche les nœuds complets de vérifier et d’identifier les transactions invalides et ainsi d’alerter les clients légers en générant des preuves de fautes.
Dans ce cas, le light-client assume que l’état est valide par défaut, donc continue de suivre un mauvais bloc d’une chaîne invalide.
Voici pourquoi la disponibilité des données est un enjeu crucial et le goulot d’étranglement du trilemme de la blockchain.
Celestia à pris le parti de la modularité en s’occupant uniquement de la partie disponibilité des données (data availability). Les couches d’exécution et de consensus ont extrêmement besoin pour assurer une sécurité optimale des registres distribués.
Elle utilise la solution de preuve de faute, qui consiste à déceler si un validateur n’a pas diffusé toutes les transactions dans un bloc qu’il a produit, via des probabilités.
Ceci sert à pouvoir vérifier l’état de transition, alerter d’une preuve de faute si c’est le cas, et affecter économiquement le producteur malveillant.
Plus d’informations sur le projet Celestia ici.
Les Rollups sur Ethereum (Layer 2)
Les Rollups utilisent la sécurité d’Ethereum, mais exécutent les transactions en dehors du protocole.
Les deux types de Rollups les plus connus sont les Optimistic Rollups et les ZK Rollups. Chacun diffère selon les preuves nécessaires pour déceler une faute d’un producteur de blocs.
Pour ce faire, ces fautes dépendent de la disponibilité des données, pour permettre la vérification d’un bloc, et prévenir d’un mineur malveillant.
Si une preuve de faute la couche, Règlement permet de régler les litiges, et de reprendre l’état d’une chaîne valide.
Optimistic Rollups
Les Rollup utilisent le consensus et les disponibilités des données des couches d’Ethereum, et se synchronisent à l’état de la couche consensus/disponibilités des données.
Ensuite les Rollups exécutent les transactions, récupèrent les datas, les compressent puis sauvegardent les données dans la couche de consensus.
Lorsque des transactions semblent frauduleuses, le Rollup exécute une preuve de faute et exécute les transactions avec les données disponibles.
Les Optimistic Rollups sont souvent moins rapides et sécurisés, car lorsqu’une preuve de faute est validée, un litige est créer un litige, que la couche de règlement doit régler au plus vite.
La preuve de faute
La preuve de faute est utilisée par les couches de disponibilités des données comme Celestia, Polygon Avail, et des couches d’exécutions comme Optimism et Arbitrum.
Cette solution permet de vérifier la disponibilité des données, via un algorithme peu coûteux exécuté sur un light client.
C’est une des solutions les plus décentralisées, car les particuliers peuvent vérifier la production des blocs qui elle reste centralisée.
Il y a de nombreux acteurs en développement dans les écosystèmes de Polkadot, Cosmos et Ethereum.
Full node
Une full-node (nœud total) doit se synchroniser totalement, télécharger tous les blocs avec la totalité des transactions. Ensuite, elle peut vérifier et produire les blocs.
Cette partie est la plus centralisée, étant donné les matériels et ressources nécessaires à la computation d’un bloc.
Light client
Le light-client (client léger) suppose que l’état des transitions est valide, car il ne télécharge pas toutes les transactions d’un bloc.
Il est relié aux preuves de fautes et à la chaîne envoyés par les full-node.
Un light-client vérifie la disponibilité des blocs, via un algorithme probabiliste. Il est exécuté par exemple sur votre navigateur internet, qui est peu énergivore et coûteux permettant ainsi la décentralisation.
Solution probabiliste : Code d’effacement (Erasure coding)
Le light client détermine de manière probabiliste la totalité d’un bloc, avec plusieurs échantillons aléatoires. Cet outil mathématique s’appelle le code d’effacement, il est parfaitement bien expliqué dans cet article de recherche de Vitalik Butterin.
Les clients légers s’appuient ensuite sur les preuves de panne générées par les nœuds complets pour la validation des transactions. Cela permet aux clients légers d’identifier de manière autonome les transactions invalides ou non publiées. Ce qui fait que le client léger peut fonctionner avec presque les mêmes garanties de sécurité qu’un nœud complet.
Validity/ZK Rollups
Les Validity Roll Ups sont plus pessimistes dans leurs façons de procéder. Elle nécessite qu’une preuve soit émise à chaque transaction et changement d’état. La solution des validity rollup la plus courante est Zero Knowledge Proof, qui est un algorithme de validation cryptographique probabiliste, ce qui rend privé la validation.
L’algorithme cryptographique du Zero Knowledge Proof est exécuté à chaque transaction par un nœud de la couche d’exécution.
Les capacités de calculs sont plus coûteuses et régulières, mais la sécurité y est plus fiable que le modèle probabiliste de la preuve de faute.
La centralisation est accentuée pour la couche d’exécution, ce qui impacte la disponibilité et résistance à la censure, mais la sécurité y est plus fiable que le modèle probabiliste de la preuve de faute.
Preuve de validité
La preuve de validité est utilisée par les ZK Rollups, comme présentée dans l’article sur zkSync. Cette preuve est un algorithme cryptographique probabiliste exécuté à chaque transaction et changement d’état, qui respecte la confidentialité.
Les ZK Rollups augmentent la centralisation, car le coût de production de blocs de la couche d’exécution est plus coûteux. En contrepartie, cette solution est plus scalable, sécurisée et rend les données privées avec le Zero Knowledge Proof.
L’écosystème des blockchains modulaires
Les solutions apportées dans l’idée de blockchain modulaire ne cessent de croître dans chaque couche d’une blockchain.
Chacun des acteurs apporte des solutions innovantes, en choisissant un point d’attaque sur une des couches d’une blockchain, avec un angle de vue sur le trilemme de la blockchain.
Plusieurs solutions sont apportées par différents acteurs de l’écosystème, chacune s’occupant d’une couche en particulier.
On peut constater que Ethereum, Cosmos, et Polygon sont en Recherche et Développement dans plusieurs de ces couches d’une blockchain modulaire.
Polygon effectue de grands avancements dans les solutions modulaires, comme son propre zkEVM, ou la solution de disponibilités des données Polygon Avail.
L’entreprise Starkware, valorisée à plusieurs milliards, fait des avancées technologiques avec leurs Starknet qui est une couche d’exécution ZK Rollup.
Starkware développe aussi StarkEx, une couche modulaire s’occupant de la Disponibilité des données avec leurs DAC, qui est le Comité des disponibilités des données.
Conclusion
Les blockchains modulaires sont en fort développement croissant en 2022, surtout avec le merge d’Ethereum annoncé pour septembre 2022, et d’autre part avec les écosystèmes Cosmos et Polkadot qui tendent vers cette modularité.
Chaque acteur prend des décisions, avec les avantages et inconvénients liés, pour développer les meilleures solutions de blockchain modulaires.
Les Optimistic Rollups partent d’un point de vue optimiste et doivent exécuter des preuves de fautes dans le cas échéant. La preuve de faute peut être faite par des nœuds complets ou des clients légers, ce qui rend ces Rollups plus décentralisés.
Si la preuve de faute est valide, le Rollup doit exécuter les transactions et la couche de règlement doit récupérer une chaîne valide.
Cette solution peut être moins scalable dans le cas d’une preuve de faute, mais elle permet une meilleure décentralisation, car elle ne nécessite pas plus de ressources matérielles.
Les ZK rollup eux effectuent des preuves de validité à chaque transaction et changement d’état. Cet algorithme cryptographique demande de grandes ressources en termes de calcul. Ceci réduit la décentralisation, mais garde les données confidentielles et assure une meilleure sécurité.
Actuellement le ZK Rollup est la solution de couche d’exécution la plus scalable sur Ethereum.
Il y a des choix et des préférences à prendre par rapport au Trilemme de la blockchain. Ainsi, chaque acteur créé des solutions pour répondre à différentes problématiques.
C’est un sujet d’actualité pour chaque écosystème de la blockchain, avec leurs acteurs respectifs et les solutions apportées. Ceci est déterminant pour l’avenir de la blockchain et sa masse d’adoption.