feat: use native crypto to compute p2p message ID#20846
Merged
alexghr merged 1 commit intomerge-train/spartanfrom Feb 25, 2026
Merged
feat: use native crypto to compute p2p message ID#20846alexghr merged 1 commit intomerge-train/spartanfrom
alexghr merged 1 commit intomerge-train/spartanfrom
Conversation
9f5e000 to
232b1a9
Compare
232b1a9 to
ccf3d77
Compare
Maddiaa0
approved these changes
Feb 25, 2026
ccf3d77 to
ba7a748
Compare
…edup Replace the pure-JS hash.js SHA-256 implementation with node:crypto's native OpenSSL-backed createHash in the gossipsub message ID function. Benchmarks show this reduces hashing time from ~47ms to ~945us for 1MB messages. Also adds a benchmark test comparing hash.js, node:crypto, crypto.subtle, and xxhash implementations. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ba7a748 to
ef9de6d
Compare
Collaborator
Flakey Tests🤖 says: This CI run detected 3 tests that failed, but were tolerated due to a .test_patterns.yml entry. |
AztecBot
pushed a commit
that referenced
this pull request
Feb 25, 2026
Replace aztec/foundation for native sha256. The native sha256 implementations are orders of magnitude faster than hash.js (which is not surprising). I have used the web-crypto subtle.digest since it's async. Fix A-583 <details> <summary> Benchmark run on mainframe</summary> | Function | CONCURRENCY | Size (KB) | Avg (ms) | P50 (ms) | P99 (ms) | TOTAL (ms) | |----------|---|-----------|----------|----------|----------|------------| | hashJs.sha256 x20 | 1 | 1 | 2.65 | 1 | 34 | 39.544517 | | crypto.createHash x20 | 1 | 1 | 1 | 1 | 1 | 0.520618 | | globalThis.crypto.subtle.digest x20 | 1 | 1 | 1.75 | 1 | 16 | 18.246695 | | hashJs.sha256 x20 | 4 | 1 | 1 | 1 | 1 | 1.176059 | | crypto.createHash x20 | 4 | 1 | 1 | 1 | 1 | 0.261084 | | globalThis.crypto.subtle.digest x20 | 4 | 1 | 1 | 1 | 1 | 0.734331 | | hashJs.sha256 x20 | 1 | 64 | 2.25 | 2 | 3 | 56.111665 | | crypto.createHash x20 | 1 | 64 | 1 | 1 | 1 | 0.982696 | | globalThis.crypto.subtle.digest x20 | 1 | 64 | 1 | 1 | 1 | 1.911511 | | hashJs.sha256 x20 | 4 | 64 | 2.25 | 2 | 7 | 58.449153 | | crypto.createHash x20 | 4 | 64 | 1 | 1 | 1 | 1.031626 | | globalThis.crypto.subtle.digest x20 | 4 | 64 | 1 | 1 | 1 | 0.994706 | | hashJs.sha256 x20 | 1 | 512 | 22.7 | 21 | 27 | 464.974449 | | crypto.createHash x20 | 1 | 512 | 1 | 1 | 1 | 6.18104 | | globalThis.crypto.subtle.digest x20 | 1 | 512 | 1 | 1 | 1 | 7.551702 | | hashJs.sha256 x20 | 4 | 512 | 22.5 | 21 | 34 | 462.867755 | | crypto.createHash x20 | 4 | 512 | 1 | 1 | 1 | 6.185 | | globalThis.crypto.subtle.digest x20 | 4 | 512 | 1 | 1 | 1 | 3.335444 | | hashJs.sha256 x20 | 1 | 3072 | 162.55 | 153 | 254 | 3262.797195 | | crypto.createHash x20 | 1 | 3072 | 1.05 | 1 | 2 | 37.506365 | | globalThis.crypto.subtle.digest x20 | 1 | 3072 | 2.05 | 2 | 3 | 45.949082 | | hashJs.sha256 x20 | 4 | 3072 | 158.65 | 153 | 255 | 3182.793907 | | crypto.createHash x20 | 4 | 3072 | 1 | 1 | 1 | 35.97431 | | globalThis.crypto.subtle.digest x20 | 4 | 3072 | 3.1 | 2 | 8 | 22.177998 | | hashJs.sha256 x20 | 1 | 10240 | 581.35 | 561 | 684 | 11641.084243 | | crypto.createHash x20 | 1 | 10240 | 5.15 | 5 | 6 | 119.489467 | | globalThis.crypto.subtle.digest x20 | 1 | 10240 | 7.55 | 7 | 13 | 161.12074 | | hashJs.sha256 x20 | 4 | 10240 | 578.5 | 561 | 655 | 11581.108637 | | crypto.createHash x20 | 4 | 10240 | 5.1 | 5 | 6 | 119.847924 | | globalThis.crypto.subtle.digest x20 | 4 | 10240 | 13.15 | 11 | 27 | 85.079143 | </details>
Collaborator
|
✅ Successfully backported to backport-to-v4-staging #20752. |
github-merge-queue bot
pushed a commit
that referenced
this pull request
Feb 26, 2026
BEGIN_COMMIT_OVERRIDE fix: evicted transactions could reappear after a node restart (#20773) fix: (A-575) prevent checkpoint event spam in L2BlockStream on restart (#20791) chore: New alpha-net environment (#20800) chore: increase testnet validators (#20809) chore: Configs for next-net, testnet etc (#20803) 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) chore: Temper noisy log line (#20821) feat: read logs from s3, pass on dashboard, health report (#20507) fix: Use async poseidon (#20826) chore: update rollup config for testnet and mainnet (#20827) fix: Reduce tx hash conversions inside tx pool (#20829) chore: backport skill (#20851) feat: use native crypto to compute p2p message ID (#20846) feat(spartan): (A-535) enable admin API key auth for next-scenario network (#20738) chore: increase max fee bots use in tests (#20867) refactor(aztec-node): skip unnecessary subsystems in prover-only mode and remove P2PClientType enum (#20848) feat(blob-client): (A-574) replace deprecated blob_sidecars API and reduce call overhead (#20845) fix: deflake batch tx req (#20861) END_COMMIT_OVERRIDE
aminsammara
pushed a commit
that referenced
this pull request
Feb 27, 2026
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 -> 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).
ludamad
pushed a commit
that referenced
this pull request
Feb 27, 2026
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 -> 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).
aminsammara
pushed a commit
that referenced
this pull request
Feb 27, 2026
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 -> 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).
aminsammara
pushed a commit
that referenced
this pull request
Feb 27, 2026
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 -> 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).
johnathan79717
pushed a commit
that referenced
this pull request
Mar 4, 2026
Replace hash.js for native sha256 when computing P2P message IDs. Fix A-583 Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
PhilWindle
pushed a commit
that referenced
this pull request
Mar 11, 2026
In #20846 we showed the hash.js's sha256 implementation is very slow on large buffers and we know we're pushing hundreds of KB to megabytes to the broker every seconds, this would speed up proving job ID generation a lot. I have not used the async variant through `crypto.subtle` because ID generation is synchronous. The sync API is much faster than the async but won't be capable of as high throughput.
AztecBot
pushed a commit
that referenced
this pull request
Mar 11, 2026
In #20846 we showed the hash.js's sha256 implementation is very slow on large buffers and we know we're pushing hundreds of KB to megabytes to the broker every seconds, this would speed up proving job ID generation a lot. I have not used the async variant through `crypto.subtle` because ID generation is synchronous. The sync API is much faster than the async but won't be capable of as high throughput.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replace aztec/foundation for native sha256. The native sha256 implementations are orders of magnitude faster than hash.js (which is not surprising). I have used the web-crypto subtle.digest since it's async.
Fix A-583
Benchmark run on mainframe