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!