v5 L1 ▕░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▏ L2 24–108s
v6 L1 ▕████████▏ L2 12–30s
A Z T E C · 6 · 0 · 0
Date: 2026-10-22 · Tag: v6.0.0 · Baseline: v5.2.1 · Major release
npm: @aztec-foundation/bb.js@6.0.0 (note the new @aztec-foundation scope) · crates.io: barretenberg-rs 6.0.0 · Noir: v1.0.0-rc.3
Summary
v6.0.0 is the protocol, proving system and L1 contracts behind the v6 rollup proposed in AZUP-3. It is a major protocol upgrade: new circuits, a new verification key tree and a new rollup deployment from genesis.
The headline change is the Fast Inbox (AZIP-22). L1-to-L2 messages now stream into L2 blocks as nodes see them on L1, instead of waiting for an Inbox tree to seal and a two-checkpoint lag, cutting message latency from 24–108 seconds to about 12–30 seconds. It reaches every layer: a rolling-hash Inbox on L1, per-block message bundles and a single variable-size parity proof in the circuits.
Alongside it: a transaction effects tree in every block header, a new protocol nullifier, a v3 contract address domain separator, a large round of proving system hardening (much of it developed privately and published with this release), Barretenberg performance work, Noir 1.0.0 release candidates, and L1 changes for fees, rewards, provers and staking providers.
This release is aimed at people working on the protocol, the proving system and the L1 contracts. Node operators and application developers should read the aztec-node v6.0.0 release notes instead.
What's in AZUP-3
v6 implements the following AZIPs. AZIP-33 and AZIP-34 are carried out by the upgrade payload rather than by contract code.
| AZIP | Change | Where |
|---|---|---|
| 22 Fast Inbox | L1-to-L2 messages stream into blocks as nodes observe them | L1 Inbox, rollup circuits (a703815)
|
| 23 Protocol Fee Margin | Governance-set margin on the mana base fee, paid to a governance-set recipient. Launches at zero | Rollup (f56ff4a)
|
| 24 First Prover Attribution | The rollup records which prover first proved each checkpoint | Rollup (#25389) |
| 25 Full Epoch Activity Score | A prover's activity score only increases on a full-epoch proof | Rollup (d0c3996)
|
| 26 Transaction Effects Tree | Each block header commits to a tree of its transactions' effects | Circuits, L1 (ae2aace)
|
| 27 Rate-limited Provider Exits | Attesters can exit their own positions, up to about 5% of the set per governance withdrawal delay | Rollup staking (#25492) |
| 29 Protocol Nullifier Refinement | The protocol nullifier is derived from (origin, chain_id, version, salt)
| Private kernels (#25515) |
| 30 90% Sequencer Reward Share | The sequencer share of each checkpoint reward rises from 70% to 90% | Deploy configuration (#25601) |
| 31 Pluggable Sequencer Reward Calculator | Governance can point the rollup at a reward calculator contract. Launches with none set | Rollup (#25571) |
| 33 Proof-of-Possession Gas Cap | The payload raises the GSE's BLS proof-of-possession cap from 250,000 to 300,000 gas | Upgrade payload |
| 34 Sustain v5 After v6 | The payload earmarks 1,800,000 AZTEC for v5 and cuts its checkpoint reward to 50 AZTEC | Upgrade payload |
| 35 Glamsterdam Gas Constants | L1 gas per checkpoint 300,000 → 500,000; per epoch proof 3,600,000 → 4,000,000 | Fee model (#25509) |
Breaking changes
-
The foundation npm packages moved to the
@aztec-foundationscope (#25328):bb.js,bb,bb-avm,bb-avm-sim,cdb,wsdb,ipc-runtime, thenoir-*packages,l1-artifacts,constants-codegenand the protocol artifacts packages. The@aztecscope keeps what was already published.-import { Barretenberg } from '@aztec/bb.js'; +import { Barretenberg } from '@aztec-foundation/bb.js';
-
Every verification key changes. New circuits, new flavors and new transcript rules (below) mean v5 proofs and VKs do not verify under v6, and the VK tree root is new.
-
Fiat-Shamir challenges are full-width by default (
a69ffdf). Challenges are no longer truncated, so transcripts, proofs and VKs from earlier versions are incompatible. -
Every contract address changes. The contract address domain separator is bumped to V3 (#25521), so the same class, salt, initialization and keys derive a different address than in v5. An address can never be live on two rollups. Protocol contracts keep their magic addresses.
-
Block headers gain a transaction effects tree root (
ae2aace). Header serialization grows by one field, so every transaction hash, VK, artifact and canonical address changes with it. -
The protocol nullifier is derived from the tx request's salt alone (#25515). Two requests with the same origin and salt are mutually exclusive, and the siloed
protocol_nullifierreplacestx_request_saltin the private call inputs. -
MAX_APPS_PER_KERNELrises from 3 to 5 (910504d), and kernels use custom arithmetic gates (b7433c0). -
The AVM's Poseidon2 permutation is re-optimised (
ce692ca), and the AVM now has at most 4 registers (9b3753f).
Proving system (Barretenberg)
Chonk (client IVC)
- Per-kind circuit flavors. Apps and kernels now have their own flavors,
MegaAppandMegaKernel(ff378cb), with aCircuitKindcarried from the PXE through bb.js and bbapi. Protocol VKs are computed per kind at the source, replacing--use_zk_flavor. - One multilinear-batching sumcheck per kernel (
635a9cf). - Custom arithmetic gates for kernels (
b7433c0), and room for 5 apps per kernel instead of 3 (910504d). - ROM tables via logup (
d3e42f9). - Cheaper Poseidon2: two fewer rows per permutation (
f14df1d) and batched sponge absorbs (f7b101b).
PCS, IPA and the Grumpkin side
- TripleIPA for the ECCVM (
bcb979d), with fused IPA folds and a short-scalar IPA SRS fold. - A sparse ZK masking polynomial in Shplemini (
1a42ab0), and Libra masking withL = 4on Grumpkin (19052d3). - ECCVM and Translator sumcheck optimizations (#23615), plus general sumcheck round and relation evaluation speed-ups.
- The Grumpkin SRS is anchored to pinned chunk hashes on load (#23587).
Performance
- A rewritten Pippenger MSM (
3c7386e) and Booth-sliced element MSMs (#23691). - WASM SIMD throughout the prover: a 5-wide
VectorFieldprimitive, Montgomery multiplication, row-parallel sumcheck univariates, and SIMD Gemini folds andpartially_evaluate. - Faster circuit construction (
398a5e6): arithmetic, tiled gate storage and containers.
AVM
- A specialized MegaAVM flavor (
a32b5b8), per-column public-input sizes in the recursive verifier, and granular destination selectors for precomputed subtraces. - The TypeScript AVM simulator is gone. Simulation runs in the native
bb-avm-simservice over generated IPC bindings (96082e3), alongside awsdbworld-state service and the newipc-runtime. - Fixes from the Honk audit (
2c6023a).
Soundness and security hardening
A large set of proving system and circuit fixes was developed in a private branch while the v6 circuits were being finalized. It is public with this release, and the mainnet v6 verifier and VK tree are built from it. Each item below links the commit.
Verifier and transcript strictness
- Recursive pairing accumulators with a mixed point at infinity are rejected (
3763de6). This is the v6 counterpart of GHSA-2hc8-mq24-76v2 (high) and GHSA-73xc-j27q-wg75 (medium), both fixed for v5 in v5.2.1. - PCS pairing points at infinity fail verification (
5b16bcd) rather than being accepted or aborting. - Verifiers consume each proof segment exactly (
cd61020), and native verifiers reject trailing data after a proof (94581fe). - Pairing points are aggregated with short scalar multiplications on Ultra (
2b0c0b4). - IPA challenge handling is tightened (
1b33386), and verifier and prover validation strengthened across flavors (74cbbff). - Flavor selectors must be compatible with their relations (
6bbfc20).
Constraint fixes
- ECCVM: scalar limbs and first-row translation values are now constrained (
3472adc); queue reconstruction and IPA inputs are validated (8c9f71b); MSM constraints are updated (224b033). - Translator: boundary constraints updated (
d3020cb). - Databus: constraints strengthened (
08f20ae). - Batch merge: accumulator boundaries validated (
d2469f2). - Chonk: proof boundaries (
6d7fd08) and the proving and mock-verification paths hardened (80e6dca). - Constant-point MSMs: validation strengthened (
dfa66b7).
Input validation
- Serialization, SRS and crypto inputs are validated before use (
e8a1119), and msgpack errors and SRS size are checked before allocation (#25487). FieldSpongeis bound to the permutation's state width (ca59e1c).
Protocol circuits
- Kernels: stricter tail array validation (
bec1093); claimed lengths asserted against array capacity in the tail's dense, trimmed and sorted helpers (87b10ed);claimed_revertible_counterbounded in the init circuit (26f3e5c); scoped metadata preserved through reset (6088fa8); zero-valued settled read requests rejected (9929a81). - A surviving nullifier link may only resolve to a non-revertible note hash (#25579).
- Rollup: private log padding validated (
b8cfcc1); blob points must be canonically encoded (7e6ff7b); contract class log lengths must be canonical (1815fd5). - Serialization:
Optionmust be canonically serialized (41ecf22), andBoundedVeclengths are validated in protocol serde (cda1c77). - Bigcurve and bignum fixes, with their tests now running in CI (
e078f15). - AVM simulator: hashmap keys hash the full
u128(f5d6874).
Protocol circuits
- Fast Inbox circuits. L1-to-L2 messages arrive in per-block bundles (
a6f0cc5), proven by a single variable-sizeInboxParityproof per checkpoint (420d574), with variants for sizes 4 and 16. Non-first blocks can consume messages from the same block (94c4a8e), and a newblock_root_msgs_only_rollupcircuit handles blocks with messages but no transactions (6847d80). Blocks per checkpoint are capped, empty blocks are allowed anywhere, and the block-root variants are merged (f341571). - The Inbox rolling-hash chain is domain-separated (
a96bcfd). - Transaction effects tree (
ae2aace): one leaf per transaction, binding its hash to a structured hash of its effects. A block header alone now proves inclusion and exact effects with a short membership proof. - Protocol contracts call the protocol oracles (#25526), and their registration nullifiers are seeded at genesis (#25497).
- The teardown call's AVM startup gas is charged (#25536).
- Blob fractions are derived by halving the roots of unity (
070b810). poseidon2_hash_bytesdoes not commit to the byte length, now documented (#25566). Callers that need length binding must add it themselves.- The protocol artifacts are published to npm (#25075), and constants are generated by a standalone
constants-codegenpackage.
Noir
- Noir moves from
v1.0.0-beta.25tov1.0.0-rc.3, the first Noir 1.0 release candidates (#25511). noir-lang/poseidonis now v0.4.0.- Circuits execute with
noir-execute. The standaloneacvmbinary is no longer shipped.
L1 contracts
Fast Inbox (AZIP-22)
- The Inbox keeps rolling-hash buckets alongside its frontier trees (
d627406), and consensus moves to the streaming Inbox (a703815). - Buckets are evicted only after their messages are consumed by a proven checkpoint (
455099a). - The censorship cutoff is derived from the configured Ethereum slot duration.
MessageSentemits the full message, andgetStatereturns the Inbox's full live position.
Proofs and provers
- Epoch proofs verify only new headers (#25404),
submitProoftakes only the new headers (#25419), and full-epoch proof overhead is reduced (#25406, #25386). - Early proof submission can no longer be used to grief other provers (#25582).
- First prover attribution (AZIP-24, #25389) and a full-epoch-only activity score (AZIP-25).
Fees and rewards
- Protocol fee margin (AZIP-23): a governance-set margin and recipient on the mana base fee, launching at zero.
- Pluggable sequencer reward calculator (AZIP-31, #25571). A calculator that reverts or misbehaves falls back to the default reward and never blocks a proof.
- Glamsterdam gas constants (AZIP-35, #25509), and a 90/10 sequencer/prover reward split (AZIP-30).
Staking
- Rate-limited attester-initiated exits (AZIP-27, #25492). An attester, or a relayer carrying attester-signed EIP-712 authorizations, can start an exit. The stake still goes to the withdrawer.
- At most
floor((N - 1) / 20)exits per rolling governance withdrawal delay, never below the target committee size. - Only on the canonical, latest rollup.
- At most
Deployment and upgrade
- The v6 upgrade deploy script,
V6UpgradePayloadand runbook (#25601). The rollup is owned by governance from construction, the escape hatch is installed by the payload, and the payload refuses to run unless its predecessor is still canonical. - The rollup config is held in immutables (#25314), and admin paths moved into libraries to fit the EIP-170 size limit.
- The generic deployer refuses unusable rollup configuration (#25520), and its docs now state it is the test and testnet deployer, not the mainnet path.
Packaging
- All foundation npm packages are published under
@aztec-foundation(#25328), with npm provenance from GitHub Actions. bbandbb-avmship as per-platform npm packages, byte-identical to the release tarballs, andbb-avmnow builds for arm64 Linux (#25120).- The AVM CDB server bindings are published as
@aztec-foundation/cdb(#25098). barretenberg-rsis published to crates.io.l1-artifactsis a standalone npm package, carrying the fulll1-contractsSolidity tree and compiled ABIs.
Protocol constants
The mainnet v6 rollup (0xE37A2663Cc9c119BA41572C40fAb0bbb23a5402f, rollup version 2070860440) was deployed from this release's circuits:
vk root 0x22fff5de6ce590153df4468f7f0b152188a803d91b3c9c648b91d93d5913f219
protocol contracts 0x0f54271c52865841a77aaa66036eed901aff22fdce9f08e123ec8b205c9854d7
genesis archive root 0x29eb2c527f8d45276430363214e6c8d709ef3f657a3670ebac3179373d41e5c4
verifier VK_HASH 0x1fd4eb1d14be45e05dc78c448eb4f29d7f63e4de95129c4a5e1058cd9837f8a6
The epoch proof verifier is pinned at l1-contracts/script/deploy/HonkVerifier.sol. Anyone can check its VK_HASH against the verified source on Etherscan.
Reference
- AZUP-3: the upgrade proposal and its AZIPs.
- V6 upgrade runbook and payload review notes.
- aztec-node v6.0.0: the node, Aztec.nr and aztec.js release built on this one.
- barretenberg v6.0.0: bb binaries.
- v5.2.1 release notes: this release's baseline.