Safe Network Entwickler Update 🇩🇪 1. Dezember 2022

Dies ist eine maschinelle Ăśbersetzung. Das Original in Englisch ist hier: Update 1 December, 2022

Wir wissen, dass Sie das Netzwerk unbedingt noch einmal ausprobieren möchten, und nachdem wir einige knorrige Probleme mit dem Code gelöst haben, stehen wir kurz davor, wieder formelle Testnetze anbieten zu können. Da sich das gesamte Team nun auf dieses Ziel konzentriert, erklärt @joshuef, was wir vorhaben und was uns erwartet. Also keine Sorge, der Juckreiz wird bald gekratzt!

Allgemeiner Fortschritt

Das Team arbeitet an Möglichkeiten, Testnetze regelmäßiger an die Community zu senden. Es mag den Anschein haben, dass wir uns in letzter Zeit ein wenig in den theoretischen Bereichen von Konsensalgorithmen festgefahren haben. Tatsächlich ist dies bei weitem nicht der einzige Bereich, an dem wir arbeiten, und diese Bemühungen werden natürlich intern getestet, aber nicht immer in einer vollständigen Testnet-Umgebung und nicht immer auf eine Weise, die leicht zu teilen ist. @chriso hat jedoch daran gearbeitet, den Release-Prozess zu verbessern, damit wir Testnetze einfacher einführen können, und der Rest des Teams konzentriert sich jetzt darauf, sicherzustellen, dass alle ihre Arbeiten im Sinne der agilen Entwicklung Testnetz-fähig sind.

Mostafa hat jetzt seine Implementierung von vereinfachtem ABBA, dem Coin-Flip-Konsensprotokoll ĂĽber das wir letzte Woche gesprochen haben im Zusammenhang damit, wie sich Ă„lteste in Mitgliedschaftsangelegenheiten einigen.

Durch den Prozess der Implementierung von ABBA haben wir erkannt, dass das Coin-Flip-Protokoll nicht erforderlich ist, wenn Sie ein Ergebnis bevorzugen. Beispielsweise wird ABBA verwendet, um zu entscheiden, ob ein Ältester eine Änderung der Mitgliedschaft vorgeschlagen hat. Wenn jemand einen Vorschlag von diesem Ältesten sieht, stimmt er mit JA, andernfalls mit NEIN. Wenn es jemals eine getrennte Abstimmung gibt, bedeutet das, dass jemand mit JA gestimmt hat. Entscheidend ist, dass alle JA-Stimmen mit einer Begründung versehen sind, die einen kryptografischen Beweis dafür liefert, dass der betreffende Älteste tatsächlich etwas vorgeschlagen hat.

Wenn also die Frage, die wir stellen, lautet: „Hat ein Ältester eine Änderung der Mitgliedschaft vorgeschlagen? Dann würde eine getrennte Abstimmung ja bedeuten! Der Älteste hat eine Änderung vorgeschlagen, und so können wir die getrennte Abstimmung mit JA auflösen.

Im ursprünglichen ABBA-Protokoll gab es keine Präferenz zwischen Ja oder Nein, daher der Grund für den Münzwurf. Da wir eine Vorliebe für JA haben, brauchen wir keinen Münzwurf mehr, um diese Spaltungen aufzulösen.

Mostafa und @davidrusu prüfen nun das voreingenommene ABBA-Protokoll auf Herz und Nieren. Der nächste Schritt wird die Integration von VCBC mit ABBA sein, um zum vollständigen MVBA-Konsensprotokoll (Multi-Value Byzantine Agreement) zu gelangen.

Und @joshuef und @oetyng untersuchen Netzwerkwissensprobleme, die nach einer Abschnittsaufteilung auftreten können, wenn es eine Datenabfrage bei Ältesten gibt. Dies scheint auf einen Mangel an Wissensaustausch zwischen den beiden neuen Abschnitten in der Übergabephase zurückzuführen zu sein.

Testnetze testnetze testnetze

Nachdem wir uns einige Monate lang intensiv mit verschiedenen Netzwerkthemen befasst haben (Mitgliedschaft, Node-State-Locks, Kommunikationsschichten und Antworten), freuen wir uns darauf, den Code erneut in die Hände der Community zu bekommen.

