Skip to content

feat: merge-train/spartan#21407

Open
AztecBot wants to merge 32 commits intonextfrom
merge-train/spartan
Open

feat: merge-train/spartan#21407
AztecBot wants to merge 32 commits intonextfrom
merge-train/spartan

Conversation

@AztecBot
Copy link
Collaborator

@AztecBot AztecBot commented Mar 12, 2026

BEGIN_COMMIT_OVERRIDE
feat: add ETHEREUM_HTTP_TIMEOUT_MS env var for viem HTTP transport (#20919)
fix(archiver): filter tagged log queries by block number (#21388)
fix(node): handle slot zero in getL2ToL1Messages (#21386)
feat(sequencer): redistribute checkpoint budget evenly across remaining blocks (#21378)
fix: fall back to package.json for CLI version detection (#21382)
chore: Removed multiplier config (#21412)
chore: Removed default snapshot url config (#21413)
chore: Read tx filestores from network config (#21416)
fix(node): check world state against requested block hash (#21385)
feat(p2p): use l2 priority fee only for tx priority (#21420)
feat(p2p): reject and evict txs with insufficient max fee per gas (#21281)
revert "feat(p2p): reject and evict txs with insufficient max fee per gas (#21281)" (#21432)
chore: Reduce log spam (#21436)
fix(tx): reject txs with invalid setup when unprotecting (#21224)
END_COMMIT_OVERRIDE

AztecBot and others added 2 commits March 11, 2026 19:08
…20919)

## Summary

- Adds `ETHEREUM_HTTP_TIMEOUT_MS` env var to configure the HTTP timeout
on viem's `http()` transport (default is viem's 10s)
- Introduces `makeL1HttpTransport` helper in `ethereum/src/client.ts` to
centralize the repeated `fallback(urls.map(url => http(url, { batch:
false })))` pattern
- Updates all non-test `createPublicClient` call sites (archiver,
aztec-node, sequencer, prover-node, epoch-cache, blob-client) to use the
helper with the configurable timeout

## Motivation

Users hitting `TimeoutError: The request took too long to respond` on
archiver `eth_getLogs` calls when querying slow or public L1 RPCs.
Viem's default 10s timeout is too short for large log queries and there
was no way to configure it.

## Test plan

- `yarn build` passes
- `yarn format` and `yarn lint` pass
- Set `ETHEREUM_HTTP_TIMEOUT_MS=60000` and confirm the archiver no
longer times out on large `eth_getLogs` ranges

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.6 <[email protected]>
spalladino and others added 26 commits March 12, 2026 09:13
Resolves the referenceBlock hash to a block number in the AztecNode and
passes it down as upToBlockNumber so the LogStore stops returning logs
from blocks beyond the client's sync point. Also adds an ordering check
on log insertion to guard against out-of-order appends.

Fixes F-417

Co-authored-by: Claude Opus 4.6 <[email protected]>
If there was a block in L2 slot zero, then `getL2ToL1Messages` returned
an incorrect response, since the `slotNumber !== previousSlotNumber`
would fail in the first iteration of the loop.
…ng blocks (#21378)

Update the per-block budgets so that, on every block, the limits are
further adjusted to `remainingCheckpointBudget / remainingBlocks *
multiplier`. This prevents the last blocks from starvation. Also adjusts
the multiplier from 2x to 1.2x.

## Visualization

Using the
https://github.com/AztecProtocol/explorations/tree/main/block-distribution-simulator

### Before this PR

No redistribution, 2x multiplier

<img width="1544" height="737" alt="Screenshot From 2026-03-11 15-50-38"
src="https://github.com/user-attachments/assets/fda36d04-5d9e-456a-9ced-4649fa58d724"
/>

### After this PR

Redistribution enabled, 1.2x multiplier

<img width="1544" height="737" alt="Screenshot From 2026-03-11 15-50-49"
src="https://github.com/user-attachments/assets/2bc196f3-77fa-47bf-9294-4eb4199f8f93"
/>

### With no multiplier

For comparison purposes only, note the lower gas utilization

<img width="1544" height="737" alt="Screenshot From 2026-03-11 15-50-59"
src="https://github.com/user-attachments/assets/0facbc36-65e3-446e-abaf-eb7f637b87c9"
/>

## Summary

- Adds `SEQ_REDISTRIBUTE_CHECKPOINT_BUDGET` (default: true) to
distribute remaining checkpoint budget evenly across remaining blocks
instead of letting one block consume it all. Fair share per block is
`ceil(remainingBudget / remainingBlocks * multiplier)`, applied to all
four dimensions (L2 gas, DA gas, blob fields, tx count).
- Changes default `perBlockAllocationMultiplier` from 2 to 1.2 for
smoother distribution.
- Wires `maxBlocksPerCheckpoint` from the timetable through to the
checkpoint builder config.

## Test plan

- Existing `capLimitsByCheckpointBudgets` tests pass with
`redistributeCheckpointBudget: false` (old behavior)
- New tests cover: even split with multiplier=1, fair share with
multiplier=1.2, last block gets all remaining, disabled flag falls back
to old behavior, DA gas and tx count redistribution
- `computeBlockLimits` tests updated for new default multiplier and
`maxBlocksPerCheckpoint` return value

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.6 <[email protected]>
## Summary

Fixes `aztec --version` returning `unknown` when installed via
`install.aztec-labs.com`.

Closes
https://linear.app/aztec-labs/issue/A-642/aztec-version-returns-unkonwn

ClaudeBox log: https://claudebox.work/s/9b17d34db367f45c?run=1
Removes the default multiplier setting in our deployment scripts.
Our `network_defaults.yml` hardcoded a single snapshots provider for
mainnet. But this should be removed in favour of using the network
config json file.
This PR adds transaction filestore config to the network config schema.
When requesting world state at a given block hash, double check that the
returned world state is actually at that same block hash. Also check
that world state is synced to the requested block if using block hash.
Simplifies the issue of summing two different rates over two different
magnitudes.

Fixes A-655
…1281)

## Summary

- Previously, `GasTxValidator` returned `skipped` when a tx's
`maxFeesPerGas` was below current block fees, allowing it to wait for
lower fees. This changes it to `invalid`, rejecting the tx outright.
- Extracts `MaxFeePerGasValidator` as a standalone generic validator
(like `GasLimitsValidator`) so it can be used in pool migration
alongside full `Tx` validation.
- Adds `InsufficientFeePerGasEvictionRule` that evicts pending txs after
a new block is mined if their `maxFeesPerGas` no longer meets the
block's gas fees.
- Adds `maxFeesPerGas` to `TxMetaValidationData` so the eviction rule
and pool migration validator can access it from metadata.

**Caveat**: This may evict transactions that would become valid if block
fees later drop. A more nuanced approach would define a threshold (e.g.
50% of current fees) and only reject/evict below that. The current
approach is simpler and ensures the pool doesn't accumulate low-fee txs
unlikely to be mined soon.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.6 <[email protected]>
Reduces the severity of a log line.
When unprotecting txs, we were not running the check for allowed public
setup functions, which was skipped in the reqresp entrypoint.

This commit now tracks whether public setup is allowed or not for a tx
in the tx metadata, and uses it to drop the tx when it becomes
unprotected.

An alternative approach would have been to store the entire public setup
calls in the tx metadata, but this means a smaller memory footprint.

---------

Co-authored-by: Claude Opus 4.6 <[email protected]>
Copy link
Collaborator

@ludamad ludamad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Auto-approved

@AztecBot AztecBot added this pull request to the merge queue Mar 13, 2026
@AztecBot
Copy link
Collaborator Author

🤖 Auto-merge enabled after 4 hours of inactivity. This PR will be merged automatically once all checks pass.

1 similar comment
@AztecBot
Copy link
Collaborator Author

🤖 Auto-merge enabled after 4 hours of inactivity. This PR will be merged automatically once all checks pass.

@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Mar 13, 2026
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