You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Current placement of MEMPOOL rule was a bit of a mistake.
It's goal originally was precautionary, ion case we run into issues we'd like to handle at the mempool level. That's why we tried to add it with the least amount of breakage to the downstream users. However, it is quickly turning into something a lot more useful. In fact current placement of the rule prevents us from taking care of #4849, because it does not allow short-circuiting.
The correct placement of the MEMPOOL rule should be above the LEDGER rule, while today LEDGER rule invokes the MEMPOOL rule. So, the invocation should be inverted.
Originally when I realized it, I fell into despair that we will not be able to do it without a hard fork, because we cannot break node-to-client protocol and changing predicate failures would lead to such breakage. In other words if we change the MempoolPredFailure to contain the LedgerPredFailure we will cause breakage to serialization and that would be unacceptable.
But then, I realized that we don't need to change the serialization in order to invert the invocation order. All we need to do is set the predicate failure for MEMPOOL rule to be:
Current placement of
MEMPOOL
rule was a bit of a mistake.It's goal originally was precautionary, ion case we run into issues we'd like to handle at the mempool level. That's why we tried to add it with the least amount of breakage to the downstream users. However, it is quickly turning into something a lot more useful. In fact current placement of the rule prevents us from taking care of #4849, because it does not allow short-circuiting.
The correct placement of the
MEMPOOL
rule should be above theLEDGER
rule, while todayLEDGER
rule invokes theMEMPOOL
rule. So, the invocation should be inverted.Originally when I realized it, I fell into despair that we will not be able to do it without a hard fork, because we cannot break node-to-client protocol and changing predicate failures would lead to such breakage. In other words if we change the
MempoolPredFailure
to contain theLedgerPredFailure
we will cause breakage to serialization and that would be unacceptable.But then, I realized that we don't need to change the serialization in order to invert the invocation order. All we need to do is set the predicate failure for
MEMPOOL
rule to be:It is a bit of a hack, that will need to be fixed for the future era, but today we can safely take this approach
The text was updated successfully, but these errors were encountered: