Wie wird ein Miner in Proof of Stake ausgewählt?

Ich versuche, POS zu verstehen. Ich verstehe, dass POS eine Währung verwendet, die analog zur Hash-Macht im POW-System gehalten wird. Je größer der Einsatz, den wir haben, desto größer sind unsere Chancen, den Block abzubauen. An verschiedenen Quellen habe ich gelesen, dass ein Miner deterministisch ausgewählt wird.

Kann mir bitte jemand erklären, wie die Miner-Auswahl stattfindet. Und da sich alle auf denselben Miner einigen, muss ein Algorithmus beteiligt sein.

Hier wird ziemlich viel erwähnt: https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ , aber ich kann anscheinend keine Antwort auf meine Frage finden.

Antworten (3)

Der Prägealgorithmus zum Abstecken ist für verschiedene Coins unterschiedlich; Zum Beispiel ist es bei BlackCoin anders als bei Cardano.

Es gibt mehrere Ansätze zum Abstecken, aber die meisten von ihnen sind anfällig für „Grinding-Angriffe“ und fast keiner von ihnen hat sich als sicher gegen jeden Angriff erwiesen (nur intuitiv als sicher argumentiert, indem gezeigt wurde, dass bestimmte spezifische Angriffe nicht funktionieren).

Um Ihre Frage konkret zu beantworten, beschreibe ich einen konkreten Fall eines nachweislich sicheren Proof-of-Stake-Protokolls: das Ouroboros Praos- Protokoll.

Im Praos-Protokoll können Sie sich vorstellen, dass jeder Satoshi einem öffentlichen/privaten Schlüsselpaar entspricht. Das Praos-Protokoll zum Staking funktioniert wie folgt: Wenn Sie ein ehrlicher Staker sind, sehen Sie sich das aktuelle Datum und die Uhrzeit an und runden es auf die nächste Sekunde (die Zeiteinheit, auf die Sie es runden, ist allgemein konfigurierbar und entspricht den synchronen "Slots". “ des Protokolls). Sagen Sie zum Beispiel, dass Sie bekommen d = "2018-07-01 00:19:24". Sie nehmen dieses Datum und diese Uhrzeit als Eingabe und signieren es mit Ihrem privaten Schlüssel, der Ihrem Satoshi entspricht, wodurch Sie eine Signatur erhalten s. Sie vergleichen dann diese Signatur mit dem Schwierigkeitsziel , um Tzu sehen, obs <= T, ähnlich wie Bitcoin Block-Hashes mit der Schwierigkeit vergleicht. Wenn dies der Fall ist, wurden Sie zum „gewählten Anführer“ gewählt und dürfen einen Block generieren. Sie generieren zunächst den xBlockinhalt, der aus den Transaktionen in Ihrem Mempool besteht, sowie einen Zeiger auf den vorherigen Block. Anschließend signieren Sie xmit Ihrem öffentlichen Schlüssel und erstellen eine weitere Signatur s'. Sie senden dann Ihre Unterschrift an das Netzwerk, die szeigt, dass Sie gewählt wurden; das aktuelle Datum und die Uhrzeit dder Wahlbestätigung; die bestätigten Transaktionen x, die auch den Verweis auf den vorherigen Block enthalten; und Ihre Unterschrift über den Blockinhalt s'. Das Tupel (s, d, x, s')ist der Block.

Jetzt können andere Prüfer überprüfen, ob Sie der rechtmäßig gewählte Anführer sind. Sie prüfen, ob ses sich um eine Signatur für dhandelt, dh s'um eine Signatur für x, die xgültige Transaktionen enthält und auf die Spitze einer früheren Blockchain zeigt (mit einem älteren Zeitstempel und nicht widersprüchlichen Transaktionen). Schließlich müssen sie überprüfen, ob Sie das Ziel erreichen: smuss unter sein T.

Dies ist ein ziemlich einfaches Protokoll, aber, vielleicht überraschenderweise, kann es sich als sicher erweisen. Das macht es elegant. Es ist auch ziemlich ähnlich, wie Bitcoin Blöcke generiert. Wenn Sie wissen möchten, warum dieses Protokoll sicher ist, empfehle ich Ihnen, das Papier zu lesen.

Ein paar Einzelheiten:

  • Es ist möglich, dass schlechte Schauspieler mehrere Blockinhalte für dieselbe Datumszeit generieren, an der sie zum Anführer gewählt wurden. Dies verursacht kein Problem, da ehrliche Parteien nur Blöcke generieren, die sich auf einen älteren Block festlegen, wodurch Verbindungen gebrochen werden.
  • Es ist möglich, dass zwei ehrliche Parteien gleichzeitig einen Block generieren. Das ist kein Problem und kann auch bei Bitcoin passieren. Solche Bindungen werden gelöst, solange die Protokollparameter so angepasst werden, dass Blöcke nicht sehr oft zwischen Slots auftreten (die genauen Parameter sind im Papier angegeben).
  • Ich habe oben gesagt, dass dies seine "Signatur" zur aktuellen Zeit dist, aber ein technischer Punkt ist, dass es keine Signatur ist, sondern eigentlich das, was wir eine VRF - Verifiable Random Function nennen . Dies ist wie eine Signatur, mit der Ausnahme, dass sich die Ausgabe wie eine zufällige Ausgabe verhält (z. B. ein perfekter Hash, der sich wie ein "zufälliges Orakel" verhält).
(In Wirklichkeit versuchen Sie, Blöcke so weit vor der aktuellen Zeit zu generieren, wie es andere Knoten zulassen.)

Ich kann keinen Kommentar posten, also poste ich als Antwort auf dioyziz 'Antwort. Ich sehe nicht, wie dies sicher ist, da private Schlüssel frei erstellt werden können. Die Person mit den meisten privaten Schlüsseln und den meisten Nodes hat also einen Vorteil, da sie die meisten Hashes für diesen bestimmten Zeitstempel generieren kann. Was es im Wesentlichen wieder zu einem Proof-of-Work-Rennen macht. Wer kann einen privaten Schlüssel generieren, der in Kombination mit diesem bestimmten Zeitstempel die Schwierigkeitsbedingung erfüllt.

Jede mögliche Staking-Eingabe wird verwendet, um ein Ergebnis basierend auf seinen Eigenschaften zu hashen, und im Vergleich zur Schwierigkeit wird ein erfolgreicher Block erstellt und weitergegeben.

Diese Berechnungen sind über das Netzwerk konsistent und überprüfbar, sodass es eine Frage der Verbreitung und Überprüfung ist, ob sie akzeptiert werden.