Skip to content

chore: Accumulated backports to v4-next#21453

Open
AztecBot wants to merge 30 commits intov4-nextfrom
backport-to-v4-next-staging
Open

chore: Accumulated backports to v4-next#21453
AztecBot wants to merge 30 commits intov4-nextfrom
backport-to-v4-next-staging

Conversation

@AztecBot
Copy link
Collaborator

@AztecBot AztecBot commented Mar 12, 2026

BEGIN_COMMIT_OVERRIDE
fix(tx): reject txs with invalid setup when unprotecting (#21224)
fix: correct inverted constrained encryption check in message delivery (#21399)
feat: add ETHEREUM_HTTP_TIMEOUT_MS env var for viem HTTP transport (backport #20919) (#21434)
chore: backport fairies oracle changes to v4-next (#21403)
chore: backport #20893 feat: offchain reception to v4-next (#21359)
fix: stabilize e2e_bot test fees and fix L1 nonce races (backport #20962 #20992 #21148) (#21465)
chore(builder): check archive tree next leaf index during block building (backport #21457) (#21487)
fix: add TLS alignment pad to fix x86_64-macos segfault (#21372)
chore: backport PR #20775 to v4-next (auto-enqueue public init nullifier) (#21492)
cherry-pick: feat!: emit anchor block timestamp for offchain messages (#21414)
chore(prover): silence "epoch to prove" debug logs (#21527)
fix: backport #21387 — use bundled bb binary in aztec compile instead of $PATH (#21468)
chore(sequencer): do not log blob data (#21530)
feat!: emit anchor block timestamp for offchain messages (backport #21414) (#21483)
chore: backport #21080 — prefix aztec-nr contract logs with [aztec-nr] (#21536)
docs(p2p): nicer READMEs (#21456)
feat: use warn_log_format for discarded messages (backport #21053) (#21546)
fix: include validation reason in PXE simulate error (#20768)
feat(aztec.js): add additionalScopes to ContractFunctionPattern in capabilities (#20660)
feat: add optional additional scopes to wallet transaction API (backport #20487) (#21549)
fix: backport remove insecure SchnorrSingleKeyAccount contract to v4-next (#21548)
fix(sequencer): await syncing proposed block to archiver (#21554)
refactor: separate protocol test utils (#21099)
END_COMMIT_OVERRIDE

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.
ludamad and others added 3 commits March 12, 2026 16:41
#21399)

## Summary
- Fixed inverted boolean comparison in `message_delivery.nr` line 208 that caused `ONCHAIN_CONSTRAINED` to run encryption unconstrained and vice versa.
- The check was comparing against `ONCHAIN_UNCONSTRAINED` instead of `ONCHAIN_CONSTRAINED`, flipping the condition passed to `remove_constraints_if`.

## Backport
This is a backport fix targeting `v4-next` via `merge-train/fairies`.

## Test plan
- [ ] Verify constrained encryption is actually constrained when using `ONCHAIN_CONSTRAINED` delivery mode
- [ ] Verify unconstrained encryption when using `ONCHAIN_UNCONSTRAINED` delivery mode

cc @nventuro for review

ClaudeBox log: https://claudebox.work/s/c8cf1c507575d776?run=3
AztecBot and others added 2 commits March 12, 2026 22:00
…ackport #20919) (#21434)

## Summary
Backport of #20919 to v4-next.

Adds `ETHEREUM_HTTP_TIMEOUT_MS` env var to configure the timeout for
viem HTTP transports used in L1 RPC calls. Introduces
`makeL1HttpTransport` helper to centralize transport creation with
consistent timeout support.

## Conflict Resolution
Cherry-pick had a conflict in `blob-client/src/client/http.ts` because
`next` had refactored `getSlotNumber` to accept `parentBeaconBlockRoot`
as a parameter. Resolved by keeping the v4-next code structure and
applying only the transport change (`makeL1HttpTransport` with timeout
support).

## Commits
1. Cherry-pick with conflict markers (for reviewability)
2. Conflict resolution

ClaudeBox log: https://claudebox.work/s/02b67d20aae96377?run=2

---------

Co-authored-by: Santiago Palladino <santiago@aztec-labs.com>
 #20992 #21148)

BEGIN_COMMIT_OVERRIDE
fix: set wallet minFeePadding in BotFactory constructor (#20992)
fix: increase minFeePadding in e2e_bot bridge resume tests and harden GasFees.mul() (#20962)
fix: use dedicated L1 account for bot bridge resume tests to avoid nonce race (#21148)
fix: remove stale fee snapshot from BotFactory account deployment
END_COMMIT_OVERRIDE

Backports three fixes from next and adds a fourth:

1. BotFactory constructor now calls wallet.setMinFeePadding() so all
   setup transactions (token deploy, minting) use the configured padding
   instead of the wallet default (0.5x). (#20992)

2. GasFees.mul() uses bigint arithmetic for integer scalars to avoid
   precision loss, and Math.ceil for non-integer scalars. (#20962)

3. Bridge resume tests use a dedicated L1 private key (index 7) instead
   of the default mnemonic shared with the sequencer, avoiding nonce
   races on approve/deposit calls. (#21148)

4. Remove explicit maxFeesPerGas snapshot from setupAccountWithPrivateKey.
   Let the wallet re-estimate fees at send() time via completeFeeOptions(),
   making the fee estimate fresh and 10x padding sufficient.
## Summary
- Backports 5 PRs from `merge-train/fairies` related to oracle changes:
  - #21101 - feat: improve oracle name prefixes
- #21349 - fix: skip oracle version check for pinned protocol contracts
  - #21244 - refactor: deduplicate MembershipWitness struct
  - #21176 - feat(pxe)!: pass BoundedVec sizes as oracle params
- #21209 - refactor!: cleaning up public call and tx phase related
oracles

## Test plan
- CI passes on backport branch

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

---------

Co-authored-by: Nicolás Venturo <nicolas.venturo@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Nicolas Chamo <nicolas@chamo.com.ar>
Co-authored-by: benesjan <benesjan@users.noreply.github.com>
AztecBot and others added 4 commits March 13, 2026 11:45
## Summary

Backport of #20893
(feat: offchain reception) to `v4-next`.

This adds offchain message reception to Aztec.nr contracts, including:
- Persistent offchain message inbox via capsules
- `offchain_receive` utility function auto-generated by the Aztec macro
- `offchain::sync_inbox` for processing messages during `sync_state`
- New `utilityResolveMessageContexts` oracle method
- End-to-end test for offchain payments

## Backport details

**Commit 1**: Raw cherry-pick with conflict markers (for reviewer
visibility)
**Commit 2**: Conflict resolution — kept v4-next's `utility`-prefixed
oracle naming convention while integrating new offchain methods
**Commit 3**: Updated `ORACLE_INTERFACE_HASH` for the new oracle method
and bumped `ORACLE_VERSION` from 12 to 13

### Conflicts resolved in:
- `docs/netlify.toml` — added error code 7 redirect
- `noir-projects/aztec-nr/aztec/src/macros/aztec.nr` — integrated
`AztecConfig`, `#[varargs]`, offchain inbox sync
- `noir-projects/aztec-nr/aztec/src/messages/discovery/mod.nr` — added
offchain imports, kept v4-next's generic `Env` type
- `noir-projects/aztec-nr/aztec/src/oracle/version.nr` — bumped to
version 13
-
`yarn-project/pxe/src/contract_function_simulator/oracle/interfaces.ts`
— added `utilityResolveMessageContexts`
- `yarn-project/pxe/src/contract_function_simulator/oracle/oracle.ts` —
added oracle method
-
`yarn-project/pxe/src/contract_function_simulator/oracle/oracle_version_is_checked.test.ts`
— added messageContextService mock
-
`yarn-project/pxe/src/contract_function_simulator/oracle/utility_execution_oracle.ts`
— added implementation
- `yarn-project/pxe/src/oracle_version.ts` — version 13, new hash
- `yarn-project/txe/src/rpc_translator.ts` — added RPC translation

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

---------

Co-authored-by: Martin Verzilli <martin@aztec-labs.com>
 #20992 #21148) (#21465)

## Summary

Backports three fixes from `next` and adds a fourth to stabilize the
flaky `e2e_bot` test on `v4-next`.

**Root cause:** The `BotFactory` was snapshotting `maxFeesPerGas` once
during account setup, then using that stale value for subsequent
transactions. L1 baseFee escalation on anvil (from rapid block building)
caused fees to exceed the stale cap.

### Changes

1. **BotFactory constructor sets wallet fee padding** (backport of
#20992)
- Calls `wallet.setMinFeePadding(config.minFeePadding)` so all setup
transactions use the configured padding instead of the wallet default
(0.5x)

2. **GasFees.mul() precision fix** (backport of #20962)
   - Uses bigint arithmetic for integer scalars to avoid precision loss
- Uses `Math.ceil` for non-integer scalars to ensure fees always round
up

3. **Dedicated L1 account for bridge resume tests** (backport of #21148)
- Uses private key index 7 instead of the default mnemonic (shared with
the sequencer)
   - Avoids nonce races on approve/deposit calls in `bridgeL1FeeJuice`
- Uses `getPrivateKey()` helper with auto-incrementing index for other
tests

4. **Remove stale fee snapshot** (new, also in #21464 on `next`)
- Removes explicit `maxFeesPerGas` snapshot from
`setupAccountWithPrivateKey`
- Lets the wallet re-estimate fees at `send()` time via
`completeFeeOptions()`
- Fresh estimation + 10x padding is sufficient since fee change within 1
block is minimal

Related: A-648, #21453

ClaudeBox log: https://claudebox.work/s/c64a6207b95c4a16?run=4
…ing (backport #21457) (#21487)

## Summary
Backport of #21457
to v4-next.

Adds a check for archive tree next leaf index during block building to
catch errors in world-state sync.

Cherry-pick applied cleanly — no conflicts.

ClaudeBox log: https://claudebox.work/s/477c827891fb7315?run=1

Co-authored-by: Santiago Palladino <santiago@aztec-labs.com>
## Summary

- Fixes x86_64-macos segfault (`EXC_I386_GPFLT`) when `bb` is cross-compiled with Zig and linked with a Rust static library (AVM transpiler)
- Root cause: LLVM's Mach-O linker misaligns `__thread_bss` TLS template offsets when `__thread_data` (from Rust) is also present, causing 16-byte-aligned `thread_local` objects (like `std::mutex`) to be placed at 8-byte-aligned addresses
- Fix: a single `alignas(16) thread_local` variable forces `__thread_data` section alignment to 16, making the linker pad it correctly

Fixes #21225
Fixes #19769

## Details

Both Zig's built-in Mach-O linker and `ld64.lld-20` share the same LLVM code for laying out TLS sections. When `__thread_data` (align 8, from Rust objects) precedes `__thread_bss` (align 16, from C++ `thread_local`), the linker aligns the `__thread_bss` virtual address to 16 but the TLS template offset remains misaligned because `__thread_data` starts at an 8-aligned VA.

At runtime, `dyld` allocates a 16-aligned TLS block and copies the template at the recorded offsets. Variables that should be at `block + 0x40` (16-aligned) end up at `block + 0x38` (8-aligned), causing `MOVAPS` instructions to fault.

The fix adds an `alignas(16)` initialized `thread_local` that forces the `__thread_data` section alignment to 16, which makes the linker pad the section end to a 16-byte boundary.

Upstream bug: https://codeberg.org/ziglang/zig/issues/31461

## Test plan

- [x] Cross-compiled `bb` binary with Zig for x86_64-macos
- [x] Verified TLS section alignment: `__thread_data` align 2^4 (16), offset to `__thread_bss` is 0x40 (mod 16 = 0)
- [x] Tested on macOS VM: `bb prove --scheme ultra_honk` runs without segfault
- [x] Previous binary (without pad) segfaults immediately with `EXC_I386_GPFLT`

Supersedes #21253
AztecBot and others added 3 commits March 13, 2026 16:09
## Summary
- Export `findBbBinary` from `@aztec/bb.js` public API (was internal-only)
- Use bundled bb binary in `aztec compile`, `profile-gates`, and `profile-flamegraph` commands
- Resolution order: `$BB` env var > bundled binary > `$PATH` fallback

## Details
When a user has a different version of `bb` installed globally (e.g. via `bbup`), `aztec compile` picks it up from `$PATH` instead of using the version bundled with the installation. This causes transpiler errors due to version mismatch.

The fix uses the existing `findBbBinary()` helper from `@aztec/bb.js` which detects the platform and returns the path to `build/<arch>/bb`. This is the same approach already used by `@aztec/bb.js`'s own CLI wrapper.

Full analysis: https://gist.github.com/AztecBot/46ee397e5df74c2c7a5c383f060bdaba

Closes #21384

ClaudeBox log: https://claudebox.work/s/bb8c2dc73d2d3975?run=2
ludamad and others added 2 commits March 13, 2026 12:54
… of $PATH (#21468)

## Summary
Backport of #21387
to v4-next.

Cherry-pick applied cleanly — no conflicts.

## Changes
- Export `findBbBinary` from `@aztec/bb.js` public API
- Use bundled bb binary in `aztec compile`, `profile-gates`, and
`profile-flamegraph` commands
- Resolution order: `$BB` env var > bundled binary > `$PATH` fallback

Closes #21384

ClaudeBox log: https://claudebox.work/s/b86fc0798bbe3804?run=1
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":{}}}]}
```
ludamad and others added 3 commits March 13, 2026 13:28
…1414) (#21483)

## Summary

Backport of #21414
to v4-next.

Changes offchain messages to track anchor block timestamp for lifecycle
management instead of transaction TTL. Adds `anchorBlockTimestamp` field
to `OffchainMessage` type and passes it through all code paths that
create offchain messages.

## Conflict Resolution

Rebased onto latest `backport-to-v4-next-staging` (which now includes
the offchain reception backport #20893). Only one conflict remained in
`batch_call.test.ts` — accepted the new test cases from the original PR.

## Verification

- yarn-project builds successfully
- All unit tests pass (`interaction_options.test.ts`,
`batch_call.test.ts`)

ClaudeBox log: https://claudebox.work/s/f59343e7af96e770?run=2
Nicer READMEs for the p2p module

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
AztecBot and others added 3 commits March 13, 2026 19:04
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
Moving all protocol specific fixtures, builder, test utils from `types`
to a separate `protocol-test-utils` crate, as `types` is expected to be
used by aztec-nr users.
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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants