Safe Network Entwickler Update ­čçę­čç¬ 6. Januar 2022

Dies ist eine maschinelle ├ťbersetzung. Das Original in Englisch ist hier: Update 06 January, 2022

Allen ein frohes neues Jahr! Wir sitzen wieder im Sattel :cowboy_hat_face: und k├Ânnen es kaum erwarten.

Vielen Dank an @josh f├╝r die Einrichtung des j├╝ngsten Community-Testnetzes und an alle, die daran teilgenommen haben. Einige der gemeldeten Anomalien haben sich in unseren eigenen Testergebnissen widergespiegelt, und es gab auch ein paar ├ťberraschungen, einschlie├člich der maximalen CPU-Spitzen, die wir jetzt untersuchen. Prost!

Nur eine kurze Nachricht diese Woche, um Sie wissen zu lassen, woran wir gerade arbeiten. Wir freuen uns, sagen zu k├Ânnen, dass wir bereits ein paar lose Enden gekn├╝pft haben und bereit sind, loszulegen.

Allgemeiner Fortschritt

Im Laufe der Zeit haben wir verschiedene M├Âglichkeiten zur Berechnung des freien Speicherplatzes im Netzwerk in Erw├Ągung gezogen. K├╝rzlich haben wir die wenigen db-Verzeichnisse durchlaufen und dir-Gr├Â├čen hinzugef├╝gt, um den belegten Speicherplatz zu berechnen. Unter der Leitung von @anselme haben wir jetzt die Datenspeicherung vereinfacht, indem wir die erweiterte Datenbank entfernt und durch einen einfacheren Direct-to-Disk-Prozess mit einer bin├Ąren Baumverzeichnisstruktur ersetzt haben. Dies erforderte, dass wir den Verzeichnistraversalprozess durch einen Prozess ersetzten, der jedes Byte z├Ąhlt, w├Ąhrend es geschrieben wird, und den gesamten belegten Speicherplatz verfolgt, was viel schneller und skalierbarer ist, da wir jetzt einen tiefen Baum von Verzeichnissen anstelle von einem oder zwei haben werden. Es wird auch den Prozess des Wiedereintritts eines Knotens mit Chunks in das Netzwerk erheblich vereinfachen, da wir ihn nicht jedes Mal messen m├╝ssen, und die Teilung von Abschnitten wird vereinfacht.

Anselme untersucht auch, wie sich der freiwerdende Speicherplatz beim L├Âschen privater Register (ver├Ąnderliche Daten) einfach berechnen l├Ąsst.

Apropos ver├Ąnderliche Daten: Wir haben dar├╝ber nachgedacht, welche Art von Geb├╝hren an den Registerdatentyp angeh├Ąngt werden sollten. Pay-per-Change w├Ąre sehr umst├Ąndlich, wir wollen Bearbeitungen vom DBC-Prozess trennen. Derzeit denken wir dar├╝ber nach, ein Vielfaches des Preises eines unver├Ąnderlichen Chunk (Blob)-PUT f├╝r einen Register-PUT zu berechnen und danach unbegrenzte Bearbeitungen durch den Dateneigent├╝mer (und Parteien, mit denen sie teilen m├Âchten) zuzulassen.

@bochaco hat den Mitgliedschaftsprozess weiter verfeinert, d.h. wie wir die korrekte Anzahl von ├ältesten in einer Sektion beibehalten und wie wir der Sektion bei Bedarf neue Knoten f├╝r Erwachsene hinzuf├╝gen. Wenn ein neuer Knoten den Beitritt anfordert, startet er einen Prozess, der AE-Nachrichten und den Ressourcennachweistest enth├Ąlt, und sobald die ├ältesten zustimmen, ihn zu akzeptieren, wird eine Nachricht an den beitretenden Knoten zur├╝ckgesendet. Dieser Ablauf ist jetzt in die Kiste sn_membership integriert ÔÇô zumindest f├╝r Erwachsene, die zu ├ältesten bef├Ârdert werden, und ├älteste, die gehen. Dieser ÔÇ×sn-MitgliedschaftsÔÇť-Prozess geht jedoch derzeit davon aus, dass alle beteiligten Knoten stimmberechtigte Mitglieder (d. h. ├älteste) sind, sodass die Bef├Ârderung eines Erwachsenen zu einem ├ältesten ausgeschlossen ist. @bochaco und @davidrusu arbeiten gerade daran. Wir werden mehr in einem zuk├╝nftigen Update erkl├Ąren.

Inzwischen hat @lionel.faber versucht, den CI/CD-Prozess mit selbst gehosteten GitHub-Runnern auf AWS. Native virtuelle Maschinen in GitHub-Aktionen k├Ânnen ziemlich langsam sein ÔÇô insbesondere f├╝r Windows ÔÇô was sich beim Testen als Engpass erwiesen hat. Indem wir den Service selbst auf AWS hosten, k├Ânnen wir leistungsf├Ąhigere VMs verwenden, um unsere Arbeitsabl├Ąufe schneller abzuschlie├čen. Lionel dokumentiert auch den Distributed Key Generation (DKG)-Prozess, den wir f├╝r die Vereinbarung verwenden.

Bleiben wir noch einen Moment beim Testen, manchmal k├Ânnen Tests zu streng sein. Wieso das? Brunnentests sind so konzipiert, dass sie jeden Fehler abfangen, wenn sie auftreten, w├Ąhrend ein fehlertolerantes Netzwerk mit CRDTs in der Lage sein kann, diese St├Ârungen zu umgehen und schlie├člich zu einem garantiert konsistenten Zustand zu gelangen. Es kann also verschwenderisch sein, Tests zu erstellen, die alles erfassen ÔÇô aber es ist ein kniffliger Balanceakt!

Ein typisches Beispiel ist ein fehlender Datenfehler, wie Sie ihn vielleicht im Testnet gesehen haben. Fehlen die Daten wirklich oder sind sie nur noch nicht angekommen? Vielleicht wird es sp├Ąter angezeigt, oder vielleicht ist es da, aber es ist ein anderer Fehler aufgetreten.

In diesem Szenario ist die Nachrichten├╝bermittlung zwischen den Akteuren ebenfalls nuanciert, und dies ist ein weiteres Diskussionsthema. Wenn ein Chunk erfolgreich abgelegt wurde, sollte dem Client (optional) mitgeteilt werden, dass er gespeichert wurde, und dank CRDTs sollte dies zu 100 % sicher sein, aber wenn er anscheinend ÔÇ×fehlgeschlagenÔÇť ist, ist dies aufgrund von Asynchronit├Ąt und anderem nicht zu 100 % sicher Faktoren, sodass der Kunde Optionen f├╝r das weitere Vorgehen ben├Âtigt.

@Qi_ma hat sich die Protokolle angesehen, um den Fehler wegen fehlender Daten aufzusp├╝ren, und @yogesh untersucht den Grund f├╝r die Flut von AE-Nachrichten, die manchmal die Kommunikation zwischen Knoten ├╝berfordern. Sind sie verwandt? Wir sollten es bald wissen. In der Zwischenzeit hat @joshuef einen Fehler untersucht, der Probleme in Knoten verursachen k├Ânnte, die von Clients geh├Ąmmert werden, was dazu f├╝hrt, dass der Speicher des Knotens ansteigt und sie gelegentlich zum Absturz bringt. Im Moment begrenzen wir das nur auf ein willk├╝rliches Limit gleichzeitiger Client-Nachrichten, aber wir werden versuchen, dies basierend auf der Last des Knotens im weiteren Verlauf dynamisch zu gestalten.

Jeder Schritt ist ein andererIch trete n├Ąher.


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!