Skip to content

feat: merge-train/spartan#21407

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

feat: merge-train/spartan#21407
AztecBot wants to merge 64 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)
fix: orchestrator enqueue yield (#21286)
chore(builder): check archive tree next leaf index during block building (#21457)
fix: scenario deployment (#21428)
chore: add claude skill to read network-logs (#21495)
chore: update claude network-logs skill (#21523)
feat(rpc): add package version to RPC response headers (#21526)
chore(prover): silence "epoch to prove" debug logs (#21527)
chore(sequencer): do not log blob data (#21530)
fix: dependabot alerts (#21531)
docs(p2p): nicer READMEs (#21456)
fix(archiver): guard getL1ToL2Messages against incomplete message sync (#21494)
fix(sequencer): await syncing proposed block to archiver (#21554)
feat(ethereum): check VK tree root and protocol contracts hash in rollup compatibility (#21537)
END_COMMIT_OVERRIDE

alexghr and others added 3 commits March 10, 2026 08:50
…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 25 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.
PhilWindle and others added 26 commits March 13, 2026 13:40
- use reasonable timeouts for each subtest in smoke test
- fix tf parse error in network deployment
## Motivation

The JSON-RPC server already returns `x-aztec-*` headers for protocol
component versions (chain id, rollup address, etc.), but does not
include the node's package version. This makes it harder to identify
which software version a node is running when debugging or monitoring.

## Approach

Extended `getVersioningMiddleware` to accept an optional
`packageVersion` parameter and emit it as an `x-aztec-packageVersion`
response header alongside existing versioning headers.

## Example

```
$ curl -s -D- http://localhost:8090 -H 'content-type: application/json' -d '[{"jsonrpc":"2.0","id":1,"method":"node_getNodeVersion","params":[]}]'
HTTP/1.1 200 OK
Vary: Accept-Encoding, Origin
Access-Control-Allow-Origin: *
Content-Type: application/json; charset=utf-8
x-aztec-l2CircuitsVkTreeRoot: 0x06624799e2080c43aba671cdece34d5f4cdff2122bc6be41d80bd903ca0975cc
x-aztec-l2ProtocolContractsHash: 0x23c2022f0b69b29e354b4f7612d5db3ba0bc4259d71ac9186ed272945a644b9c
x-aztec-packageVersion: 5.0.0
Content-Length: 43
Date: Fri, 13 Mar 2026 16:04:31 GMT
Connection: keep-alive
Keep-Alive: timeout=5

[{"jsonrpc":"2.0","id":1,"result":"5.0.0"}]
```

## Changes

- **stdlib**: Updated `getVersioningMiddleware` to accept an optional
`opts` bag with `packageVersion`, setting `x-aztec-packageVersion`
header when provided
- **aztec**: Wired `getPackageVersion()` into both the main and admin
RPC server middleware calls

Co-authored-by: Claude Opus 4.6 <[email protected]>
Blob data was too long for log entries to handle. This changes it so we
only log the size of the blobs published.

Before:

```
[13:06:08.794] VERBOSE: sequencer:publisher Published bundled transactions (propose) {"result":{"receipt":{"type":"eip4844","status":"success","cumulativeGasUsed":"385181","logs":[{"address":"0x322813fd9a801c5507c9de605d63cea4f2ce6c44","topics":["0x6ff492bf2b4ca1b93a175167d14b3e46085b935cab3f39ca94013000799b93a0","0x0000000000000000000000000000000000000000000000000000000000000003","0x2cf9ee43d934809911a0629cd290209348e0508ffdd3f30402351a5429f74ad4"],"data":"0x0000000000000000000000000000000000000000000000000000000000000060e49dcf9662d7eb83cf30af60c4d6cc8d564308edbc26fef51385c0c94fe65819bfab9e5d42c7aba8bf7d9f4048849f571a93b95e188cdec14fb8f555c1746550000000000000000000000000000000000000000000000000000000000000000101591ba24e6196c249ff33ec1d35987d4762fae761a978bb425463b12c90cc32","blockHash":"0x99a84eb88d3b66c87019755d87e92e65bf212d428aab9c7b94b7669568a4c85e","blockNumber":"16","blockTimestamp":"0x69b437b9","transactionHash":"0x8efedb655395bd83c2b9255b20906bc08e331081a9112a6ba0eeae52db67b2ba","transactionIndex":0,"logIndex":0,"removed":false}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000020000000000000000000000000000000000800000000000000000000000000000000000001000000000100000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000800000000000400000000000000000000000000000000002000000000000000000000000000000000000000010000000000000002000000000000000000000000000000000000000","transactionHash":"0x8efedb655395bd83c2b9255b20906bc08e331081a9112a6ba0eeae52db67b2ba","transactionIndex":0,"blockHash":"0x99a84eb88d3b66c87019755d87e92e65bf212d428aab9c7b94b7669568a4c85e","blockNumber":"16","gasUsed":"385181","effectiveGasPrice":"86710037164","blobGasUsed":"131072","blobGasPrice":"1","from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0xca11bde05977b3631167028862be2a173976ca11","contractAddress":null},"stats":{"sender":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","transactionHash":"0x8efedb655395bd83c2b9255b20906bc08e331081a9112a6ba0eeae52db67b2ba","calldataSize":1156,"calldataGas":9160}},"requests":[{"action":"propose","request":{"to":"0x322813fd9a801c5507c9de605d63cea4f2ce6c44","data":"0x85b98fd82cf9ee43d934809911a0629cd290209348e0508ffdd3f30402351a5429f74ad400000000000000000000000000000000000000000000000000000000000000000d93c6531226171223911de09fea77fdafb779b9efdcb4b5b16b9f88b83d313c2f56b7eda997ca30d14f92163f11fabb64251cc3214f1ae2e7892c73394a405200c6b5236b5b2050261c85d5fb75ce253f61e8e78bd6ed2a1f2e510015a5173600de7b349d2306334734e4f58b1302a6ed5a6c796a706f6597a5641b6d46822300c95e0ceb41951039e1592745ec2faea9866f6eaf01bf189a4463b4143af09300000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000069b437ad000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017e40840160000000000000000000000000000000000000000000000000000000000007617400000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000001ca6ae226e0c0c881df1fd8a62aa8da91e24fff46aa5b2e332b8bf7c3d794ddbd72f61a710d6dd642a4d72709ea5b8a2ffcee8dccc3c4738985997ba1f21c7ad82000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101965388a7c83f39d8a62700990eafe1c47aea33099620ef49e4692388140a89059bb706ae172b1be0f95ef5eae5d9d95e000000000000000000000000000000"},"lastValidL2Slot":6,"gasConfig":{"txTimeoutAt":"2026-03-13T16:14:33.000Z","gasLimit":"544173"},"blobConfig":{"blobs":[{"type":"Buffer","data":[0,0,0,0,0,156,112,117,24,0,1,0,2,0,0,0,1,0,1,0,16,0,0,0,0,0,0,0,0,0,0,25,26,238,19,223,98,108,51,39,185,48,7,135,133,178,147,239,57,158,83,100,234,40,148,244,48,140,10,85,81,56,181,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,5,71,67,73,245,255,128,39,74,107,34,150,128,61,115,97,225,233,233,194,46,196,104,26,177,246,81,82,26,141,101,32,153,156,119,213,215,189,21,30,3,237,5,172,202,237,51,111,235,148,198,17,74,149,165,234,251,231,67,150,146,214,87,205,222,247,251,121,227,248,88,21,206,223,50,10,178,185,48,113,224,144,254,51,188,206,182,14,193,245,184,231,229,108,104,167,114,117,215,121,226,123,6,32,187,127,152,6,8,218,238,170,45,66,79,166,221,2,131,116,183,84,218,103,159,44,203,146,105,85,194,139,13,44,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,30,14,219,130,119,104,74,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,23,194,113,146,86,119,231,234,201,34,17,252,249,170,155,250,188,59,104,53,30,67,90,239,40,221,185,206,67,192,153,240,20,160,162,216,211,135,12,159,150,144,79,240,31,54,236,203,158,230,56,163,234,2,214,186,161,242,128,79,82,165,106,215,9,64,39,67,157,216,98,204,153,91,75,49,87,19,88,219,166,57,43,7,70,229,209,69,244,235,137,187,136,49,34,112,27,19,168,33,114,234,201,59,123,189,172,166,141,13,228,3,62,240,81,88,228,75,227,34,202,106,180,111,74,3,68,230,46,152,197,95,180,208,252,1,246,222,70,178,196,206,138,239,48,0,68,63,159,193,213,185,99,38,125,134,57,82,77,228,9,69,163,75,46,188,77,39,79,233,139,166,198,56,50,98,102,204,84,100,59,85,252,5,84,144,67,102,32,186,105,76,39,198,140,238,221,146,244,149,158,173,47,21,14,106,37,211,54,64,110,33,184,20,9,178,154,3,165,90,205,101,33,225,4,254,15,42,134,15,220,194,5,7,123,208,144,249,255,50,38,231,53,246,255,235,7,218,100,171,66,52,77,100,143,19,33,137,120,171,80,249,227,240,121,120,211,197,216,180,176,52,195,37,19,80,164,154,169,135,113,194,61,109,124,201,158,183,4,90,38,197,107,154,59,30,11,14,212,231,16,76,92,83,20,27,137,81,64,50,170,185,235,146,35,16,58,136,191,244,24,102,76,98,216,202,148,222,94,4,24,226,59,127,81,220,85,129,141,31,82,175,118,42,150,111,247,99,150,76,73,31,46,217,239,39,171,32,46,121,209,216,199,37,219,118,203,229,36,187,102,148,241,105,248,162,201,37,224,126,152,46,165,55,13,65,88,163,142,168,250,39,108,205,59,217,132,238,71,186,247,204,119,144,3,83,117,197,202,150,19,225,18,100,221,132,45,173,121,0,215,81,124,239,129,2,198,78,198,128,127,49,164,143,132,106,231,205,189,154,61,248,35,150,11,235,58,133,3,167,204,128,123,88,235,113,102,117,104,78,144,225,115,113,4,170,212,164,25,242,11,202,104,244,42,96,167,170,16,203,18,1,108,240,36,194,238,226,87,204,44,152,233,133,157,132,223,212,58,124,145,142,151,77,131,127,167,188,198,171,85,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,141,205,191,0,0,0,0,105,180,55,173,0,0,0,3,0,1,0,0,0,0,0,0,0,0,0,192,0,0,0,0,3,0,0,0,0,1,64,0,0,0,0,128,0,0,0,7,97,116,13,147,198,83,18,38,23,18,35,145,29,224,159,234,119,253,175,183,121,185,239,220,180,181,177,107,159,136,184,61,49,60,48,31,126,100,208,109,52,94,81,74,80,188,159,121,245,132,173,242,87,54,30,117,147,96,244,71,241,112,146,196,28,175,25,45,25,220,110,32,158,202,38,189,248,17,35,184,173,35,55,206,221,137,201,109,206,24,17,182,213,21,66,27,84,119,5,41,141,189,74,163,10,246,45,56,13,4,165,122,107,249,165,228,134,75,248,5,48,87,76,163,124,122,177,60,83,222,13,88,44,16,255,129,21,65,58,165,183,5,100,253,210,243,206,254,31,51,161,228,58,71,188,73,80,129,233,30,115,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,99,116,67,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
```

After:

```
[13:30:41.119] VERBOSE: sequencer:publisher Published bundled transactions (propose) {"result":{"receipt":{"type":"eip4844","status":"success","cumulativeGasUsed":"385205","logs":[{"address":"0x322813fd9a801c5507c9de605d63cea4f2ce6c44","topics":["0x6ff492bf2b4ca1b93a175167d14b3e46085b935cab3f39ca94013000799b93a0","0x0000000000000000000000000000000000000000000000000000000000000003","0x26e3973a3203d93aaaf76d59c43c7f3cd4080a67684179ee3f1092cf6a4c9978"],"data":"0x0000000000000000000000000000000000000000000000000000000000000060f96dc77f2d110d9050959e38e4c9c84038ce49729dd16aa7eb255741148e79d8bfab9e5d42c7aba8bf7d9f4048849f571a93b95e188cdec14fb8f555c17465500000000000000000000000000000000000000000000000000000000000000001016b358729e956cccab674961e67294fe0bf963088adebef8f6e019219025606","blockHash":"0x1089308e44405731f84b1f67ad8448e87da12edffb26d3b0b017ac9627b31a9a","blockNumber":"16","blockTimestamp":"0x69b43d77","transactionHash":"0x4f498af5a8bf55d4826b695c41050402340ab5f0696092835ecd5e53d032dfbb","transactionIndex":0,"logIndex":0,"removed":false}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000020000000000000400000000000000000000800000000000000000000000000000000000001000400000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000800000000000400000000000000000000000000000000002000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000","transactionHash":"0x4f498af5a8bf55d4826b695c41050402340ab5f0696092835ecd5e53d032dfbb","transactionIndex":0,"blockHash":"0x1089308e44405731f84b1f67ad8448e87da12edffb26d3b0b017ac9627b31a9a","blockNumber":"16","gasUsed":"385205","effectiveGasPrice":"86710037256","blobGasUsed":"131072","blobGasPrice":"1","from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0xca11bde05977b3631167028862be2a173976ca11","contractAddress":null},"stats":{"sender":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","transactionHash":"0x4f498af5a8bf55d4826b695c41050402340ab5f0696092835ecd5e53d032dfbb","calldataSize":1156,"calldataGas":9184}},"requests":[{"action":"propose","request":{"to":"0x322813fd9a801c5507c9de605d63cea4f2ce6c44","data":"0x85b98fd826e3973a3203d93aaaf76d59c43c7f3cd4080a67684179ee3f1092cf6a4c997800000000000000000000000000000000000000000000000000000000000000002b43a3e89866a1db7350d1039543aef72e806b835bd8e79536d7bfd74c3d1dbe15115c9aa93b867f4d9ecd238642afaa48d24d61d7106bc8bca3abc3ec189c2800d00d7594bcbade97739ca33290faf152804f2185915c2ad9a68958292a6c8a00de7b349d2306334734e4f58b1302a6ed5a6c796a706f6597a5641b6d46822300c95e0ceb41951039e1592745ec2faea9866f6eaf01bf189a4463b4143af09300000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000069b43d6b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017e40840160000000000000000000000000000000000000000000000000000000000007617400000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000001ca6ae226e0c0c881df1fd8a62aa8da91e24fff46aa5b2e332b8bf7c3d794ddbd72f61a710d6dd642a4d72709ea5b8a2ffcee8dccc3c4738985997ba1f21c7ad8200000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000310190114a7271b77c746c0ef4775090eea8ed71717b487db61e8e833a8519db1a52f2355b2248d2ee92f827b0bcf81b4552000000000000000000000000000000"},"lastValidL2Slot":6,"gasConfig":{"txTimeoutAt":"2026-03-13T16:39:03.000Z","gasLimit":"544203"},"blobConfig":{"blobs":[{"size":1056}],"kzg":{}}}]}
```
I missed minimatch updates and glob. And a new version of tar is out

| Project | Package | Old version | New version |
|---------|---------|-------------|-------------|
| `yarn-project/` | tar | 7.5.10 | 7.5.11 |
| `boxes/` | tar | 7.5.10 | 7.5.11 |
| `playground/` | tar | 7.5.10 | 7.5.11 |
| `docs/` | tar | 7.5.10 | 7.5.11 |
| `barretenberg/docs/` | tar | 7.5.10 | 7.5.11 |
| `barretenberg/acir_tests/` | tar | 7.5.10 | 7.5.11 |
| `barretenberg/cpp/src/barretenberg/nodejs_module/` | tar | 7.5.10 |
7.5.11 |
| `barretenberg/ts/` | minimatch | 9.0.5 | 9.0.9 |
| `barretenberg/ts/` | minimatch | 3.1.2 | 3.1.5 |
| `barretenberg/acir_tests/` | minimatch | 9.0.5 | 9.0.9 |
| `barretenberg/ts/` | glob | 10.4.5 | 10.5.0 |
Nicer READMEs for the p2p module

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

## Motivation

`getL1ToL2Messages(checkpointNumber)` returns the L1-to-L2 messages for
a given checkpoint by reading from the local message store. However, if
the message tree for that checkpoint hasn't been fully sealed on L1 yet
(or the archiver hasn't synced it), the method silently returns
incomplete data — or an empty array for a checkpoint that will
eventually have messages. This is indistinguishable from a legitimately
empty checkpoint (one where no L1-to-L2 messages were sent).

Any caller that uses this result to compute `inHash` — the sequencer,
validator, or slasher — would derive an incorrect hash, leading to
mismatches and potential block validation failures.

## Approach

The L1 Inbox contract exposes a `treeInProgress` value: the checkpoint
number whose message tree is currently being filled. Trees for
checkpoints strictly below this value are sealed and complete. We
persist this value in the archiver's message store during each L1 sync
cycle and use it as a guard: `getL1ToL2Messages` now throws
`L1ToL2MessagesNotReadyError` if the requested checkpoint number is >=
`treeInProgress`. On first startup (before any sync), the guard is
permissive (skipped) since the value hasn't been set yet.

This approach was chosen over a simpler "last message checkpoint" bound
because it correctly handles empty checkpoints — a checkpoint with zero
messages is still sealed once `treeInProgress` moves past it.

## Changes

- **archiver**: Added `L1ToL2MessagesNotReadyError`. The message store
now persists `treeInProgress` as an LMDB singleton and guards
`getL1ToL2Messages` against unsealed checkpoints. The L1 synchronizer
writes the value on every sync cycle immediately after fetching inbox
state.
- **archiver (tests)**: Updated the fake L1 state mock to compute
`treeInProgress` dynamically from both messages and checkpoints. Added
unit tests for the guard (sealed, unsealed, unset). Updated the L1 reorg
test to expect the new error for unsealed checkpoints.
- **stdlib**: Documented the new throw condition on the
`L1ToL2MessageSource` interface.

Fixes A-659

Co-authored-by: Claude Opus 4.6 <[email protected]>
While this means we waste a bit more time during block building, it also
means we catch early any consistency errors, including an l1 reorg that
removed the previous checkpoint while we were building ours.

Fixes A-665
…lup compatibility (#21537)

## Summary

- Adds `getVkTreeRoot()` and `getProtocolContractsHash()` methods to
`RollupContract` that read immutable config from L1 storage slots
(stfStorageSlot + 3 and + 4)
- Extends `waitForCompatibleRollup` to verify all three values (genesis
archive root, VK tree root, protocol contracts hash) before allowing the
node to proceed
- Prevents nodes from starting against a rollup deployed with
incompatible circuits or protocol contracts

## Test plan

- Added unit tests for `getVkTreeRoot` and `getProtocolContractsHash` in
`rollup.test.ts` that verify storage slot arithmetic against values set
during deployment
- Existing `waitForCompatibleRollup` behavior preserved: enters standby
mode on mismatch, polls until compatible rollup found
@AztecBot AztecBot enabled auto-merge March 14, 2026 00:13
@AztecBot
Copy link
Collaborator Author

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

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

7 participants