Wir wissen, dass es sporadische Komnets gegeben hat (und früher sehr häufig); und einige Community-Mitglieder sind in dieser Hinsicht möglicherweise mit unseren Testwerkzeugen vertraut. Aber hier möchten wir auf das eingehen, was wir haben, damit jeder, der möchte, versuchen kann, seine eigenen Testnetze einzurichten.

Das Testnet-Tool

Unser Testnet-Tool ist eine Sammlung von Skripten und Terraform zum Einrichten von Testnets. (Beispiele fĂĽr Befehle sind in der Readme-Datei verfĂĽgbar).

Es ermöglicht uns, Digital Ocean-Tröpfchen einfach zu spinnen und Knoten auf ihnen auszuführen. Dies ist die Grundlage unserer WAN-Tests.

Sie haben das Skript ./up, mit dem Sie ein Testnetz beliebiger Größe erstellen können. Es verwendet ein Droplet pro Knoten (die Größe ist einfach in den prodiver.tf-Dateien konfigurierbar).

Wenn Sie heaptrack auf den Knoten aktivieren möchten, dann haben wir ein ./build-Skript, das ein separates Droplet zum Erstellen des sn_node-Codes und des safe bin (der Knotencode mit aktiviertem Debug-Modus, also heaptrack kann sich einklinken).

Sie können diese benutzerdefinierten Builds dann im ./up-Skript verwenden.

SchlieĂźlich entfernt ./down ein Testnetz, sobald Sie damit fertig sind.

Kinderleicht?

Okay, ich habe also ein Testnetz eingerichtet …

Sobald ein Netzwerk läuft, stehen uns mehrere Tools zur Verfügung.

Ein Client-Tröpfchen

Das Terraform-Setup kann auch ein Client-Droplet (Instanz) erstellen. Dies ermöglicht es uns beispielsweise, Client-Tests einfach zu loopen und zu sehen, wie sich Nodes halten (./loop_client_tests.sh).

Wir haben auch einen „test-data“-Ordner, der von AWS auf den Client heruntergezogen wird. Wir zielen darauf ab, dies zu Beginn eines jeden Testnetzes ins Netzwerk zu stellen. Und dies gibt uns eine einfache Möglichkeit, die Datenintegrität über die Lebensdauer eines Testnetzes zu testen.

Ăśberwachung

Wir verwenden Kibana und ELK, um die Knoten zu überwachen. Wir haben ein (derzeit privates) Dashboard, in dem wir alle Speicher- oder CPU-Probleme sehen können, was bei der Fehlerbehebung hilft. Unten sehen wir zum Beispiel unseren aktuellen Blocker: Der Speicher nimmt mit der Zeit zu. Dies scheint mit der Verbindungsverwaltung zusammenzuhängen… Wir haben eine mögliche Lösung, die dies zu lösen scheint, aber wir suchen nach etwas Ordentlicherem.

Protokolle!

Das letzte (und kryptischste) Tool in unserem Arsenal ist das Abrufen von Client-Protokollen. ./scripts/logs erledigt das für uns. Und dann können wir diese mit einem Tool wie ripgrep parsen oder z.B. spezifische MsgIds, um zu verfolgen, was in den Knoten vor sich geht.

Und so…

Das ist nur ein kleiner Überblick über die Nutzung und Bewertung eines Testnetzes. Wir sind zuversichtlich, dass wir, wenn wir dies einfacher (wir versuchen es) und öffentlicher (bald!) machen können, mehr Leute dazu bringen können, Knoten zu überwachen und zu überprüfen und das Debuggen dort noch einmal zu beschleunigen.

Tauchen Sie also auf jeden Fall in das Testnet-Tool ein. PRs sind sehr willkommen. Es gibt gerade eine Menge Bash-Scripting, was manche Leute mehr in die Mangel nehmen als andere … Aber zumindest gibt euch das hoffentlich einen Überblick darüber, wie wir gerade testen. Und vielleicht entzünden sich ein paar andere Ideen, wie man solche Dinge verbessern kann!


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!