change(consensus): Optimize checks for coinbase transactions #9126
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.
Motivation
The original motivation was to address #9098 (comment) and #9098 (comment). Then I noticed that the
coinbase_outputs_are_decryptable
fn currently converts each post-Heartwood coinbase tx to check if its shielded outputs are decryptable, even if the tx has no shielded outputs. This conversion involves a serialization and deserialization cycle. We can skip this conversion for txs with no shielded outputs.Solution
Transaction::NotCoinbase
error if the tx is not coinbase but should be.Tests
PR Author's Checklist