#dusk $DUSK @Dusk
Ich habe mir den Fallback-Mechanismus von Dusk angesehen und dabei ist mir eine Sache besonders aufgefallen: Die Iterationsnummer spielt tatsächlich eine Menge eine Rolle, wenn ein Fork geschieht.
Da Dusk-Konsens asynchron ist, können Nachrichten zu spät ankommen oder während einer Überlastung verloren gehen. Dadurch kann es sein, dass verschiedene Teile des Netzwerks unterschiedliche Blöcke sehen, und manchmal kann in derselben Runde mehr als ein Kandidat Quorum erhalten.
Die Grundregel lautet: Die niedrigere Iteration hat Vorrang. Wenn ein Block aus Iteration 1 akzeptiert wird, aber später ein Block aus Iteration 0 Quorum erhält, kann der Block mit der niedrigeren Iteration den anderen ersetzen. Der Knoten kehrt in den Zustand vor dem alten Block zurück und reorganisiert die Kette.
Das macht Iteration 0 interessant. Iteration 0 ist der erste Versuch, gefolgt von Iteration 1, 2 usw. Da es keine Iteration -1 gibt, kann ein Block aus Iteration 0 nicht direkt durch Fallback über eine niedrigere Iteration ersetzt werden.
Aber ich würde das nicht als vollständige Finalität bezeichnen. Ein Block aus Iteration 0 kann weiterhin beeinflusst werden, wenn ein Vorfahr zurückgesetzt wird. Die tatsächliche Finalität entsteht durch Rolling Finality.
Aus meiner Sicht ist Fallback also mehr als nur das Bereinigen von Forks. Die Iterationsnummer gibt dem Netzwerk eine deterministische Art, zwischen konkurrierenden Blöcken zu wählen, wobei Iteration 0 am unteren Ende dieser Prioritätsreihenfolge steht.
Ich habe mir den Fallback-Mechanismus von Dusk angesehen und dabei ist mir eine Sache besonders aufgefallen: Die Iterationsnummer spielt tatsächlich eine Menge eine Rolle, wenn ein Fork geschieht.
Da Dusk-Konsens asynchron ist, können Nachrichten zu spät ankommen oder während einer Überlastung verloren gehen. Dadurch kann es sein, dass verschiedene Teile des Netzwerks unterschiedliche Blöcke sehen, und manchmal kann in derselben Runde mehr als ein Kandidat Quorum erhalten.
Die Grundregel lautet: Die niedrigere Iteration hat Vorrang. Wenn ein Block aus Iteration 1 akzeptiert wird, aber später ein Block aus Iteration 0 Quorum erhält, kann der Block mit der niedrigeren Iteration den anderen ersetzen. Der Knoten kehrt in den Zustand vor dem alten Block zurück und reorganisiert die Kette.
Das macht Iteration 0 interessant. Iteration 0 ist der erste Versuch, gefolgt von Iteration 1, 2 usw. Da es keine Iteration -1 gibt, kann ein Block aus Iteration 0 nicht direkt durch Fallback über eine niedrigere Iteration ersetzt werden.
Aber ich würde das nicht als vollständige Finalität bezeichnen. Ein Block aus Iteration 0 kann weiterhin beeinflusst werden, wenn ein Vorfahr zurückgesetzt wird. Die tatsächliche Finalität entsteht durch Rolling Finality.
Aus meiner Sicht ist Fallback also mehr als nur das Bereinigen von Forks. Die Iterationsnummer gibt dem Netzwerk eine deterministische Art, zwischen konkurrierenden Blöcken zu wählen, wobei Iteration 0 am unteren Ende dieser Prioritätsreihenfolge steht.
