Geheime Führungswahl
Im heutigen Proof-of-Stake basierten Konsensmechanismus ist die Liste der bevorstehenden Blockantragsteller öffentlich und es ist möglich ihre IP-Adressen herauszufinden. Das heißt, dass Angreifer herausfinden könnten, welche Validatoren an der Reihe sind einen Block vorzuschlagen und diesen mit einer Denial-of-Service (DOS) Attacke angreifen. Dadurch könnte der Validator nicht mehr rechtzeitig einen Block vorschlagen.
Das könnte eine Gelegenheit erzeugen, aus der der Angreifer profitieren könnte. Ein Blockantragsteller, der für Slot n+1
gewählt wurde, könnte den Blockantragsteller in Slot n
gewählt wurde mit einer DOS-Attacke angreifen. Dadurch verliert dieser in Slot n
die Möglichkeit einen neuen Block vorzuschlagen. Das würde dem angreifenden Blockantragsteller erlauben, MEV aus beiden Slots zu ziehen, oder alle Transaktionen, welche zwischen zwei Blöcken geteilt werden hätten sollen, nehmen. Das führt dazu, dass der Angreifer alle zugehörigen Gebühren verdienen würde. Das trifft wahrscheinlich Validatoren, die Einzelpersonen zu Hause gehören, mehr als ausgefeilten institutionellen Validatoren, welche fortgeschrittenere Methoden nutzen können, um sich vor DOS-Attacken zu schützen. Das könnte sie zu einer zentralisierenden Macht machen.
Es gibt mehrere Lösungsansätze für dieses Problem. Eines ist die Verteilte Validatoren Technologie(opens in a new tab) welche versucht mehrere Aufgaben, die für den Betrieb von Validatoren wichtig sind, auf mehrere Maschinen mit Redundanz zu verteilen. Dadurch wird es für einen Angreifer viel schwerer einem Block zu verhindern in einem bestimmten Slot vorgeschlagen zu werden. Jedoch ist die robusteste Lösung die Einzelne geheime Führungswahl (SSLE).
Geheime Einzelwahl des Leiters
In der SSLE wird kluge Kryptographie genutzt, um sicherzustellen, dass nur der gewählte Validator weiß, dass er gewählt wurde. Dies funktioniert, indem jeder Validator eine Verpflichtung zu einem gemeinsamen Geheimnis abgibt. Die Verpflichtungen werden gemischt und neu konfiguriert, sodass niemand die einzelnen Verpflichtungen zu Validatoren herausfinden kann. Jeder Validator weiß jedoch welche Verpflichtung zu ihm gehört. Dann wird eine Verpflichtung zufällig ausgewählt. Wenn der Validator bemerkt, dass seine Verpflichtung gewählt wurde, weiß er, dass er einen Block vorschlagen darf.
Die führende Implementation dieser Idee nennt sich Whisk(opens in a new tab). Welche wie folgt funktioniert:
- Validatoren verpflichten sich zu einem gemeinsamen Geheimnis. Das Verpflichtungssystem ist so konzipiert, dass es zu der Identität eines Validatoren gebunden werden kann, jedoch gleichzeitig so zufällig aufgebaut ist, dass es nicht reversibel ist. Das heißt, dass kein Dritter den Bund rekonstruieren und so eine spezifische Verpflichtung zu einem spezifischen Validator herstellen kann.
- Beim Start jeder Epoche wird eine zufällige Teilmenge an Validatoren gewählt, um Verpflichtungen von 16384 Validatoren mit RANDAO zu sampeln.
- Für die nächsten 8182 Slots (1 Tag), mischen und randomisieren Blockantragsteller eine Teilmenge der Verpflichtungen mit ihrer privaten Entropie.
- Nachdem sie mit dem Mischen fertig sind, wird RANDAO genutzt, um eine geordnete Liste der Verpflichtungen anzufertigen. Diese Liste wird den Ethereum Slots zugeordnet.
- Validatoren sehen, dass ihre Verpflichtung zu einem spezifischen Slot gebunden ist und wenn dieser Slot an der Reihe ist schlagen sie einen Block vor.
- Man wiederholt diese Schritte damit die Zuordnung von Verpflichtungen immer dem jetzigen Slot weit voraus sind.
Das hindert Angreifer davon, im Vorne herein zu wissen, welcher Validator den nächsten Block vorschlagen wird, was DOS-Attacken verhindert.
Nicht-Einzelne geheime Führungswahl (SnSLE)
Es gibt auch einen anderen Vorschlag, welcher versucht ein Szenario zu erstellen, in dem Validatoren in jedem Slot eine zufällige Chance haben, einen Validator vorzuschlagen. Das wäre ähnlich wie Blockanträge beim Proof-of-Work Algorithmus gewählt wurden, bekannt als Nicht-Einzelne geheime Führungswahl (SnSLE). Ein einfacher Weg dies zu tun ist, die RANDAO Funktion zu nutzen, um zufällig Validatoren im heutigen Protokoll auszuwählen. Die Idee von RANDAO ist, dass eine ausreichend zufällige Zahl durch das Mischen von Hashes von vielen unabhängigen Validatoren eingereicht werden. Bei SnSLE könnten diese Hashes genutzt werden, um den nächsten Blockantragsteller zu wählen, beispielsweise den Hash mit dem niedrigsten Wert. Die Spanne von validen Hashes könnte eingeschränkt werden, um die Wahrscheinlichkeit, dass ein individueller Validator in einen Slot gewählt wird anzupassen. Indem man festlegt, dass der Hash kleiner als 2^256 * 5 / N
sein muss, wobei N
der Anzahl an aktiven Validatoren entspricht, würde die Chance, dass jeder einzelne Validator gewählt wird 5/N
entsprechen. In diesem Beispiel gäbe es eine 99,3 % Chance, dass mindestens ein Antragsteller einen validen Hash in jedem Slot generiert.
Aktueller Fortschritt
SSLE und SnSLE sind beide in der Forschungsphase. Es gibt noch keine finalen Spezifikationen für diese Idee. SSLE und SnSLE sind konkurrierende Vorschläge, von denen nur einer implementiert werden könnte. Vor der Veröffentlichung muss mehr Forschung, Entwicklung, Prototypenherstellung und Implementierung auf öffentlichen Testnetzen durchgeführt werden.