Testen von regionalen Multiplikatoren für MainNet

Eine Weltkarte

Das Team führt vor dem MainNet letzte Tests der regionalen Multiplikatoren durch, um sicherzustellen, dass sie sich wie erwartet verhalten

Vor zwei Wochen haben wir Aktualisierungen der geografischen Bins angekündigt, die in einen Test für die regionalen Multiplikatoren einfließen würden – die Zeit ist gekommen. Mit den Daten der letzten Woche haben wir neue Multiplikatoren für jede Region berechnet:

Mit diesen Multiplikatoren sollten wir die Latenzfaktoren für laufende Knoten in verschiedenen Regionen ausgleichen.  

Dies ist ein unvollkommenes System. Regionen wie der Mittlere Osten, die nur einen Knoten haben, sind Leseergebnisse, die ihre allgemeine Leistung nicht wirklich beschreiben. Andere Regionen wie Nordafrika haben überhaupt keine Knoten und müssen daher ihre Werte erraten lassen.

Eine noch größere Herausforderung besteht jedoch darin, dass der richtige Multiplikator davon abhängt, wie viele Knoten eine Region hat. Beim Design des Netzwerks haben wir darauf geachtet, dass jeder Knoten in einer Region den höchsten Multiplikator aller Knoten im Team erfährt. Dies soll sicherstellen, dass es nie einen Fall gibt, in dem Knotenbetreiber einen Anreiz haben, nicht an einer Runde teilzunehmen. Als Ergebnis ist der richtige Multiplikator für eine gegebene Region eine Funktion der Anzahl von Knoten in dieser Region.

Dies bedeutet, dass die Multiplikatoren regelmäßig aktualisiert werden müssen, wenn das Netzwerk wächst und schrumpft. Wie unten zu sehen ist, ist die Mathematik für Multiplikatoren relativ regelmäßig, sodass es möglicherweise möglich ist, sie irgendwann in die Kette zu integrieren und sie in jeder Ära automatisch zu berechnen. 

Diese Lösung erfordert auch eine Anpassung der Handhabung von Multiplikatoren. Ursprünglich haben alle Knoten in einem Team dieselben Multiplikatoren geerbt. Dies führte zu einigen sehr ungeraden Multiplikatoren, daher passen wir den Algorithmus an, um allen Knoten den Durchschnitt ihres eigenen Multiplikators und den höchsten im Team zu geben.

Berechnung der Multiplikatoren

Bei der Berechnung der Multiplikatoren haben wir mit den Rohzahlen begonnen, wie viele Punkte jeder Knoten in jeder Epoche ohne den Multiplikator erhalten hat. Wir möchten, dass alles fair ist, und wir möchten, dass jeder Knotenläufer einen Anreiz erhält, sich mit jedem anderen Knoten zusammenzuschließen. Unser Ziel ist es also, sicherzustellen, dass Sie bei voller Teilnahme die vollen „Punkte“ im Netzwerk erhalten.

Bevor wir fortfahren, einige Definitionen:

  1. Mᵢ – Der Multiplikator für alle Knoten in Bin ich.
  2. Aᵢ – Der angepasste Punktwert für Bin ich.
  3. Pᵢ – Die Wahrscheinlichkeit, dass mindestens ein Knoten aus bin ich ist in einem Team enthalten und ein Knoten aus einer beliebigen Bin <ich ist nicht enthalten.


Die Berechnung basiert auf realen Netzwerkdaten. In der letzten Woche haben wir die durchschnittlichen Punkte erhalten, die für cMix-Operationen in einer Ära pro Knoten verdient wurden. Dies wurde dann „normalisiert“, um den angepassten Punktwert für den Bin zu erzeugen, der als Aᵢ bekannt ist.

Das Ziel dieses Systems ist es, Multiplikatoren so zu erstellen, dass zukünftige As alle 1 sein werden.

Die Bins sind von A nach Minimum bis Maximum geordnet. Bei der Berechnung von Punkten ist der Multiplikator jedes Knotens der Durchschnitt seines Multiplikators und der höchste im Team (auch der niedrigste i). 

