Ich habe auf DUSK einen schlimmeren Fehlerfall gefunden als eine abgewiesene Transaktion: dieselben Transaktionsbytes werden akzeptiert und anschließend je nach dem, welcher Teil von Rusk sie berührt, unterschiedlich interpretiert.
Das war das Chaos, das Boreas beseitigen musste. Live-Transaktionen werden gegen die aktive Protokollversion dekodiert. Ältere Aegis-Umschläge können immer noch am Rand des Netzwerks eintreffen, aber Rusk normalisiert sie, bevor sie tiefer vordringen. Transaktionen, die lokal versiegelt wurden, werden vor dem Commit auf das Ledger erneut kanonisiert.
Der unangenehme Teil ist die Historie. DUSK kann die alten Regeln nach einem Upgrade nicht einfach löschen, weil die Knoten weiterhin vor-Aegis- und vor-Boreas-Blöcke nachspielen müssen. Daher muss der aktuelle Knoten die Formate von gestern verstehen, ohne zuzulassen, dass die gestrigen Regeln in die heutige Blockerstellung durchsickern.
Für einen Operator ist die Konsequenz brutal einfach. Ein Neustart, ein Neuaufbau des Archivs oder ein vollständiges Replay muss denselben Kettenzustand rekonstruieren, den der Live-Knoten erreicht hat. Wenn das Mempool-Reading eine Bedeutung hat und das historische Replay eine andere, kann alles gesund aussehen, bis ein Index, ein Kontostand oder ein State-Übergang widerspricht.
Mir ist weniger wichtig, dass ein Upgrade die Transaktionsregeln ändert, als vielmehr, dass DUSK sie ändern kann, ohne die Vergangenheit zu verändern.
#dusk $DUSK @Dusk
Das war das Chaos, das Boreas beseitigen musste. Live-Transaktionen werden gegen die aktive Protokollversion dekodiert. Ältere Aegis-Umschläge können immer noch am Rand des Netzwerks eintreffen, aber Rusk normalisiert sie, bevor sie tiefer vordringen. Transaktionen, die lokal versiegelt wurden, werden vor dem Commit auf das Ledger erneut kanonisiert.
Der unangenehme Teil ist die Historie. DUSK kann die alten Regeln nach einem Upgrade nicht einfach löschen, weil die Knoten weiterhin vor-Aegis- und vor-Boreas-Blöcke nachspielen müssen. Daher muss der aktuelle Knoten die Formate von gestern verstehen, ohne zuzulassen, dass die gestrigen Regeln in die heutige Blockerstellung durchsickern.
Für einen Operator ist die Konsequenz brutal einfach. Ein Neustart, ein Neuaufbau des Archivs oder ein vollständiges Replay muss denselben Kettenzustand rekonstruieren, den der Live-Knoten erreicht hat. Wenn das Mempool-Reading eine Bedeutung hat und das historische Replay eine andere, kann alles gesund aussehen, bis ein Index, ein Kontostand oder ein State-Übergang widerspricht.
Mir ist weniger wichtig, dass ein Upgrade die Transaktionsregeln ändert, als vielmehr, dass DUSK sie ändern kann, ohne die Vergangenheit zu verändern.
#dusk $DUSK @Dusk

