Skip to content

chore!: bump Aztec to 6.0.0-rc.1 - #41

Merged
alejoamiras merged 2 commits into
mainfrom
worktree-aztec-v6-bump
Sep 29, 2026
Merged

alejoamiras merged 2 commits into
mainfrom
worktree-aztec-v6-bump

Conversation

@alejoamiras

@alejoamiras alejoamiras commented Sep 28, 2026 •

Copy link
Copy Markdown
Collaborator

Moves every contract, test, script and dependency from Aztec 5.2.0 to 6.0.0-rc.1, with only the changes v6 forces.

What changes

  • Noir deps: aztec-nr crates now come from aztec-labs-eng/aztec-nr (flat crate dirs). Escrow's serde moved to noir-projects/fnd/noir-protocol-circuits/crates/serde in aztec-packages.
  • npm deps: @aztec/* → @aztec-labs/* pinned exactly to 6.0.0-rc.1 (the latest dist-tag points at a stale nightly), and @aztec/bb.js → @aztec-foundation/bb.js. @aztec-labs/foundation and @aztec-foundation/bb.js become explicit devDeps: tests import both, and they previously resolved only through hoisting.
  • Noir source: DOM_SEP__PARTIAL_NOTE_COMMITMENT and DOM_SEP__NOTE_COMPLETION_LOG_TAG are now imported from aztec::note::partial_note; their values are unchanged. The escrow test's copy of the crate-private TXE oracle aztec_txe_getPrivateEvents now returns BoundedVec<BoundedVec<Field, 10>, 5> directly, matching rc.1.
  • Build: v6 removed aztec inspect-contract, so the build's read-only inspection loop is gone. The .bak cleanup stays because bb aztec_process still emits them.
  • Docs: a README line on the consumer SDK requirement, and a rewrite of the bump-aztec-version skill for v6's repo split, isolated installs, fixed test ports, and verification by tag → SHA.

Breaking changes

  • Every contract's class id and address changes.
  • The generated wrappers import @aztec-labs/aztec.js. The package still declares no dependencies, so consumers install it at config.aztecVersion.

Upstream pins

Nargo pins by tag only, and tags can move. These are the commits the tags resolved to, verified with git ls-remote and against the nargo checkouts that were compiled:

Source Tag Commit
aztec-labs-eng/aztec-nr v6.0.0-rc.1 88ff1ded43051ed5393150799f4308aeda46e94a
AztecProtocol/aztec-packages v6.0.0-rc.1 d521f0d940d096fbea5b62010d9c9c70f1dc0fd2
npm @aztec-labs/*, @aztec-foundation/bb.js 6.0.0-rc.1 published 2026-09-23

Validation

All run locally against the rc.1 toolchain, at this branch's HEAD:

  • Noir: aztec compile, plus 433/433 tests on a TXE. The executed <package>::<test> set is identical to the base's, including the escrow key-derivation vector tests; the vectors are untouched.
  • JS: 49/49 (yarn test:js) against a local rc.1 network, including the escrow TS↔Noir key-derivation cross-check.
  • Benchmarks (run before review fixes that touched only comments and docs): all 6 suites complete on rc.1 with aztec-benchmark 5.0.1. Its peer range says <6, and yarn only warns; its dist has no runtime @aztec/* imports.
  • Typecheck (including the 13 generated wrappers), prettier, a clean yarn build, npm publish --dry-run --tag rc, and a plain-Node import of the built Token wrapper. The export layout is identical to the published 5.2.0 tarball.
  • Supply chain: the bump adds 45 lockfile entries. The 40 younger than 7 days are exactly the rc.1 release set (@aztec-labs/*, @aztec-foundation/*); no third-party dependency is younger than 7 days.

Caveats / follow-ups

  • CI Node floor: aztec-ci-actions' setup-aztec still pins setup-node to 24.0.0, below v6's ≥ 24.12. CI doesn't break: the v6 installer installs its own Node, and every job passes.
  • This targets a release candidate; re-bump to 6.0.0 when it ships.
  • Not in this PR, because v6 doesn't force them:
    • 156 test-only variable does not need to be mutable warnings (v6's TestEnvironment no longer needs &mut).
    • v6's new "tests in contract crates" advisory.
    • An aztec-benchmark release with v6 peers.

🤖 Generated with Claude Code

@github-actions

This comment has been minimized.

@alejoamiras
alejoamiras marked this pull request as ready for review September 28, 2026 18:50
alejoamiras and others added 2 commits September 29, 2026 15:17
Aztec 6 split its repositories and renamed its npm scope:
- aztec-nr crates now come from aztec-labs-eng/aztec-nr (flat crate dirs); the
  escrow serde crate moved under noir-projects/fnd/ in aztec-packages.
- @aztec/* SDK packages are now @aztec-labs/*, pinned exactly to 6.0.0-rc.1, and
  @aztec/bb.js is @aztec-foundation/bb.js. @aztec-labs/foundation and
  @aztec-foundation/bb.js become explicit devDeps (tests import both; they
  previously resolved only through hoisting).

Source changes v6 forces:
- DOM_SEP__PARTIAL_NOTE_COMMITMENT and DOM_SEP__NOTE_COMPLETION_LOG_TAG moved to
  aztec::note::partial_note (values unchanged).
- The TXE aztec_txe_getPrivateEvents oracle returns BoundedVec<BoundedVec<..>>
  directly, so the escrow test stub drops its tuple-to-BoundedVec rebuild.
- `aztec inspect-contract` was removed; drop the build's read-only inspection loop.

BREAKING CHANGE: contract class ids and addresses change, and the generated
wrappers import @aztec-labs/aztec.js.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rocedure

README: the published package declares no dependencies, and its wrappers now
import @aztec-labs/aztec.js.

bump-aztec-version skill: v6 repo split (aztec-nr, fnd/ protocol crates,
@aztec-labs npm scope), exact pins, isolated toolchain install, the fixed TXE
port, nargo's workspace-root pitfall in nested worktrees, the TXE oracle stub
shape, removed CLI commands, the CI Node floor, and aztec-benchmark peers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@alejoamiras
alejoamiras force-pushed the worktree-aztec-v6-bump branch from 4f86cfd to f2a5d16 Compare September 29, 2026 15:18
@alejoamiras
alejoamiras changed the base branch from stack/closeout-nft-notehash to main September 29, 2026 15:18
@github-actions

Copy link
Copy Markdown

Benchmark Comparison

CPU Cores RAM Arch
AMD EPYC 9V45 96-Core Processor 4 16 GiB x64

Contract: escrow

🚦 Function Gates DA Gas L2 Gas Proving Time (ms)
Base PR Diff Base PR Diff Base PR Diff Base PR Diff
🟢 (partial) withdraw 485,780 354,645 -131,135 (-27.0%) 3,744 3,744 587,800 587,800 11,666 4,974 -6,692 (-57.4%)
🟢 withdraw 330,054 270,326 -59,728 (-18.1%) 832 832 499,700 499,700 9,536 3,968 -5,568 (-58.4%)
🟢 withdraw_nft 378,232 266,680 -111,552 (-29.5%) 1,440 1,440 527,400 527,400 10,434 4,084 -6,350 (-60.9%)

Contract: logic

🚦 Function Gates DA Gas L2 Gas Proving Time (ms)
Base PR Diff Base PR Diff Base PR Diff Base PR Diff
🟢 get_escrow 390,336 298,866 -91,470 (-23.4%) 192 192 456,000 456,000 10,508 4,376 -6,132 (-58.4%)
🟢 secret_key_to_public_keys 387,695 296,331 -91,364 (-23.6%) 192 192 456,000 456,000 10,577 4,592 -5,985 (-56.6%)
🟢 share_escrow 304,211 245,424 -58,787 (-19.3%) 1,952 1,952 520,700 520,700 9,289 3,840 -5,449 (-58.7%)

Contract: multitoken

🚦 Function Gates DA Gas L2 Gas Proving Time (ms)
Base PR Diff Base PR Diff Base PR Diff Base PR Diff
🟢 burn_private 260,232 222,468 -37,764 (-14.5%) 832 832 499,700 499,700 8,588 3,724 -4,864 (-56.6%)
🟢 burn_public 223,800 185,539 -38,261 (-17.1%) 416 416 638,292 638,286 -6 (-0.0%) 8,221 3,508 -4,713 (-57.3%)
🟢 initialize_transfer_commitment 225,054 188,484 -36,570 (-16.2%) 768 768 474,500 474,500 8,244 3,446 -4,798 (-58.2%)
🟢 mint_to_private 297,795 239,217 -58,578 (-19.7%) 1,408 1,408 511,400 511,400 9,257 3,770 -5,487 (-59.3%)
🟢 mint_to_public 223,800 185,539 -38,261 (-17.1%) 416 416 637,800 637,794 -6 (-0.0%) 8,200 3,357 -4,843 (-59.1%)
🟢 transfer_private_to_commitment 263,571 225,577 -37,994 (-14.4%) 1,024 1,024 511,400 511,400 8,650 3,751 -4,899 (-56.6%)
🟢 transfer_private_to_private 336,124 278,917 -57,207 (-17.0%) 2,048 2,048 555,100 555,100 9,646 4,196 -5,450 (-56.5%)
🟢 transfer_private_to_public 306,785 254,364 -52,421 (-17.1%) 1,056 1,056 714,677 714,671 -6 (-0.0%) 9,266 3,964 -5,302 (-57.2%)
🟢 transfer_public_to_commitment 223,800 185,539 -38,261 (-17.1%) 640 640 663,516 663,507 -9 (-0.0%) 8,222 3,435 -4,787 (-58.2%)
🟢 transfer_public_to_private 298,556 246,797 -51,759 (-17.3%) 1,024 1,024 683,958 683,952 -6 (-0.0%) 9,191 4,212 -4,979 (-54.2%)
🟢 transfer_public_to_public 223,800 185,539 -38,261 (-17.1%) 480 480 673,505 673,499 -6 (-0.0%) 8,245 3,371 -4,874 (-59.1%)

Contract: nft

🚦 Function Gates DA Gas L2 Gas Proving Time (ms)
Base PR Diff Base PR Diff Base PR Diff Base PR Diff
🟢 burn_private 275,233 223,523 -51,710 (-18.8%) 416 416 661,052 661,046 -6 (-0.0%) 8,894 3,815 -5,079 (-57.1%)
🟢 burn_public 223,800 185,539 -38,261 (-17.1%) 448 448 670,034 670,028 -6 (-0.0%) 8,194 3,333 -4,861 (-59.3%)
🟢 mint_to_private 341,273 268,061 -73,212 (-21.5%) 1,600 1,600 735,342 735,336 -6 (-0.0%) 9,701 4,149 -5,552 (-57.2%)
🟢 mint_to_public 223,800 185,539 -38,261 (-17.1%) 448 448 670,718 670,712 -6 (-0.0%) 8,189 3,374 -4,815 (-58.8%)
🟢 transfer_private_to_private 249,434 211,981 -37,453 (-15.0%) 832 832 499,700 499,700 8,394 3,523 -4,871 (-58.0%)
🟢 transfer_private_to_public 275,262 223,550 -51,712 (-18.8%) 416 416 659,258 659,252 -6 (-0.0%) 8,912 3,741 -5,171 (-58.0%)
🟢 transfer_public_to_private 292,558 240,913 -51,645 (-17.7%) 992 992 683,268 683,262 -6 (-0.0%) 9,137 3,834 -5,303 (-58.0%)
🟢 transfer_public_to_public 223,800 185,539 -38,261 (-17.1%) 384 384 633,285 633,279 -6 (-0.0%) 8,177 3,369 -4,808 (-58.8%)

Contract: token

🚦 Function Gates DA Gas L2 Gas Proving Time (ms)
Base PR Diff Base PR Diff Base PR Diff Base PR Diff
🟢 burn_private 303,054 250,779 -52,275 (-17.2%) 1,024 1,024 713,957 713,951 -6 (-0.0%) 9,257 3,916 -5,341 (-57.7%)
🟢 burn_public 223,800 185,539 -38,261 (-17.1%) 448 448 672,632 672,626 -6 (-0.0%) 8,164 3,364 -4,800 (-58.8%)
🟢 initialize_transfer_commitment 225,054 188,484 -36,570 (-16.2%) 768 768 474,500 474,500 8,143 3,404 -4,739 (-58.2%)
🟢 mint_to_private 355,507 281,953 -73,554 (-20.7%) 2,144 2,144 738,070 738,064 -6 (-0.0%) 9,918 4,441 -5,477 (-55.2%)
🟢 mint_to_public 223,800 185,539 -38,261 (-17.1%) 448 448 672,227 672,221 -6 (-0.0%) 8,231 3,489 -4,742 (-57.6%)
🟢 transfer_private_to_commitment 259,896 222,045 -37,851 (-14.6%) 992 992 511,400 511,400 8,522 3,651 -4,871 (-57.2%)
🟢 transfer_private_to_private 343,699 286,325 -57,374 (-16.7%) 2,592 2,592 557,600 557,600 9,731 4,318 -5,413 (-55.6%)
🟢 transfer_private_to_public 303,110 250,831 -52,279 (-17.2%) 1,024 1,024 714,023 714,017 -6 (-0.0%) 9,214 4,060 -5,154 (-55.9%)
🟢 transfer_private_to_public_with_commitment 307,280 254,753 -52,527 (-17.1%) 1,600 1,600 747,323 747,317 -6 (-0.0%) 9,230 4,148 -5,082 (-55.1%)
🟢 transfer_public_to_commitment 223,800 185,539 -38,261 (-17.1%) 576 576 662,529 662,520 -9 (-0.0%) 8,216 3,356 -4,860 (-59.2%)
🟢 transfer_public_to_private 296,520 244,762 -51,758 (-17.5%) 992 992 683,304 683,298 -6 (-0.0%) 9,241 4,026 -5,215 (-56.4%)
🟢 transfer_public_to_public 223,800 185,539 -38,261 (-17.1%) 448 448 672,548 672,542 -6 (-0.0%) 8,183 3,475 -4,708 (-57.5%)

Contract: vault

🚦 Function Gates DA Gas L2 Gas Proving Time (ms)
Base PR Diff Base PR Diff Base PR Diff Base PR Diff
🟢 deposit_private_to_private 507,983 362,767 -145,216 (-28.6%) 1,312 1,312 878,248 878,227 -21 (-0.0%) 12,101 5,331 -6,770 (-55.9%)
🟢 deposit_private_to_private_exact 611,708 471,194 -140,514 (-23.0%) 1,888 1,888 915,316 915,295 -21 (-0.0%) 13,635 7,030 -6,605 (-48.4%)
🟢 deposit_private_to_public 435,487 308,983 -126,504 (-29.0%) 768 768 862,273 862,252 -21 (-0.0%) 11,096 4,705 -6,391 (-57.6%)
🟢 deposit_public_to_private 424,931 298,960 -125,971 (-29.6%) 1,984 1,984 965,045 965,024 -21 (-0.0%) 11,039 4,850 -6,189 (-56.1%)
🟢 deposit_public_to_private_exact 424,942 301,691 -123,251 (-29.0%) 1,952 1,952 949,469 949,448 -21 (-0.0%) 11,019 4,627 -6,392 (-58.0%)
🟢 deposit_public_to_public 223,800 185,539 -38,261 (-17.1%) 832 832 897,563 897,542 -21 (-0.0%) 8,213 3,580 -4,633 (-56.4%)
🟢 issue_private_to_private_exact 611,708 471,194 -140,514 (-23.0%) 1,888 1,888 915,976 915,955 -21 (-0.0%) 13,558 5,829 -7,729 (-57.0%)
🟢 issue_private_to_public_exact 484,222 339,595 -144,627 (-29.9%) 1,344 1,344 899,998 899,977 -21 (-0.0%) 11,948 4,677 -7,271 (-60.9%)
🟢 issue_public_to_private 346,383 275,652 -70,731 (-20.4%) 1,376 1,376 921,661 921,640 -21 (-0.0%) 9,774 4,316 -5,458 (-55.8%)
🟢 issue_public_to_public 223,800 185,539 -38,261 (-17.1%) 832 832 898,253 898,232 -21 (-0.0%) 8,246 3,486 -4,760 (-57.7%)
🟢 redeem_private_to_private_exact 614,712 474,161 -140,551 (-22.9%) 1,888 1,888 915,823 915,802 -21 (-0.0%) 13,598 6,673 -6,925 (-50.9%)
🟢 redeem_private_to_public 435,430 308,930 -126,500 (-29.1%) 768 768 862,717 862,696 -21 (-0.0%) 11,092 4,962 -6,130 (-55.3%)
🟢 redeem_public_to_private_exact 428,003 304,711 -123,292 (-28.8%) 1,952 1,952 949,790 949,769 -21 (-0.0%) 11,010 4,404 -6,606 (-60.0%)
🟢 redeem_public_to_public 223,800 185,539 -38,261 (-17.1%) 832 832 898,085 898,064 -21 (-0.0%) 8,252 3,759 -4,493 (-54.4%)
🟢 withdraw_private_to_private 510,987 365,734 -145,253 (-28.4%) 1,312 1,312 878,458 878,437 -21 (-0.0%) 12,028 5,625 -6,403 (-53.2%)
🟢 withdraw_private_to_private_exact 614,712 474,161 -140,551 (-22.9%) 1,888 1,888 915,769 915,748 -21 (-0.0%) 13,754 6,621 -7,133 (-51.9%)
🟢 withdraw_private_to_public_exact 484,165 339,542 -144,623 (-29.9%) 1,344 1,344 900,232 900,211 -21 (-0.0%) 11,774 5,546 -6,228 (-52.9%)
🟢 withdraw_public_to_private 441,260 314,923 -126,337 (-28.6%) 2,528 2,528 967,356 967,335 -21 (-0.0%) 11,219 5,095 -6,124 (-54.6%)
🟢 withdraw_public_to_public 223,800 185,539 -38,261 (-17.1%) 832 832 898,388 898,367 -21 (-0.0%) 8,203 3,350 -4,853 (-59.2%)

// Source: https://github.com/AztecProtocol/aztec-packages/blob/v5.1.0/noir-projects/aztec-nr/aztec/src/test/helpers/txe_oracles.nr#L42-L43
// (`MAX_PRIVATE_EVENTS_PER_TXE_QUERY` and `MAX_EVENT_SERIALIZATION_LENGTH` are still module-private there, so not importable;
// values re-verified unchanged at v5.1.0.)
// aztec-nr's `txe_oracles::get_private_events` is crate-private, so this duplicates its oracle. The oracle's return

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Not needed for this PR, but...) this sounds like a hack?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, agreed - it's a hack, and it was already there before this PR. aztec-nr keeps txe_oracles::get_private_events as pub(crate) (still the case on aztec-node main), so there's no public way for a contract's TXE tests to read the private events a call emitted. This PR just updated the copy's return type for rc.1.

@alejoamiras
alejoamiras merged commit cdfba94 into main Sep 29, 2026
9 of 13 checks passed
@alejoamiras
alejoamiras deleted the worktree-aztec-v6-bump branch September 29, 2026 21:36
alejoamiras added a commit that referenced this pull request Sep 30, 2026
v6.0.0-rc.1 shows as Unverified on GitHub. Its tag is lightweight, so
GitHub shows the tagged commit's signature, and that commit is unsigned:
#41 was rebase-merged, and GitHub re-creates rebase-merged commits
without a signature.

Step 3 now records the commit to release as SHA and aborts unless GitHub
reports a verified signature on it; Step 4 tags that exact SHA, so a
later checkout can't swap in an unchecked commit. The rc flow signs its
rehearse commit and pushes the branch so GitHub can verify it before the
tag exists. A new gotcha says to squash-merge into main.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants