🔍 Einblick in @Rayls Axyl: Was passiert, wenn die parallele Berechnung der Zustandswurzel fehlschlägt?

Parallele Ausführung kann die Leistung verbessern. Doch was passiert, wenn die parallele Berechnung der Zustandswurzel während der Blockerstellung fehlschlägt?

Ich habe mir den Ausführungscode von Rayls Axyl angesehen und drei unterschiedliche Wege zur Berechnung der Zustandswurzel gefunden.

⚡ 1. Sparse-Berechnung

Axyl beginnt mit der Berechnung des Sparse-Tries, während EVM-Transaktionen ausgeführt werden. So können beide Vorgänge gleichzeitig ablaufen. Ist die parallele Berechnung erfolgreich, verwendet Axyl die daraus resultierende Zustandswurzel und die Trie-Aktualisierungen.

🔄 2. Serieller Rückfall

Wenn die parallele Berechnung einen Fehler zurückgibt, versucht Axyl erneut, die Zustandswurzel mit einer seriellen Methode zu berechnen. Der Code wandelt außerdem einen Panic innerhalb der geschützten Sparse-Root-Operation in ein Fehlerergebnis um, sodass der aufrufende Code in den Rückfallzweig wechseln kann.

🛠️ 3. Direkte serielle Berechnung

Wenn die parallele Aufgabe nicht eingerichtet werden kann, schlägt Axyl einen anderen Weg ein. Da die Sparse-Root-Funktion nicht verfügbar ist, wird die Zustandswurzel direkt mit der seriellen Methode berechnet.

Die entscheidende Erkenntnis ist, dass ein Fehler beim Einrichten der Aufgabe und ein Fehler während der Berechnung über unterschiedliche Zweige behandelt werden – obwohl beide zu einer seriellen Berechnung der Zustandswurzel führen können.

Nachdem die Zustandswurzel ausgewählt wurde, übergibt Axyl sie an die Blockzusammenstellung. Der Code protokolliert außerdem, welcher Berechnungspfad ausgewählt wurde.

Eine wichtige Einschränkung ist, dass ein Rückfall nicht garantiert, dass jeder Fehler behoben wird. Wenn auch die serielle Berechnung einen Fehler zurückgibt, wird dieser weitergegeben und nicht stillschweigend ignoriert.

Diese Implementierungsdetails zeigen, wie Axyl parallele Berechnung, Fehlerbehandlung, serielle Wiederherstellung und Blockerstellung miteinander verbindet.