Explorez Cardano : 3. Réseau Cardano : c. Réseau pair-à-pair (P2P)
Les nodes Cardano et les interactions entre eux sont réunis au sein d'une couche réseau, qui distribue les informations relatives aux transactions et à la création de blocs entre tous les nodes actifs. De cette manière, le système valide et ajoute des blocs à la chaîne et vérifie également les transactions. Un réseau distribué de nodes doit réduire au minimum les délais de communication et être suffisamment résilient pour faire face aux pannes ou aux contraintes de capacité.
Dans le système fédéré de Byron, les nodes étaient connectés par une configuration statique définie dans un fichier de topologie. Depuis l'introduction de Shelley, le système fonctionne en mode hybride. En passant de l'état fédéré de la connectivité du réseau à l'état hybride, nous avons ajouté un réseau peer-to-peer (P2P) construit manuellement de nodes relais SPO (stake pool operator). Cela signifie que les nodes centraux SPO peuvent se connecter à la fois aux nodes relais fédérés et aux autres nodes relais gérés par SPO. Cette connectivité n'est pas automatisée, mais elle permet l'échange d'informations sur les blocs et les transactions sans dépendre des nodes fédérés. Au cours de cette étape, les nodes relais fédérés sont progressivement désactivés afin que les SPO puissent se connecter à leurs relais respectifs.
Pour assurer une communication efficace entre les nodes, il est essentiel de permettre des connexions automatisées des relais SPO entre eux, de sorte que moins de configuration statique soit nécessaire. Cette tâche est actuellement accomplie par des mises à niveau de la matrice réseau, qui permettront à terme une topologie P2P complète pour tous les nodes Cardano. La communication P2P améliorera le flux d'informations entre les nodes, réduisant ainsi (et finalement supprimant) la dépendance du réseau vis-à-vis des nodes fédérés, et permettant une décentralisation complète du réseau Cardano.
Note : Le déploiement du P2P est actuellement en phase de test. L'équipe se concentre sur la livraison des fonctionnalités finales pour les SPO et la préparation des tests de simulation QuickCheck. Le déploiement complet du P2P aura lieu plus tard en 2021. Cette documentation décrit la fonctionnalité P2P à titre d'information uniquement avant cette version.
Capacités de P2P
La matrice réseau subit un certain nombre d'améliorations pour atteindre la résilience souhaitée du réseau. Ces améliorations ne nécessitent pas de changement de protocole, mais permettent plutôt une sélection automatisée des pairs et la communication entre les pairs et les nodes.
La mise en réseau P2P est possible grâce à l'utilisation des composants suivants:
- Gouverneur P2P - gère l'initiation automatique des connexions entre pairs.
- Administrateur de connexions - s'intègre au gouverneur P2P pour surveiller les nouvelles connexions et les nouveaux protocoles, ce qui garantit une communication efficace et un meilleur suivi des incidents.
- Serveur ‒ accepte les connexions et limite les taux dynamiques en les synchronisant avec l'administrateur des connexions.
- Gouverneur de protocole entrant - reçoit des données de l'administrateur des connexions pour lancer ou redémarrer les mini-protocoles du répondeur sur les connexions duplex entrantes et sortantes.
Ensuite, nous examinons de plus près la manière dont le gouverneur P2P fonctionne pour assurer une connectivité automatisée entre les nodes pairs du réseau.
Fonctionnalité de gouverneur P2P
Le réseau Cardano est composé de nombreux nodes pairs. Certains nodes pairs sont plus actifs que d'autres, certains ont des connexions établies et d'autres doivent être promus pour garantir les meilleures performances du système. Chaque node producteur de blocs maintient un ensemble de pairs répartis en trois catégories:
- pairs froids - pairs existants sans connexion réseau établie
- pairs tièdes - pairs disposant d'une connexion par support établie, qui est uniquement utilisée pour les mesures du réseau sans mettre en œuvre aucun des mini-protocoles de node à node.
- pairs chauds - pairs disposant d'une connexion, qui est utilisée par les trois mini-protocoles de node à node
Les pairs nouvellement découverts sont initialement ajoutés à l'ensemble de pairs froids. Le gouverneur P2P est ensuite responsable de la gestion des connexions entre pairs : il définit quels pairs sont utiles à des fins de connexion et lesquels doivent être promus ou rétrogradés entre les ensembles froids, tièdes ou chauds.
L'objectif principal du gouverneur P2P est de maintenir le nombre prévu de pairs froids, tièdes et chauds. Il construit et maintient une carte de connectivité de l'ensemble du réseau, et simplifie le processus de définition des connexions en les gérant automatiquement.
Pour établir la connectivité entre les nodes, le gouverneur P2P entreprend les activités suivantes:
- le bavardage aléatoire utilisé pour découvrir un plus grand nombre de pairs froids
- promotion des pairs froids vers des pairs tièdes
- démotion des pairs tièdes en pairs froids
- promotion des pairs tièdes vers des pairs chauds
- démotion des pairs chauds en pairs tièdes
Le gouverneur P2P doit établir et maintenir:
- un nombre cible de pairs froids (par exemple, 100)
- un nombre cible de pairs chauds (par exemple, entre 2-20)
- un nombre cible de pairs tièdes (par exemple, entre 10-50)
- un ensemble de pairs tièdes qui sont suffisamment diversifiés en termes de distance de saut et de localisation géographique
- une fréquence de changement cible pour les changements chauds ou tièdes
- une fréquence de changement cible pour les changements ou tièdes ou froids
- une fréquence de changement cible pour les changements froids ou inconnus
L'utilisation de 2 à 20 pairs chauds est rentable, car les pairs n'échangent que leurs en-têtes de bloc. Le corps du bloc, quant à lui, n'est généralement demandé qu'une seule fois et a tendance à suivre le chemin le plus court dans le graphe de connectivité.
L'objectif des pairs tièdes est de fournir un accès aux pairs qui peuvent être rapidement promus en pairs chauds (en cas de défaillance de l'un des pairs tièdes), et de fournir des candidats pour le remplacement des pairs chauds.
La politique de sélection des pairs tièdes à promouvoir en pairs chauds repose sur les mesures en amont. L'objectif d'un certain degré de rotation entre les pairs froids et tièdes est, en partie, de découvrir la distance du réseau entre plusieurs pairs et de permettre à des pairs tièdes potentiellement meilleurs de prendre la relève des pairs chauds existants. Cela permet une optimisation et des ajustements supplémentaires. Le maintien de la diversité des distances de saut contribue à améliorer les temps de distribution des blocs dans le réseau distribué à l'échelle mondiale.
Dans l'ensemble, cette approche suit un modèle commun pour la recherche ou l'optimisation probabiliste qui utilise un équilibre entre l'optimisation locale et certains éléments de perturbation d'ordre supérieur afin d'éviter de rester coincé dans un mauvais optimum local.
Les pairs maintiennent un ensemble limité d'informations, qui sont basées sur leurs interactions directes précédentes. Les pairs froids, par exemple, peuvent ne conserver aucune donnée, car ils n'ont pas encore établi d'interactions. Ces données peuvent être comparées à la propriété de "réputation", mais ces détails sont purement locaux et ne sont pas partagés avec les autres nodes. Les informations locales sur la réputation des pairs sont également mises à jour lorsque les connexions entre pairs échouent. Le réseau ne maintient pas d'informations négatives sur les pairs pendant de longues périodes : pour limiter les ressources et en raison de la simplicité des attaques Sybil.
L'implémentation classe les exceptions qui provoquent des échecs de connexion en trois catégories:
- exceptions internes au node (par exemple, corruption du disque local)
- des défaillances du réseau (par exemple, des connexions TCP interrompues)
- un comportement adversaire (par exemple, une violation de protocole détectée par la couche des protocoles typés ou par la couche de consensus).
En cas de comportement adverse, le pair peut être immédiatement rétrogradé des ensembles "chaud", "tiède" ou "froid".
Vous trouverez une copie officielle de ce document ici :
https://docs.cardano.org/explore-cardano/cardano-network/p2p-networking
Plus de traductions de Cardano à: Cardano For The World