Improve validation when processing orphan blocks #2981
Merged
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 block acceptance pipeline can potentially be improved by adding a proof of work validation check before adding orphan blocks to the orphan block pool.
Currently adding an orphan block with an invalid proof of work is allowed and can consume unnecessary resources and potentially flush legitimate orphans from the pool if MAX_ORPHAN_SIZE is reached.
This PR adds a check based on the one proposed by @quentinlesceller to better validate orphan blocks before they are added to the orphan block pool.
validate_pow_only()
function to cheaply validate orphansvalidate_pow_only()
check topipe::process_block()
inside the orphan conditional beforeErr(ErrorKind::Orphan.into())
is returnedThis is a WIP as it needs more testing, someone may find a more efficient/elegant way for this check and tests still need to be added.