[BUG] Fix transaction size limits for sapling version #1956
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.
The size limits for a sapling transaction are currently checked in 3 places:
1-
CheckTransaction(validation.cpp)2-
CheckTransactionWithoutProofVerification(called bySaplingValidation::CheckTransaction)3-
SaplingValidation::ContextualCheckTransactionWhile in (2) and (3) the size is correctly checked against
MAX_TX_SIZE_AFTER_SAPLING, in (1) it is checked against the oldMAX_ZEROCOIN_TX_SIZE.So a shielded transaction with size greater than
MAX_ZEROCOIN_TX_SIZEwould be wrongly rejected inCheckTransaction.Fix the check in (1), selecting the correct max size for shielded/non-shielded transactions.
Move the size-check before calling SaplingValidation::CheckTransaction (as it's faster).
Remove the checks in (2) and (3) that are just redundant.
Based on top of: