Skip to content

fix(validator): process block proposals from own validator keys in HA setups (backport #21603)#21659

Merged
spalladino merged 4 commits intobackport-to-v4-next-stagingfrom
claudebox/backport-21603-validator-ha
Mar 18, 2026
Merged

fix(validator): process block proposals from own validator keys in HA setups (backport #21603)#21659
spalladino merged 4 commits intobackport-to-v4-next-stagingfrom
claudebox/backport-21603-validator-ha

Conversation

@AztecBot
Copy link
Copy Markdown
Collaborator

Summary

Backport of #21603 to v4-next.

In an HA setup, two nodes sharing the same validator keys would ignore each other's block proposals because validateBlockProposal returned early for self-proposals. This PR:

  1. Removes self-filtering in validateBlockProposal so HA peers process proposals from their own validator keys
  2. Reorders checkpoint_proposal_job to sign before syncing to archiver, preventing stale blocks in HA setups
  3. Adds shared slashing protection for testing via createSharedSlashingProtectionDb (in-memory impl for v4-next)
  4. Threads slashingProtectionDb through validator creation chain for HA test injection

Conflict resolution

The cherry-pick had conflicts in validator.ts due to different variable naming on v4-next (validatorKeyStore/haSigner vs slashingProtectionSigner on next). Resolved by adapting the new slashingProtectionDb branch to use v4-next's naming pattern.

Build adaptation

v4-next doesn't have LmdbSlashingProtectionDatabase, HASignerMetrics, or CreateLocalSignerWithProtectionDeps that exist on next. Created InMemorySlashingProtectionDatabase as a lightweight alternative for testing, and simplified createSignerFromSharedDb to work with v4-next's 2-arg ValidatorHASigner constructor.

Commits

  1. Cherry-pick with conflicts — raw cherry-pick of 5eedb7d with conflict markers
  2. Conflict resolution — resolve import and constructor conflicts in validator.ts
  3. Build fixes — adapt factory functions for v4-next (in-memory DB, simplified deps)

ClaudeBox log: https://claudebox.work/s/5fffc97ddc02fa23?run=1

@AztecBot AztecBot added the claudebox Owned by claudebox. it can push to this PR. label Mar 17, 2026
@spalladino spalladino marked this pull request as ready for review March 17, 2026 11:52
@spalladino spalladino enabled auto-merge (squash) March 17, 2026 11:54
@spalladino spalladino merged commit 60edfd0 into backport-to-v4-next-staging Mar 18, 2026
23 of 24 checks passed
@spalladino spalladino deleted the claudebox/backport-21603-validator-ha branch March 18, 2026 09:13
AztecBot added a commit that referenced this pull request Mar 19, 2026
BEGIN_COMMIT_OVERRIDE
feat: entrypoint replay protection (#21649)
feat: guard BoundedVec oracle returns against dirty trailing storage
(#21589)
fix: add bounds when allocating arrays in deserialization (#21622)
feat: implement manual Packable for structs with sub-Field members
(#21576)
fix(aztec-node): throw on existing nullifier in
getLowNullifierMembershipWitness (#21472)
fix: use trait dispatch for array Packable::unpack in card_game_contract
(#21683)
fix(p2p): penalize peers for errors during response reading (#21680)
fix: update nullifier non-inclusion test expectations after early oracle
throw (backport #21600) (#21615)
fix(aztec-nr): fix OOB index with nonzero offset (#21613)
fix(builder): persist contractsDB across blocks within a checkpoint
(#21520)
fix(stdlib): accept null return_type for void Noir functions (#21647)
feat: gas estimations on send (#21646)
fix(validator): process block proposals from own validator keys in HA
setups (backport #21603) (#21659)
fix(p2p): penalize peer on tx rejected by pool (#21677)
fix(sequencer): fix checkpoint budget redistribution for multi-block
slots (#21692)
feat: sync cache invalidation oracle (backport #21459) (#21730)
feat!: make AES128 decrypt oracle return Option (backport #21696)
(#21735)
feat!: include init_hash in private initialization nullifier (backport
#21427) (#21736)
fix(sequencer): extract gas and blob configs from valid requests only
(A-677) (#21747)
chore: backport #21744 — replace dead BOOTSTRAP_TO env var with
bootstrap.sh build arg (#21748)
refactor: revert remove assert_bounded_vec_trimmed (#21758)
END_COMMIT_OVERRIDE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

claudebox Owned by claudebox. it can push to this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants