Skip to content

fix(sequencer): extract gas and blob configs from valid requests only (A-677)#21747

Merged
spalladino merged 2 commits intomerge-train/spartanfrom
palla/a-677-sendrequests-extracts-gas-configs-from-unfiltered-requests
Mar 18, 2026
Merged

fix(sequencer): extract gas and blob configs from valid requests only (A-677)#21747
spalladino merged 2 commits intomerge-train/spartanfrom
palla/a-677-sendrequests-extracts-gas-configs-from-unfiltered-requests

Conversation

@spalladino
Copy link
Contributor

Motivation

The sendRequests method in the sequencer publisher correctly filters L1 publish requests by lastValidL2Slot to discard expired ones. However, gas and blob configs were extracted from the unfiltered request list, meaning expired requests' gas configurations leaked into the aggregated gas limit calculation. This could over-estimate gas and overpay for L1 transactions.

Fixes A-677

Approach

Changed the gas and blob config extraction to use the filtered validRequests list instead of the unfiltered requestsToProcess list, so only non-expired requests contribute to the aggregated gas limit.

Changes

  • sequencer-client: Use validRequests instead of requestsToProcess when extracting gasConfigs and blobConfigs in sendRequests
  • sequencer-client (tests): Added test verifying that expired requests' gas configs are excluded from the aggregated gas limit

… (A-677)

Fixes A-677

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@spalladino spalladino enabled auto-merge (squash) March 18, 2026 15:57
@spalladino spalladino merged commit 5bb159b into merge-train/spartan Mar 18, 2026
11 checks passed
@spalladino spalladino deleted the palla/a-677-sendrequests-extracts-gas-configs-from-unfiltered-requests branch March 18, 2026 16:14
AztecBot pushed a commit that referenced this pull request Mar 18, 2026
… (A-677) (#21747)

## Motivation

The `sendRequests` method in the sequencer publisher correctly filters
L1 publish requests by `lastValidL2Slot` to discard expired ones.
However, gas and blob configs were extracted from the unfiltered request
list, meaning expired requests' gas configurations leaked into the
aggregated gas limit calculation. This could over-estimate gas and
overpay for L1 transactions.

Fixes A-677

## Approach

Changed the gas and blob config extraction to use the filtered
`validRequests` list instead of the unfiltered `requestsToProcess` list,
so only non-expired requests contribute to the aggregated gas limit.

## Changes

- **sequencer-client**: Use `validRequests` instead of
`requestsToProcess` when extracting `gasConfigs` and `blobConfigs` in
`sendRequests`
- **sequencer-client (tests)**: Added test verifying that expired
requests' gas configs are excluded from the aggregated gas limit

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@AztecBot
Copy link
Collaborator

✅ Successfully backported to backport-to-v4-next-staging #21654.

github-merge-queue bot pushed a commit that referenced this pull request Mar 18, 2026
BEGIN_COMMIT_OVERRIDE
fix(p2p): fall back to maxTxsPerCheckpoint for per-block tx validation
(#21605)
chore: fixing M3 devcontainer builds (#21611)
fix: clamp finalized block to oldest available in world-state (#21643)
chore: fix proving logs script (#21335)
fix: (A-649) tx collector bench test (#21619)
fix(validator): process block proposals from own validator keys in HA
setups (#21603)
fix: add bounds when allocating arrays in deserialization (#21622)
fix: skip handleChainFinalized when block is behind oldest available
(#21656)
chore: demote finalized block skip log to trace (#21661)
fix: skip -march auto-detection for cross-compilation presets (#21356)
chore: revert "add bounds when allocating arrays in deserialization"
(#21622) (#21666)
fix: capture txs not available error reason in proposal handler (#21670)
fix: estimate gas in bot and make BatchCall.simulate() return
SimulationResult (#21676)
fix: prevent HA peer proposals from blocking equivocation in duplicate
proposal test (#21673)
fix(p2p): penalize peers for errors during response reading (#21680)
feat(sequencer): add build-ahead config and metrics (#20779)
chore: fixing build on mac (#21685)
fix: HA deadlock for last block edge case (#21690)
fix: process all contract classes in storeBroadcastedIndividualFunctions
(A-683) (#21686)
chore: add slack success post on nightly scenario (#21701)
fix(builder): persist contractsDB across blocks within a checkpoint
(#21520)
fix: only delete logs from rolled-back blocks, not entire tag (A-686)
(#21687)
chore(p2p): lower attestation pool per-slot caps to 2 (#21709)
chore(p2p): remove unused method (#21678)
fix(p2p): penalize peer on tx rejected by pool (#21677)
fix(test): workaround slow mock creation (#21708)
fix(sequencer): fix checkpoint budget redistribution for multi-block
slots (#21692)
fix: batch checkpoint unwinding in handleEpochPrune (A-690) (#21668)
fix(sequencer): add missing opts arg to checkpoint_builder tests
(#21733)
fix: race condition in fast tx collection (#21496)
fix: increase default postgres disk size from 1Gi to 10Gi (#21741)
fix: update batch_tx_requester tests to use RequestTracker (#21734)
chore: replace dead BOOTSTRAP_TO env var with bootstrap.sh build arg
(#21744)
fix(sequencer): extract gas and blob configs from valid requests only
(A-677) (#21747)
fix: deflake attempt for l1_tx_utils (#21743)
fix(test): fix flaky keystore reload test (#21749)
fix(test): fix flaky duplicate_attestation_slash test (#21753)
feat(pipeline): introduce pipeline views for building (#21026)
END_COMMIT_OVERRIDE
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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants