Wie werden Blockvorschläge in Casper gemacht?

Ein Blogbeitrag sagt Folgendes über Blockvorschläge in Casper:

Ein Zufallszahlengenerator im NXT-Stil wird verwendet, um zu bestimmen, wer auf welcher Höhe einen Block erzeugen kann; Im Wesentlichen geht es dabei darum, fehlende Block-Vorschläger als Entropiequelle zu nehmen.

Das Erstellen von Blöcken ist ein Prozess, der unabhängig von allem anderen stattfindet: Validatoren sammeln Transaktionen, und wenn es für sie an der Zeit ist, einen Block zu erstellen, produzieren sie einen, signieren ihn und senden ihn an das Netzwerk.*

Wie viele der (bis zu 256) Validatoren haben das Recht, einen Blockvorschlag in einer bestimmten Höhe zu machen?

Wenn ich richtig verstehe, kann es während des Blockvorschlags parallel konkurrierende Blöcke auf der aktuellen Höhe geben, da der Konsens-für-Wette-Prozess noch nicht vollständig konvergiert ist. Kann ein Validator seinen Blockvorschlag auf einen dieser Blöcke der obersten Ebene legen? Könnte er dabei einen oder mehrere der verbleibenden Blöcke der obersten Ebene als Onkel auswählen?

Antworten (1)

Es gibt genau einen Validator mit dem Recht, einen Block in einer beliebigen Höhe zu erstellen, zufällig (aber deterministisch) ausgewählt aus den Validatoren, gewichtet nach ihren Einsätzen. Wenn dieser Validator dies nicht tut oder sein Block vom Rest des Netzwerks abgelehnt wird, dann gibt es nur ein "Loch" in der Kette, wo dieser Block gewesen wäre.

Dies kann passieren, weil CASPER anders funktioniert als die meisten anderen Algorithmen, da der Konsens pro Block und nicht pro Kette gilt. Blöcke werden nicht "auf" anderen Blöcken gebaut, sie existieren nur auf einer bestimmten Höhe, und nur ein Block kann sich auf einer bestimmten Höhe in der kanonischen Kette befinden. Es gibt keinen Link zum vorherigen Block.

Immer wenn sich der wahrscheinlichste Kandidat für eine Höhe ändert (möglicherweise zu oder von „kein Block“), wird der endgültige Zustand der Blockchain neu berechnet, indem Transaktionen in akzeptierten Blöcken ausgeführt werden. Dies wiederum funktioniert, weil jede richtig formatierte Transaktion eine gültige Transaktion ist. Wenn eine Transaktion in zwei Blöcken stattfindet, macht sie höchstwahrscheinlich beim zweiten Mal einfach nichts.

Was ist die Entropiequelle für die Wahl?
Dies ist eigentlich eine Beschreibung einer alten Version von Casper. Es ist Jahre her, und ich kann mich nicht erinnern, ob es jemals eine Entropiequelle gab, auf die man sich in dieser Version geeinigt hat.
Dies ist eines der wichtigsten Themen bei Nicht-PoW-Konsensalgorithmen. Wissen Sie, wie es im Testnetz implementiert ist? Die Github-Dokumentation sagt nichts Genaues.
Die aktuelle CFFG-Form von Casper ist ein Hybrid aus PoW-PoS. Das Standard-Ethash-PoW erstellt Blöcke und der Casper-Vertrag schließt sie ab. Es gab noch keinen Konsens über einen reinen PoS-Vorschlagsmechanismus.
Ja, aber irgendwie muss ein Block auf einer bestimmten Höhe ausgewählt werden.
Ich glaube, an diesem Punkt ist es einfach die Wahl des Validators, für welchen Block er stimmen soll, etwa alle 100 Blöcke. Da es sich um eine Auswahl handelt, kann es sich sogar je nach Implementierung unterscheiden.
Aber es muss eine Einigung darüber bestehen, welcher Validator das Recht hat, den Vorschlag zu machen, und es muss fair über die Entropie sein.
Ah, ich glaube, ich sehe die Quelle der Verwirrung. Es gibt keine "Vorschläge". So wie ich es verstehe, stimmen Validatoren asynchron über jeden beliebigen Block ab, und wenn ein Block genügend Stimmen sammelt, wird er abgeschlossen. (Der eigentliche Mechanismus ist natürlich komplexer.) Es gibt keine Zwischenauswahl eines Kandidaten durch einen bestimmten Validierer.
Wie wird es in der vollständigen PoS-Implementierung (ohne PoW) funktionieren?
Das steht meines Wissens nach noch nicht fest.