Safe Network Entwickler Update 🇩🇪 10. März 2022

Dies ist eine maschinelle Ăśbersetzung. Das Original in Englisch ist hier: Update 10 March 2022

Im Moment ist der Beitritt zu einem Testnetz als Knoten wie der Beginn des schlechtesten Jobs, den Sie je hatten. Der, bei dem Sie von einem sadistischen Chef mitten ins Geschehen geworfen wurden, ohne angemessene Ausbildung oder Anweisungen; wo Sie sich mit ständigen Forderungen auseinandersetzen mussten, diese Botschaft zu überbringen oder diese Aufgabe zu erledigen; und wo dir irgendwann die Zeit ausgegangen ist oder du das Lächeln vernachlässigt hast - und dann wurdest du prompt gefeuert.

Obwohl wir nicht wollen, dass vorgetäuschte Nodes das Netzwerk durcheinanderbringen, laufen die Regeln, wie sie derzeit implementiert sind, auf „ein Schlag und Sie sind raus“, weshalb die jüngsten Spielplätze nur von kurzer Dauer waren: Jedes Mal, wenn wir einen Node aushöhlen , müssen die darin enthaltenen Daten verlagert werden, was zu einer Flut von Chunks und Nachrichten führt, die letztendlich zu einer Beschlagnahme des Netzwerks führen.

Dies ist nicht ganz unerwartet, da noch viele Optimierungen vorgenommen werden müssen, wie wir weiter unten erklären, aber es gibt keinen Ersatz für Tests unter realen Bedingungen, um zu zeigen, worauf wir uns konzentrieren müssen - also von ganzem Herzen :Herz: Danke für alle, die mitgemacht haben Spielplätze und Kometen. Es mag sich manchmal so anfühlen, als würden wir rückwärts gehen, aber keine Angst! Es ist alles Teil des Plans.

Allgemeiner Fortschritt

@Jimcollinson, @heather_burns und @andrew.james haben die von den Schweizer Behörden geforderten Unterlagen für die Gründung der neuen Stiftung dort durchgearbeitet. Die gute Nachricht ist, dass alles durchaus machbar ist und es keine offensichtlichen Hürden gibt, was unsere Wahl dieses Landes bestätigt. Unsere Unterlagen für die Gründung der Stiftung wurden eingereicht, und wir werden in Kürze mit der Arbeit an unserer Registrierung bei der Eidgenössischen Finanzbehörde beginnen.

@Anselme hat an Abschnittsübergaben und Konsens gearbeitet – wie wir auswählen, welche Erwachsenen bei einem Split zu Ältesten befördert werden und wie wir das tun Lösung der Situation, wenn ein Erwachsener, der einer Sektion beitritt, älter ist als die Ältesten. Wir müssen sicherstellen, dass sich die Ältesten bei der Übergabe auf dieselben Kandidaten einigen, daher ist Konsens erforderlich. @Davidrusu hat die Integration des Konsensalgorithmus jetzt so gut wie abgeschlossen, also sind wir bereit, ihn zu integrieren.

Neben der Fertigstellung des Pull-Modells und der Liveness-Tests (siehe unten) hat @Yogesh ein lokales Dashboard mit ELK und Filebeat so we eingerichtet können die Protokolle einfacher analysieren. Die bisherigen Ergebnisse sind gut, und er arbeitet jetzt daran, es robuster zu machen und sicherzustellen, dass es alle erforderlichen Metriken erfasst.

Nodes sind hier, um zu helfen – also hören Sie auf, sie zu überfordern

Warum ist das Netzwerk im Moment weniger stabil? Die Antwort ist, dass die eingeführten Maßnahmen zum Testen auf dysfunktionales Verhalten derzeit alles oder nichts sind: Früher waren sie ausgeschaltet, also „nichts“, jetzt sind sie „alle“. Wir töten im Grunde Knoten für geringfügige Vergehen, was übermäßige Abwanderung und Datenverschiebung bedeutet. Also müssen wir die Strafen zurücknehmen und andere Kontrollen einführen.

