Skip to content

feat: add pinned-build support for protocol contracts in noir-contracts#20981

Closed
AztecBot wants to merge 29 commits intonextfrom
claudebox/412ab8f570f945d9-2
Closed

feat: add pinned-build support for protocol contracts in noir-contracts#20981
AztecBot wants to merge 29 commits intonextfrom
claudebox/412ab8f570f945d9-2

Conversation

@AztecBot
Copy link
Collaborator

@AztecBot AztecBot commented Feb 28, 2026

Problem: The mainnet_compatibility.test.ts test checks that protocolContractsHash matches a hardcoded mainnet value. We missed protocol contracts while pinning protocol circuits.

Solution:

  • When pinned-protocol-contracts.tar.gz exists in the noir-contracts/ directory, the build extracts pre-compiled protocol contract artifacts and skips compiling them
  • Adds ./bootstrap.sh pin-protocol-contracts command to build protocol contracts and create the tarball

alexghr and others added 28 commits February 18, 2026 10:55
BEGIN_COMMIT_OVERRIDE
feat: disabling peer scoring for block proposals topic (#20577)
fix: Fix the epoch long proving test (#20617)
END_COMMIT_OVERRIDE

---------

Co-authored-by: mrzeszutko <mrzeszutko@users.noreply.github.com>
Co-authored-by: PhilWindle <PhilWindle@users.noreply.github.com>
- This memory was being initialized, when anyway we zero it later. This was single-threaded, to make it worse.

parity-base 5 times, `HARDWARE_CONCURRENCY=48` on mainframe
```
HARDWARE_CONCURRENCY=48 ./bb prove --scheme ultra_honk --verifier_target noir-rollup \
  -b parity_base.json -w witness.gz -o /tmp/out --write_vk -v
```

| Variant | Median | vs Baseline |
|---------|--------|-------------|
| baseline (`make_shared`) | 15370ms | — |
| **`new Fr[]` (this PR)** | **14110ms** | **-8.2%** |

Corroborating now with `ci-full`.
We were computing contract classes left and right, making everything slow (but specially TXE). This PR makes TXE break the barrier of 1 test/s in typical cases.

In general it also makes our TS much lighter, which is specially noticeable in the browser and/or power-constrained devices.

* Refactors the contract store in PXE to eagerly compute contract classes and *store them*. We do not duplicate bytecode, but remember all the heavy hash computations to avoid repeating work
* Adds some caching to heavy artifacts to avoid expensive db serialization trips
* Precomputes contract classes values for protocol contracts, which are trusted and directly imported by PXE itself.

Token contract TXE tests on mainframe go from ~1min and totally pegging the CPU at `--test-threads 5` to ~30s and able to utilize `--test-threads 16`
BEGIN_COMMIT_OVERRIDE
feat: avoid redundant serial zeroing in polynomial allocation (#20670)
feat: reduced hashing (#20676)
END_COMMIT_OVERRIDE
BEGIN_COMMIT_OVERRIDE
feat: run low priority eviction rule on chain_pruned (#20687)
feat: adding mempool transactions (#20679)
feat: check calldata against emitted hashes (#20486)
fix: hodgepodge of small things (#20720)
feat: trim attestations to the minimum required length (#20591)
feat: call syncImmediate without block number during chain prune
(#20717)
END_COMMIT_OVERRIDE

---------

Co-authored-by: mrzeszutko <mrzeszutko@users.noreply.github.com>
Co-authored-by: Thunkar <Thunkar@users.noreply.github.com>
Co-authored-by: sirasistant <5372114+sirasistant@users.noreply.github.com>
Co-authored-by: sirasistant <sirasistant@gmail.com>
BEGIN_COMMIT_OVERRIDE
chore: fix worker wallet in jest (#20725)
fix: pxe native prover log level (#20724)
chore: encode LOG_LEVEL (#20678)
chore: fix worker wallet log level (#20754)
chore: Removed dead code (#20740)
fix: getVotes return empty instead of stale data (#20756)
fix: pass log level to AVM simulator (#20762)
chore: double Node.js libuv thread count (#20709)
fix: underflow in snapshot synch (#20780)
fix: separate rejected and aborted proving jobs (#20777)
fix: evicted transactions could reappear after a node restart (#20773)
fix: (A-575) prevent checkpoint event spam in L2BlockStream on restart
(#20791)
fix: charge 3.6M for epoch verification (#20765)
fix(ethereum): remove viem NonceManager to fix nonce gap after failed
sends (#20819)
fix: limit number of threads when verifying server-side proofs (#20818)
chore: Comment update (#20820)
feat: add support for signed integers on contract functions (#20784)
feat: expose blockheader getters (#20790)
docs: minor clarification (#20788)
fix: Use async poseidon (#20826)
chore: update rollup config for testnet and mainnet (#20827)
END_COMMIT_OVERRIDE

---------

Co-authored-by: alexghr <alexghr@users.noreply.github.com>
Co-authored-by: PhilWindle <PhilWindle@users.noreply.github.com>
Co-authored-by: LHerskind <LHerskind@users.noreply.github.com>
Co-authored-by: ludamad <ludamad@users.noreply.github.com>
Co-authored-by: mrzeszutko <mrzeszutko@users.noreply.github.com>
Co-authored-by: danielntmd <danielntmd@users.noreply.github.com>
Co-authored-by: PhilWindle <60546371+PhilWindle@users.noreply.github.com>
Co-authored-by: spypsy <spypsy@users.noreply.github.com>
Co-authored-by: nventuro <nventuro@users.noreply.github.com>
Co-authored-by: aminsammara <aminsammara@users.noreply.github.com>
Co-authored-by: Phil Windle <philip.windle@gmail.com>
Bumps the l2 gas per note hash to the minimum required by @iAmMichaelConnor  estimations of long term storage requirements
BEGIN_COMMIT_OVERRIDE
fix!: Bump l2 gas per note hash (#20862)
fix: allow compiling mixed (contract + noir script) aztec project
(#20428)
feat: add `aztec profile` command with gate count profiling (#20695)
chore: backporting "displaying debug logs from public function
simulations (#20551)" (#20882)
refactor: split ContractSelf into context-specific structs (#20624)
fix(txe): committing after txs (#20714)
feat: printing out public contract function debug logs in a tx (#20749)
refactor: bundling app into type with directional app tagging secret
(#20796)
refactor: cleaning up construction of SiloedTag (#20797)
docs: document RevertCodeEnum phases and add 120-char line width rule
(#20751)
fix: track last seen nonce in case of stale fallback L1 RPC node
(#20855)
feat: add aztec profile flamegraph command (#20741)
END_COMMIT_OVERRIDE

---------

Co-authored-by: sirasistant <sirasistant@users.noreply.github.com>
Co-authored-by: sirasistant <sirasistant@gmail.com>
Co-authored-by: nchamo <nchamo@users.noreply.github.com>
Co-authored-by: benesjan <benesjan@users.noreply.github.com>
Co-authored-by: Jan Beneš <janbenes1234@gmail.com>
Co-authored-by: spypsy <spypsy@users.noreply.github.com>
BEGIN_COMMIT_OVERRIDE
fix: write pointers for environ_get and environ_sizes_get functions
(#20902)
fix(aztec-up): install noir-profiler alongside nargo (#20896)
chore: fix staging-public deployment (#20901)
feat: Validate num txs in block proposals (#20850)
fix(archiver): enforce checkpoint boundary on rollbackTo (#20908)
END_COMMIT_OVERRIDE

---------

Co-authored-by: just-mitch <just-mitch@users.noreply.github.com>
Co-authored-by: nchamo <nchamo@users.noreply.github.com>
Co-authored-by: alexghr <alexghr@users.noreply.github.com>
Co-authored-by: PhilWindle <PhilWindle@users.noreply.github.com>
Co-authored-by: spalladino <spalladino@users.noreply.github.com>
Pending Aztec Packages v4 release
---

##
[4.0.1](v4.0.0...v4.0.1)
(2026-02-26)
### � BREAKING CHANGES
* Bump l2 gas per note hash
([#20862](#20862))
* update vks
* update da gas
([#20611](#20611))
* change max private log size to 16 fields
([#20515](#20515))
* pairing points audit
([#20456](#20456))
* include_by_timestamp -> expiration_timestamp
([#20536](#20536))
### Features
* (A-302) add reloadKeystore admin RPC endpoint
([#20325](#20325))
([639368d](639368d))
* (A-451) error codes for RPC calls
([#20560](#20560))
([639368d](639368d))
* (A-514) add API key authentication for admin RPC endpoint
([#20411](#20411))
([639368d](639368d))
* add `aztec profile` command with gate count profiling
([#20695](#20695))
([83ea202](83ea202))
* add API key authentication for admin RPC endpoint
([ff4cf99](ff4cf99))
* add aztec profile flamegraph command
([#20741](#20741))
([83ea202](83ea202))
* add support for signed integers on contract functions
([#20784](#20784))
([fdd0d0d](fdd0d0d))
* adding mempool transactions
([#20679](#20679))
([43caf7c](43caf7c))
* alpha payload
([#20865](#20865))
([7a09c3c](7a09c3c))
* **archiver:** add l2 tips cache
([#20510](#20510))
([639368d](639368d))
* **archiver:** return L2 block data to avoid fetching full block
([#20503](#20503))
([639368d](639368d))
* automatically stop node from signalling
([#20416](#20416))
([639368d](639368d))
* avoid redundant serial zeroing in polynomial allocation
([#20670](#20670))
([bb844d4](bb844d4))
* call syncImmediate without block number during chain prune
([#20717](#20717))
([43caf7c](43caf7c))
* check calldata against emitted hashes
([#20486](#20486))
([43caf7c](43caf7c))
* **ci.aztec-labs.com:** CI cost and metrics tracking
([#20100](#20100))
([639368d](639368d))
* disabling peer scoring for block proposals topic
([#20577](#20577))
([6414d9b](6414d9b))
* dynamically adjust missing txs set
([#20300](#20300))
([dedf440](dedf440))
* Error codes for RPC calls
([43ed6a9](43ed6a9))
* expose blockheader getters
([#20790](#20790))
([fdd0d0d](fdd0d0d))
* Metrics added to the transaction pool
([#20477](#20477))
([639368d](639368d))
* notify slack on merge train PR merge
([#20614](#20614))
([dbbeddc](dbbeddc))
* **p2p:** add download metrics to file store tx source
([#20601](#20601))
([639368d](639368d))
* printing out public contract function debug logs in a tx
([#20749](#20749))
([83ea202](83ea202))
* Re-instate the function optionally to delete all transactions in an
epoch prune
([#20602](#20602))
([dedf440](dedf440))
* reduced hashing
([#20676](#20676))
([bf3191c](bf3191c))
* run low priority eviction rule on chain_pruned
([#20687](#20687))
([43caf7c](43caf7c))
* suspend sentinel during escape hatch
([#20471](#20471))
([639368d](639368d))
* tcmalloc enabled in docker images
([#20644](#20644))
([b87c8ae](b87c8ae))
* trim attestations to the minimum required length
([#20591](#20591))
([43caf7c](43caf7c))
* use native crypto to compute p2p message ID
([#20846](#20846))
([fdd0d0d](fdd0d0d))
* Validate num txs in block proposals
([#20850](#20850))
([f3f5438](f3f5438))
* worker thread wallet
([#20557](#20557))
([639368d](639368d))
* World state history length is now defined in checkpoints
([#20566](#20566))
([639368d](639368d))
### Bug Fixes
* (A-575) prevent checkpoint event spam in L2BlockStream on restart
([#20791](#20791))
([fdd0d0d](fdd0d0d))
* `DelayedPublicMutable` not relying on the guarantee of increasing
timestamps
([#20244](#20244))
([a178034](a178034))
* allow compiling mixed (contract + noir script) aztec project
([#20428](#20428))
([83ea202](83ea202))
* **archiver:** enforce checkpoint boundary on rollbackTo
([#20908](#20908))
([f3f5438](f3f5438))
* async blob
([#20559](#20559))
([639368d](639368d))
* async dispose() lint rule
([#20587](#20587))
([639368d](639368d))
* async world state cleanups
([#20578](#20578))
([639368d](639368d))
* attribute for L1 fee analysis for full blocks
([#20548](#20548))
([63131de](63131de))
* **avm:** alu gadget fuzzer serialisation
([#19115](#19115))
([50e778a](50e778a))
* **aztec-up:** install noir-profiler alongside nargo
([#20896](#20896))
([f3f5438](f3f5438))
* charge 3.6M for epoch verification
([#20765](#20765))
([fdd0d0d](fdd0d0d))
* **ci:** insufficient parallelism in merge-queue-heavy
([#20613](#20613))
([5bfbd67](5bfbd67))
* **ci:** preserve both attempt logs when retrying flaky tests
([#20439](#20439))
([639368d](639368d))
* default pp handling
([#20516](#20516))
([f9431cd](f9431cd))
* do not ignore test artifacts
([#20574](#20574))
([402f438](402f438))
* docs examples lockfile
([#20453](#20453))
([4bf9ddd](4bf9ddd))
* escape hatch snapshots
([#20363](#20363))
([e4712cd](e4712cd))
* **ethereum:** check timeout before consuming nonce in L1TxUtils
([#20501](#20501))
([639368d](639368d))
* **ethereum:** remove viem NonceManager to fix nonce gap after failed
sends
([#20819](#20819))
([fdd0d0d](fdd0d0d))
* evicted transactions could reappear after a node restart
([#20773](#20773))
([fdd0d0d](fdd0d0d))
* Fix checkpoint invalidation test
([#20579](#20579))
([639368d](639368d))
* Fix the epoch long proving test
([#20617](#20617))
([6414d9b](6414d9b))
* flag stripping error
([#20655](#20655))
([b87c8ae](b87c8ae))
* getVotes return empty instead of stale data
([#20756](#20756))
([fdd0d0d](fdd0d0d))
* hodgepodge of small things
([#20720](#20720))
([43caf7c](43caf7c))
* increase waitForTx timeout in epochs_invalidate_block test
([#20603](#20603))
([639368d](639368d))
* limit number of threads when verifying server-side proofs
([#20818](#20818))
([fdd0d0d](fdd0d0d))
* min expiration timestamp instead of assert
([#20554](#20554))
([fa29717](fa29717))
* misc minor contract fixes
([#20423](#20423))
([3a13674](3a13674))
* **node:** sync ws before simulating public calls
([#20499](#20499))
([639368d](639368d))
* **p2p:** fix compress option in file store and enable for tx uploads
([#20605](#20605))
([639368d](639368d))
* **p2p:** wait for GossipSub mesh formation before sending txs in e2e
tests
([#20626](#20626))
([fdd0d0d](fdd0d0d))
* pass log level to AVM simulator
([#20762](#20762))
([fdd0d0d](fdd0d0d))
* pxe native prover log level
([#20724](#20724))
([fdd0d0d](fdd0d0d))
* Reduce tx hash conversions inside tx pool
([#20829](#20829))
([fdd0d0d](fdd0d0d))
* respecting MAX_RPC_LEN limit in getAllLogsByTags
([#20543](#20543))
([c2475bd](c2475bd))
* separate rejected and aborted proving jobs
([#20777](#20777))
([fdd0d0d](fdd0d0d))
* Set Aztec slot duration as a multiple of the Ethereum slot duration
([#20608](#20608))
([dedf440](dedf440))
* set PXE sync chain tip to proposed for scenario bot
([#20530](#20530))
([639368d](639368d))
* skip default pp in sol aggregation
([#20521](#20521))
([f9431cd](f9431cd))
* stringify all bigints in pino-logger
([#20303](#20303))
([639368d](639368d))
* sync world state before forking in simulatePublicCalls
([#20544](#20544))
([f3420e0](f3420e0))
* track last seen nonce in case of stale fallback L1 RPC node
([#20855](#20855))
([83ea202](83ea202))
* **txe:** committing after txs
([#20714](#20714))
([83ea202](83ea202))
* underflow in snapshot synch
([#20780](#20780))
([fdd0d0d](fdd0d0d))
* Use async poseidon
([#20826](#20826))
([fdd0d0d](fdd0d0d))
* use ci3_labels_to_env.sh for ci-external label
([#20597](#20597))
([3efb1d9](3efb1d9))
* write pointers for environ_get and environ_sizes_get functions
([#20902](#20902))
([f3f5438](f3f5438))
* yolo debugging tweaks
([0a9d6e0](0a9d6e0))
* yolo some fd cleanup, maybe stop hangs
([43d292c](43d292c))
### Miscellaneous
* include_by_timestamp -&gt; expiration_timestamp
([#20536](#20536))
([44a33a1](44a33a1))
* update vks
([4d653dd](4d653dd))
### Documentation
* document RevertCodeEnum phases and add 120-char line width rule
([#20751](#20751))
([83ea202](83ea202))
* fix avm docs - l2 gas is not the same as mana
([#20565](#20565))
([50e778a](50e778a))
* minor clarification
([#20788](#20788))
([fdd0d0d](fdd0d0d))
* simulator readme typos
([#19701](#19701))
([50e778a](50e778a))
* some tail circuit doc comments
([#20449](#20449))
([fd509a3](fd509a3))
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
BEGIN_COMMIT_OVERRIDE
fix: handle scientific notation in bigintConfigHelper (#20929)
END_COMMIT_OVERRIDE

Co-authored-by: AztecBot <AztecBot@users.noreply.github.com>
Pending Aztec Packages v4 release
---

##
[4.0.1](v4.0.0...v4.0.1)
(2026-02-26)
### � BREAKING CHANGES
* Bump l2 gas per note hash
([#20862](#20862))
* update vks
* update da gas
([#20611](#20611))
* change max private log size to 16 fields
([#20515](#20515))
* pairing points audit
([#20456](#20456))
* include_by_timestamp -> expiration_timestamp
([#20536](#20536))
### Features
* (A-302) add reloadKeystore admin RPC endpoint
([#20325](#20325))
([639368d](639368d))
* (A-451) error codes for RPC calls
([#20560](#20560))
([639368d](639368d))
* (A-514) add API key authentication for admin RPC endpoint
([#20411](#20411))
([639368d](639368d))
* add `aztec profile` command with gate count profiling
([#20695](#20695))
([83ea202](83ea202))
* add API key authentication for admin RPC endpoint
([ff4cf99](ff4cf99))
* add aztec profile flamegraph command
([#20741](#20741))
([83ea202](83ea202))
* add support for signed integers on contract functions
([#20784](#20784))
([fdd0d0d](fdd0d0d))
* adding mempool transactions
([#20679](#20679))
([43caf7c](43caf7c))
* alpha payload
([#20865](#20865))
([7a09c3c](7a09c3c))
* **archiver:** add l2 tips cache
([#20510](#20510))
([639368d](639368d))
* **archiver:** return L2 block data to avoid fetching full block
([#20503](#20503))
([639368d](639368d))
* automatically stop node from signalling
([#20416](#20416))
([639368d](639368d))
* avoid redundant serial zeroing in polynomial allocation
([#20670](#20670))
([bb844d4](bb844d4))
* call syncImmediate without block number during chain prune
([#20717](#20717))
([43caf7c](43caf7c))
* check calldata against emitted hashes
([#20486](#20486))
([43caf7c](43caf7c))
* **ci.aztec-labs.com:** CI cost and metrics tracking
([#20100](#20100))
([639368d](639368d))
* disabling peer scoring for block proposals topic
([#20577](#20577))
([6414d9b](6414d9b))
* dynamically adjust missing txs set
([#20300](#20300))
([dedf440](dedf440))
* Error codes for RPC calls
([43ed6a9](43ed6a9))
* expose blockheader getters
([#20790](#20790))
([fdd0d0d](fdd0d0d))
* Metrics added to the transaction pool
([#20477](#20477))
([639368d](639368d))
* notify slack on merge train PR merge
([#20614](#20614))
([dbbeddc](dbbeddc))
* **p2p:** add download metrics to file store tx source
([#20601](#20601))
([639368d](639368d))
* printing out public contract function debug logs in a tx
([#20749](#20749))
([83ea202](83ea202))
* Re-instate the function optionally to delete all transactions in an
epoch prune
([#20602](#20602))
([dedf440](dedf440))
* reduced hashing
([#20676](#20676))
([bf3191c](bf3191c))
* run low priority eviction rule on chain_pruned
([#20687](#20687))
([43caf7c](43caf7c))
* suspend sentinel during escape hatch
([#20471](#20471))
([639368d](639368d))
* tcmalloc enabled in docker images
([#20644](#20644))
([b87c8ae](b87c8ae))
* trim attestations to the minimum required length
([#20591](#20591))
([43caf7c](43caf7c))
* use native crypto to compute p2p message ID
([#20846](#20846))
([fdd0d0d](fdd0d0d))
* Validate num txs in block proposals
([#20850](#20850))
([f3f5438](f3f5438))
* worker thread wallet
([#20557](#20557))
([639368d](639368d))
* World state history length is now defined in checkpoints
([#20566](#20566))
([639368d](639368d))
### Bug Fixes
* (A-575) prevent checkpoint event spam in L2BlockStream on restart
([#20791](#20791))
([fdd0d0d](fdd0d0d))
* `DelayedPublicMutable` not relying on the guarantee of increasing
timestamps
([#20244](#20244))
([a178034](a178034))
* allow compiling mixed (contract + noir script) aztec project
([#20428](#20428))
([83ea202](83ea202))
* **archiver:** enforce checkpoint boundary on rollbackTo
([#20908](#20908))
([f3f5438](f3f5438))
* async blob
([#20559](#20559))
([639368d](639368d))
* async dispose() lint rule
([#20587](#20587))
([639368d](639368d))
* async world state cleanups
([#20578](#20578))
([639368d](639368d))
* attribute for L1 fee analysis for full blocks
([#20548](#20548))
([63131de](63131de))
* **avm:** alu gadget fuzzer serialisation
([#19115](#19115))
([50e778a](50e778a))
* **aztec-up:** install noir-profiler alongside nargo
([#20896](#20896))
([f3f5438](f3f5438))
* charge 3.6M for epoch verification
([#20765](#20765))
([fdd0d0d](fdd0d0d))
* **ci:** insufficient parallelism in merge-queue-heavy
([#20613](#20613))
([5bfbd67](5bfbd67))
* **ci:** preserve both attempt logs when retrying flaky tests
([#20439](#20439))
([639368d](639368d))
* default pp handling
([#20516](#20516))
([f9431cd](f9431cd))
* do not ignore test artifacts
([#20574](#20574))
([402f438](402f438))
* docs examples lockfile
([#20453](#20453))
([4bf9ddd](4bf9ddd))
* escape hatch snapshots
([#20363](#20363))
([e4712cd](e4712cd))
* **ethereum:** check timeout before consuming nonce in L1TxUtils
([#20501](#20501))
([639368d](639368d))
* **ethereum:** remove viem NonceManager to fix nonce gap after failed
sends
([#20819](#20819))
([fdd0d0d](fdd0d0d))
* evicted transactions could reappear after a node restart
([#20773](#20773))
([fdd0d0d](fdd0d0d))
* Fix checkpoint invalidation test
([#20579](#20579))
([639368d](639368d))
* Fix the epoch long proving test
([#20617](#20617))
([6414d9b](6414d9b))
* flag stripping error
([#20655](#20655))
([b87c8ae](b87c8ae))
* getVotes return empty instead of stale data
([#20756](#20756))
([fdd0d0d](fdd0d0d))
* hodgepodge of small things
([#20720](#20720))
([43caf7c](43caf7c))
* increase waitForTx timeout in epochs_invalidate_block test
([#20603](#20603))
([639368d](639368d))
* limit number of threads when verifying server-side proofs
([#20818](#20818))
([fdd0d0d](fdd0d0d))
* min expiration timestamp instead of assert
([#20554](#20554))
([fa29717](fa29717))
* misc minor contract fixes
([#20423](#20423))
([3a13674](3a13674))
* **node:** sync ws before simulating public calls
([#20499](#20499))
([639368d](639368d))
* **p2p:** fix compress option in file store and enable for tx uploads
([#20605](#20605))
([639368d](639368d))
* **p2p:** wait for GossipSub mesh formation before sending txs in e2e
tests
([#20626](#20626))
([fdd0d0d](fdd0d0d))
* pass log level to AVM simulator
([#20762](#20762))
([fdd0d0d](fdd0d0d))
* pxe native prover log level
([#20724](#20724))
([fdd0d0d](fdd0d0d))
* Reduce tx hash conversions inside tx pool
([#20829](#20829))
([fdd0d0d](fdd0d0d))
* respecting MAX_RPC_LEN limit in getAllLogsByTags
([#20543](#20543))
([c2475bd](c2475bd))
* separate rejected and aborted proving jobs
([#20777](#20777))
([fdd0d0d](fdd0d0d))
* Set Aztec slot duration as a multiple of the Ethereum slot duration
([#20608](#20608))
([dedf440](dedf440))
* set PXE sync chain tip to proposed for scenario bot
([#20530](#20530))
([639368d](639368d))
* skip default pp in sol aggregation
([#20521](#20521))
([f9431cd](f9431cd))
* stringify all bigints in pino-logger
([#20303](#20303))
([639368d](639368d))
* sync world state before forking in simulatePublicCalls
([#20544](#20544))
([f3420e0](f3420e0))
* track last seen nonce in case of stale fallback L1 RPC node
([#20855](#20855))
([83ea202](83ea202))
* **txe:** committing after txs
([#20714](#20714))
([83ea202](83ea202))
* underflow in snapshot synch
([#20780](#20780))
([fdd0d0d](fdd0d0d))
* Use async poseidon
([#20826](#20826))
([fdd0d0d](fdd0d0d))
* use ci3_labels_to_env.sh for ci-external label
([#20597](#20597))
([3efb1d9](3efb1d9))
* write pointers for environ_get and environ_sizes_get functions
([#20902](#20902))
([f3f5438](f3f5438))
* yolo debugging tweaks
([0a9d6e0](0a9d6e0))
* yolo some fd cleanup, maybe stop hangs
([43d292c](43d292c))
### Miscellaneous
* include_by_timestamp -&gt; expiration_timestamp
([#20536](#20536))
([44a33a1](44a33a1))
* update vks
([4d653dd](4d653dd))
### Documentation
* document RevertCodeEnum phases and add 120-char line width rule
([#20751](#20751))
([83ea202](83ea202))
* fix avm docs - l2 gas is not the same as mana
([#20565](#20565))
([50e778a](50e778a))
* minor clarification
([#20788](#20788))
([fdd0d0d](fdd0d0d))
* simulator readme typos
([#19701](#19701))
([50e778a](50e778a))
* some tail circuit doc comments
([#20449](#20449))
([fd509a3](fd509a3))
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Closes A-547

## Summary

- Before calling `getL1Config()`, the node now compares its local
genesis archive root against the canonical rollup's via `archiveAt(0)`.
- If the roots don't match (e.g. during L1 contract upgrades where the
old rollup ABI is incompatible), the node enters **standby mode**
instead of crashing.
- In standby mode, a lightweight HTTP server is started for K8s liveness
probes, and the node polls every 10 minutes until a compatible rollup
becomes canonical.
- When `rollupVersion` is not explicitly configured (`undefined`), it
now falls back to `'canonical'` instead of passing `0` to the registry.

### Tested against testnet (incompatible rollup):

```
Genesis archive root: 0x2727683df35594b1f073a681532520056ca8a775398c8b5a94574c67ef1ce6de
Genesis root mismatch: expected 0x2727683df35594b1f073a681532520056ca8a775398c8b5a94574c67ef1ce6de, got 0x0ae6138310f7b877b6c68856451eddec0873fb63f9033931cedcdc46815729e1 from rollup at 0x66a41cb55f9a1e38a45a2ac8685f12a61fbfab77. Entering standby mode. Will poll every 10s for a compatible rollup...
Standby status server listening on port 8080
Still waiting. Rollup at 0x66a41cb55f9a1e38a45a2ac8685f12a61fbfab77 has genesis root 0x0ae6138310f7b877b6c68856451eddec0873fb63f9033931cedcdc46815729e1.
```

```
$ curl http://localhost:8080/status
OK
```

### Untested code paths

- Run against a compatible network: verify normal startup without
entering standby
- Upgrade the rollup after node enters standby: verify node closes the
server and exits the loop.
 

## Test plan

- Run `aztec start --node --archiver --network testnet` against an
incompatible rollup: verify standby mode with health check responding OK
- Run against a compatible network: verify normal startup without
entering standby
- Ctrl+C during standby: verify clean exit
Pending Aztec Packages v4 release
---

##
[4.0.1](v4.0.0...v4.0.1)
(2026-02-26)
### � BREAKING CHANGES
* Bump l2 gas per note hash
([#20862](#20862))
* update vks
* update da gas
([#20611](#20611))
* change max private log size to 16 fields
([#20515](#20515))
* pairing points audit
([#20456](#20456))
* include_by_timestamp -> expiration_timestamp
([#20536](#20536))
### Features
* (A-302) add reloadKeystore admin RPC endpoint
([#20325](#20325))
([639368d](639368d))
* (A-451) error codes for RPC calls
([#20560](#20560))
([639368d](639368d))
* (A-514) add API key authentication for admin RPC endpoint
([#20411](#20411))
([639368d](639368d))
* add `aztec profile` command with gate count profiling
([#20695](#20695))
([83ea202](83ea202))
* add API key authentication for admin RPC endpoint
([ff4cf99](ff4cf99))
* add aztec profile flamegraph command
([#20741](#20741))
([83ea202](83ea202))
* add support for signed integers on contract functions
([#20784](#20784))
([fdd0d0d](fdd0d0d))
* adding mempool transactions
([#20679](#20679))
([43caf7c](43caf7c))
* alpha payload
([#20865](#20865))
([7a09c3c](7a09c3c))
* **archiver:** add l2 tips cache
([#20510](#20510))
([639368d](639368d))
* **archiver:** return L2 block data to avoid fetching full block
([#20503](#20503))
([639368d](639368d))
* automatically stop node from signalling
([#20416](#20416))
([639368d](639368d))
* avoid redundant serial zeroing in polynomial allocation
([#20670](#20670))
([bb844d4](bb844d4))
* call syncImmediate without block number during chain prune
([#20717](#20717))
([43caf7c](43caf7c))
* check calldata against emitted hashes
([#20486](#20486))
([43caf7c](43caf7c))
* **ci.aztec-labs.com:** CI cost and metrics tracking
([#20100](#20100))
([639368d](639368d))
* disabling peer scoring for block proposals topic
([#20577](#20577))
([6414d9b](6414d9b))
* dynamically adjust missing txs set
([#20300](#20300))
([dedf440](dedf440))
* Error codes for RPC calls
([43ed6a9](43ed6a9))
* expose blockheader getters
([#20790](#20790))
([fdd0d0d](fdd0d0d))
* Metrics added to the transaction pool
([#20477](#20477))
([639368d](639368d))
* notify slack on merge train PR merge
([#20614](#20614))
([dbbeddc](dbbeddc))
* **p2p:** add download metrics to file store tx source
([#20601](#20601))
([639368d](639368d))
* printing out public contract function debug logs in a tx
([#20749](#20749))
([83ea202](83ea202))
* Re-instate the function optionally to delete all transactions in an
epoch prune
([#20602](#20602))
([dedf440](dedf440))
* reduced hashing
([#20676](#20676))
([bf3191c](bf3191c))
* run low priority eviction rule on chain_pruned
([#20687](#20687))
([43caf7c](43caf7c))
* suspend sentinel during escape hatch
([#20471](#20471))
([639368d](639368d))
* tcmalloc enabled in docker images
([#20644](#20644))
([b87c8ae](b87c8ae))
* trim attestations to the minimum required length
([#20591](#20591))
([43caf7c](43caf7c))
* use native crypto to compute p2p message ID
([#20846](#20846))
([fdd0d0d](fdd0d0d))
* Validate num txs in block proposals
([#20850](#20850))
([f3f5438](f3f5438))
* worker thread wallet
([#20557](#20557))
([639368d](639368d))
* World state history length is now defined in checkpoints
([#20566](#20566))
([639368d](639368d))
### Bug Fixes
* (A-575) prevent checkpoint event spam in L2BlockStream on restart
([#20791](#20791))
([fdd0d0d](fdd0d0d))
* `DelayedPublicMutable` not relying on the guarantee of increasing
timestamps
([#20244](#20244))
([a178034](a178034))
* allow compiling mixed (contract + noir script) aztec project
([#20428](#20428))
([83ea202](83ea202))
* **archiver:** enforce checkpoint boundary on rollbackTo
([#20908](#20908))
([f3f5438](f3f5438))
* async blob
([#20559](#20559))
([639368d](639368d))
* async dispose() lint rule
([#20587](#20587))
([639368d](639368d))
* async world state cleanups
([#20578](#20578))
([639368d](639368d))
* attribute for L1 fee analysis for full blocks
([#20548](#20548))
([63131de](63131de))
* **avm:** alu gadget fuzzer serialisation
([#19115](#19115))
([50e778a](50e778a))
* **aztec-up:** install noir-profiler alongside nargo
([#20896](#20896))
([f3f5438](f3f5438))
* charge 3.6M for epoch verification
([#20765](#20765))
([fdd0d0d](fdd0d0d))
* **ci:** insufficient parallelism in merge-queue-heavy
([#20613](#20613))
([5bfbd67](5bfbd67))
* **ci:** preserve both attempt logs when retrying flaky tests
([#20439](#20439))
([639368d](639368d))
* default pp handling
([#20516](#20516))
([f9431cd](f9431cd))
* do not ignore test artifacts
([#20574](#20574))
([402f438](402f438))
* docs examples lockfile
([#20453](#20453))
([4bf9ddd](4bf9ddd))
* escape hatch snapshots
([#20363](#20363))
([e4712cd](e4712cd))
* **ethereum:** check timeout before consuming nonce in L1TxUtils
([#20501](#20501))
([639368d](639368d))
* **ethereum:** remove viem NonceManager to fix nonce gap after failed
sends
([#20819](#20819))
([fdd0d0d](fdd0d0d))
* evicted transactions could reappear after a node restart
([#20773](#20773))
([fdd0d0d](fdd0d0d))
* Fix checkpoint invalidation test
([#20579](#20579))
([639368d](639368d))
* Fix the epoch long proving test
([#20617](#20617))
([6414d9b](6414d9b))
* flag stripping error
([#20655](#20655))
([b87c8ae](b87c8ae))
* getVotes return empty instead of stale data
([#20756](#20756))
([fdd0d0d](fdd0d0d))
* hodgepodge of small things
([#20720](#20720))
([43caf7c](43caf7c))
* increase waitForTx timeout in epochs_invalidate_block test
([#20603](#20603))
([639368d](639368d))
* limit number of threads when verifying server-side proofs
([#20818](#20818))
([fdd0d0d](fdd0d0d))
* min expiration timestamp instead of assert
([#20554](#20554))
([fa29717](fa29717))
* misc minor contract fixes
([#20423](#20423))
([3a13674](3a13674))
* **node:** sync ws before simulating public calls
([#20499](#20499))
([639368d](639368d))
* **p2p:** fix compress option in file store and enable for tx uploads
([#20605](#20605))
([639368d](639368d))
* **p2p:** wait for GossipSub mesh formation before sending txs in e2e
tests
([#20626](#20626))
([fdd0d0d](fdd0d0d))
* pass log level to AVM simulator
([#20762](#20762))
([fdd0d0d](fdd0d0d))
* pxe native prover log level
([#20724](#20724))
([fdd0d0d](fdd0d0d))
* Reduce tx hash conversions inside tx pool
([#20829](#20829))
([fdd0d0d](fdd0d0d))
* respecting MAX_RPC_LEN limit in getAllLogsByTags
([#20543](#20543))
([c2475bd](c2475bd))
* separate rejected and aborted proving jobs
([#20777](#20777))
([fdd0d0d](fdd0d0d))
* Set Aztec slot duration as a multiple of the Ethereum slot duration
([#20608](#20608))
([dedf440](dedf440))
* set PXE sync chain tip to proposed for scenario bot
([#20530](#20530))
([639368d](639368d))
* skip default pp in sol aggregation
([#20521](#20521))
([f9431cd](f9431cd))
* stringify all bigints in pino-logger
([#20303](#20303))
([639368d](639368d))
* sync world state before forking in simulatePublicCalls
([#20544](#20544))
([f3420e0](f3420e0))
* track last seen nonce in case of stale fallback L1 RPC node
([#20855](#20855))
([83ea202](83ea202))
* **txe:** committing after txs
([#20714](#20714))
([83ea202](83ea202))
* underflow in snapshot synch
([#20780](#20780))
([fdd0d0d](fdd0d0d))
* Use async poseidon
([#20826](#20826))
([fdd0d0d](fdd0d0d))
* use ci3_labels_to_env.sh for ci-external label
([#20597](#20597))
([3efb1d9](3efb1d9))
* write pointers for environ_get and environ_sizes_get functions
([#20902](#20902))
([f3f5438](f3f5438))
* yolo debugging tweaks
([0a9d6e0](0a9d6e0))
* yolo some fd cleanup, maybe stop hangs
([43d292c](43d292c))
### Miscellaneous
* include_by_timestamp -&gt; expiration_timestamp
([#20536](#20536))
([44a33a1](44a33a1))
* update vks
([4d653dd](4d653dd))
### Documentation
* document RevertCodeEnum phases and add 120-char line width rule
([#20751](#20751))
([83ea202](83ea202))
* fix avm docs - l2 gas is not the same as mana
([#20565](#20565))
([50e778a](50e778a))
* minor clarification
([#20788](#20788))
([fdd0d0d](fdd0d0d))
* simulator readme typos
([#19701](#19701))
([50e778a](50e778a))
* some tail circuit doc comments
([#20449](#20449))
([fd509a3](fd509a3))
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
BEGIN_COMMIT_OVERRIDE
fix: logging of class instances (#20807)
chore: deps (#20910)
refactor(aztec-node): skip unnecessary subsystems in prover-only mode
and remove P2PClientType enum (#20848)
chore: Configs for next-net, testnet etc (#20803)
docs: add docs on state vars docs re packing in structs (#20747)
END_COMMIT_OVERRIDE

---------

Co-authored-by: alexghr <alexghr@users.noreply.github.com>
Co-authored-by: PhilWindle <PhilWindle@users.noreply.github.com>
Co-authored-by: aminsammara <aminsammara@users.noreply.github.com>
Co-authored-by: nventuro <nventuro@users.noreply.github.com>
Pending Aztec Packages v4 release
---

##
[4.0.1](v4.0.0...v4.0.1)
(2026-02-26)
### � BREAKING CHANGES
* Bump l2 gas per note hash
([#20862](#20862))
* update vks
* update da gas
([#20611](#20611))
* change max private log size to 16 fields
([#20515](#20515))
* pairing points audit
([#20456](#20456))
* include_by_timestamp -> expiration_timestamp
([#20536](#20536))
### Features
* (A-302) add reloadKeystore admin RPC endpoint
([#20325](#20325))
([639368d](639368d))
* (A-451) error codes for RPC calls
([#20560](#20560))
([639368d](639368d))
* (A-514) add API key authentication for admin RPC endpoint
([#20411](#20411))
([639368d](639368d))
* add `aztec profile` command with gate count profiling
([#20695](#20695))
([83ea202](83ea202))
* add API key authentication for admin RPC endpoint
([ff4cf99](ff4cf99))
* add aztec profile flamegraph command
([#20741](#20741))
([83ea202](83ea202))
* add support for signed integers on contract functions
([#20784](#20784))
([fdd0d0d](fdd0d0d))
* adding mempool transactions
([#20679](#20679))
([43caf7c](43caf7c))
* alpha payload
([#20865](#20865))
([7a09c3c](7a09c3c))
* **archiver:** add l2 tips cache
([#20510](#20510))
([639368d](639368d))
* **archiver:** return L2 block data to avoid fetching full block
([#20503](#20503))
([639368d](639368d))
* automatically stop node from signalling
([#20416](#20416))
([639368d](639368d))
* avoid redundant serial zeroing in polynomial allocation
([#20670](#20670))
([bb844d4](bb844d4))
* call syncImmediate without block number during chain prune
([#20717](#20717))
([43caf7c](43caf7c))
* check calldata against emitted hashes
([#20486](#20486))
([43caf7c](43caf7c))
* **ci.aztec-labs.com:** CI cost and metrics tracking
([#20100](#20100))
([639368d](639368d))
* disabling peer scoring for block proposals topic
([#20577](#20577))
([6414d9b](6414d9b))
* dynamically adjust missing txs set
([#20300](#20300))
([dedf440](dedf440))
* Error codes for RPC calls
([43ed6a9](43ed6a9))
* expose blockheader getters
([#20790](#20790))
([fdd0d0d](fdd0d0d))
* Metrics added to the transaction pool
([#20477](#20477))
([639368d](639368d))
* notify slack on merge train PR merge
([#20614](#20614))
([dbbeddc](dbbeddc))
* **p2p:** add download metrics to file store tx source
([#20601](#20601))
([639368d](639368d))
* printing out public contract function debug logs in a tx
([#20749](#20749))
([83ea202](83ea202))
* Re-instate the function optionally to delete all transactions in an
epoch prune
([#20602](#20602))
([dedf440](dedf440))
* reduced hashing
([#20676](#20676))
([bf3191c](bf3191c))
* run low priority eviction rule on chain_pruned
([#20687](#20687))
([43caf7c](43caf7c))
* suspend sentinel during escape hatch
([#20471](#20471))
([639368d](639368d))
* tcmalloc enabled in docker images
([#20644](#20644))
([b87c8ae](b87c8ae))
* trim attestations to the minimum required length
([#20591](#20591))
([43caf7c](43caf7c))
* use native crypto to compute p2p message ID
([#20846](#20846))
([fdd0d0d](fdd0d0d))
* Validate num txs in block proposals
([#20850](#20850))
([f3f5438](f3f5438))
* worker thread wallet
([#20557](#20557))
([639368d](639368d))
* World state history length is now defined in checkpoints
([#20566](#20566))
([639368d](639368d))
### Bug Fixes
* (A-575) prevent checkpoint event spam in L2BlockStream on restart
([#20791](#20791))
([fdd0d0d](fdd0d0d))
* `DelayedPublicMutable` not relying on the guarantee of increasing
timestamps
([#20244](#20244))
([a178034](a178034))
* allow compiling mixed (contract + noir script) aztec project
([#20428](#20428))
([83ea202](83ea202))
* **archiver:** enforce checkpoint boundary on rollbackTo
([#20908](#20908))
([f3f5438](f3f5438))
* async blob
([#20559](#20559))
([639368d](639368d))
* async dispose() lint rule
([#20587](#20587))
([639368d](639368d))
* async world state cleanups
([#20578](#20578))
([639368d](639368d))
* attribute for L1 fee analysis for full blocks
([#20548](#20548))
([63131de](63131de))
* **avm:** alu gadget fuzzer serialisation
([#19115](#19115))
([50e778a](50e778a))
* **aztec-up:** install noir-profiler alongside nargo
([#20896](#20896))
([f3f5438](f3f5438))
* charge 3.6M for epoch verification
([#20765](#20765))
([fdd0d0d](fdd0d0d))
* **ci:** insufficient parallelism in merge-queue-heavy
([#20613](#20613))
([5bfbd67](5bfbd67))
* **ci:** preserve both attempt logs when retrying flaky tests
([#20439](#20439))
([639368d](639368d))
* default pp handling
([#20516](#20516))
([f9431cd](f9431cd))
* do not ignore test artifacts
([#20574](#20574))
([402f438](402f438))
* docs examples lockfile
([#20453](#20453))
([4bf9ddd](4bf9ddd))
* escape hatch snapshots
([#20363](#20363))
([e4712cd](e4712cd))
* **ethereum:** check timeout before consuming nonce in L1TxUtils
([#20501](#20501))
([639368d](639368d))
* **ethereum:** remove viem NonceManager to fix nonce gap after failed
sends
([#20819](#20819))
([fdd0d0d](fdd0d0d))
* evicted transactions could reappear after a node restart
([#20773](#20773))
([fdd0d0d](fdd0d0d))
* Fix checkpoint invalidation test
([#20579](#20579))
([639368d](639368d))
* Fix the epoch long proving test
([#20617](#20617))
([6414d9b](6414d9b))
* flag stripping error
([#20655](#20655))
([b87c8ae](b87c8ae))
* getVotes return empty instead of stale data
([#20756](#20756))
([fdd0d0d](fdd0d0d))
* hodgepodge of small things
([#20720](#20720))
([43caf7c](43caf7c))
* increase waitForTx timeout in epochs_invalidate_block test
([#20603](#20603))
([639368d](639368d))
* limit number of threads when verifying server-side proofs
([#20818](#20818))
([fdd0d0d](fdd0d0d))
* min expiration timestamp instead of assert
([#20554](#20554))
([fa29717](fa29717))
* misc minor contract fixes
([#20423](#20423))
([3a13674](3a13674))
* **node:** sync ws before simulating public calls
([#20499](#20499))
([639368d](639368d))
* **p2p:** fix compress option in file store and enable for tx uploads
([#20605](#20605))
([639368d](639368d))
* **p2p:** wait for GossipSub mesh formation before sending txs in e2e
tests
([#20626](#20626))
([fdd0d0d](fdd0d0d))
* pass log level to AVM simulator
([#20762](#20762))
([fdd0d0d](fdd0d0d))
* pxe native prover log level
([#20724](#20724))
([fdd0d0d](fdd0d0d))
* Reduce tx hash conversions inside tx pool
([#20829](#20829))
([fdd0d0d](fdd0d0d))
* respecting MAX_RPC_LEN limit in getAllLogsByTags
([#20543](#20543))
([c2475bd](c2475bd))
* separate rejected and aborted proving jobs
([#20777](#20777))
([fdd0d0d](fdd0d0d))
* Set Aztec slot duration as a multiple of the Ethereum slot duration
([#20608](#20608))
([dedf440](dedf440))
* set PXE sync chain tip to proposed for scenario bot
([#20530](#20530))
([639368d](639368d))
* skip default pp in sol aggregation
([#20521](#20521))
([f9431cd](f9431cd))
* stringify all bigints in pino-logger
([#20303](#20303))
([639368d](639368d))
* sync world state before forking in simulatePublicCalls
([#20544](#20544))
([f3420e0](f3420e0))
* track last seen nonce in case of stale fallback L1 RPC node
([#20855](#20855))
([83ea202](83ea202))
* **txe:** committing after txs
([#20714](#20714))
([83ea202](83ea202))
* underflow in snapshot synch
([#20780](#20780))
([fdd0d0d](fdd0d0d))
* Use async poseidon
([#20826](#20826))
([fdd0d0d](fdd0d0d))
* use ci3_labels_to_env.sh for ci-external label
([#20597](#20597))
([3efb1d9](3efb1d9))
* write pointers for environ_get and environ_sizes_get functions
([#20902](#20902))
([f3f5438](f3f5438))
* yolo debugging tweaks
([0a9d6e0](0a9d6e0))
* yolo some fd cleanup, maybe stop hangs
([43d292c](43d292c))
### Miscellaneous
* include_by_timestamp -&gt; expiration_timestamp
([#20536](#20536))
([44a33a1](44a33a1))
* update vks
([4d653dd](4d653dd))
### Documentation
* document RevertCodeEnum phases and add 120-char line width rule
([#20751](#20751))
([83ea202](83ea202))
* fix avm docs - l2 gas is not the same as mana
([#20565](#20565))
([50e778a](50e778a))
* minor clarification
([#20788](#20788))
([fdd0d0d](fdd0d0d))
* simulator readme typos
([#19701](#19701))
([50e778a](50e778a))
* some tail circuit doc comments
([#20449](#20449))
([fd509a3](fd509a3))
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
BEGIN_COMMIT_OVERRIDE
feat: add pinned-build support for noir protocol circuit folders
(#20961)
END_COMMIT_OVERRIDE

Co-authored-by: AztecBot <AztecBot@users.noreply.github.com>
…ngth (#20840)

## Summary

- Fixes index-out-of-bounds when using notes with arrays by accounting for AES PKCS#7 padding expansion (16 bytes) when computing `MESSAGE_PLAINTEXT_LEN`
- Updates `MAX_NOTE_PACKED_LEN` (9 -> 8) and `MAX_EVENT_SERIALIZED_LEN` (11 -> 10) in both Noir and TypeScript to match the corrected capacity
- Adds boundary tests for max-size and oversized messages, notes, and encryption plaintexts

Fixes F-336
Fixes #20737
This frees up one byte of capacity, but more importantly it reduces the leakage in the logs as they'll no longer contain a byte that is either 0 or 1.
## Summary
- Increases the mainnet `AZTEC_LOCAL_EJECTION_THRESHOLD` from 162,000 TST to 190,000 TST in `network-defaults.yml`.

## Test plan
- [ ] Verify generated config files reflect the updated threshold after regeneration
@AztecBot AztecBot added the claudebox Owned by claudebox. it can push to this PR. label Feb 28, 2026
Adds a mechanism to pin protocol contract artifacts via
pinned-protocol-contracts.tar.gz, mirroring the existing pinned-build
support in noir-protocol-circuits.

When the tarball is present, the build extracts pre-compiled protocol
contract artifacts and skips their compilation. This prevents changes
to aztec-nr from altering the protocol contracts hash, which must
remain stable for mainnet compatibility.

Usage: ./bootstrap.sh pin-protocol-contracts
This builds only the protocol contracts and creates the tarball.
Commit pinned-protocol-contracts.tar.gz to freeze the artifacts.
@AztecBot AztecBot force-pushed the claudebox/412ab8f570f945d9-2 branch from f9b5532 to db55862 Compare February 28, 2026 01:02
@AztecBot AztecBot closed this Feb 28, 2026
@ludamad ludamad deleted the claudebox/412ab8f570f945d9-2 branch February 28, 2026 01:06
@ludamad ludamad restored the claudebox/412ab8f570f945d9-2 branch February 28, 2026 01:06
@AztecProtocol AztecProtocol deleted a comment from AztecBot Feb 28, 2026
@ludamad ludamad deleted the claudebox/412ab8f570f945d9-2 branch February 28, 2026 01:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

claudebox Owned by claudebox. it can push to this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants