Skip to content

fix: off-by-1 in getBlockHashMembershipWitness archive snapshot (backport #21648)#21663

Merged
benesjan merged 2 commits intobackport-to-v4-stagingfrom
claudebox/backport-21648-to-v4
Mar 17, 2026
Merged

fix: off-by-1 in getBlockHashMembershipWitness archive snapshot (backport #21648)#21663
benesjan merged 2 commits intobackport-to-v4-stagingfrom
claudebox/backport-21648-to-v4

Conversation

@AztecBot
Copy link
Collaborator

Summary

Backport of #21648 to v4.

  • Fix off-by-1 error in AztecNodeService.getBlockHashMembershipWitness: the Noir circuit checks archive membership against anchor_block_header.last_archive.root (the archive at block N-1), but the node was returning a sibling path from the archive at block N. Fixed by fetching world state at referenceBlock - 1.
  • Add comprehensive TXE tests for get_block_header_at covering: past blocks, earliest block, boundary block (N-1), anchor block (early return path), future block rejection, and block number mismatch.

Conflict resolution

The cherry-pick had one conflict in server.ts: v4 uses this.#getWorldState (private method) while next uses this.getWorldState (public). Resolved by using the v4 private method convention.

Commits

  1. Cherry-pick with conflicts — raw cherry-pick of 35ad0ab
  2. Conflict resolution — adapted getWorldState#getWorldState for v4

ClaudeBox log: https://claudebox.work/s/19ea8001dabb3b76?run=1

benesjan and others added 2 commits March 17, 2026 10:55
Adapted getWorldState call to use v4's private #getWorldState method instead of the public getWorldState used on next.
@AztecBot AztecBot added the claudebox Owned by claudebox. it can push to this PR. label Mar 17, 2026
@benesjan benesjan marked this pull request as ready for review March 17, 2026 11:12
@benesjan benesjan requested a review from nventuro as a code owner March 17, 2026 11:12
@benesjan benesjan merged commit d0fcfb7 into backport-to-v4-staging Mar 17, 2026
21 checks passed
@benesjan benesjan deleted the claudebox/backport-21648-to-v4 branch March 17, 2026 11:37
alexghr added a commit that referenced this pull request Mar 17, 2026
BEGIN_COMMIT_OVERRIDE
fix(aztec-nr): return Option from decode functions and fix event
commitment capacity (backport #21264) (#21360)
fix: backport #21271 — handle bad note lengths on
compute_note_hash_and_nullifier (#21364)
fix: not reusing tags of partially reverted txs (#20817)
chore: revert accidental backport of #20817 (#21583)
feat: Implement commit all and revert all for world state checkpoints
(#21532)
cherry-pick: fix: dependabot alerts (#21531)
fix: dependabot alerts (backport #21531 to v4) (#21592)
fix: backport #21443 — Don't update state if we failed to execute
sufficient transactions (v4) (#21610)
chore: Fix msgpack serialisation (#21612)
fix(p2p): fall back to maxTxsPerCheckpoint for per-block tx validation
(#21605)
chore: merge v4 into backport-to-v4-staging (#21618)
fix(revert): avm sim uses event loop again (#21138) (#21630)
fix(e2e): remove historic/finalized block checks from epochs_multiple
test (#21642)
fix: clamp finalized block to oldest available in world-state (#21643)
fix: skip handleChainFinalized when block is behind oldest available
(#21656)
chore: demote finalized block skip log to trace (#21661)
fix: off-by-1 in getBlockHashMembershipWitness archive snapshot
(backport #21648) (#21663)
fix: capture txs not available error reason in proposal handler (#21670)
chore: add L1 inclusion time to stg public (#21665)
END_COMMIT_OVERRIDE

---------

Co-authored-by: Jan Beneš <janbenes1234@gmail.com>
Co-authored-by: PhilWindle <60546371+PhilWindle@users.noreply.github.com>
Co-authored-by: Phil Windle <philip.windle@gmail.com>
Co-authored-by: Santiago Palladino <santiago@aztecprotocol.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: ludamad <adam.domurad@gmail.com>
Co-authored-by: Alex Gherghisan <alexghr@users.noreply.github.com>
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.

2 participants