Dies ist eine maschinelle Übersetzung. Das Original in Englisch ist hier: Update 29 June, 2023
Eine gute Woche voller Fehlerbehebungen und Optimierungen zur Vorbereitung auf unser nächstes Testnetz: NodeDiscoveryNet, in dem untersucht wird, wie Knoten einander im Netzwerk finden.
Wir haben eine Ursache für übermäßige Speichernutzung gefunden. Wir gingen davon aus, dass die Knoten nur Nachrichten an die acht nächstgelegenen Knoten sendeten, während sie tatsächlich Nachrichten an 20 Knoten sendeten. Wir sind uns nicht ganz sicher, was alle Folgeeffekte waren, aber bei jedem Anruf, bei dem wir von einer engen Gruppe ausgingen, gab es eine Menge verschwendeter Nachrichten – was sich in einer erhöhten Speichernutzung niederschlug und sich möglicherweise auch auf die Datenreplikation ausgewirkt hat.
Da wir in den Testnetzen viele Knoten pro Maschine betreiben, haben wir wenig Toleranz für das Unerwartete. Wir haben gesehen, dass einige Knoten unerwartet abstürzten, und dass die erhöhte Speichernutzung ein möglicher Grund dafür ist.
Der andere Ort, an dem wir einen Knotentod sahen, war rund um die Replikation – das hatte damit zu tun, dass die standardmäßigen „Kademlia/libp2p“-Prozesse Mist zur Routing-Tabelle hinzufügten, einschließlich Knoten, die sich hinter NAT befinden und nicht erreicht werden können. Dies bedeutete, dass die Knoten dachten, sie wären mit dem Netzwerk verbunden, aber das war in Wirklichkeit nicht der Fall – eine wahrscheinliche Ursache für das Problem „Ich bin beigetreten, habe aber keine Daten“ und auch für den unerwarteten Ausfall von Knoten. Jetzt fügen wir manuell Einträge zur Routing-Tabelle hinzu, anstatt uns darauf zu verlassen, dass Kademlia dies tut, wenn eine Verbindung erkannt wird. Manchmal muss man einfach die Ärmel hochkrempeln und es selbst tun. Es kann sein, dass Knoten, die in der Unterwelt stecken bleiben, neu gestartet werden müssen, um richtig in das Netzwerk zu gelangen, aber das sollte unserer Meinung nach nicht notwendig sein.
Allgemeiner Fortschritt
@Chriso hat die Woche damit verbracht, dank des Feedbacks aus dem letzten Testnetz an UX-Verbesserungen am Installations- und Protokollierungsprozess zu arbeiten.
@aed900 arbeitet an einer Batchdatei, um die Anzahl wichtiger Protokollmeldungen/-fehler aus Testnet-Knotenverzeichnissen zu extrahieren, ähnlich wie @Shu es getan hat, um seine Diagramme zu erstellen. Er arbeitet auch mit @Chriso zusammen, um das Testnet-Tool nützlicher zu machen, und bald wird es auch die Möglichkeit geben, Testnets über die Github-Benutzeroberfläche zu starten.
@Anselme hat die Implementierung von PUT- und GET-Operationen und der Replikation für Register im Anschluss an seine vorherige Arbeit an Chunks und Spends so gut wie abgeschlossen. Große Neuigkeiten, da es die Infrastruktur für DBCs bereitet! Er hat auch die zugehörigen Kisten umgestaltet und rationalisiert, um hier bei der zukünftigen Arbeit zu helfen.
@bzee entfernt unseren benutzerdefinierten Code für die Verwaltung der Kommunikation mit Peers (im Fachjargon „Wählen“), ohne dass eine ID erforderlich ist, und ersetzt ihn durch die native „libp2p“-Funktionalität, die das Anwählen eines Peers verhindert, wenn die Nachrichtenübermittlung bereits initiiert wurde. Er hat auch unsere APIs geändert, sodass keine Peer-ID erforderlich ist.
Gemeinsam mit @joshuef hat sich Benno auch mit dem manuellen Einfügen von Einträgen in die Routing-Tabelle befasst, anstatt dies automatisch geschehen zu lassen. Wir haben festgestellt, dass dieser Prozess manchmal Müll einfügt (siehe oben) mit unglücklichen Nebenwirkungen.
@qi_ma arbeitet an verschiedenen Szenarien darüber, wer was überprüft, wenn ein Kunde für Stücke bezahlt. Wie immer wollen wir so viel wie möglich auf den Client laden, aber nicht so weit, dass es das System betrügen kann.
Und @bochaco und @roland entfernen Bulletproofs aus dem DBC-Code und integrieren diese in Zahlungsprozesse. Auf diesen Schritt können wir unserer Meinung nach jetzt verzichten, da er den erheblichen Vorteil hat, andere Prozesse zu vereinfachen (und einen zweifelhaften Vorteil, da die Ladenkosten bekannt sind und große Teile der Transaktionen im Netzwerk effektiv entlarvt 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!