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):
- Node
- Interface de ligne de commande - Command line interface (CLI)
- Porte-monnaie Daedalus (wallet)
- Cardano db-sync
- GraphQL API server (Apollo)
- Composants REST API
- Serveur SMASH
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.
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:
- Cardano DB Sync et ses composants
- Meilleures pratiques de Cardano DB Sync
- Travailler avec DB Sync
- Guide de SMASH
à 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