Dies ist eine maschinelle Übersetzung. Das Original in Englisch ist hier: Update 9 February, 2023
Aufgrund des interessanten Testnetzes der letzten Woche, das nicht so lange funktionierte wie andere, aber dennoch aktiv blieb und einige nützliche Ergebnisse hervorbrachte, haben wir uns entschieden, eine kleine Erläuterung zum Beitritt von Knoten zu machen. Dies ist etwas, das wir versuchen, zuverlässiger und einfacher für die Leute zum Ausprobieren zu machen. Wenn Sie also einige seltsame Vorgänge in Ihren Protokollen bemerken, ist dies der Grund.
Großes Dankeschön an @josh für seine Gooey-App, eine benutzerfreundliche GUI zur Überwindung von FCL (Angst vor der Befehlszeile). Mit Gooey können Sie nach Herzenslust Dateien PUT und GET abrufen, ohne das Gefühl zu haben, die Matrix zu betreten. Initiativen wie diese, die Überwachungs-App Vdash von @happybeing und scripts machen diese Community zu einer so großartigen Community. :Klatsch Klatsch klatsch:
Allgemeiner Fortschritt
Zunächst eine gute Nachricht zu den rechtlichen Aspekten: Die Safe Network Foundation wurde ordnungsgemäß im Genfer Handelsregister eingetragen. @JimCollinson und @andrew.james haben viele Monate daran gearbeitet und es stellt einen wichtigen Meilenstein dar, der überschritten wurde. Wir haben der FINMA auch einen Non-Action-Letter eingereicht. Dies legt die Rechtsmeinung dar, dass SNT ein Utility Token für den Kauf von Speicher und kein Wertpapier ist, was bedeutet, dass wir mit dem Start weitermachen können.
Wir beschäftigen uns immer noch mit der Idee von stable set – die Verwendung von Nodes für Älteste und die ältesten Erwachsenen als primäre Datenspeicherung, während Nodes, die es sind die den Node-Alterungsprozess durchlaufen, werden weniger wichtige sekundäre Speicheraufgaben zur Ausführung gegeben. @davidrusu führt diesbezüglich Experimente durch, während @anselme mögliche Auswirkungen auf die Sicherheit durchgearbeitet hat.
Die stabile Set-Idee bringt ein paar interessante Änderungen mit sich:
- Kein DKG (da älteste Knoten sofort Älteste sind). Dadurch wird eine erhebliche Netzwerklast beim Ältestenwechsel entfernt.
- Keine Knoten im stabilen Satz verschieben sich, also ist dies ein Satz nur zum Anhängen
- Knoten im stabilen Satz haben keine Altersmarkierung, ihr Alter ist ihre relative Position im Satz (basierend auf dem zuerst gesehenen)
- Neue Älteste signieren alte Älteste im SAP (Section Authority Provider), dies ermöglicht uns, uns von verlorenen Konsensknoten zu erholen (Massenabwanderungsbehandlung)
- Es ist wahrscheinlich, dass wir Partitionen mit diesen Änderungen ziemlich einfach handhaben können, obwohl wir noch keinen Mechanismus haben, der es partitionierten Netzwerken ermöglicht, sich wieder zu verbinden.
@oetyng steckt tief in der Kommunikation zwischen Clients und Knoten, bereinigt redundante Typen und Muster und versucht, die Dinge da draußen zu begradigen.
@anselme überarbeitet weiterhin DBCs. Gestern hat er bls_bulletproofs durch die Upstream-Bulletproofs in sn_dbc ersetzt . Dies macht den Code nicht nur sicherer, da wir geprüften Code verwenden, sondern verbessert auch die Leistung erheblich!
2096 ms → 234 ms : Benchmarking Neuauflage Split 1 bis 100
160s → 40s : alle Tests werden ausgeführt
Auf der Node-Front bemerkte @joshuef, dass ein Node, wenn er wieder beitritt, einen anderen Namen erhält, was etwas zusätzliche Logik erfordert. Das wurde behoben und die Knoten treten jetzt mit demselben Namen wieder bei.
@Chriso ist es gelungen, EC2-Instances zu erhalten, die an einem Testnetz teilnehmen, das für Telemetrie-Sammler- und Datenvorbereitungsdienste konfiguriert ist, was für die Lastverteilung und andere Aufgaben benötigt wird. Er hat auch ein Testnetz auf AWS eingerichtet und ausgeführt, das Traces an OpenSearch übermittelt. Sollte eine eingehende PR sein.
@Roland hat eine Erklärung zur Telemetrie geschrieben, warum sie benötigt wird und wie wir sie verwenden, die wir bald teilen können sollten.
@qi_ma debuggt Knotenbeitritte und -verschiebungen, und @bochacho bearbeitet Nachrichten und qp2p.
Und @bzee hat redundanten Code aus dem Knotenbeitrittsprozess entfernt
Knoten beitreten
Das bringt uns ordentlich zu Knoten von zu Hause aus. Das letzte Testnetz war das erste Mal seit einiger Zeit, dass wir Knoten von zu Hause aus (oder Cloud-VM) beitreten konnten, und auch der erste „offizielle“ Test mit kleineren Knoten (nachdem ein Komnetz dort Erfolge gesehen hatte). Insgesamt waren wir erfreut, dass es vielen Leuten gelungen ist, beizutreten, obwohl sich PUTs ziemlich schnell festgefahren haben. Wir haben festgestellt, was hier vor sich ging, da Knotenumzüge spärlicher waren als erwartet, unser anfängliches Netzwerk nicht „gealtert“ genug war, um eine stabile Startphase zu gewährleisten.
Idealerweise möchten wir, dass jeder von überall auf jedem Gerät beitreten kann, wenn das Netzwerk mehr Speicherplatz benötigt. Es gab einige Probleme mit Zeitüberschreitungen, wenn ein Knoten um Beitritt bittet und dann die Verbindung zum Ältesten verliert, die wir jetzt größtenteils behoben haben (Knoten erhalten eine Antwort, die besagt, dass die Abstimmung im Gange ist, im Gegensatz zu keiner Antwort; Knoten auch jetzt nur Versuchen Sie es weiterhin mit demselben Namen, anstatt den Namen zu wechseln, was den Beitrittsprozess zuvor verwirrt hat).
Einige Fehler können auftreten, wenn ein Knoten beitritt, kurz nachdem die Mitgliedschaft (die Zusammensetzung der Sektion) nach einer DKG-Sitzung zwischen den Ältesten geteilt wurde. Wenn dies passiert, wird der neue Knoten nicht gezählt und es gibt eine geteilte Ansicht. Es ist etwas, das @qi_ma jetzt korrigiert.
Die safe node join
-Flags von --skip-auto-port-forwarding
und --public-addr
sind jetzt veraltet, da wir die UPnP/IGD-Portweiterleitung entfernt haben, die nie zuverlässig war. Dies wurde vorerst ausgeräumt, um qp2p zu vereinfachen. Wir können dies gut wieder auf den Weg bringen, aber es hat zu diesem Zeitpunkt keine Priorität. Sie sollten jetzt nur noch mit safe node join --network-name
beitreten können, obwohl NAT zweifellos ein Problem für einige Home-Knoten sein wird.
Das liegt daran, dass Knoten in einem P2P-Netzwerk, damit sie kommunizieren können, in der Lage sein müssen, sich gegenseitig zu finden, aber mit NAT wird ihre genaue Adresse vom Router verborgen, der nur die öffentliche IP anzeigt. NAT wurde als Hack eingeführt, um zu umgehen, dass IPv4 keine Adressen mehr hat, aber leider ist es geblieben. Verschiedene Router und ISPs haben unterschiedliche Möglichkeiten zur Implementierung der Portweiterleitung, die sowieso nicht jeder ausprobieren wird. IPv6 löst das Problem, aber leider ist die Verbreitung noch recht gering. Es ist ein Problem für alle dezentralen Netzwerke, und wir suchen weiterhin nach Lösungen.
Wir planen, den Befehl „safe node“ zugunsten der direkten Verwendung der Binärdatei „sn_node“ auslaufen zu lassen, wie @Chriso in diesem Beitrag vorschlägt. Der node
-Befehl ist im Wesentlichen ein dünner Wrapper um die sn_node
-Binärdatei und bietet keinen großen Vorteil gegenüber der direkten Verwendung der Knoten-Binärdatei. Darüber hinaus führt dies zu Wartungsproblemen in Bezug auf die Synchronisierung unterstützter Argumente zwischen den beiden. Der Knoten wird höchstwahrscheinlich sein eigenes Installationsskript erhalten. Der Befehl „safe node run-baby-fleming“ wird beibehalten, aber wahrscheinlich zu „safe run-baby-fleming“ 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!