18/07/2023 13 Minutes read Innovation 

L’architecture web3 : Un aperçu de haut niveau

Dans l’écosystème Web3, l’architecture technique est d’une importance cruciale, puisqu’elle permet de concevoir des applications décentralisées et de tirer parti des nombreux avantages offerts par la blockchain et les technologies associées. Cet article se propose d’enrichir cette perspective en présentant tout d’abord une proposition d’architecture. Nous examinerons ensuite les bibliothèques et les outils indispensables au développement d’applications Web3, avant de conclure sur les perspectives d’amélioration de l’architecture Web3.

I. Architecture technique web3

1. Appareils permettant d’accéder à une application web3

Appareils web3

Les applications Web3 sont accessibles via différents types de dispositifs, tant qu’ils disposent d’une connexion Internet et d’un navigateur. Voici quelques-uns des principaux dispositifs permettant d’accéder à une application Web3 :

  • Les ordinateurs de bureau et les ordinateurs portables sont des dispositifs couramment utilisés pour accéder aux applications Web3. Ils offrent un affichage plus large et une expérience plus complète, ce qui peut être avantageux pour les applications nécessitant un accès intensif à la blockchain ou une utilisation complexe des contrats intelligents.
  • Les smartphones et les tablettes sont des dispositifs très répandus et pratiques pour accéder aux applications Web3. Les utilisateurs peuvent télécharger des navigateurs mobiles compatibles avec Web3, tels que MetaMask Mobile, Trust Wallet ou Cipher, pour interagir avec les applications décentralisées directement depuis leur appareil.
  • Les extensions de navigateur, telles que MetaMask permettent aux utilisateurs d’accéder aux applications Web3 directement depuis leur navigateur. Ces extensions fournissent des fonctionnalités de portefeuille cryptographique et facilitent l’interaction avec les contrats intelligents, sans avoir besoin de télécharger un logiciel supplémentaire.
  • Certains dispositifs matériels dédiés ont été spécifiquement conçus pour l’accès aux applications Web3. Par exemple, des portefeuilles matériels tels que Ledger ou Trezor fournissent une sécurité renforcée pour stocker les clés privées des utilisateurs et leur permettent d’interagir en toute sécurité avec les applications décentralisées.
  • Certains dispositifs connectés tels que les smartwatches, les enceintes intelligentes ou les téléviseurs intelligents. Cela peut permettre des cas d’utilisation spécifiques, tels que la vérification de l’état des contrats intelligents ou l’accès aux informations décentralisées.

2. Frontend

Web3 UI Framework

Le frontend (Interface utilisateur) appelé aussi application décentralisée (Dapp) dans une architecture Web3 est responsable de l’affichage des informations, des fonctionnalités liées à la blockchain et aux contrats intelligents. Il permet aux utilisateurs d’interagir avec ces éléments décentralisés de manière conviviale et intuitive.

Il communique également avec les contrats intelligents déployés sur la blockchain pour effectuer des opérations telles que l’envoi de transactions, la récupération de données sur les comptes et le réseau, l’appel de fonctions, etc. Cela peut se faire à l’aide de bibliothèques Web3 telles que Web3.js ou Ethers.js via les fournisseurs de nœuds, qui fournissent une interface pour interagir avec les contrats intelligents.

Aussi il facilite la gestion des portefeuilles cryptographiques des utilisateurs, qui contiennent les clés privées nécessaires pour signer les transactions et interagir avec la blockchain. Il peut intégrer des portefeuilles logiciels ou matériels existants, ou fournir une interface pour créer et gérer des portefeuilles directement sur l’application.

Il récupère et affiche également les données provenant de la blockchain et aussi de serveur backend off-chain (pour indexer), telles que les soldes de compte, les transactions récentes, les informations sur les contrats intelligents, etc. Il peut également afficher des données provenant d’autres sources décentralisées, telles que des oracles ou des protocoles DeFi.