Im Moment verfolgen die Ältesten nur die „Lebendigkeit“ eines Knotens in Bezug auf den Umgang mit Daten. Dies ist jedoch nur eine Metrik, um festzustellen, ob sich Knoten dysfunktional verhalten. Wir müssen auch Dinge verwalten (und vergleichen) wie: Konnektivität, Nachrichtenqualität und Anzahl der Nachrichten.

Wir müssen die Konnektivität im Falle eines Neustarts/Upgrades von Knoten überwachen. Wenn sie neu starten können und immer noch ansprechbar sind, sollten wir sie nicht herabstufen, aber wir müssen zuerst überprüfen, ob dies der Fall ist. Da das Netzwerk keine Zeit hat, muss seine Reaktionsfähigkeit im Verhältnis zu den Aktivitäten der Nachbarn stehen. Nachrichtenübermittlung kann ähnlich überwacht werden.

Da es praktisch ist, all diese Funktionen zur Überprüfung auf bösartige oder fehlerhafte Knoten an einem Ort zu haben, erwägen wir eine neue Kiste der obersten Ebene, die in das Repo „safe_network“ aufgenommen werden soll und die Liveness-Verfolgung ersetzt, die wir jetzt haben. Diese neue Kiste wird eine erweiterte Funktionalität haben, die es uns ermöglicht, alle Arten von Node-Fehlfunktionen zu verfolgen und zu verwalten.

Datenreplikation

Die Datenreplikation ist ein weiterer wichtiger Faktor fĂĽr ein reibungslos funktionierendes, stabiles Netzwerk.

Wenn ein Knoten offline geht, mĂĽssen wir seine Daten an andere Knoten ĂĽbertragen. In der Vergangenheit wurden Daten unter der Kontrolle von Ă„ltesten von einem Knoten zum anderen geschoben.

Wir haben jetzt Erwachsenen-zu-Erwachsenen-Messaging für die Datenreplikation, wodurch alle anderen Erwachsenen davon erfahren, wenn ein Erwachsener offline geht oder ein neuer Erwachsener hinzukommt. Wenn jeder Erwachsene die aktuelle Mitgliedschaft kennt, kann er berechnen, welche Daten er halten sollte und welche Daten an die anderen Erwachsenen neu verteilt/repliziert werden müssen, um sicherzustellen, dass das Netzwerk eine Mindestanzahl von Kopien eines Chunks aufrechterhält.

Das funktioniert theoretisch, aber die Playgrounds und Komnets haben einige praktische Mängel gezeigt, darunter Replikationsnachrichten, die ihre Ziele nicht erreichen und verloren gehen, böswillige Knoten, die Nachrichten absichtlich verwerfen, und Daten- und Nachrichtenstöße, wenn viele Erwachsene bemerken, dass ein Knoten offline geht gleichzeitig – was wiederum dazu führt, dass Nachrichten verworfen werden.

Der neue Ansatz, an dem @yogesh gearbeitet hat, zielt darauf ab, diese Einschränkungen durch die Implementierung eines „Pull“-Modells zu lösen. Wann immer es eine Veränderung gibtIn der Gruppe der Erwachsenen teilen sich die Knoten gegenseitig mit, welche Daten sie halten sollten. Die empfangenden Knoten sind dann dafür verantwortlich, diese Daten von einem der vorhandenen Knoten, die sie enthalten, abzurufen.

Dies stellt sicher, dass Erwachsene nur Daten ziehen, die sie halten sollen, und sind dafür verantwortlich, diese zu erarbeiten. Wenn sie die Daten bereits haben, wird der Fluss bei der Runde der Benachrichtigungsnachrichten unterbrochen. Daten werden nur gesendet, wenn eine Replikation erforderlich ist – anstelle des aktuellen Fire-and-Forget-Messaging, das die Kapazität des Netzwerks als selbstverständlich voraussetzt.

Wir werden die Daten auch bĂĽndeln, um die Anzahl der erforderlichen Nachrichten zu reduzieren. Unser Spielplatz-Testnetz hat bewiesen, dass eine Nachricht pro Chunk nicht effizient war und die Knoten :boom: machten, wenn viele Daten repliziert werden mussten.

Sobald dies vollständig eingerichtet ist, werden wir einen neuen Spielplatz starten, um es zu testen.


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!