Safe Network Entwickler Update ­čçę­čç¬ 03. November 2022

Dies ist eine maschinelle ├ťbersetzung. Das Original in Englisch ist hier: Update 3 November, 2022

J├╝ngste Aktualisierungen zur Verarbeitung von Abwanderungsereignissen haben zu der Erkenntnis gef├╝hrt, dass der benutzerdefinierte Prozess, den wir f├╝r den Genesis-Bereich eines Netzwerks hatten, nicht mehr erforderlich war. Weniger Komplexit├Ąt bedeutet weniger Codepfade, was mehrere Vorteile mit sich bringt. @davidrusu erkl├Ąrt weiter unten etwas ausf├╝hrlicher.

Allgemeiner Fortschritt

Diese Woche sind wir mit der bidirektionalen Stream-Nutzung in Knoten weitergekommen, also haben wir jetzt den Fluss, der eine komplette Rundreise durchl├Ąuft ÔÇŽ von ÔÇ×Kunde zu ├ältestem zu Erwachsenem zu ├ältestem zu KlientÔÇť f├╝r eine ÔÇ×ACKÔÇť-Nachricht. Das hei├čt, 'ACKÔÇÖs kommen jetzt nur herein, nach die Daten geschrieben wurden (w├Ąhrend ÔÇÜmainÔÇś ÔÇÜACKÔÇś war, als die Nachricht bei den ├ältesten empfangen wurdeÔÇŽ Erwachsene waren nicht beteiligt). Dies umgeht w├Ąhrend der Tests eine ganze Fehlerklasse und gibt uns mehr Vertrauen in das, was wir w├Ąhrend der Datenspeicherung beim Client sehen.

Wir haben auch hart daran gearbeitet, mehr Codekomplexit├Ąt umzugestalten. Eine PR von @anselme hat noch etwas DKG-Arbeit aufger├Ąumt. @roland hat mehr Testcode aufger├Ąumt und @bzee arbeitet hart an der Aktualisierung f├╝r die neueste Quinn-Kiste und ├Ąndert die Verwendung von Streams darin.

Die Genesis-Sektion weniger besonders machen

Es gibt ein paar Dinge, die den allerersten Abschnitt ÔÇ×Sicheres NetzwerkÔÇť besonders machen, zum Beispiel ist es der einzige Abschnitt, der (offensichtlich) keinen ├╝bergeordneten Abschnitt hat. Aber wenn wir komplexe Systeme bauen, wollen wir nicht das Besondere. Es ist ein weiterer Fall, ├╝ber den man nachdenken sollte.

Vor dieser Woche hatte die Art und Weise, wie Knoten dem Genesis-Abschnitt beitraten, eine Eigenart, bei der das Knotenalter k├╝nstlich aufgeblasen wurde. Fr├╝h beitretende Knoten begannen mit einem hohen Alter und verringerten das Alter f├╝r jeden sp├Ąter beitretenden Knoten zunehmend.

d.h.

  1. Knoten A versucht, mit dem standardm├Ą├čigen Knotenalter von 4 beizutreten
  2. Das Netzwerk antwortet mit einem Retry(age=97)
  3. Knoten A startet den Beitrittsprozess erneut mit 97 Jahren.
  4. Das Netzwerk akzeptiert sie.
  5. Knoten B versucht, sich mit dem standardm├Ą├čigen Knotenalter von 4 anzuschlie├čen
  6. Das Netzwerk antwortet mit einem Retry(age=96) (das n├Ąchste Knotenalter wird niedriger gestuft)

In einer hektischen Herdensituation k├Ânnten viele Knoten versuchen, sich gleichzeitig anzuschlie├čen, was eine gro├če Alterssynchronisierung erzwingt:

  1. Die Knoten A, B, C, D versuchen gleichzeitig, sich mit dem standardm├Ą├čigen Knotenalter von 4 zu verbinden
  2. Das Netzwerk antwortet mit einem ÔÇ×Retry(age=97)ÔÇť auf alle.
  3. Die Knoten A, B, C, D starten den Beitrittsprozess erneut mit 97 Jahren.
  4. Angenommen, das Netzwerk akzeptiert Knoten A.
  5. Die Knoten B, C, D werden immer noch versuchen, sich mit dem Alter von 97 zu verbinden, sie m├╝ssen die Alterssynchronisierungslogik erneut durchlaufen

Der Grund, warum wir dies getan haben, war, fr├╝hzeitig ├╝berm├Ą├čige Umz├╝ge im Netzwerk zu vermeiden. Wenn Sie sich erinnern, werden Knoten zuf├Ąllig ausgew├Ąhlt, um in andere Abschnitte verschoben zu werden, wenn ein Abwanderungsereignis eintritt. Je j├╝nger ein Knoten war, desto wahrscheinlicher wird er f├╝r eine Verlagerung ausgew├Ąhlt. Um zu vermeiden, dass 80 % Ihres Abschnitts auf einmal verlegt werden, haben wir dieses Altersstufenverhalten eingef├╝hrt, um die Wahrscheinlichkeit einer Verlegung zu verringern.

Irgendwann haben wir die Verarbeitung von Abwanderungsereignissen ge├Ąndert, um die Anzahl der Knoten zu begrenzen, die gleichzeitig verschoben werden k├Ânnen, damit die Abschnitte eine gesunde Anzahl von Erwachsenen aufrechterhalten k├Ânnen.

Da die Gr├╝nde f├╝r das Age Stepping nun nicht mehr gelten, k├Ânnen wir das Alterssynchronisierungsprotokoll entfernen, wenn Knoten dem Genesis-Abschnitt beitreten. Dadurch verh├Ąlt sich der erste Abschnitt viel n├Ąher an den nachfolgenden Abschnitten, ohne dass ihm spezielle Codepfade zugeordnet sind! Es sollte auch Node-Joins etwas zuverl├Ąssiger und schneller machen, da wir einen Netzwerk-Roundtrip entfernt haben, um das Join-Alter zu synchronisieren.


N├╝tzliche Links

F├╝hlen Sie sich frei, unten mit Links zu ├ťbersetzungen dieses Entwicklungsupdates zu antworten, und die Moderatoren werden sie hier hinzuf├╝gen.

Als Open Source-Projekt sind wir immer auf der Suche nach Feedback, Kommentaren und Community-Beitr├Ągen. Seien Sie also nicht sch├╝chtern, machen Sie mit und lassen Sie uns gemeinsam das sichere Netzwerk erstellen!