Cette couche applicative peut intégrer des outils Web3 supplémentaires pour offrir une expérience utilisateur plus riche. Cela peut inclure des wallets d’échange intégrés, des explorateurs de blockchain, des outils d’analyse de contrats intelligents, des interfaces d’échange décentralisées (DEX), des interfaces de gestion des tokens, etc.

Enfin le frontend doit mettre en place des mesures de sécurité appropriées pour protéger les clés privées des utilisateurs et leurs données sensibles. Il peut également gérer les autorisations d’accès aux fonctionnalités décentralisées, en s’assurant que seuls les utilisateurs autorisés peuvent effectuer certaines opérations.

Pour le développement de l’interface graphique dans une architecture Web3, on peut utiliser des frameworks et bibliothèques de développement Web traditionnels tels que React, Vue.js ou Angular, en les combinant avec des bibliothèques spécifiques à Web3 comme Web3.js. Cela permet de construire des interfaces utilisateur réactives et dynamiques tout en facilitant l’intégration avec la blockchain.

3. Portefeuilles (pour Wallets)

Portefeuilles web3

Les utilisateurs d’une application Web3 ont généralement besoin d’un portefeuille pour gérer leurs clés privées et interagir avec la blockchain. Un portefeuille peut être un logiciel installé sur un appareil ou/et une extension de navigateur ou une application web ou encore un équipement électronique. Il permet aux utilisateurs de signer des transactions et d’authentifier leurs actions.

4. Fournisseurs de nœuds (pour web3 nodes providers)

Fournisseurs de nœuds web3

Un fournisseur de nœuds Web3 est une entité ou une plateforme qui offre des services d’exécution, de stockage de données et de gestion de nœuds pour les réseaux blockchains. Un nœud est un ordinateur connecté à un réseau blockchain qui participe à la validation des transactions, au stockage de la blockchain et à la diffusion des informations à d’autres nœuds du réseau.

Les fournisseurs de nœuds Web3 peuvent simplifier le processus de développement d’une application web3 pour les développeurs, ce qui leur permet de se concentrer sur l’évolution de la couche applicative plutôt que sur la couche infrastructure du nœud. Ces fournisseurs proposent généralement des infrastructures de nœuds optimisées et des API exposés sur des endpoints appelés JsonRpcUrls; les URL JsonRpcUrls font référence aux adresses web où vous pouvez trouver des informations sur le protocole JSON-RPC d’un nœud blockchain pour permettre aux développeurs d’interagir avec le réseau.

Il existe différents types de services des fournisseurs de nœuds Web3, notamment :

  • Accès à un cluster de nœuds par un ou plusieurs endpoint(s)
  • Points de terminaison WSS, HTTPS et RPC
  • Accès illimité/limité aux données des archives
  • Robinet (pour faucet) disponible sur plusieurs chaînes
  • Disponibilité des espaces de noms Trace/Debug
  • Mises à jour automatisées
  • Support technique
  • Tableau de bord avec explorateur de requêtes, Observateur de Mempool et Composer
  • Équilibrage de charge et surveillance des nœuds pour une passerelle rapide et fiable vers le nœud disponible le plus proche
  • Déploiement d’un nœud complet en un clic et d’un nœud validateur
  • Évolutivité
  • Outils d’analyse
  • Tableau de bord
  • Tarification à l’heure basée sur le modèle SaaS

Les avantages de l’utilisation d’un fournisseur de nœuds Web3 incluent la réduction du temps et des efforts nécessaires à la maintenance des nœuds, la possibilité de se concentrer sur le développement d’applications, et l’accès à des infrastructures optimisées pour une meilleure performance.

Il convient de noter que les services de nœuds Web3 ne stockent généralement pas les clés privées ou les informations privées des utilisateurs, car la sécurité des clés privées est de la responsabilité de chaque utilisateur individuel.

5. Nœud Blockchain (pour blockchain node)

Nœuds Blockchain

Les nœuds blockchain reçoivent les transactions émises par les utilisateurs ou d’autres nœuds du réseau. Chaque transaction est vérifiée pour s’assurer de sa validité, notamment en vérifiant la signature numérique et en s’assurant que l’émetteur dispose des fonds nécessaires et des droits nécessaires.

