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 MsgId
s, 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!