I DIDN’T EXPECT THE ORDER OF TWO OPERATIONS TO MATTER THIS MUCH FOR A SLASH.
I was reading through @Dusk ’s Boreas changes and stopped at one line about state-transition ordering.
Before Boreas, there was a same-block case where stake could be changed before a pending slash was applied.
Boreas flipped that order.
The slash now happens first.
Transaction execution comes after.
That is a surprisingly small change for something consensus-critical.
The penalty itself did not need a new philosophy. The important part was making sure the stake could not move into a different state before the already-pending penalty reached it.
What makes the change even more interesting is how Dusk handled old blocks.
Pre-Boreas history still replays with the old ordering. New blocks use the new one.
So one node has to understand two valid versions of the same state machine depending on where it is in chain history.
That was the detail I hadn’t appreciated:
a hard fork can fix what happens next without pretending the same rule had always existed.
For Boreas, even something as mundane as “which operation runs first?” was part of consensus correctness.
#dusk $DUSK @Dusk
I was reading through @Dusk ’s Boreas changes and stopped at one line about state-transition ordering.
Before Boreas, there was a same-block case where stake could be changed before a pending slash was applied.
Boreas flipped that order.
The slash now happens first.
Transaction execution comes after.
That is a surprisingly small change for something consensus-critical.
The penalty itself did not need a new philosophy. The important part was making sure the stake could not move into a different state before the already-pending penalty reached it.
What makes the change even more interesting is how Dusk handled old blocks.
Pre-Boreas history still replays with the old ordering. New blocks use the new one.
So one node has to understand two valid versions of the same state machine depending on where it is in chain history.
That was the detail I hadn’t appreciated:
a hard fork can fix what happens next without pretending the same rule had always existed.
For Boreas, even something as mundane as “which operation runs first?” was part of consensus correctness.
#dusk $DUSK @Dusk
