Safe Network Entwickler Update đŸ‡©đŸ‡Ș 5. August 2021

Dies ist eine maschinelle Übersetzung. Das Original in Englisch ist hier: Update August 5th, 2021

Diese Woche betrachten wir Änderungen an Datentypen als Ergebnis, um konfliktfreie Datentypen (CRDs) einzubringen.

FĂŒr diejenigen, die eine schnelle Auffrischung benötigen, sind CRDS Datenstrukturen mit einigen speziellen mathematischen Eigenschaften. Wenn mehrere Datenversionen vorhanden sind, z. B. Kopien eines Dokuments, das offline auf verschiedenen Maschinen bearbeitet werden, schließlich, wenn die Maschinen wieder verbunden sind, werden sie immer in eine „wahre“ Version konvergieren.

FĂŒr das sichere Netzwerk sind CRDTS eine der wichtigsten Wege, um den Konsens zu gewĂ€hrleisten, ohne dass die Art der schweren, systemweiten Reihenfolge von Ereignissen wie bei Blockchains erforderlich ist. Es ist ein wunderschönes elegantes Konzept, obwohl die scheinbare Einfachheit die Tatsache verbirgt, dass unter der Kapuze ein ernsthaft kluges Zeug ist. Sogar Google konnte nicht knacken Die Frage von gleichzeitigen Schreibvorgang, als sie Google Docs erstellte - sie mussten auf einen hĂ€sslichen Kötung zurĂŒckgreifen. Google im ParallelitĂ€tsspiel zu schlagen ist eine Gelegenheit zu gut, um zu verpassen!

Um die CRDT-Wizardry zu nutzen, konfigurieren wir unsere verÀnderlichen Datentypen - mehr auf der unten.

Allgemeine Fortschritte.

Nein testnet Diese Woche sollte es jetzt nicht zu weit weg sein. :Crossed_Finger: Ein paar niggly Probleme, um den ersten Mal durchzukommen.

