Skip to content

fix(sequencer): backport remove l1 block timestamp check (PR #21853) to v4-next#21860

Closed
AztecBot wants to merge 8 commits into
backport-to-v4-next-stagingfrom
claudebox/backport-21853-v4-next
Closed

fix(sequencer): backport remove l1 block timestamp check (PR #21853) to v4-next#21860
AztecBot wants to merge 8 commits into
backport-to-v4-next-stagingfrom
claudebox/backport-21853-v4-next

Conversation

@AztecBot

Copy link
Copy Markdown
Collaborator

Summary

Backport of #21853 to v4-next.

The original PR removed L1 block timestamp checks that were needed due to clock drift between sequencer and anvil, replaced by wall-clock time after PR #21829.

Conflicts & Resolution

The cherry-pick had conflicts because v4-next uses different APIs:

  • canProposeAtNextEthBlock instead of canProposeAt (kept v4-next name)
  • No pipelining support (dropped pipelining code from cherry-pick)
  • getNextL1SlotTimestamp free function doesn't exist on v4-next (implemented inline using dateProvider.nowInSeconds() + ethereumSlotDuration)

Commits

  1. Cherry-pick with conflicts — raw cherry-pick attempt with conflict markers
  2. Conflict resolution — resolved markers keeping v4-next method names
  3. Build fixes — stored dateProvider as class property, implemented getNextL1SlotTimestamp() for v4-next, also applied same fix to validateCheckpointForSubmission

ClaudeBox log: https://claudebox.work/s/57581eecbdbeb055?run=1

benesjan and others added 8 commits March 17, 2026 12:26
## Summary

Merges v4 into v4-next, resolving the conflict in
`getBlockHashMembershipWitness` in `server.ts`.

The conflict was between v4-next's simple passthrough to
`getWorldState(referenceBlock)` and v4's off-by-one bugfix that uses
`getWorldState(BlockNumber(referenceBlockNumber - 1))`. The v4 fix is
correct: the Noir circuit checks the archive membership proof against
`anchor_block_header.last_archive.root`, which is the archive tree root
BEFORE the anchor block was added, so we need the world state at block
N-1.

Resolution: took the v4 bugfix, adapted to use v4-next's `getWorldState`
(protected) instead of v4's `#getWorldState` (private).

Replaces #21493
which had stale conflict markers.

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

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>
## Summary

Merges latest `v4` (`bb3ea6f1`) into `v4-next` with a proper **merge
commit** to preserve the merge topology. This fixes the issue where PR
#21702 was squash-merged, causing git to lose track of which v4 commits
were already in v4-next.

## Commits

1. **Merge commit with conflict markers** — raw `git merge origin/v4`
showing the conflicts
2. **Fix server.ts** — resolve `getWorldState` vs `#getWorldState`
conflict (use protected version), remove duplicate `resolveBlockNumber`
method
3. **Fix deploy_network.sh** — resolve pre-existing conflict from old
merge (keep default multiplier of 2)

## Important

**This PR must be merged with a merge commit (not squashed)** to
preserve the v4→v4-next merge topology. Add the `ci-no-squash` label.
Without the merge commit, future auto-merges will re-encounter the same
conflicts.

ClaudeBox log: https://claudebox.work/s/3402fef75fe1ebde?run=4

---------

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>
Co-authored-by: spypsy <spypsy@users.noreply.github.com>
## Summary
- Bump `.release-please-manifest.json` from `4.1.0` to `4.2.0` in
preparation for the next release cycle.
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
Keep v4-next method name canProposeAtNextEthBlock, drop pipelining code
that doesn't exist on v4-next, take PR's getNextL1SlotTimestamp approach.
- Store dateProvider as class property for wall-clock timestamp access
- Implement getNextL1SlotTimestamp() using wall-clock time instead of
  the free function that doesn't exist on v4-next
- Also apply same fix to validateCheckpointForSubmission
@AztecBot AztecBot added ci-draft Run CI on draft PRs. claudebox Owned by claudebox. it can push to this PR. labels Mar 20, 2026
@AztecBot

Copy link
Copy Markdown
Collaborator Author

Automatically closing this stale claudebox draft PR (no updates for 5+ days). Re-open if still needed.

@AztecBot AztecBot closed this Mar 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-draft Run CI on draft PRs. 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