Skip to content

fix(validator): wait for l1 sync before processing block proposals#21336

Merged
spalladino merged 2 commits intomerge-train/spartanfrom
palla/synced-l2-slot-number
Mar 11, 2026
Merged

fix(validator): wait for l1 sync before processing block proposals#21336
spalladino merged 2 commits intomerge-train/spartanfrom
palla/synced-l2-slot-number

Conversation

@spalladino
Copy link
Contributor

@spalladino spalladino commented Mar 10, 2026

Adds a wait condition in the block-proposal-handler so it waits for the archiver L1 synchronizer to have synced to the slot N-1 before processing a block proposal for slot N.

This tackles race conditions where a checkpoint prune has yet to be processed by a validator, but the proposer was too fast and sent us a block proposal for that same block number, which gets rejected by the validator with a block-number-already-exists.

In addition, it renames getL2SlotNumber/getL2EpochNumber to getSyncedL2SlotNumber/getSyncedL2EpochNumber from the archiver across the codebase, so that they return the last L2 slot/epoch that has been completely synched from L1.

@spalladino spalladino added ci-no-fail-fast Sets NO_FAIL_FAST in the CI so the run is not aborted on the first failure backport-to-v4 labels Mar 10, 2026
@spalladino spalladino force-pushed the palla/synced-l2-slot-number branch from fbb3ba9 to 6e188d7 Compare March 10, 2026 20:21
@spalladino spalladino changed the title refactor: rename getL2SlotNumber to getSyncedL2SlotNumber fix(validator): wait for l1 sync before processing block proposals Mar 10, 2026
@spalladino spalladino force-pushed the palla/synced-l2-slot-number branch from 6e188d7 to fb98b29 Compare March 10, 2026 20:34
@spalladino spalladino enabled auto-merge (squash) March 11, 2026 01:30
@spalladino spalladino merged commit 7ffd52f into merge-train/spartan Mar 11, 2026
10 checks passed
@spalladino spalladino deleted the palla/synced-l2-slot-number branch March 11, 2026 10:54
AztecBot pushed a commit that referenced this pull request Mar 11, 2026
…21336)

Adds a wait condition in the block-proposal-handler so it waits for the archiver L1 synchronizer to have synced to the slot `N-1` before processing a block proposal for slot `N`.

This tackles race conditions where a checkpoint prune has yet to be processed by a validator, but the proposer was too fast and sent us a block proposal for that same block number, which gets rejected by the validator with a block-number-already-exists.

In addition, it renames `getL2SlotNumber`/`getL2EpochNumber` to `getSyncedL2SlotNumber`/`getSyncedL2EpochNumber` from the archiver across the codebase, so that they return the last L2 slot/epoch that has been completely synched from L1.
@AztecBot
Copy link
Collaborator

✅ Successfully backported to backport-to-v4-staging #21355.