Les nœuds qui participent au processus de minage ou de validation des transactions peuvent créer de nouveaux blocs. Ils rassemblent un groupe de transactions valides et les regroupent dans un bloc. Le processus de création de bloc peut varier en fonction de l’algorithme de consensus utilisé par la blockchain spécifique.

Les nœuds vérifient la validité des transactions en les comparant aux règles de la blockchain, telles que les contrats intelligents et les règles de consensus. Ils s’assurent que les transactions respectent les conditions préalables, les soldes suffisants et les règles de logique prédéfinies. Cela garantit l’intégrité et la cohérence de la blockchain.

Le nœud blockchain héberge le code métier écrit en solidity pour ethereum assurant le stockage des données de la blockchain et l’échange des dernières données avec d’autres nœuds pour les maintenir à jour.

Une fois qu’un nœud a créé un bloc valide, il le diffuse aux autres nœuds du réseau pour que ceux-ci puissent le valider et l’ajouter à leur copie de la blockchain. La diffusion des blocs permet de maintenir la synchronisation entre les nœuds et d’assurer un consensus sur l’état de la blockchain.

Chaque nœud blockchain maintient une copie complète de la blockchain, c’est-à-dire de l’historique de toutes les transactions depuis le bloc initial (genesis block). Cette copie est mise à jour à mesure que de nouveaux blocs sont ajoutés à la blockchain.

Les nœuds participent au processus de consensus de la blockchain, qui détermine la version de la blockchain acceptée par tous les nœuds du réseau. Selon l’algorithme de consensus utilisé, les nœuds peuvent participer à des activités de preuve de travail (proof-of-work), de preuve d’enjeu (proof-of-stake), de délégation ou d’autres mécanismes pour garantir la sécurité et la validité de la blockchain.

Les nœuds vérifient les transactions et les blocs reçus pour s’assurer de leur validité et de leur conformité aux règles de la blockchain. Cela garantit que seuls les transactions légitimes et les blocs valides sont acceptés et ajoutés à la blockchain.

Lorsqu’un nœud reçoit un nouveau bloc validé, il met à jour sa copie de la blockchain en ajoutant le bloc à sa chaîne existante. Il diffuse également cette mise à jour aux autres nœuds du réseau pour maintenir la cohérence et la synchronisation de la blockchain.

6. Serveur backend hors chaîne

Serveur backend hors chaine

Un serveur off-chain est un composant centralisé qui fait partie de l’architecture d’une application Web3, mais qui n’est pas directement exécuté sur la blockchain. Il s’agit d’un serveur traditionnel hébergé dans un environnement cloud ou sur un serveur dédié.

Certaines opérations dans une application Web3 peuvent être plus efficacement gérées hors de la blockchain, car elles ne nécessitent pas la sécurité, la transparence ou la résilience immédiate de la blockchain. Par exemple, la vérification d’identité, le stockage de données volumineuses, le traitement de données en temps réel ou la communication avec des API externes peuvent être effectués plus efficacement hors de la blockchain.

Le serveur off-chain peut être utilisé pour exécuter des opérations qui nécessitent des ressources importantes ou un traitement rapide, ce qui peut être difficile à réaliser sur la blockchain. En déléguant certaines tâches au serveur off-chain, on peut améliorer les performances et la réactivité de l’application Web3.

Bien que le serveur off-chain ne soit pas exécuté directement sur la blockchain, il peut communiquer avec elle pour effectuer des opérations spécifiques. Par exemple, il peut interagir avec des contrats intelligents pour envoyer des transactions, récupérer des données ou surveiller des événements.

Le serveur off-chain peut collecter, agréger et analyser des données provenant de multiples sources, y compris la blockchain. Cela permet de fournir des informations précieuses aux utilisateurs de l’application Web3, en utilisant des algorithmes et des analyses plus complexes que ce qui serait réalisable directement sur la blockchain.

