fix(l1): validate received blocks from peers#2658
Merged
Merged
Conversation
Lines of code reportTotal lines added: Detailed view |
fmoletta
reviewed
May 6, 2025
fmoletta
reviewed
May 6, 2025
fmoletta
reviewed
May 6, 2025
fmoletta
approved these changes
May 27, 2025
rodrigo-o
added a commit
that referenced
this pull request
May 28, 2025
github-merge-queue Bot
pushed a commit
that referenced
this pull request
May 29, 2025
…mpute_block_hash` (#2959) **Motivation** After #2845 we were still calculating the hash of headers every time instead of using the `get_or_init` version. **Description** This PR does a couple of thing - Make `hash` function public and `compute_block_hash` private in the BlockHeader - Replace all header `compute_block_hash` calls with `hash` - On blocks, replace all `block.header.hash()` for `block.hash()` instead given that it already delegates internally. - Fixed an [outstanding comment](#2658 (comment)) from #2658 - Increased the size of the DB (it was limiting Holesky syncing) Closes Status: Open. #2926
This was referenced May 29, 2025
Merged
pedrobergamini
pushed a commit
to pedrobergamini/ethrex
that referenced
this pull request
Aug 24, 2025
**Motivation** While syncing on Holesky, we noticed that some peers were providing us with empty block bodies. This made the syncing loop fail in different occasions, which ultimately lead to a stop in the syncing process. Instead of failing, we want to validate the received headers and bodies and discard the peer and retry if they are not valid. **Description** This PR makes the following changes: * Add a new validation `validate_block_body` to check if a body is valid, agains the corresponding header * Add a simple header validation to the peer handler request headers, to make sure that the received headers conform a chain from the current head * Call the `validate_block_body` function from the peer handle validat and request block bodies, to check that the received block bodies are valid. * Modify the `PeerChannel` API to return the `peer_id` on the `request_block_headers` and `request_block_bodies` functions. * Modify the `PeerChannel` API to add a function `remove_peer` to remove a peer by its `peer_id`. * Remove the peer that provided us with the headers or bodies on the syncing loop if they are invalid Closes lambdaclass#2766 --------- Co-authored-by: Julian Ventura <julian.ventura@lambdaclass.com> Co-authored-by: Rodrigo Oliveri <rodrigooliveri10@gmail.com> Co-authored-by: SDartayet <sofiadartayet@gmail.com> Co-authored-by: SDartayet <44068466+SDartayet@users.noreply.github.com>
pedrobergamini
pushed a commit
to pedrobergamini/ethrex
that referenced
this pull request
Aug 24, 2025
…mpute_block_hash` (lambdaclass#2959) **Motivation** After lambdaclass#2845 we were still calculating the hash of headers every time instead of using the `get_or_init` version. **Description** This PR does a couple of thing - Make `hash` function public and `compute_block_hash` private in the BlockHeader - Replace all header `compute_block_hash` calls with `hash` - On blocks, replace all `block.header.hash()` for `block.hash()` instead given that it already delegates internally. - Fixed an [outstanding comment](lambdaclass#2658 (comment)) from lambdaclass#2658 - Increased the size of the DB (it was limiting Holesky syncing) Closes Status: Open. lambdaclass#2926
pedrobergamini
pushed a commit
to pedrobergamini/ethrex
that referenced
this pull request
Aug 24, 2025
…ed outside of syncing (lambdaclass#2970) **Motivation** This removes an additional validation done on the pre-execution of blocks as part of [this PR](lambdaclass#2658) **Description** Remove the call to the `validate_block_body` in `validate_block` Closes lambdaclass#2973
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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
While syncing on Holesky, we noticed that some peers were providing us with empty block bodies. This made the syncing loop fail in different occasions, which ultimately lead to a stop in the syncing process. Instead of failing, we want to validate the received headers and bodies and discard the peer and retry if they are not valid.
Description
This PR makes the following changes:
validate_block_bodyto check if a body is valid, agains the corresponding headervalidate_block_bodyfunction from the peer handle validat and request block bodies, to check that the received block bodies are valid.PeerChannelAPI to return thepeer_idon therequest_block_headersandrequest_block_bodiesfunctions.PeerChannelAPI to add a functionremove_peerto remove a peer by itspeer_id.Closes #2766