Explorez Cardano : 2. Architecture : a. Aperçu de l'architecture de Cardano

 

Cette section décrit l'architecture de haut niveau de Cardano. Elle fournit des détails sur les composants principaux et leurs interactions, et aborde brièvement les périodes et les implémentations de Cardano.

 

Architecture de haut niveau de Cardano

Le diagramme suivant décrit l'interaction entre les composants du système Cardano :

 

Composants du système

L'implémentation actuelle de Cardano est hautement modulaire. Elle comprend les composants suivants (les différents cas d'utilisation du déploiement utiliseront différentes combinaisons de composants):

 

Nodes et les nodes distants

Un système blockchain est constitué d'un ensemble de nodes répartis sur un réseau qui communiquent entre eux pour obtenir un consensus sur l'état du système.

Les Nodes sont chargés de:

  • Exécution du protocole Ouroboros 
  • Validation et relais des blocs
  • Production de blocs (certains nodes)
  • Fournir des informations sur l'état de la blockchain à d'autres clients locaux

Vous ne pouvez faire confiance qu'aux nodes gérés par vous ou votre organisation. C'est pourquoi Daedalus exécute un node en arrière-plan.

 

Le processus node

Le cardano-node est le niveau supérieur du node et se compose des autres sous-systèmes, dont les plus importants sont le consensus, le grand livre et la mise en réseau, avec la configuration auxiliaire, le CLI, la journalisation et la surveillance.

 

Node-to-Node IPC protocol

L'objectif du node-to-node Inter-Process Communication (IPC) protocol est de permettre l'échange de blocs et de transactions entre les nodes dans le cadre de l'algorithme de consensus Ouroboros.

Le node-to-node protocol est un protocole composite, composé de trois "mini-protocoles" :

  • chain-sync: Utilisé pour suivre la chaîne et obtenir des en-têtes de bloc.
  • block-fetch: Utilisé pour obtenir des corps de bloc.
  • tx-submission: Utilisé pour le transfert des transactions.

Ces mini-protocoles sont multiplexés sur une seule connexion TCP (Transmission Control Protocol) de longue durée entre les nodes. Ils peuvent être exécutés dans les deux sens sur la même connexion TCP pour permettre des configurations de type peer-to-peer (P2P).

Le protocole global - et chaque mini-protocole - est conçu pour un environnement sans confiance où les deux parties doivent se protéger contre les attaques par déni de service (DoS). Par exemple, chaque mini-protocole utilise un flux de contrôle orienté vers le consommateur, de sorte qu'un node ne demande plus de travail que lorsqu'il est prêt, plutôt que de se voir imposer du travail.

La conception du protocole est modulaire et évolutive : la négociation de version est utilisée pour convenir de l'ensemble des mini-protocoles à utiliser, ce qui permet d'ajouter des mini-protocoles supplémentaires ou mis à jour au fil du temps sans causer de problèmes de compatibilité.

 

Node-to-Client IPC

L'objectif du node-to-client IPC protocol est de permettre aux applications locales d'interagir avec la blockchain via le node. Il s'agit d'applications telles que les backends de porte-monnaies ou les explorateurs de blockchain. Le protocole node-to-client permet à ces applications d'accéder aux données brutes de la chaîne et d'interroger l'état actuel du grand livre. Il offre également la possibilité de soumettre de nouvelles transactions au système.

Le protocole node-to-client utilise la même conception que le protocole node-to-node, mais avec un ensemble différent de mini-protocoles, et en utilisant des conduits locaux plutôt que des connexions TCP. En tant que tel, il s'agit d'une interface étroite de relativement bas niveau qui n'expose que ce que le node peut fournir nativement. Par exemple, le node fournit l'accès à toutes les données brutes de la chaîne mais ne fournit pas un moyen d'interroger les données sur la chaîne. La tâche de fournir des services de données et des API de plus haut niveau plus pratiques est déléguée à des clients dédiés, tels que cardano-db-sync et le backend du porte monnaie.

Le protocole node-to-client se compose de trois mini-protocoles:

  • chain-sync: Utilisé pour suivre la chaîne et obtenir des blocs
  • local-tx-submission: Utilisé pour soumettre des transactions
  • local-state-query: Utilisé pour interroger l'état du grand livre

La version node-to-client de chain sync utilise des blocs complets, plutôt que de simples en-têtes de bloc. C'est pourquoi aucun protocole séparé de récupération de blocs n'est nécessaire. Le protocole local-tx-submission est semblable au protocole tx-submission de node à node mais plus simple, et il renvoie les détails des échecs de validation des transactions. Le protocole local state query fournit un accès par requête à l'état actuel du grand livre, qui contient beaucoup de données intéressantes qui ne sont pas directement reflétées sur la chaîne elle-même.

 Apprenez-en davantage sur la conception du protocole de mise en réseau et sur les protocoles de communication des nodes Cardano.

 

Command line interface (CLI)

