Safe Network Entwickler Update 🇩🇪 21. Januar 2021

Dies ist eine maschinelle Ăśbersetzung. Das Original in Englisch ist hier: Safe Network Dev Update - January 21, 2021

Zusammenfassung

Hier sind einige der wichtigsten Dinge, die seit dem letzten Entwickler-Update hervorgehoben werden sollten:

  • Wir haben eine Problemumgehung fĂĽr ein „Lag“ -Problem gefunden und zusammengefĂĽhrt, das sein Bestes getan hat, um ungelöst zu bleiben.
  • Ein PR-Entwurf fĂĽr den Belohnungsfluss wurde erstellt und steht kurz vor dem Abschluss.
  • Einige fehlerhafte Client-Netzwerktests, die uns daran gehindert haben, das Update fĂĽr ein Messaging-Problem mit „KeySection“ und „DataSection“ (das letzte Problem, das ein öffentliches Testnetz blockiert) zu testen, sollten jetzt behoben sein und der Test wird nun fortgesetzt.
  • Wir haben die CI / CD-PRs in jeder unserer BRB-Kisten zusammengefĂĽhrt, was zu einer automatisierten Testabdeckung, Versionierung und unseren ersten Versionen der BRB-Kisten auf crates.io.
  • @JimCollinson bietet ein weiteres faszinierendes Update zum Fortschritt der Safe Network App & UX.

Safe Client, Nodes und qp2p

Projektplan fĂĽr sichere NetzwerkĂĽbertragungen
Safe Client-Projektplan
Projektplan fĂĽr sichere Netzwerkknoten

Lösen von Verzögerungsproblemen

In der letzten Woche wurde viel tief getaucht, um die Ursache für die erhebliche Verzögerung zu finden, die beim Ausführen interner Testnetze aufgetreten ist. Und obwohl wir nicht vollständig „repariert“ sind, haben wir hier eine viel bessere Idee und eine einfache Problemumgehung wurde jetzt zusammengeführt.

Der Kern dieses Problems bestand darin, die Verarbeitung von Clientanforderungen durch einen Knoten zu blockieren. Dies hängt möglicherweise mit einer suboptimalen Parallelität der Knoten zusammen (die wir ebenfalls beheben möchten), aber der Stamm scheint auf unterbrochene Verbindungen zurückzuführen zu sein, die die Reaktionsfähigkeit der Knoten blockieren, und sie haben effektiv auf die Verbindung gewartet von den unteren Schichten völlig verlassen zu werden - dieses Warten ist die Verzögerung, die wir gesehen haben.

Es scheint, dass eine einfache Änderung des Leerlaufzeitlimits eines Knotens (Verringern von 30 Sekunden auf ~ 5 Sekunden … wir experimentieren jetzt, um optimale Zahlen zu finden) dazu führt, dass die Knoten so weit entsperrt werden, dass die Client-Tests wieder einwandfrei funktionieren. Während wir uns also umsehen, ob es ein Problem im Verbindungspool von „qp2p“ gibt, und „sn_node“ etwas umgestalten, können wir jetzt vorwärts gehen und alles noch einmal testen.

Belohnungen flieĂźen

Wir haben bereits die laufenden Arbeiten zum Belohnungsfluss erwähnt. Die Belohnungen werden von den Ältesten in einem Abschnitt gezahlt, indem sie einen verteilten AT2-Akteur (d. H. Den „Abschnittsakteur“) und aggregierte Signaturen verwenden. Jedes Mal, wenn sich die Elder-Konstellation ändert, ändert sich der Abschnittsschlüssel, und der verteilte Akteur wechselt zum neuen Schlüssel, indem alle Token darauf übertragen werden. Es gibt einen anderen Anfangspfad für den Übertragungsfluss für den Abschnittsakteur (und jeden Akteur mit mehreren Eigentümern) als für Akteure mit einem Eigentümer, bei dem die Validierung einer Übertragung mit der Mehrheit vorgeschlagen wird, bevor eine Validierung bei den Replikaten erfolgt.
Der Übergang vom Genesis-Knoten sowie Tests dafür sind abgeschlossen und bestätigt, jetzt arbeiten wir an den nachfolgenden Übergängen.

Während wir an dem oben Gesagten arbeiteten, stellten wir fest, dass der Elder-Staat zwischen den abhängigen Operationen in einem solchen Übergang nicht konsistent war, und daher haben wir diese Woche die Darstellung und Behandlung dieses Staates verfeinert. Es wurde ein PR-Entwurf für den Belohnungsfluss erstellt, der alle oben genannten Arbeiten enthält, da er kurz vor dem Abschluss steht.

KeySection- und DataSection-Messaging-Problem

