Ceci est une traduction automatique. L’original en anglais est ici: Update 3 November, 2022
Les mises à jour récentes de la façon dont les événements de désabonnement sont traités ont conduit à la prise de conscience que le processus personnalisé que nous avions mis en place pour la section de genèse d’un réseau n’était plus nécessaire. Moins de complexité équivaut à moins de chemins de code, ce qui apporte de multiples avantages. @davidrusu explique un peu plus en profondeur ci-dessous.
Progrès général
Cette semaine, nous sommes allés plus loin avec l’utilisation du flux bidirectionnel dans les nœuds, nous avons donc maintenant le flux qui fait un aller-retour complet… du client à l'aîné à l'adulte à l'aîné au client
pour un message ACK
. C’est-à-dire que les ACK
n’arriveront désormais qu’après que les données auront été écrites (alors que main
a été ACK
à la réception du message chez l’aîné… les adultes n’étaient pas impliqués). Cela évite parfaitement toute une classe d’erreurs lors des tests et nous donne plus de confiance dans ce que nous voyons lors du stockage des données chez le client.
Nous avons également travaillé dur pour refactoriser plus de complexité de code. Un PR de @anselme a rangé un peu plus de travail DKG. @roland a plus de code de test nettoyé et @bzee travaille dur pour mettre à jour la dernière caisse quinn
et les changements autour de l’utilisation de streams
.
Rendre la section Genesis moins spéciale
Il y a quelques éléments qui rendent la toute première section Safe Network spéciale, par exemple c’est la seule section qui n’a pas de section parent (évidemment). Mais lorsque nous construisons des systèmes complexes, la particularité n’est pas quelque chose que nous voulons. C’est un cas de plus auquel réfléchir.
Avant cette semaine, la façon dont les nœuds rejoignaient la section de genèse avait une bizarrerie où les âges des nœuds étaient artificiellement gonflés. Les nœuds se joignant tôt ont commencé avec un âge élevé et des âges progressivement abaissés pour chaque nœud se joignant plus tard.
c’est à dire.
- Le nœud A tente de se joindre avec l’âge de nœud par défaut de 4
- Le réseau répond par un
Retry(age=97)
- Le nœud A recommence le processus d’adhésion à l’âge de 97 ans.
- Le réseau les accepte.
- Le nœud B tente de se joindre avec l’âge de nœud par défaut de 4
- Le réseau répond par un
Retry(age=96)
(l’âge du nœud suivant est abaissé)
Dans une situation de troupeau en ruée, vous pourriez avoir de nombreux nœuds tentant de se joindre à la fois, forçant beaucoup de synchronisation d’âge :
- Les nœuds A, B, C, D tentent simultanément de se joindre avec les âges de nœud par défaut de 4
- Le réseau répond par un
Retry(age=97)
à chacun d’eux. - Les nœuds A, B, C, D recommencent le processus de jointure à l’âge de 97 ans.
- Supposons que le réseau accepte le nœud A.
- Les nœuds B, C, D tenteront toujours de se joindre à l’âge de 97 ans, ils devront à nouveau exécuter la logique de synchronisation de l’âge
La raison pour laquelle nous faisions cela était d’éviter les relocalisations excessives au début du réseau. Si vous vous en souvenez, les nœuds sont choisis au hasard pour être déplacés vers d’autres sections lorsqu’un événement de désabonnement se produit. Plus un nœud était jeune, plus il est susceptible d’être choisi pour être déplacé. Pour éviter que 80 % de votre section ne soit déplacée d’un coup, nous avons introduit ce comportement d’échelonnement d’âge afin de réduire la probabilité qu’une relocalisation se produise.
À un moment donné, nous avons modifié la façon dont les événements de désabonnement sont traités pour limiter le nombre de nœuds pouvant être déplacés simultanément afin que les sections puissent maintenir un nombre sain d’adultes.
Alors maintenant que les raisons de l’âge ne tiennent plus, nous sommes en mesure de supprimer le protocole de synchronisation de l’âge lorsque les nœuds rejoignent la section de genèse. Cela rend la première section beaucoup plus proche des sections suivantes sans chemin de code spécial qui lui est dédié ! Cela devrait également rendre les jonctions de nœuds un peu plus fiables et plus rapides puisque nous avons supprimé un aller-retour réseau pour synchroniser l’âge de la jonction.
Liens utiles
- Site Web du réseau sécurisé
- Safe Network Primer
- Principes de base du réseau
- Feuille de route
- Glossaire
N’hésitez pas à répondre ci-dessous avec des liens vers les traductions de cette mise à jour de développement et les modérateurs les ajouteront ici.
En tant que projet open source, nous sommes toujours à la recherche de commentaires, de commentaires et de contributions de la communauté. Ne soyez donc pas timide, rejoignez-nous et créons ensemble le réseau sécurisé!