refactor: extract checkpoint proposal handling to ProposalHandler (backport #21999)#22005
Merged
spalladino merged 3 commits intoMar 25, 2026
Conversation
Resolved conflicts in validator.ts and validator.test.ts: - Removed signature/fee validation from attestToCheckpointProposal (moved to ProposalHandler) - Added null check on proposer for self-proposal detection - Used v4 variable name 'slotNumber' instead of 'proposalSlotNumber' - Added new HA peer test
The new test added in the cherry-pick references validatorPrivateKeys which was scoped to beforeEach on v4. Hoisted to describe scope.
675a1ff to
2be3e5e
Compare
spalladino
approved these changes
Mar 25, 2026
The PR changed self-proposal handling from rejecting (return false) to logging and continuing validation. This allows HA peers running the same validator key on different nodes to process each other's block proposals. The cherry-pick didn't catch this because it wasn't in a conflicted region.
alexghr
pushed a commit
that referenced
this pull request
Mar 25, 2026
…ckport #21999) (#22005) ## Summary Backport of #21999 to v4. Renames `BlockProposalHandler` to `ProposalHandler` and adds checkpoint proposal handling, so non-validator nodes with blob upload capability can validate checkpoint proposals and upload blobs to the filestore. The validator client now delegates checkpoint validation and blob upload to the `ProposalHandler` instead of doing it inline. ## Conflicts Resolved - **proposal_handler.ts**: Import conflict — added new imports (`accumulateCheckpointOutHashes`, `CheckpointProposalCore`, `MerkleTreeId`) needed for checkpoint handling. - **validator.ts**: Two conflicts around signature validation and fee modifier checks that were moved to `ProposalHandler`. Used v4's `slotNumber` variable name instead of `proposalSlotNumber` from next. - **validator.test.ts**: Added new HA peer test from the PR. ## Build Fix - Hoisted `validatorPrivateKeys` from `beforeEach` scope to `describe` scope in `validator.test.ts` so the new test can access it. ClaudeBox log: https://claudebox.work/s/bd9a0060cbf1923d?run=1 --------- Co-authored-by: Santiago Palladino <santiago@aztec-labs.com>
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.
Summary
Backport of #21999 to v4.
Renames
BlockProposalHandlertoProposalHandlerand adds checkpoint proposal handling, so non-validator nodes with blob upload capability can validate checkpoint proposals and upload blobs to the filestore. The validator client now delegates checkpoint validation and blob upload to theProposalHandlerinstead of doing it inline.Conflicts Resolved
accumulateCheckpointOutHashes,CheckpointProposalCore,MerkleTreeId) needed for checkpoint handling.ProposalHandler. Used v4'sslotNumbervariable name instead ofproposalSlotNumberfrom next.Build Fix
validatorPrivateKeysfrombeforeEachscope todescribescope invalidator.test.tsso the new test can access it.ClaudeBox log: https://claudebox.work/s/bd9a0060cbf1923d?run=1