Safe Network Entwickler Update đŸ‡©đŸ‡Ș 10. November 2022

Dies ist eine maschinelle Übersetzung. Das Original in Englisch ist hier: Update 10 November, 2022

Ein kleiner Vorgeschmack auf die kommenden Wochen. Wie Sie wissen, sind Konsensmechanismen das HerzstĂŒck fast aller dezentralisierten Netzwerke, einschließlich Bitcoin. TatsĂ€chlich ist die Hauptinnovation von Bitcoin wohl der Konsensmechanismus der Blockchain. Aber es gibt immer einen Kompromiss. In Bitcoin und anderen Blockchains ist es der Fork-Handling-Mechanismus, was bedeutet, dass zwei Versionen fĂŒr lange Zeit (theoretisch fĂŒr immer) existieren können und ĂŒber PoW, die Achillesferse von Bitcoin, gelöst werden mĂŒssen.

Daher waren wir bestrebt, Konsensalgorithmen (wie sie allgemein verstanden werden) nach Möglichkeit zu vermeiden – verwenden Ameisen sie? Aber es gibt FĂ€lle, in denen sie bei Computernetzwerken wahrscheinlich notwendig sind. Dies ist, was Mostafa untersucht hat, und wir werden uns in den kommenden Wochen eingehender damit befassen.

Allgemeiner Fortschritt

Im Moment ĂŒberarbeiten wir den CI-Maschinenprozess, um ihn etwas schlanker und sicherer zu machen. Das ist sehr viel @chrisos Baby und er hat daran gearbeitet, alle Elemente an Ort und Stelle zu bringen, einschließlich der APIs, EC2-Instanzen, serverlosen Funktionen und des DDoS-Schutzes. Jetzt fast da.

Wir arbeiten daran, wĂ€hrend der Datenreplikation so viele Lese-/Schreibsperren wie möglich zu entfernen. Dies ist hauptsĂ€chlich die Domain von @joshuef. Josh und @bochaco haben auch den „sn_node“-Refactor so gut wie abgeschlossen, um bidirektionale Kommunikation wieder in den Code einzufĂŒhren. Das hatten wir schon einmal, aber es wurde sehr komplex. Die Vereinfachung der Codebasis bedeutet, dass wir sie zurĂŒckbringen können. Wir testen noch, aber wir sehen bereits StabilitĂ€tsverbesserungen.

@roland entfernt die Traceroute-Funktion. Es verursacht BlĂ€hungen, es hat sich nicht als nĂŒtzlich erwiesen (und noch weniger bei bidirektionalen Streams), also werden wir es los.

Konsensmechanismen

In der Informatik gibt es viele Konsensmechanismen. Einige sind einfache binĂ€re Angelegenheiten, andere sind komplexe Mechanismen mit mehreren Varianten. Es ist jedoch wichtig zu verstehen, dass sie alle nur Werkzeuge fĂŒr einen Job sind und nicht mehr. Diese Aufgabe besteht darin, die Vereinbarung zwischen den EntitĂ€ten fĂŒr eine bestimmte Zeit sicherzustellen. Aber so wie sich die Menschen auf bestimmte Regeln einigen mĂŒssen, um miteinander auszukommen, wie zum Beispiel auf welcher Straßenseite sie fahren sollen, mĂŒssen sie sich nicht auf alles einigen, um Seite an Seite zu leben. Im Gegensatz zu Blockchains brauchen Menschen keine systemweite Bestellung, und Safe auch nicht. Wir mĂŒssen also das richtige Werkzeug fĂŒr die Aufgabe auswĂ€hlen, dies nur tun, wenn es notwendig ist, und vor allem sicherstellen, dass wir nicht durch diese Wahl eingeschrĂ€nkt werden.

Safe ist ein asynchrones dezentrales Netzwerk. Die Dinge Ă€ndern sich stĂ€ndig; „Zustand“, also eine Momentaufnahme unseres aktuellen WeltverstĂ€ndnisses, ist aus Sicht jedes einzelnen Knotens fast immer unterschiedlich. Und doch mĂŒssen sich diese Knoten zumindest fĂŒr kurze Zeit einigen.

Konsens ist im Grunde ein Wort, das besagt, dass zu einem bestimmten Zeitpunkt jeder, der wichtig ist, denselben Zustand sehen muss, damit eine Aktion stattfinden kann.

Wie erreichen Knoten also eine Einigung ĂŒber den Zustand? Nun, das hĂ€ngt von den UmstĂ€nden, der Aktion und dem Umfang ab.

Auf Safe können wir oft durch Anti-Entropie (AE) eine Einigung erzielen. Dies ist ein einfacher Informationsaustausch, um sicherzustellen, dass wir mit den derzeitigen Ältesten in einer Sektion sprechen. Als solches könnte AE als einfacher, binĂ€rer, lokaler Konsensmechanismus angesehen werden, obwohl wir es nur als eine ÜberprĂŒfung betrachten, dass Parteien, die synchron sein mĂŒssen, alle auf derselben Seite stehen. Sicherlich ist es weit entfernt von der gesamten systemweiten Ordnung von Bitcoin.

Wenn Älteste eine Vereinbarung ĂŒber eine Vorgehensweise treffen, verwenden wir die verteilte SchlĂŒsselgenerierung (DKG), um sicherzustellen, dass eine große Mehrheit der Ältesten zustimmt. Auch das ist eine Art lokaler, binĂ€rer (ja/nein) Konsens, obwohl wir dieses Wort eher nicht verwenden.

Dann haben wir konfliktfrei replizierte Datentypen (CRDTs), die wir fĂŒr verĂ€nderliche Daten verwenden. Diese haben eine logische Uhr, ermöglichen gleichzeitigen Zugriff und lösen Gabelungen schließlich in einen Zustand auf. Das alles geschieht ohne jeden Konsens. Gabeln sind in Ordnung und selbstauflösend.

Aber dann gibt es andere Situationen, in denen wir einen Fork nicht einmal fĂŒr eine Nanosekunde tolerieren können, und da brauchen wir als asynchrones dezentrales Netzwerk definitiv einen Konsens.

Und es gibt Grauzonen, in denen wir Forks fĂŒr eine gewisse Zeit tolerieren können, sie aber irgendwann lösen mĂŒssen. Diese erfordern möglicherweise einen formellen Konsensmechanismus.

Wo brauchen die Ameisen also technische Hilfe? Man rekrutiert neue Nodes aus einer Liste von vielleicht Hunderten von Kandidaten, alle mit einem Node-Alter von null – welchen wĂ€hlen wir aus? Hier mĂŒssen wir uns möglicherweise auf eine höhere Intelligenz verlassen, die die Gruppe bereitstellen kann.

Eine andere ist die Mitgliedschaft – die Verwaltung, welche Knoten sich in einem Abschnitt befinden. DKG ist ein stumpfes Instrument und bewĂ€ltigt RandfĂ€lle wie mehrere gleichzeitige Joins und Leaves nicht sehr gut.

Und wir brauchen möglicherweise ein höheres Maß an Konsens, um DBCs bereichsĂŒbergreifend zu verwalten und doppelte Ausgaben zu vermeiden.

Darauf konzentriert sich das Team – insbesondere Mostafa und @davidrusu – im Moment: das richtige Protokoll zur richtigen Zeit am richtigen Ort zu implementieren. Mehr bald Leute!


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!