In diesem Artikel wird die technische Implementierung einer schnellen und starken Konsistenz im DFINITY-Netzwerk vorgestellt. Die Kernschlüsselwörter sind: Schwellenwertgruppe, Schwellenwertrelais, probabilistischer Kartensteckplatzkonsens und Schwellenwertrelais.
Hintergrundeinführung
DFINITY verwendet den PoS-Konsensmechanismus. Für die Teilnahme am Netzwerk ist eine bestimmte Höhe des Einsatzes (d. h. DFINITY-Tokens) als Einzahlung erforderlich. Alle Knoten sind gleich und die einzige Möglichkeit, die Erträge zu steigern, besteht darin, dem Netzwerk weitere Knoten hinzuzufügen. Es sollte betont werden, dass die Einzahlungen für alle DFINITY-Knoten gleich sind und es keine zusätzlichen Vorteile für die Zahlung weiterer Einzahlungen gibt.
Ein Vorteil von PoS besteht darin, dass alle Knoten der Plattform bekannt sind, sodass die Plattform Knoten aufrufen kann, um bestimmte Funktionen auszuführen, und erwarten kann, dass diese Knoten online sind. Wenn der angerufene Knoten offline ist, kann es sein, dass der Knoten einen Teil der Einzahlung verliert.
Da wir wissen, wer am Netzwerk teilnimmt, und davon ausgehen, dass fast alle Knoten online sind, können wir Knoten zufällig Aufgaben zuweisen und relativ sicher sein, dass diese Aufgaben erledigt werden. Dies ist auch die Grundlage von DFINITY.
Schwellengruppe
Ausschuss
Die Schwellengruppe ist ein sehr wichtiges Konzept im gesamten Konsensgenerierungsprozess von DFINITY. Schwellengruppen ermöglichen es uns, die Situation zu vermeiden, dass es nur einen einzigen Entscheidungsträger gibt, und sind der Kern von DFINITY. Zu jeder Zeit gibt es im Netzwerk einen aktiven Pool von Schwellenwertgruppen. Jede Schwellenwertgruppe wird zufällig aus allen mit dem Netzwerk verbundenen Knoten ausgewählt, und ein Knoten kann gleichzeitig in mehreren Schwellenwertgruppen enthalten sein.
Alle Knoten einer Schwellenwertgruppe arbeiten zusammen, um Zufälligkeit zu erzeugen. In jeder Runde wird eine neue Schwellenwertgruppe aus dem Pool der Schwellenwertgruppen ausgewählt.