In einem vorherigen Entwickler-Update haben wir erwähnt, dass wir die Entfernung der möglicherweise durchgeführten doppelten Signatur-Aggregat-Arbeit untersuchen out von sn_node beim Austausch von Nachrichten zwischen KeySection und DataSection. Zu diesem Zweck wird ein WIP-PR erstellt. Diese PR besteht die sn_node-Komponententests, und wir haben die sn_client-Netzwerktests verwendet, um eine weitere Überprüfung durchzuführen. Aufgrund anderer parallel durchgeführter Refactoring-Arbeiten in „sn_node“ und „sn_client“ wurden die „sn_client“ -Netzwerktests jedoch aus anderen Gründen unterbrochen, sodass die Überprüfungsarbeiten für kurze Zeit unterbrochen werden mussten.

Wir glauben, dass diese Arbeit zum Entfernen von Duplikaten ein „KeySection“ - und „DataSection“ -Nachrichtenproblem beheben wird, das wir Ende letzten Jahres bei unseren internen Testnetzläufen beobachtet haben. Dies sollten wir über den „sn_client“ -Netzwerktest überprüfen können. Dies ist derzeit der erwartete letzte verbleibende Blocker für das Hosten eines öffentlichen Testnetzes. Daher konnten wir hier in der Zwischenzeit keine internen Tests durchführen.

Mit der kürzlich erfolgten Zusammenführung einiger Refactoring-Arbeiten in bMit sn_node und sn_client sind wir nun wieder auf dieser Priorität und können die Testfälle hoffentlich ohne Komplikationen durcharbeiten.

API und CLI

Nach der Einführung der „sn_messaging“ -Kiste, in der jetzt alle Client-Nachrichtentypen definiert sind, haben wir daran gearbeitet, die erforderlichen Änderungen in „sn_api“ und „CLI“ vorzunehmen, damit alle wieder mit „sn_node“ und „sn_routing“ kompatibel sind. Dies ist nun abgeschlossen und alle Änderungen wurden mit den Hauptzweigen all dieser Kisten zusammengeführt. Wir haben auch einige Fortschritte bei dem Versuch erzielt, die Nachrichtendefinitionen „sn_routing“ in die Kiste „sn_messaging“ zu verschieben, obwohl dies immer noch eine laufende Aufgabe mit einer niedrigeren Priorität als die meisten anderen Dinge ist, an denen wir arbeiten.

Wir haben auch einige API-Verbesserungen von @Scorch auf der qjsonrpc-Kiste zusammengeführt, wodurch Pfadparameter generisch werden. Daher möchten wir ihm für seinen Beitrag danken. : raise_hands:

BRB - Byzantinische zuverlässige Sendung

Der Dienstag war ein weiterer Meilenstein, als wir die CI / CD-PRs zusammenführten, was zu einer automatisierten Testabdeckung, Versionierung und unseren ersten Veröffentlichungen der brb crates on crates.io führte.

Eine wesentliche Verbesserung seit dem Update der letzten Woche, das es in diese Version geschafft hat, ist die Unterstützung generischer Schauspielertypen über Rostmerkmale. Dies bedeutet, dass der Code jetzt flexibel genug ist, um die meisten Kryptografiealgorithmen oder -bibliotheken mit öffentlichem Schlüssel ohne weitere Änderungen an den Kernbibliotheken zu unterstützen. Die Unterstützung für ed25519 ist bereits enthalten, wir werden jedoch versuchen, die BLS-Unterstützung hinzuzufügen. Sogar Hardware-Signaturgeräte könnten in Zukunft hinzugefügt werden.

Zusätzliche Verbesserungen umfassen:

  • Die CLI brb_node_qp2p verfĂĽgt ĂĽber einige Anzeigekorrekturen und einen neuen Wiederholungsbefehl fĂĽr den Fall, dass Pakete verworfen werden.
  • Protokollierung. Alle Druckaufrufe wurden in entsprechende Protokollierungsfunktionen geändert.

In Arbeit:

  • Testfälle werden verbessert, um Ergebnisse zurĂĽckzugeben und alle Anrufe zu entfernen, die in Panik geraten wĂĽrden ()
  • Es werden Dokumentkommentare hinzugefĂĽgt, um den Code fĂĽr andere Entwickler benutzerfreundlicher zu machen

Endlich noch ein paar tolle Neuigkeiten! Unser CRDT-Spezialist und die großen Köpfe hinter den brb-Kisten haben vereinbart, seinen Vertrag um weitere drei Monate zu verlängern, um weitere Funktions- und Integrationsarbeiten zu unterstützen. : tada:

Routing

Projektplan

Diese Woche haben wir eine weitere Reihe von Korrekturen für Probleme zusammengeführt, die mit dem Stresstest-Tool aufgedeckt wurden. Mit diesen scheinen wir an einem viel besseren Ort zu sein. Wir haben immer noch Probleme mit Gabeln (Abweichungen in der Abschnittskette), die manchmal bei sehr starker Abwanderung auftreten. Dieses Problem wird durch die Integration des neuen Mitgliedschaftsalgorithmus gelöst, der sich bereits in der Planungsphase befindet.

