27. Sep’19
Übersetzung des Blogartikel vom Autor Andreas Penzkofer, IOTA Foundation.
Ein Schritt näher am Cordicide
In einem früheren Blogpost veröffentlichte die IOTA-Forschungsabteilung in Zusammenarbeit mit einem unserer Empfänger von Forschungsstipendien, Dr. Sebastian Mueller, Simulationsergebnisse des FPC-Protokolls, das für Fast Probabilistic Consensus steht und von Prof. Serguei Popov und Prof. Bill Buchanan vorgeschlagen wurde.
Heute freuen wir uns, Ihnen den Quellcode des Simulators zu zeigen, mit dem wir einige der Ergebnisse von FPC erstellen. Durch die Freigabe des FPC-Simulators für die Öffentlichkeit können wir die Community einbeziehen, die Technologie weiter öffnen und dazu ermutigen, diese in der freien Wildbahn testen zu lassen.
Unser Simulator ist in Go geschrieben und Sie können über das folgende Repository auf den Code zugreifen:
https://github.com/iotaledger/fpc-sim
Der Simulator ist optimiert, um zu bewerten, wie sich FPC unter bestimmten Bedingungen verhält. Wir haben den Quellcode optimiert, um über einzelne Transaktionen abzustimmen. In der Simulation können sich Nodes entweder ehrlich oder negativ verhalten.
Für jede Transaktion definieren wir die durchschnittliche anfängliche Meinung der ehrlichen Nodes, eine Strategie für die Gegner sowie andere Parameter. Im folgenden Abschnitt werden einige dieser Parameter kurz erläutert.
Blick auf das Netzwerk
In dem FPC-Artikel wird davon ausgegangen, dass jeder Node eine vollständige Ansicht des Netzwerks hat. Wir sind jedoch auch daran interessiert, was passiert, wenn wir stattdessen nur eine Teilansicht des Netzwerks sehen. Mit anderen Worten möchten wir analysieren, wie sich das Fehlen vollständiger Kenntnisse über alle anderen Nodes im Netzwerk auf die Fähigkeit auswirkt, einen Konsens zu erzielen.
Um dieses Szenario zu untersuchen, haben wir ein Watts-Strogatz-Modell aufgenommen, mit dem Sie das Netzwerk als Diagramm mit Eigenschaften einer kleinen Welt simulieren können. Für die Erstellung dieser Diagramme werden zwei Parameter hinzugefügt:
Zuerst ein Parameter δ, der den Anteil des Netzwerks festlegt, mit dem ein Node verglichen werden kann und ein Parameter γ, der die Wahrscheinlichkeit der Neu-Verbindung ist. Der Graph wird auf folgende Weise erstellt: Zuerst erstellen wir einen Ringgraphen, in dem jeder Node mit den nächsten δN-1 Nodes benachbart ist, wobei N die Gesamtzahl der Nodes ist.
Dann wird für die Hälfte dieser Verbindungen zufällig ein neuer Partner aus den verbleibenden Nodes mit der Neu-Verbindungswahrscheinlichkeit γ ausgewählt. Beachten Sie, dass wir für γ = 0 ein Ringdiagramm erhalten, das den Durchmesser des Diagramms für ein festes δ maximiert. Letzteres kann bei einem Watts-Strogatz-Diagramm als Worst-Case-Szenario verstanden werden.