ludamad added a commit that referenced this pull request Mar 11, 2026
BEGIN_COMMIT_OVERRIDE
chore: chonk proof compression poc (#20645)
feat: Update L1 to L2 message APIs (#20913)
fix: adapt chonk proof compression for v4 Translator layout (#21067)
fix: omit bigint priceBumpPercentage from IPC config in testbench worker
(#21086)
feat: standby mode for prover broker (#21098)
fix(p2p): remove default block handler in favor of block handler
(#21105)
chore: prepare barretenberg-rs for crates.io publishing (#20496)
feat: reenable function selectors + additional validation in public
setup allowlist (backport #20909, #21122) (#21129)
chore: remove stale aes comments (#21133)
chore: remove auto-tag job (#21127)
feat: calldata length validation of public setup function allowlist
(#21139)
feat: run AVM NAPI simulations on dedicated threads instead of libuv
pool (#21138)
feat: Remove non-protocol contracts from public setup allowlist (#21154)
feat!: Expose offchain effects when simulating/sending txs (backport
#20563) (#21110)
chore: bump minor version (#21171)
chore: backport #21161 (tally slashing pruning improvements) to v4
(#21166)
chore: More updated Alpha configuration (backport #21155) (#21165)
fix(p2p): report most severe failure in runValidations (#21185)
feat: add ergonomic conversions for Noir's `Option<T>` (#21107)
docs: clarifying Noir fields vs struct fields in event metadata (#21172)
fix: bump lighthouse consensus client v7.1.0 -> v8.0.1 (#21170)
fix: update dependencies (#20997)
chore: New alpha-net environment (#20800) (#21202)
chore: code decuplication + refactor (public setup allowlist) (#21200)
feat: mask all ciphertext fields with Poseidon2-derived values (backport
#21009) (#21140)
chore: disable sponsored FPC in testnet (#21235)
feat!: exposing pub event pagination on wallet (#21197)
refactor(pxe): narrow tryGetPublicKeysAndPartialAddress return type
(backport #21208) (#21236)
feat: orchestrator enqueues via serial queue (#21247)
feat: rollup mana limit gas validation (#21219)
chore: deploy SPONSORED_FPC in test networks (#21254)
fix(sequencer): fix log when not enough txs (#21297)
fix: Simulate gas in n tps test. Set min txs per block to 1 (backport
#21312) (#21329)
fix(log): do not log validation error if unregistered handler (#21111)
fix(node): fix index misalignment in findLeavesIndexes (#21327)
fix: limit parallel blocks in prover to max AVM parallel simulations
(#21320)
fix: use native sha256 to speed up proving job id generation (#21292)
fix(validator): wait for l1 sync before processing block proposals
(#21336)
fix(txpool): cap priority fee with max fees when computing priority
(#21279)
chore: reduce severity of errors due to HA node not acquiring signature
(#21311)
fix: (A-643) add buffer to maxFeePerBlobGas for gas estimation and fix
bump loop truncation (#21323)
END_COMMIT_OVERRIDE
github-merge-queue bot pushed a commit that referenced this pull request Mar 11, 2026
BEGIN_COMMIT_OVERRIDE
fix: (A-623) increase committee timeout in scenario smoke test (#21193)
feat: orchestrator enqueues via serial queue (#21247)
feat: rollup mana limit gas validation (#21219)
fix: make e2e HA test more deterministic (#21199)
chore: fix chonk_browser lint warning (#21265)
chore: deploy SPONSORED_FPC in test networks (#21254)
fix: (A-635) e2e bot flake on nonce mismatch (#21288)
chore: deflake duplicate attestations and proposals slash tests (#21294)
fix(sequencer): fix log when not enough txs (#21297)
chore: send env var to pods (#21307)
fix: Simulate gas in n tps test. Set min txs per block to 1 (#21312)
fix: update dependabot dependencies (#21238)
test: run nightly bench of block capacity (#20726)
fix: update block_capacity test to use new send() result types (#21345)
fix(node): fix index misalignment in findLeavesIndexes (#21327)
fix(log): do not log validation error if unregistered handler (#21111)
fix: limit parallel blocks in prover to max AVM parallel simulations
(#21320)
fix: use native sha256 to speed up proving job id generation (#21292)
chore: remove v4-devnet-1 (#21044)
fix(validator): wait for l1 sync before processing block proposals
(#21336)
fix(txpool): cap priority fee with max fees when computing priority
(#21279)
chore: Properly compute finalized block (#21156)
fix: remove extra argument in KVArchiverDataStore constructor call
(#21361)
chore: revert l2 slot time 72 -> 36 on scenario network (#21291)
fix(archiver): do not error if proposed block matches checkpointed
(#21367)
fix(claude): rule to not append echo exit (#21368)
chore: reduce severity of errors due to HA node not acquiring signature
(#21311)
fix: make reqresp batch retry test deterministic (#21322)
fix: (A-643) add buffer to maxFeePerBlobGas for gas estimation and fix
bump loop truncation (#21323)
fix(e2e): use L2 priority fee in deploy_method same-block test (#21373)
fix: reqresp flake & add logging (#21334)
END_COMMIT_OVERRIDE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport-to-v4 ci-no-fail-fast Sets NO_FAIL_FAST in the CI so the run is not aborted on the first failure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants