Domains: Fix inconsistency between Block body and Trace roots #2343
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes inconsistency in domain block body and trace roots when an extrinsic fails at pre/post dispatch from the context of domain block.
Notes:
I recommend looking at tests in the first commit to understand why there would be an inconsistency.
We did consider leaving it as is and fix the domain_extrinsic_root but unfortunately, proving such fraud proof is unbounded as we cannot know how many such invalid extrinsics per domain block context exists though these extrinsics are valid per bundle context.
Current approach reverts the extrinsic changes and notes the extrinsics into system to be consistent with trace roots. we also optimistacally charge extrinsic signer the storage fees for storing extrinsic and later would also need to charge storage fees for consensus chain. The latter is left as TODO and will be handled as part of Storage fee orcale PR.
Closes #2181
Code contributor checklist: