Safe Network Entwickler Update 🇩🇪 14. Juli 2022

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

Bei Open Source gibt es keine Geheimnisse. Wie einige von euch bemerkt haben, ist die alte Konfigurationsdatei für die Verbindung nicht mehr vorhanden und wird durch PrefixMap ersetzt. So was ist los? @roland ist hier, um mehr zu erklären.

Eine andere Sache, die auf den Ausgang zusteuert, ist die ungepflegte und fehlerhafte sledDB. Aber das wusstest du auch schon. @yogesh erklärt, was es ersetzt und warum wir die Datenbankoption zumindest vorerst vermeiden.

Allgemeiner Fortschritt

Das gesamte Team ist damit beschäftigt, den Code zu vereinfachen, indem unnötiges Multithreading entfernt wird. Wir verweisen Sie auf den Post von @joshuef hier, um zu erklären, warum. Die gute Nachricht ist, dass das Entfernen dieser Cruft in Bezug auf die Leistung bereits sehr positiv war.

@bzee hat ein neues Tool entwickelt, mit dem wir einen Chunk untersuchen und sehen können, wo er im Netzwerk gespeichert ist und mit welchem ​​​​Erwachsenen. Wir hoffen, dies bald der Community zum Testen zur Verfügung stellen zu können.

Auch zur Beobachtbarkeit hat @joshuef in heaptrack gegraben, der die Speichernutzung profiliert. Das Gedächtnis ist jetzt im Allgemeinen viel besser, aber es gibt immer noch gelegentliche Spitzen.

@bochaco und @chriso treiben die DBC-Integration voran, und wir hoffen, die nächste Iteration sehr bald für Community-Tests bereit zu haben - vielen Dank für Ihre bisherige Hilfe, Jungs :bowing_man:

Und @heather_burns ist wieder in den Medien, dieses Mal spricht sie über das drakonische (und jetzt glücklicherweise verzögerte oder möglicherweise sogar aufgegebene) Online Safety Bill.

PräfixMap

Wir haben die alte Konfigurationsdatei durch PrefixMap ersetzt, teils als Vereinfachung der Codebasis, teils um die Verbindungen und das Messaging zu optimieren. Config enthielt IPs und Ports von Knoten, zu denen eine Verbindung hergestellt werden soll, sowie den Genesis-Schlüssel des Netzwerks. Die PrefixMap enthält alle oben genannten plus den Section Authority Provider (SAP), der eine Liste aller aktuellen Ältesten in einer Sektion und den aktuellen Sektionsschlüssel bereitstellt. Da der Genesis-Schlüssel außerdem nachweislich mit dem Abschnittsschlüssel im SAP verknüpft werden kann, kann der Kunde überprüfen, ob er an der richtigen Stelle, im richtigen Netzwerk und auf Aktualität (über Anti-Entropie) ist.

Dies ermöglicht es dem Kunden auch, sofort die nächsten Ältesten zu finden, sodass wir vermeiden können, alle Ältesten in einer Sektion für jede Anfrage zu hämmern.

FĂĽr neue Knoten, die dem Netzwerk beitreten, liefert die PrefixMap einen Ăśberblick ĂĽber die Netzwerktopologie, die sie nach Bedarf aktualisieren kann, wiederum unter Ăśberspringen einiger Zwischenschritte.

@roland erklärt die Hintergründe.

Die Konfigurationsdatei, die den Genesis-Schlüssel des Netzwerks und einige Bootstrap-IP-Adressen enthielt, war die Art und Weise, wie wir uns mit einem öffentlichen/privaten Testnetz verbunden haben. Aber gleichzeitig pflegten wir auch die PrefixMap, eine Struktur, die die neuesten SAPs der uns bekannten Abschnitte enthielt. Da die SAPs die IPs aller Ältesten enthalten, können wir dies stattdessen verwenden, um in das Netzwerk zu booten.

Dies ist gegenüber der Konfigurationsdatei von Vorteil, da wir nicht auf den festen Satz von Knoten hämmern, die zum Bootstrap in das Netzwerk verwendet werden. Stattdessen können wir die PrefixMap abfragen, um die nächsten SAPs zu einem bestimmten XOR-Namen zu erhalten, und diese verwenden, um in das Netzwerk zu booten. Dadurch wird die Last beim Bootstrapping ausgeglichen.