Le serveur off-chain peut également être utilisé pour interagir avec des API externes, telles que des services de paiement, des services de données ou d’autres applications Web traditionnelles. Cela permet d’étendre les fonctionnalités de l’application Web3 en intégrant des services externes.

7. Stockage de Fichiers Décentralisés

Le stockage de fichiers décentralisés est une composante clé de nombreuses applications Web3, qui cherchent à éviter la centralisation des données et à offrir une solution de stockage plus résiliente et contrôlée par les utilisateurs.

II. Librairies et outils pour le développement web3

1. Frontend

a. React

React.js est une bibliothèque JavaScript populaire pour la création d’interfaces utilisateur interactives et réactives. Dans le contexte du Web3, React.js peut être utilisé pour créer des interfaces utilisateur pour les applications décentralisées (DApps) basées sur des technologies de la blockchain.

Il facilite le développement de l’interface utilisateur des DApps en offrant des fonctionnalités telles que la gestion de l’état de l’application, la gestion des événements, le rendu conditionnel et la réutilisation des composants.

b. Next.js

Next.js est un framework de développement web basé sur React qui est souvent utilisé dans le contexte du Web3.

Il facilite le développement d’applications Web3 en fournissant une architecture prête à l’emploi pour la création d’applications côté serveur (SSR) et côté client (CSR) avec React. Il offre des fonctionnalités avancées telles que le rendu côté serveur (SSR), le rendu statique (SSG), le routage dynamique et la gestion des états.

c. Vue.js

Vue.js est un framework JavaScript populaire pour la construction d’interfaces utilisateur interactives. Il est principalement utilisé pour développer des applications web à page unique (SPA) où les mises à jour de l’interface utilisateur se font de manière dynamique, sans avoir à recharger complètement la page.

d. Angular

Angular est basé sur le langage TypeScript et offre des fonctionnalités avancées pour la construction d’applications web côté client. Il fournit une structure et une organisation pour le code, facilitant ainsi le développement, la maintenance et les tests. Angular propose également une architecture orientée composants, où les différentes parties d’une application sont encapsulées dans des composants réutilisables.

e. Web3uiKit

Web3uiKit est une bibliothèque de développement d’interface utilisateur (UI) spécialement conçue pour les applications Web3. Il s’agit d’un ensemble d’outils, de composants et de modèles de conception destinés à faciliter la création d’interfaces utilisateur interactives et conviviales pour les applications basées sur la technologie Web3.

2. Smart contract

a. Hardhat

Hardhat est un framework de développement pour les contrats intelligents (smart contracts) Ethereum. Il offre une suite d’outils et de fonctionnalités pour faciliter le développement, le déploiement et le test de contrats intelligents dans un environnement de développement local ou sur les réseaux compatible ethereum (EVM).

b. Brownie

Brownie est souvent comparé à Hardhat, un autre framework populaire, car ils partagent de nombreuses fonctionnalités similaires notamment pour faciliter le développement, le déploiement et les tests de contrats intelligents, ainsi que l’interaction avec la blockchain Ethereum. Cependant, Brownie se distingue par sa simplicité, sa facilité d’utilisation et pour les développeurs qui préfèrent utiliser Python ce qui en fait un choix populaire pour les développeurs débutants ou ceux qui préfèrent une approche plus conviviale.

c. Foundry

Foundry est l’une des boîtes à outils les plus populaires pour le développement d’Ethereum, Foundry est rapide, modulaire et portable. Essentiellement, Foundry est une réinvention du cadre de test dapp.tools. Écrit dans le langage de programmation Rust. Foundry est conçu pour être accessible, simple à installer et ne nécessite aucune configuration compliquée ni bibliothèques tierces.

Il gère vos dépendances, compile votre projet, exécute des tests, déploie et vous permet d’interagir avec la chaîne à partir de la ligne de commande et via des scripts Solidity.

d. Truffle

Truffle est un framework de développement dApps Ethereum qui intègre Web3.js pour faciliter l’interaction avec la blockchain Ethereum. Il offre une approche complète pour le développement, le test et le déploiement de contrats intelligents (smart contracts) et de dApps (interface utilisateur decentralisée).