Auswirkungen der beiden Parameter im Watts-Strogatz-Modell.
Zufälligkeit
Wir schließen die Möglichkeit ein, die Wahrscheinlichkeit zu verringern, eine Zufallszahl zu erhalten. Dies ermöglicht die Untersuchung der Leistung des Protokolls, falls nicht für jede Runde ein zufälliger Schwellenwert angegeben wird. Dies ist von besonderer Bedeutung für das Verständnis, wie viel Zufälligkeit das FPC-Protokoll erfordert.
Strategien des Gegners
Darüber hinaus bieten wir die Möglichkeit, zwei vorsichtige Gegnerstrategien einzubeziehen. In der ersten versucht der Gegner, die Integrität der Meinungen anzugreifen, d.h. die ursprüngliche Meinung umzudrehen, indem er kontinuierlich über die erste Minderheitenmeinung abstimmt. In der zweiten versucht der Gegner, das Netzwerk anzugreifen, indem er versucht, einen Misserfolg bei der Einigung zu verursachen und den Konsens zwischen den Nodes zu verhindern.
Metriken und Auswertung
Derzeit unterstützt der Simulator die folgenden Hauptmetriken, für die wir auch Auswertungsskripte bereitstellen:
- TerminationRate: Die Rate, mit der alle ehrlichen Nodes vor der maximal zulässigen Runde abschließen.
- AgreementRate: Die Rate, mit der alle ehrlichen Nodes mit derselben Meinung abschließen
- Integritätsrate: Die Rate, mit der alle ehrlichen Nodes mit derselben Meinung abschließen und bei der die endgültige Meinung mit der ursprünglichen Mehrheit übereinstimmt.
- EtaEvolution: Ein Histogramm der ehrlichenη– Werte für jede Runde für Nodes, die noch nicht abgeschlossen sind.
Für diese enthalten wir drei Evaluierungsskripte, die in Python mit Matplotlib geschrieben wurden.
plot.py und plot2d.py: Diese beiden Skripte ermöglichen die Auswertung mit 1 bzw. 2 Vektoren von Eingaben. Wir verwenden das Skript, um die Daten aus CSV-Ausgabedateien zu extrahieren, die vom Simulationscode erzeugt werden.
In den folgenden Abbildungen wenden wir beispielsweise das Skript plot.py an, um die Daten anzuzeigen, die durch die Bewertung der Auswirkungen einer Teilnetzwerkansicht erhalten wurden. In der ersten Abbildung nehmen wir einen konservativen Standpunkt ein und nehmen an, dass der Graph die Form eines Rings hat. Es ist ersichtlich, dass eine teilweise Netzwerkansicht ausreicht, um eine Einigung der Nodes zu erzielen.

Abbruch- und Einigungsbedingungen mit δ
Für die zweite Abbildung randomisierten wir die Topologie, indem wir berücksichtigten, dass einige der Verbindungen wahrscheinlich neu verbunden werden γ. Wir zeigen, dass die Einigungsrate signifikant erhöht werden kann, während die Netzwerkansicht klein gehalten wird.

Einigungsrate mit γ für verschiedene Werte von δ
plot_eps.py: Dieses Skript liefert eine Heatmap der Verteilung der η-Werte mit der Zeit. Zum Beispiel können Sie in der nächsten Abbildung die Entwicklung der Etas sehen, wenn ein großer Teil der Nodes unerwünscht ist.

Heatmap der Entwicklung von η -Werten.
Darüber hinaus können die folgenden Metriken extrahiert und ihre Ausgabe als CSV-Dateien bereitgestellt werden:
- MeanTerminationRound: Durchschnittliche Runde bei Beendigung des FPC
- MedianTerminationRound:Mittlere Runde, wenn der FPC beendet wurde
- TerminationRound: Anzahl der Runden, die erforderlich sind, um den FPC in Histogrammform abzuschließen
- MeanLastRound: Mittlere letzte Runde über alle Nodes
- LastRoundHisto: Histogramm der einzelnen Abschlussrunden der Nodes
- OnesProportion: Der Anteil von 1s nach Beendigung des Protokolls
- OnesPropEvolution: Entwicklung des Anteils von 1s
Das IOTA-Forschungsteam arbeitet ständig daran, den Simulationscode zu verbessern und neue Funktionen hinzuzufügen. Wenn Sie neugierig sind und mehr darüber erfahren möchten, können Sie mit diesem Code experimentieren! Wenn Sie einen Beitrag leisten möchten, können Sie auch neue Strategien für Gegner sowie Abwehrmechanismen implementieren. Weitere Informationen zum Erstellen und Ausführen des Simulators finden Sie in der README- Datei des Repositorys.
Die Veröffentlichung des Fast Probabilistic Consensus Simulator ist ein weiterer Fortschritt im Coordicide-Projekt. Es ermöglicht uns, mit der Community und Forschern, die gleichermaßen an der Technologie interessiert sind, in Kontakt zu treten. Dadurch Menschen auf der ganzen Welt haben einen anderen Weg , um den Aufwand zu tragen oder auch Zuschüsse zu beantragen hier.
Wir hoffen, Sie werden die Entwicklung dieses Simulators genauso genießen wie wir. Wie immer freuen wir uns über Ihre Kommentare und Fragen entweder hier oder in #tanglemath auf dem offiziellen Discord- Server von IOTA.
Quellen
https://blog.iota.org/the-fast-probabilistic-consensus-simulator-d5963c558b6e