Wir haben auch einige kleinere Änderungen zusammengeführt. Zuerst haben wir sichergestellt, dass Knoten [niemals Verbindungen zu Clients herstellen] (https://github.com/maidsafe/sn_routing/pull/2285). Wenn ein Knoten etwas an einen Client senden muss, wird die vom Client erstellte Verbindung wiederverwendet vorher. Wenn keine solche Verbindung besteht, wird ein Fehler gemeldet. Dies allein behebt eigentlich nichts, führt jedoch dazu, dass bestimmte Fehler offensichtlicher auftreten, was das Debuggen vereinfacht. In ähnlicher Weise haben wir die Fehlerbehandlung verbessert (PR wird überprüft), sodass Fehler jetzt spezifischer sind und mehr Informationen enthalten, um das Debuggen zu vereinfachen.

Schließlich haben wir ein langjähriges Problem behoben mit unserer Pipeline für die kontinuierliche Integration, bei der eine Aufgabe immer wieder fehlschlug. Obwohl es nicht kritisch war, hat es uns dennoch daran gehindert, dieses zufriedenstellende grüne Häkchen zu sehen :heavy_check_mark: bevor wir eine PR zusammenführen. Es stellte sich heraus, dass wir im Umgang mit Compiler-Warnungen etwas zu streng waren. Dieser Fix wurde auch für einige unserer anderen Kisten eingeführt.

Safe Network App & UX

Feature Tracker / Screens & Flows

Wenn Sie sich an das UX-Update im November erinnern, haben wir Sie durch die vorgeschlagenen Updates fĂĽr das Safe Network-Lexikon gefĂĽhrt und eine neue Metapher fĂĽr einen Safe eingefĂĽhrt, der das Konto ersetzt, Token anstelle von Safecoin. und die Verwendung des Begriffs Tresor ablehnen.

Nun, diese Änderungen haben ihren Weg zu möglichen UI-Designs gefunden, bei denen sie sich nicht nur auf dem Papier, sondern auch in den Pixeln der Benutzererfahrung beweisen können.

Wenn Sie in die Figma-Datei fĂĽr die Safe Network App-Designs springen, Sie werden diese in Aktion sehen, sowie einige andere Verbesserungen.

Es ist eine groĂźe alte Datei mit hundertenEs ist nicht immer einfach, alles zu erfassen, was gerade passiert. Hier sind einige Highlights:

Entsperren Sie Ihren Safe

Hier sehen wir die Metapher eines Safes für die Daten des Benutzers, die eingeführt werden - Sperren und Entsperren - mit einigen visuellen Hinweisen, die dies hoffentlich auch verstärken.

Sie werden auch feststellen, dass das Aktionsmenü über einen traditionellen Hamburger in die oberste App-Leiste befördert wurde. Und dass es jetzt auch im gesperrten Zustand zugänglich ist. Aber dazu später mehr.

Arbeiten mit Tokens

Neben dem Ende der Laufzeit von Safecoin gehören zu den Änderungen am Brieftaschenbildschirm ein übergreifender Token-Abschnitt, ein wenig UI-Fichte und eine multifunktionalere Aktionsschaltfläche New Transaction. Dies ist eine Möglichkeit, eine neue Transaktion zu starten - indem ein Teil des zuvor etwas längeren Flusses übersprungen wird - und ein weiterer Einstiegspunkt, um Tokens zu verdienen.

Tokens verdienen

Mit der Abwertung des Begriffs „Tresor“ können wir hier untersuchen, wie wir ein Verb wie „Verdienen“ bevorzugen können, um Flows für das Anbieten von Ressourcen an das Netzwerk als Gegenleistung für sichere Netzwerktoken zu starten.

Dieser Ablauf kann von einer Reihe von Punkten aus gestartet werden, z. B. von der Registerkarte „Einnahmen“ auf dem Token-Bildschirm, vom Startbildschirm oder vom Apps-Bildschirm und vom Dienstprogramm selbst (sowie über das Aktionsmenü oder einen eingegebenen Befehl).

Ein paar Schritte, um die Dinge zu konfigurieren, und wir sind los und rollen.

Das AktionsmenĂĽ

Sie haben dies bereits in der Vorschau gesehen, aber hier ist das Aktionsmenü, das so genannt wird, weil Sie damit alle Funktionen der App suchen und darauf zugreifen sowie Befehle direkt starten können.

Es ist jetzt oben links in der App verfügbar. Hier können Sie es sowohl im gesperrten als auch im entsperrten Zustand sehen.

Eine kleine Erinnerung daran, wie Befehle auch gesucht und gestartet werden können. Praktisch.

Stöbern Sie in der Figma-Datei, um alle Details zu sehen. Eine Vielzahl von Einzelabläufen wird untersucht und dokumentiert.

NĂĽtzliche Links


FĂĽhlen Sie sich frei, unten mit Links zu Ăśbersetzungen dieses Entwickler-Updates 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!

1 Like