e. Openzeppelin

OpenZeppelin est une bibliothèque open-source bien connue qui propose des contrats intelligents pré-audités et éprouvés pour des fonctionnalités couramment utilisées, telles que les jetons ERC-20, ERC721, les contrats de gouvernance, etc. Ces contrats intelligents sont conçus pour respecter les meilleures pratiques de sécurité et de qualité, ce qui permet aux développeurs d’économiser du temps et des efforts en utilisant des solutions déjà éprouvées.

3. Interopérabilité

a. Web3.js

Web3.js est une bibliothèque JavaScript populaire utilisée pour interagir avec la blockchain Ethereum et développer des applications décentralisées (dApps). Elle fournit une interface conviviale pour communiquer avec des nœuds Ethereum, effectuer des opérations sur la blockchain, interagir avec des contrats intelligents et gérer les comptes d’utilisateurs.

b. Ethers

Pareillement que Web3.js, Ethers est une bibliothèque JavaScript / Typescript populaire utilisée pour interagir avec les blockchains compatibles ethereum (EVM). Elle fournit une interface conviviale et abstraite pour interagir avec Ethereum, gérer les comptes d’utilisateurs, exécuter des transactions, interagir avec des contrats intelligents et effectuer d’autres opérations courantes.

Il est apprécié par de nombreux développeurs Ethereum pour sa simplicité, sa clarté et sa documentation complète. Il offre une alternative à d’autres bibliothèques populaires telles que Web3.js, offrant une expérience de développement fluide pour les applications décentralisées basées sur Ethereum.

4. Stockage décentralisé de fichiers

a. Fleek

Fleek permet de déployer une application web3 sur les stockages décentralisés tels que IPFS et Filecoin.

b. Filecoin

Filecoin est un protocole de stockage décentralisé basé sur la technologie de la blockchain. Il vise à créer un réseau mondial de stockage décentralisé où les utilisateurs peuvent stocker, récupérer et échanger des données de manière sécurisée et fiable.

c. IPFS

IPFS est un protocole de système de fichiers décentralisé, Il permet le stockage et la récupération de fichiers en utilisant une adresse basée sur leur contenu plutôt que sur leur emplacement physique. IPFS utilise une approche peer-to-peer où les fichiers sont répartis sur un réseau décentralisé d’ordinateurs, ce qui les rend plus résistants à la censure et à la perte de données.

Dans une architecture Web3, IPFS permet de stocker des fichiers tels que des interfaces utilisateur de dApps (application décentralisée), des ressources graphiques ou des données statiques, tandis que la blockchain (via Web3.js ou Ethers.js) est utilisée pour stocker des données dynamiques, des contrats intelligents et des interactions avec la blockchain.

d. Pinata

Pinata est une plateforme et un service de gestion de fichiers basés sur IPFS (InterPlanetary File System). Il fournit des fonctionnalités avancées pour faciliter le stockage, la gestion et la distribution de fichiers sur le réseau IPFS.

Il s’agit d’un service de gestion de fichiers basé sur IPFS, offrant des fonctionnalités pour le stockage, la gestion et la distribution de fichiers décentralisés. Il facilite l’utilisation d’IPFS en fournissant une interface conviviale et des fonctionnalités avancées pour héberger, épingler et gérer des fichiers sur IPFS.

e. Swarm

Swarm et IPFS partagent des objectifs similaires de stockage décentralisé et de distribution de contenu, ils diffèrent dans leur approche de stockage, leur système d’adressage, leur mécanisme de distribution et leur intégration avec les écosystèmes spécifiques tels qu’Ethereum. Les choix entre Swarm et IPFS dépendront des besoins spécifiques d’une application et de la compatibilité avec les outils et les protocoles déjà utilisés dans le développement.

III. Perspectives d’amélioration de l’architecture technique web3