Die Schwellenwertgruppe wird vorab zufällig ausgewählt und in den Pool aufgenommen. Wie in der folgenden Abbildung dargestellt, wird im Zeitraum 1 die Schwellenwertgruppe für Zeitraum 2 ausgewählt. Am Ende des Zeitraums 1 löst sich die Schwellengruppe dieses Zeitraums auf und die Schwellengruppe des Zeitraums 2 beginnt zu arbeiten. Der gleiche Vorgang wiederholt sich bis ins Unendliche.
Schwellenwertrelais
Schwellenwertrelais
Die Zufälligkeit von DFINITY wird durch eine überprüfbare Zufallsfunktion mit Schwellenwertrelais generiert. Stellen Sie sich vor, Sie spielen Poker – Sie müssen sicherstellen, dass der Dealer die Karten, die aus dem Stapel kommen, nicht vorhersagen oder manipulieren kann. Deshalb schwanken Sie in der Öffentlichkeit. Mischen ist eine überprüfbare Zufallsfunktion für ein Netzwerk nicht vertrauenswürdiger Knoten – Pokerspieler.
Um Schwellenwert-Relays zu erstellen, verwenden wir die Schwellenwertverschlüsselung. Aber werfen wir zunächst einen Blick auf die Verschlüsselung mit öffentlichen Schlüsseln. Stellen Sie sich vor, Sie haben zwei Schlüssel für Ihre Tür, einen zum Verschließen und einen zum Öffnen der Tür. Sie können den Schlüssel zu Ihrer Tür jedem geben. Wen kümmert es, wenn jemand anderes Ihre Tür abschließen kann? Wichtig ist, dass nur Sie die Tür öffnen können.
Digitale Signaturen in der Public-Key-Kryptographie sind im Grunde so, aber abstrakter. Sie haben zwei Schlüssel, einer kann Daten signieren und der andere kann zur Überprüfung der Signatur verwendet werden. Es ist eine gute Sache, wenn andere Ihre Signatur anhand eines Datenelements überprüfen können, vorausgesetzt, Sie sind der Einzige, der die Signatur erstellen kann. Daher kommt die „Public-Key-Private-Key-Kryptografie“. Der Signaturschlüssel muss privat sein.
Die Schwellenwertverschlüsselung ist grundsätzlich das gleiche Prinzip, mit Ausnahme eines Unterschieds: Bei der Schwellenwertverschlüsselung wird der private Schlüssel oder Signaturschlüssel in mehrere Anteile (Anteile) aufgeteilt, und jeder Anteil kann zum Erstellen einer Signatur verwendet werden. Sobald ein Schwellenwertanteil der Signaturanteile aggregiert ist, erstellen sie eine vollständige digitale Signatur, die mithilfe des öffentlichen Schlüssels überprüft werden kann.
Wenn nicht genügend Anteile vorhanden sind, um eine vollständige digitale Signatur zu erstellen, kann diese nicht überprüft werden. Bei der tatsächlichen Implementierung von DFINITY müssen wir nur dafür sorgen, dass das Aggregationsverhältnis die Mehrheit erreicht (51 %). Hier müssen wir wissen: Jede Schwellenwertgruppe hat einen öffentlichen Schlüssel und jedes Gruppenmitglied hat einen Anteil am privaten Schlüssel.

Das Folgende ist der Prozess der Schwellenwertsignatur. Ein großartiges Merkmal von Schwellenwertsignaturen besteht darin, dass unabhängig davon, welche Signaturen zu einer vollständigen Signatur zusammengefasst werden, die resultierende Signatur dieselbe ist.
Am Ende haben wir eine Menge digitaler Signaturen, was eine große Quelle für Zufälligkeiten darstellt, wenn niemand vorher weiß, was darin enthalten ist. Wir werden diese Signatur später als zufälliges Beacon verwenden.

Wie werden also zufällige Beacons generiert? Wir beginnen mit einer Zufallsquelle, verwenden diese, um eine Schwellenwertgruppe auszuwählen, und die Mitglieder der Schwellenwertgruppe signieren die Zufälligkeit (wird zur Auswahl der Schwellenwertgruppe verwendet).
Diese Schwellenwertsignatur (denken Sie daran, dass wir nur den Schwellenwert von 51 % benötigen und kein Mitglied der Schwellenwertgruppe hier Einfluss auf die Signatur hat) wird zur Auswahl der nächsten Schwellenwertgruppe verwendet. Dieser Prozess wird auf unbestimmte Zeit fortgesetzt.

Zufällige Sortierung – Konsens über probabilistische Kartensteckplätze
Probabilistischer Slot-Konsens
Da das Protokoll über eine Liste aller mit dem Netzwerk verbundenen Knoten verfügt, kann es diese Liste und einen zufälligen Beacon als Eingabe verwenden und eine zufällig geordnete Liste ausgeben. Diese zufällige Sortierung muss durch einen probabilistischen Kartensteckplatzkonsens durchgeführt werden.
Dem obersten Knoten wird eine höhere Priorität (Rang) zugeschrieben. Die Priorität beeinflusst die Wahrscheinlichkeit, dass ein Knoten der Kette einen Block hinzufügt. Je höher die Priorität, desto größer die Wahrscheinlichkeit.

