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