Bien que la blockchain offre une sécurité élevée, les applications Web3 peuvent encore être vulnérables à des failles de sécurité en raison de la gestion des seed phrases et aussi il peut être difficile à utiliser pour les utilisateurs non avertis par le fait de détenir des tokens natifs de la blockchain pour la réalisation de certaines transactions.

Abstraction des comptes (EIP-4337)

L’EIP-4337 propose d’introduire un nouveau type d’objets (transaction) appelé User Operation pour permettre l’abstraction de comptes.

Les comptes abstraits permettent de faire des mises à jour sur Ethereum sans modifier le protocole sous-jacent. Ce qui facilite l’ajout de nouvelles fonctionnalités.ce sont des smarts contrats dans lesquels les développeurs peuvent inclure des fonctionnalités qu’ils souhaitent ajouter à Ethereum sans modifier la couche de base.

Cette spécification représente l’idée que, pour intégrer une nouvelle fonctionnalité à la blockchain, il suffit de créer un compte abstrait qui contient les attributs et méthodes de la fonctionnalité en question. Dans le même sens, pour mettre à jour une fonctionnalité existante, il faut simplement actualiser le code du compte abstrait auquel elle est associée.

De cette façon, lorsqu’un utilisateur veut utiliser cette fonctionnalité, il soumet au réseau une User Operation. Cette requête est stockée dans un mempool alternatif avec d’autres UOps en attente de traitement. Ensuite, les bundlers vérifient que les UOps présents dans le mempool alternatif sont valides. Puis, ils rassemblent les requêtes approuvées en une seule transaction et exécutent le smart contract correspondant à la fonctionnalité demandée. Enfin, la transaction est validée et ajoutée au bloc en cours. C’est ainsi que le processus se termine sans que la couche de base n’ait été affectée.

Cette proposition d’amélioration vise à optimiser les mises à jour et l’ajout de nouvelles fonctionnalités sur Ethereum. Ses principaux avantages sont l’amélioration de la sécurité, l’augmentation de l’évolutivité, la réduction des coûts et l’accélération des processus.

Calcul multi-partis (MPC pour Multi Parti Computation)

L’utilisation de la Multi-Party Computation (MPC) dans l’architecture Web3 apporte des avantages significatifs en termes de sécurité renforcée des clés privées, de protection contre les attaques ciblées, de confidentialité améliorée et de gestion décentralisée des clés. Cela contribue à la construction d’applications décentralisées plus robustes, sécurisées et respectueuses de la vie privée.

Conclusion

De manière générale, nous estimons que le web3 représente une occasion passionnante pour les développeurs d’explorer de nouvelles approches afin de résoudre les problèmes de confiance entre les utilisateurs de logiciels. Cependant, il peut être difficile pour ceux qui souhaitent créer des applications décentralisées de savoir par où commencer.

Le web3 est une tendance durable, mais cela ne signifie pas que les concepts du web2 sont dépassés. Pour participer au développement de cette nouvelle industrie, il est essentiel que les développeurs s’informent sur le nouvel ensemble de technologies, qu’ils comprennent comment les utiliser et qu’ils en assimilent les principales caractéristiques.

Nous espérons que cet article a permis d’éclaircir certaines zones d’ombre entourant la création d’une application web3. N’hésitez pas à nous faire part de vos remarques ou à nous signaler toute omission. Chez ekino, nous cultivons une culture de partage au sein de la communauté et nous sommes toujours désireux d’en apprendre davantage sur les différents aspects de ce nouveau monde qu’est le web3 🙂

À propos d’ekino

Le groupe ekino accompagne les grands groupes et les start-up dans leur transformation depuis plus de 10 ans, en les aidant à imaginer et réaliser leurs services numériques et en déployant de nouvelles méthodologies au sein des équipes projets. Pionnier dans son approche holistique, ekino s’appuie sur la synergie de ses expertises pour construire des solutions pérennes et cohérentes.

Pour en savoir plus, rendez-vous sur notre site — ekino.fr.


L’architecture web3 : Un aperçu de haut niveau pour les développeurs was originally published in ekino-france on Medium, where people are continuing the conversation by highlighting and responding to this story.