Da die Region mit dem niedrigsten Durchschnitt, Bin 0, alle anderen überschreibt, kann der Multiplikator von Bin 0 wie folgt berechnet werden:

Unser Ziel ist es sicherzustellen, dass die Multiplikatoren und Anpassungen für alle Knoten in allen Teams auch im Durchschnitt das Maximum von 1 betragen. Da Mₙ der Multiplikator für den n-ten geordneten Behälter ist und Aₙ der normalisierte Durchschnitt für den n-ten geordneten Behälter ist. Dies lässt sich leicht lösen:

Der nächste Multiplikator für Bin 1 kann berechnet werden als die Wahrscheinlichkeit, dass ein Knoten aus Bin 1 mit einem Knoten aus Bin 0 ausgewählt wird (wobei der M0-Bin-Multiplikator verwendet wird) und die Wahrscheinlichkeit, dass ein Knoten aus Bin 1 nicht mit einem Knoten aus Bin kombiniert wird 0 (welche den M1-Team-Multiplikator verwendet):

Wir können die gleiche Berechnung für Bin 2 durchführen:

Diese Gleichungen sind für jeden Bin lösbar und können anhand des Multiplikators definiert werden. Für Bin 2 sind die Transformationen zur Berechnung des Multiplikators:

Wir können dies verallgemeinern, indem wir Summationen für jeden Teammultiplikator Bin n verwenden:

Neben der rekursiven Definition sind die Wahrscheinlichkeiten schwierig richtig zu machen. Jede Auswahl eines Teams von 5 Knoten besteht aus einer zufälligen Ziehung ohne Ersatz aus der Gesamtzahl der Knoten im Netzwerk. Diese Art der Selektion wird durch eine hypergeometrische Verteilung beschrieben. Am häufigsten wird diese Verteilung auf einen einfachen Fall des Zählens von Objekten (in unserem Fall Knoten) mit einem binären Merkmal angewendet (zum Beispiel im BFT-Konsensusbereich: byzantinische/ehrliche Knoten). In cMix haben wir die Knoten jedoch in 12 Bins aufgeteilt, was das Problem in ein mehrdimensionales verwandelt, was bedeutet, dass wir eine multivariate hypergeometrische Verteilung berechnen müssen. Wenn wir beispielsweise einen Knoten aus Bin 2 auswählen, ist es uns aufgrund der Art der Funktionsweise von Multiplikatoren zum Glück egal, ob ein anderer Knoten im Team zu einem Bin mit einem höheren Multiplikator gehört. Dies bedeutet, dass alle Wahrscheinlichkeiten, die wir berechnen müssen, ähnlich sind: Wir möchten ein Team mit mindestens einem Knoten aus Bin i haben, ohne Knoten aus allen Bins <i. We include a spreadsheet in our resources below which show how to do this in detail.

Fehler

Diese Lösung weist einige Fehler aufgrund der Tatsache auf, dass Diskrepanzen in den A-Werten zum großen Teil durch Variationen in der Dauer der Runden verursacht werden, was sich auf die Auswahlwahrscheinlichkeiten auswirkt. Diese von unserer Simulation beschriebene Lösung ist bis auf 3% korrekt. Zukünftige Arbeiten können die Ursachen von Punktvariationen dekonstruieren, um sie besser zu modellieren und diesen Fehler zu reduzieren.

Ressourcen:

Liste der Behälter:

 https://docs.google.com/spreadsheets/d/1z9kvEW7XXcHYxUSPpXkoA1Cv9trIbY4VkPzaWzJEN_I/edit#gid=2056956216

Planungsalgorithmus: https://git.xx.network/xx_network/primitives/-/blob/dev/region/ordering.go

Berechnung des Multiplikators:

https://docs.google.com/spreadsheets/d/1d2HcuCVorKDkUppBam-dk-_PJ8ukPp8ja18DyE_VYJQ/edit?usp=sharing

Python-Skript für Simulationen zur Bestätigung von Berechnungen:

https://git.xx.network/-/snippets/3

Beliebt