@chriso hat im Hintergrund zum HinzufĂŒgen von Support fĂŒr AARRAR64 oder arm64, wenn Sie es bevorzugen. Sie werden in den letzten Releases von sn_cli und` safe_network sehen, die ARM, ARMV7- und AARCH64-BinĂ€rdateien hergestellt wurden. Chris hat die Aarch64-BinĂ€rdatei getestet und konnte bestĂ€tigen, dass diese Arbeit ein Testskript gibt, das wir verwenden, um dies zu ĂŒberprĂŒfen, um diese hier fĂŒr alle interessierten. Wir haben den Alty Arm und ARMV7-BinĂ€rdateien nicht getestet, wir haben nicht die Hardware, um einen Start zu handhaben, also nutzen Sie diese auf Ihr eigenes Risiko! Beachten Sie auch, dass sich unsere Kisten derzeit unter starker Entwicklung befinden, da wir uns in Richtung des nĂ€chsten Testnetzes bewegen, sodass die neuesten BinĂ€rdateien hĂ€ufiger als bei allen Architekturen nicht kompatibel sind. Wir wĂŒrden jedem empfehlen, dem Sie testen möchten, bis wir kompatible Versionen in der gesamten Tafel ankĂŒndigen, d. H. Das nĂ€chste Testnetz.

@QI_MA und @chriso haben einige Fehler in der kontinuierlichen Integration (CI) -Prozess (CI) nagelt. Der reibungslose Lauf-CI ist unerlĂ€sslich, um Pull-Anfragen schnell zusammenzufĂŒhren, was selbst fĂŒr eine schnelle Iteration und das Testen von entscheidend ist.

Viele passieren mit der Aktualisierung der QP2P -Bibliothek, wobei Elemente wie Xorname aus einem SNIMMED-DOWN sn_Routing und in qP2P ausgezogen werden. Untersuchungen sind laufende Verbindungen, Halten, Wiederholungen und Bootstrapping. Zu viel, um hier zu gehen, aber wenn Sie Fragen haben, tun wir unser Bestes, um sie in diesem Thread zu beantworten. Sicher zu sagen, es hÀlt das Team ziemlich beschÀftigt!

@oetyng ist auch tief in Batching von Brocken- und Zahlungsströmen. Die Batching ermöglicht das Zahlen von once fĂŒr beliebige Anzahl von VorgĂ€ngen. In diesem Fall ist auch die Möglichkeit, Offline zu kopieren und zu verschlĂŒsseln, und Pre-Pay.

Nach lokaler VerschlĂŒsselung und Persistenz kann ein Benutzer:

  1. Verbinden Sie sich zu jeder Zeit der Wahl, um ein stĂ€ndig gĂŒltiges „Zitat“ fĂŒr den Charge zu erhalten.
  2. Mit diesem Zitat - wieder zu jeder Zeit der Wahl - zahlen und abrufen Sie einen „Empfang“.
  3. Und schließlich (Sie haben es schließlich erraten, jederzeit (n) der Wahl) laden Sie die beliebige Anzahl dieser Brocken / Ops hoch.

Dies bezog sich alle mit laufender Arbeit, um mehr Arbeit auf den Kunden zu verschieben. Wenn der Kunde den Antrag erstellt, ist es nur fair, es sollte auch die Arbeit erledigen. Dieser Ansatz hat auch Anti-Spam-Vorteile.

Der Sequenzdatentyp wurde jetzt vollstÀndig von sn_api entfernt
von @erselme ersetzt werden durch CRDT-kompatible Datentypen. Mehr darĂŒber nachfolgend.

Datentypen

Zuvor hatten wir den Kartendatentyp, der ein bearbeitbarer SchlĂŒssel war: Value Store, der zum Speichern von Informationen wie Kontodaten verwendet wurde; Der Append-Only Sequenzdatentyp, der auf Webseiten und Dateicontainer geeignet ist, mit der Möglichkeit, auf frĂŒhere Versionen einzuwĂ€hlen. und die blob-unverĂ€nderlichen Daten.

Die aktualisierten Datentypen sind alle darauf basierend auf - Sie erraten es - CRDS, die einige deutliche Vorteile bringt.

Ein Register ist ein allgemeiner CRDT-Datentyp, der einen Wert enthĂ€lt. FĂŒr den Safe wollten wir ein Register, das uns auch ermöglichen wĂŒrde, rechtzeitig zurĂŒckzugehen und die vorherigen Werte anzusehen, sodass David Rusu einen neuen Registertyp basierend auf einem Merkle-DAG namens MerkLereg erstellt hat - ein Register mit der Geschichte. Dies wurde vor einiger Zeit zusammen mit der öffentlichen API der Kundenseite implementiert.

Dieses neue register macht Sequenz obsolet, da es alles tun kann, was die Sequenz in Bezug auf die Speicherung frĂŒherer Versionen mit dem hinzugefĂŒgten Bonus tun könnte, den er auch die ParallelitĂ€t bewĂ€ltigen kann. Wenn ein Client gleichzeitig in das Register schreibt, fĂŒhrt dies zu einer Gabel, die dann vom Client gelöst werden kann (dies war mit Sequenzen unmöglich). Wir verwenden das Register, um Zeiger auf aktuelle und frĂŒhere Versionen der Daten zu speichern, sUCH als Textdatei oder Webseite, die als Blobs gespeichert werden.

So lange Sequenz :wave:, Aber was ist mit der Karte?

Nun, Karten wurden aufgerĂŒckt, um MultiPaps, die „Multi-“, auf die Tatsache, dass jeder SchlĂŒssel jetzt mehrere Werte aufweisen kann. Wieder einmal erlaubt dies die ParallelitĂ€t. Mehrere Clients (E.G. Apps) können gleichzeitig einen MultiMap bearbeiten, und das Ergebnis ist Gabeln. Wie diese Gabeln behoben sind, werden letztendlich der App aufgerufen, aber in der Zeit konvergieren sie sich auf dieselbe Weise, dass Git-Filialen dies tun. Das Netzwerkdateisystem NFS und das Namensystem NRS NRS sind ab dieser Woche vollstĂ€ndig als Multi-Maps implementiert, was die Linie sehr wichtig ist.

Und Blobs? Nun, sie sind unverĂ€nderlich. In einer Welt der stĂ€ndigen VerĂ€nderung mĂŒssen einige Dinge gleich bleiben.


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!