Wir planen auch, die SectionChain in KĂĽrze in die PrefixMap zu verschieben, wodurch einige Probleme im Client behoben werden, der derzeit den Anti-Entropie (AE)-Aktualisierungsprozess durchlaufen muss, um sicherzustellen, dass er auf dem neuesten Stand ist, was sich zu einem summieren kann riesige Menge an AE-Meldungen. Dies ist noch in Arbeit.

Wie verändert das die Komnets?

Diese Ă„nderungen sollten sich nicht auf den Betrieb von lokalen und Community-Testnets (Comnets) auswirken, obwohl Sie einige kleine Unterschiede bemerken werden.

  • Der einzige neue Prozess besteht darin, dass wir die PrefixMap verwenden werden, um eine Verbindung zu lokalen/öffentlichen Testnetzen herzustellen, anstatt die Datei „node_connection_info.config“.
  • Wir verwenden den Genesis Key des Netzwerks, um die PrefixMap-Dateien zu benennen, daher könnten sie etwa so aussehen: PublicKey(0123..4567)

Verbindung zum Comnet:

  • Stellen Sie sicher, dass Sie nicht die alte Konfigurationsdatei ~/.safe/cli/config.json und alte Präfix-Maps in ~/.safe/prefix_maps/ haben. Sie können das gesamte .safe-Verzeichnis mit rm -r ~/.safe/ löschen
  • Sie können das Comnet zu Ihrer Netzwerkliste hinzufĂĽgen, indem Sie die URL/den Pfad seiner PrefixMap angeben, wie sie von demjenigen bereitgestellt werden, der das Comnet einrichtet (z. B. curl https://).
    Verwenden Sie dazu den folgenden CLI-Befehl: networks add my_comnet "<path/url>"
  • Sie können dann mit networks switch my_comnet auf das hinzugefĂĽgte Netzwerk wechseln

Lokales Baby-Fleming-Testnetz ausfĂĽhren:

  • Stellen Sie sicher, dass Sie nicht die alten Dateien haben, wie oben angegeben.
  • Installieren Sie ĂĽber die CLI die neueste Version von „sn_node“ mit dem Befehl „node install“.
  • Verwenden Sie killall sn_node, um alle laufenden Instanzen von sn_node zu ​​stoppen
  • FĂĽhren Sie das Testnet mit node run-baby-fleming aus
  • Sie können jetzt den Befehl „networks“ verwenden, um alle Netzwerke anzuzeigen, die Ihnen zur VerfĂĽgung stehen, und „networks switch network_name“ verwenden, um zwischen ihnen zu wechseln

Hinweis: Die CLI verwendet das Verzeichnis ~/.safe/prefix_maps/Versuchen Sie, die Liste der Netzwerke zu aktualisieren und das aktuelle Netzwerk auszuwählen, mit dem es verbunden ist, daher kann das Umbenennen von Dateien in diesem Verzeichnis zu unerwünschten Ergebnissen führen.

Schlitten abwerfen

Das letzte Stück im Schlittenentfernungsprozess, das Speichern von Registern, ist jetzt fast fertig und die fehlerhafte und nicht gewartete sledDB wird in Kürze vollständig durch unseren eigenen internen Plattenspeicher ersetzt. Wie wir letzte Woche gesagt haben, ist dies eine Keep-it-simple-Implementierung ohne Schnickschnack, die mit der anderen vergleichbar ist Alternativen und befreit uns in dieser Phase von einer externen Abhängigkeit. Nichts hindert uns daran, uns später andere Datenbanken anzusehen, wenn wir eine brauchen.

Wir sind zuversichtlich, dass diese Änderung eine der häufigsten Ursachen für das Scheitern von Testnets beseitigen wird. Aber bevor wir zu aufgeregt werden, es ist wahrscheinlich nicht das einzige, und wir schauen uns die Mitgliedschaft an, um zu sehen, ob vielleicht manchmal Chunks an die falschen Erwachsenen gesendet werden.


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!