L'outil CLI du node est le "couteau suisse" du système. Il peut presque tout faire, mais il est de bas niveau et n'est pas très pratique car il est basé sur du texte et ne possède pas d'interface utilisateur graphique (GUI).

L'outil CLI peut:

  • Interroger le node pour obtenir des informations
  • Soumettre des transactions
  • Construire et signer des transactions
  • Gérer les clés cryptographiques

 

Porte-monnaie Daedalus

Daedalus est un porte-monnaie full node qui aide les utilisateurs à gérer leur ada, et peut envoyer et recevoir des paiements sur la blockchain Cardano. Daedalus se compose d'un front-end et d'un back-end. Le frontend est l'application graphique que les utilisateurs voient et avec laquelle ils interagissent. Le backend est un processus de service qui surveille l'état du porte-monnaie de l'utilisateur et effectue toutes les 'opérations lourdes', telles que la sélection des pièces, la construction et la soumission des transactions. Le backend interagit avec un node local via le protocole IPC node-to-client, et interagit avec le frontend via une API HTTP. Le backend fournit également un CLI qui permet d'interagir avec le porte-monnaie. Le backend du porte-monnaie peut également être utilisé seul - sans Daedalus - via son API. Il s'agit d'un moyen pratique pour les développeurs de logiciels d'intégrer Cardano à d'autres applications et systèmes.

Nous conseillons aux utilisateurs avancés qui souhaitent utiliser Cardano de commencer par Daedalus.

 

cardano-db-sync

Le node cardano ne stocke que la blockchain elle-même et les informations associées nécessaires à la validation de la blockchain. Ce principe de conception vise à minimiser la complexité du code et à réduire le coût de calcul et l'utilisation des ressources, afin de garder les interfaces locales du node aussi minimes que possible et d'utiliser des clients externes pour fournir une variété d'interfaces pratiques et de fonctionnalités supplémentaires. En particulier, le node ne fournit pas d'interface de requête pratique pour les informations historiques sur la blockchain. Ce service de données est fourni par un composant séparé utilisant une base de données en langage SQL (Structured Query Language).

Plus d'informations sur:

 

À propos des époques et des implémentations de Cardano

Cardano est un grand livre distribué de troisième génération. Il est basé sur Ouroboros, un algorithme de consensus de blockchain de type preuve d'enjeu (PoS-Proof of Stake) évalué par les pairs, qui est apparu pour la première fois dans la plus grande conférence de recherche en cryptologie au monde (the International Association for Cryptologic Research 37th International Cryptology CXonference - Crypto 2017).

Le nom Cardano est le nom général donné à la plateforme, qui a traversé de multiples époques et implémentations. Ces concepts nécessitent des explications supplémentaires.

 

Époques

Il y a plusieurs époques dans l'évolution de Cardano. Chaque ère (Byron, Shelley, Goguen, Basho et Voltaire) fait référence aux règles du grand livre. Par exemple, quels types de transactions et quelles données sont stockés dans le grand livre, ou la validité et la signification des transactions.

L'évolution du réseau principal Cardano a commencé avec les règles du ledger Byron (ère Byron). Le réseau principal a subi un hard fork fin juillet 2020 pour passer des règles Byron aux règles Shelley. Ce hard fork a donc marqué le début de l'ère Shelley.

 

Implémentations

La première mise en œuvre de Cardano a été introduite au début du mainnet de Cardano, en septembre 2017. Cette implémentation prenait en charge exclusivement les règles du grand livre de Byron.

Nous avons ensuite entrepris une réimplémentation complète de Cardano, qui a permis deux changements fondamentaux : la prise en charge de plusieurs ensembles de règles de grand livre, et la gestion du processus de hard fork consistant à passer d'un ensemble de règles à un autre. En d'autres termes, la nouvelle implémentation peut prendre en charge à la fois les règles de Byron et les règles de Shelley, ce qui signifie que, lorsqu'elle a été déployée sur le réseau principal au début de 2020, l'implémentation était également entièrement compatible avec les règles de Byron. Cela a permis une transition en douceur de l'ancienne à la nouvelle mise en œuvre. Une fois que tous les utilisateurs de Cardano ont mis à niveau leurs nodes vers la nouvelle implémentation, il a été possible d'invoquer le hard fork et de passer aux règles Shelley.

Une troisième implémentation Cardano a été utilisée sur le Shelley Incentivized Testnet (ITN). Ce système supporte un sous-ensemble significatif des règles de Shelley, et nous l'avons utilisé pour tester la dynamique économique et sociale du système de délégation de Shelley.

Cet aperçu de l'architecture de Cardano reflète l'implémentation actuelle de Cardano déployée sur le réseau principal, et non les implémentations originales ou ITN.

 

 

Vous trouverez une copie officielle de ce document ici :

https://docs.cardano.org/explore-cardano/cardano-architecture/overview

 

Plus de traductions de Cardano à: Cardano For The World