Knoten können dies selbst tun und Blöcke priorisieren, bevor sie sie erstellen und senden. Dies spart Rechen- und Netzwerkressourcen, da in der Praxis möglicherweise nur wenige (z. B. fünf) Knoten Blöcke erstellen und senden müssen.
Signieren blockieren
Im DFINITY-Netzwerk spielt die Bildung zufälliger Schwellenwertgruppen auch eine Rolle beim Signieren von Blöcken.
Für jedes Mitglied der Schwellenwertgruppe gelten dieselben Regeln: Sie erhalten einen Block, und wenn der Block ungültig ist, wird er verworfen. Wenn gültig, wird seine Priorität überprüft.
Wenn die Priorität niedriger ist als die eines zuvor erhaltenen Blocks, verwerfen sie ihn. Wenn die Priorität höher ist, signieren sie es mit der privaten Schlüsselfreigabe und übertragen dann die Block- und Signaturfreigabe.

Sobald ein Block die erforderliche Anzahl an Signaturanteilen gesammelt hat, um eine vollständige, überprüfbare Signatur zu erzeugen, gilt er als „notariell beglaubigt“ und der Block wird der Kette hinzugefügt.
Das Folgende ist der gesamte Blockgenerierungsprozess:

Die effiziente Blockbestätigung von DFINITY
Basierend auf der Verwendung von überprüfbaren Zufallsfunktionen mit Schwellenwertrelais beträgt die Blockbestätigungszeit des DFINITY-Netzwerks nur zwei Blöcke, die Bestätigungszeit kann bis zu 2,5 Sekunden betragen und das Transaktionsverarbeitungsvolumen pro Sekunde beträgt etwa 50. Im Allgemeinen ist die Geschwindigkeit der Blockbestätigung tatsächlich sehr hoch, und wir müssen auch die große Rolle sehen, die VRF dabei spielt.
So erstellen Sie eine Schwellenwertgruppe
1) Neue Clients, die dem Netzwerk beitreten, werden durch den VRF-Algorithmus zufällig verschiedenen Gruppen zugewiesen.
2) Initialisieren Sie die Parameter der Schwellenwertgruppe (einschließlich Gruppengröße, Schwellenwert usw.).
3) Nach Abschluss der Initialisierung wird der öffentliche Schlüssel der erfolgreich erstellten Gruppe im Netzwerk registriert.
4) Die Erstellung von Schwellenwertgruppen ist vom Blockchain-Geschäftsprozess entkoppelt, sodass sie parallel ausgeführt werden kann. Wie in der Abbildung gezeigt, erstellen wir gleichzeitig rote und grüne Gruppen.
5) Neu hinzugefügte Schwellenwertgruppen und Clients (oder Miner) müssen zwei EPOCH-Zyklen warten, bevor sie aktiviert werden können.
So wählen Sie die geeignete Epochenlänge aus: Um die Korrektheit sicherzustellen, muss eine Epoche mehr Blöcke als eine Kettengabel enthalten. Da der Lightweight-Client jedoch nur die Blockheader-Informationen der Schlüsselbilder speichert, muss die Epoche aus Effizienzgründen so lange wie möglich definiert werden, beispielsweise eine Woche.
Probabilistische Slot-Protokoll-garantierte Blockgenerierung und Vermeidung von Forks
Die Einführung des probabilistischen Slot-Protokolls in die Schwellenwert-Signatur-Relay-Struktur stellt sicher, dass Miner im Netzwerk immer Blöcke auf der optimalen Hauptkette produzieren. Gleichzeitig wird in Kombination mit dem VRF-Algorithmus eine hohe Konsistenz und eine effiziente Blockbestätigungszeit erreicht.
Der Blockgenerierungsprozess für jede Höhe h ist wie folgt:
1) Sortieren Sie die Prozesse der aktuellen Höhenschwellengruppe mithilfe des VRF-Algorithmus.
2) Teilen Sie die sortierten Prozesse in verschiedene Slots ein und markieren Sie sie als Prioritätsreihenfolge innerhalb des Systems.
3) Bewerten Sie die Prozesse in verschiedenen Slots und markieren Sie die Gewichte.
4) DFINITY führt außerdem einen Timeout-basierten Mechanismus ein, d. h. wie lange auf den ersten ausgewählten Prozess gewartet werden soll. Wenn der Block nicht produziert wird, führt der nächste Prozess die Blockproduktion durch.
Wie in der Abbildung gezeigt, ein vollständiger Blockproduktionsprozess: ① Zufällige Sortierung (Slot); die höchste Punktzahl immer wieder Kette.
Fragen hinterlassen
Durch die Schwellenwert-Relay-Struktur und das probabilistische Slot-Protokoll können eine effiziente Blockproduktion und Chain-Fork-Ereignisse mit extrem geringer Wahrscheinlichkeit erreicht werden. Wir werden jedoch immer noch auf Angriffe stoßen, die von böswilligen Akteuren im Netzwerk unternommen werden, wie zum Beispiel in den folgenden zwei Situationen:
1) Egoistischer Mining-Angriff: Böswillige Gegner behalten selektiv die geschürften Blöcke und geben sie nach und nach frei, wodurch sie im Vergleich zu ehrlichen Knoten den Vorteil haben, Transaktionen zu kontrollieren. Gleichzeitig erhöhen egoistische Mining-Angriffe die erforderliche Bestätigung, um die endgültige Konsistenzzahl zu erreichen.
2) Keine Einsätze: Ein böswilliger Gegner muss nur das Glück haben, als eine Reihe von 0-Slots (d. h. mit der höchsten Priorität) ausgewählt zu werden, dann kann er jederzeit über alle Forks abstimmen und Forks ab der Höhe h erstellen Replay-Angriffe implementieren.
DFINITY Network schlägt eine Problemumgehung vor:
Der Kerngedanke besteht darin, einen Notar vorzustellen, und die Unterschrift des Notars muss in der aktuellen Höhe vorhanden sein. Wenn sich die Freigabe der Sperre auf diese Weise verzögert, wird die Unterschrift des Notars nicht eingeholt und die Sperre gilt als ungültig.
Blockgenerierungsprozess im Notarmodus
Um zwei potenzielle Bedrohungen zu lösen, haben wir Notare eingeführt, die Blöcke signieren und das Prinzip der Blockgenerierung analysieren:
1) Nachdem die aktuelle Höhe h die Schwellenwertsignatur der vorherigen Gruppe empfangen hat, starten die Gruppenmitglieder ihre eigenen Timer und sammeln Transaktionsinformationen innerhalb von BLOCK_TIME (es wird keine Verarbeitung durchgeführt. Hinweis: DFINITY ist nicht auf eine strikte Uhrensynchronisation angewiesen).
2) Während es auf BLOCK_TIME wartet, bewertet das probabilistische Slot-Protokoll den Prozess und wählt den gepackten Prozess aus.
3) BLOCK_TIME, dh nach Ablauf der 5-sekündigen Wartezeit, nach der zweiten Beurteilung: ① Ob die Kette mit der höchsten Punktzahl bewertet wurde ② Überprüfen Sie, ob der Block gültig ist und der Slot als verantwortlicher Prozess ausgewählt wurde ③ Der Notar überprüft den Block. Der Prozess sendet den von der Schwellenwertgruppe signierten Shard.
Wann wird die Unterzeichnung beendet? Sobald der Schwellenwert erreicht ist und die Gruppensignatur der aktuellen Höhe kombiniert wird, wird das Signaturfragment der aktuellen Höhe nicht mehr signiert.
Einige zusammenfassende Punkte:
1) Wenn im normalen Netzwerkbetrieb BLOCK_TIME unter Berücksichtigung der Netzwerksynchronisation groß genug eingestellt ist, priorisiert jedes Gruppenmitglied nur die Kette mit der höchsten Punktzahl.
2) Die Notargruppe zertifiziert nur Blöcke, die die Kette mit der höchsten Punktzahl repräsentieren.
3) Diese Methode kann Gabelungen verhindern und schnell eine endgültige Konsistenz erreichen.
Lösen Sie das gleiche Punkteproblem
Ein Prozess in Slot 0, der von einem böswilligen Gegner kontrolliert wird, sendet möglicherweise eine große Anzahl verschiedener Versionen seiner Blöcke an DOS. Obwohl dieser bösartige Prozess aufgrund des byzantinischen Verhaltens schnell aus dem Netzwerk entfernt wird, wie kann man ihn verhindern, bevor er passiert?
Lösung: Wenn ein Prozess einen Block mit der gleichen höchsten Punktzahl findet, leiten Sie ihn nur an Knoten weiter, die die gleiche Punktzahl noch nicht erkannt haben. Wenn ein Gruppenmitglied einen Block mit der gleichen höchsten Punktzahl findet, wird die Signierung nicht durchgeführt, sondern beginnt mit der Signierung des Blocks mit der nächsthöheren Punktzahl aus einem anderen Slot.
Zusammenfassung
Durch das gesamte architektonische Design bietet das DFINITY-Netzwerk die Möglichkeit, Blöcke effizient zu erstellen. Jedes böse Verhalten wird vom Netzwerk ignoriert und vom Notar bestraft.
In einer idealen Welt benötigt das DFINITY-Netzwerk nur zwei Blöcke und ein Schwellenwertgruppen-Relay, um letztendliche Konsistenz zu erreichen, was einen großen Vorteil für konkurrierende Blockchain-Plattformen darstellt. Wenn BLOCK_TIME auf 5 Sekunden eingestellt ist, beträgt die durchschnittliche Bestätigungszeit nur 7,5 Sekunden.
Die Copper-Release-Version von DFINITY bietet offensichtliche Leistungsvorteile gegenüber den Blockchain-Technologien der ersten (Bitcoin) und zweiten Generation (Ethereum) in Bezug auf Blockgenerierungszeit, Transaktionsbestätigungszeit und Kraftstoffverbrauch.
Frage
Frage: Die Schwellenwertgruppe im Zeitraum 2 wird während des Zeitraums 1 ausgewählt. Sind in diesem Fall die Mitglieder der Schwellenwertgruppe im Zeitraum 2 anfällig für DDOS-Angriffe?
Antwort: Die Antwort ist nein. Denn in DFINITY sind diese Mitglieder verborgen. Die Plattform hat diese Mitglieder ausgewählt, aber niemand weiß, wer sie sind.
Problem: Kommunikationsprobleme sind der Engpass beim Erstellen von BLS-Schlüsseln. DFINITYWie viele Knoten gibt es in einer Schwellenwertgruppe? Wie kann dieses Problem verbessert werden?
Antwort: Es gibt 400 Knoten in einer Schwellenwertgruppe. Kommunikation ist teuer, reicht aber nicht aus, um ein Problem zu sein, das wir lösen müssen.
Frage: Was soll ich tun, wenn ein Schwellenwertgruppenmitglied seinen privaten Schlüssel preisgibt?
Antwort: Da wir einen bestimmten Schwellenwert (51 %) an privaten Schlüsselanteilen benötigen, um einen Konsens zu erzielen, spielt der Verlust einer Aktie keine Rolle.
Frage: Wie viele Knoten werden ausgewählt, um Blöcke zu initiieren?
Antwort: Die Antwort ist 0. Jeder Knoten kann zum Initiieren eines Blocks ausgewählt werden. Die spezifische Wahrscheinlichkeit wird durch den vorherigen Zufallssortierungsalgorithmus bestimmt. Je höher die Priorität, desto höher die Wahrscheinlichkeit. Wenn ein Block initiiert wird, werden tatsächlich etwa 5 Knoten implementiert.

IC-Inhalte, die Ihnen wichtig sind
Technologiefortschritt |. Projektinformationen |

Sammeln und folgen Sie dem IC Binance Channel
Bleiben Sie mit den neuesten Informationen auf dem Laufenden

