Skip to content

fix(sequencer): backport wall-clock time for slot estimation to v4-next (#21769)#21847

Merged
spalladino merged 3 commits intobackport-to-v4-next-stagingfrom
claudebox/backport-21769-v4-next
Mar 20, 2026
Merged

fix(sequencer): backport wall-clock time for slot estimation to v4-next (#21769)#21847
spalladino merged 3 commits intobackport-to-v4-next-stagingfrom
claudebox/backport-21769-v4-next

Conversation

@AztecBot
Copy link
Collaborator

Summary

Backport of #21769 to v4-next.

When an Ethereum slot is missed (no block produced), the next L1 block lands 24+ seconds after the previous one instead of 12. Computing the next block timestamp as getBlock().timestamp + ethereumSlotDuration produces wrong results, causing incorrect L2 slot, committee, and proposer calculations.

This backport replaces all getBlock().timestamp + ethereumSlotDuration patterns with a new getNextL1SlotTimestamp() helper that rounds wall-clock time up to the next L1 slot boundary. Additionally, getSyncedL2SlotNumber now uses the latest synced checkpoint slot as a second signal to determine sync progress.

Changes from original PR adapted for v4-next

  • Cherry-pick had 4 conflicted files (epoch_cache, rollup, sequencer-publisher, publisher test)
  • Removed getTargetEpochAndSlotInNextL1Slot (pipelining not present on v4-next)
  • Removed publisher rotation tests (feature not present on v4-next)
  • Used dateProvider.nowInSeconds() directly instead of removed EpochCache.nowInSeconds() method
  • Renamed canProposeAtNextEthBlock to canProposeAt on RollupContract and SequencerPublisher

Fixes #14766

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

…timestamp for slot estimation (#21769)

Cherry-pick of merge commit fef6517 with conflicts.
Original PR: #21769
Adapted PR #21769 changes for v4-next:
- Resolved conflicts in epoch_cache.ts (kept v4-next 'now' naming, added getNextL1SlotTimestamp)
- Resolved conflicts in rollup.ts (renamed canProposeAtNextEthBlock to canProposeAt with timestamp param)
- Resolved conflicts in sequencer-publisher.ts (added dateProvider, wall-clock-based timestamp)
- Resolved conflicts in sequencer-publisher.test.ts (added EmptyL1RollupConstants mock)
- Updated all callers of renamed methods (sequencer.ts, sequencer.test.ts, e2e tests)
- Use dateProvider.nowInSeconds() instead of removed this.nowInSeconds() in epoch_cache
- Remove publisher rotation test block (feature not present on v4-next)
- Remove stray conflict marker in test file
@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
Collaborator Author

Flakey Tests

🤖 says: This CI run detected 1 tests that failed, but were tolerated due to a .test_patterns.yml entry.

\033FLAKED\033 (8;;http://ci.aztec-labs.com/da162a11c7bf5865�da162a11c7bf58658;;�):  yarn-project/end-to-end/scripts/run_test.sh simple src/e2e_epochs/epochs_proof_fails.parallel.test.ts "does not allow submitting proof after epoch end" (226s) (code: 0) group:e2e-p2p-epoch-flakes

@spalladino spalladino marked this pull request as ready for review March 20, 2026 15:25
@spalladino spalladino enabled auto-merge (squash) March 20, 2026 15:25
@spalladino spalladino merged commit 026e17b into backport-to-v4-next-staging Mar 20, 2026
26 of 29 checks passed
@spalladino spalladino deleted the claudebox/backport-21769-v4-next branch March 20, 2026 15:25
AztecBot added a commit that referenced this pull request Mar 21, 2026
BEGIN_COMMIT_OVERRIDE
chore: backport #21754 (feat!: make isContractInitialized a tri-state
enum) to v4-next (#21792)
fix(stdlib): zero-pad bufferFromFields when declared length exceeds
payload (#21802)
test(protocol-contracts): verify max-size bytecode fits in contract
class log (#21818)
chore: port P2P mesh topic deflake fix to v4-next (#21825)
fix(archiver): throw on duplicate contract class or instance additions
(#21799)
feat: sync poseidon in the browser (#21833)
chore: backport #21824 (fix(aztec-up): add sensible defaults to
installer y/n prompts) to v4-next (#21844)
fix(sequencer): backport wall-clock time for slot estimation to v4-next
(#21769) (#21847)
chore: backport PR #21788 (feat(p2p): add tx validation for contract
class id verification) to v4-next (#21852)
feat: sync poseidon browser (#21851)
END_COMMIT_OVERRIDE
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.

2 participants