Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 15 additions & 3 deletions .claude/skills/bump-aztec-version/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,9 @@ find . -name Nargo.toml -not -path '*/node_modules/*'
- Every `@aztec-labs/*` dependency → the npm version, and `@aztec-foundation/bb.js` → the version that SDK
depends on (Step 0), both **pinned exactly**: the `latest` dist-tag has pointed at a stale nightly, and any
other bb.js pin installs a second Barretenberg next to the SDK's.
- `viem` stays the `npm:@aztec/viem@…` alias the SDK itself uses.
- `viem` → exactly the specifier the SDK itself depends on (`npm view @aztec-labs/aztec.js@X.Y.Z dependencies`):
upstream `viem@2.57.1` since 6.0.0-rc.4, the `npm:@aztec/viem@…` alias before it. A spec that resolves to
another version or package installs a second viem beside the SDK's.
- `config.aztecVersion` → the npm version (the `setup-aztec` CI action reads this to install the toolchain).
- The package's own `version` is the *release* version — bump it too if this repo tracks aztec (it does), else leave.
- **`@aztec-foundation/aztec-benchmark` is a separate package** (its own repo/release). Only bump it if a matching release exists; it declares the Aztec SDK as **peerDependencies**, so it must resolve to the same aztec version — mismatches cause duplicate-type errors (see Gotchas). Move the devDependency and the two reusable-workflow pins (`pr-checks.yml`, `update-baseline.yml`) to the same release commit together.
Expand All @@ -86,7 +88,11 @@ env -i HOME="$V" AZTEC_HOME="$V/.aztec" TMPDIR="$TMPDIR" LANG=C.UTF-8 AZTEC_NO_A
bash "$HOME/.aztec/bin/aztec-up" install <version>
export AZTEC_HOME="$V/.aztec" PATH="$V/.aztec/current/bin:$PATH"
```
Confirm: `aztec --version`. The v6 installer needs Node ≥ 24.12 (`install.aztec-labs.com/<version>/versions`).
Confirm: `aztec --version`. The installer needs the Node that `install.aztec-labs.com/<version>/versions` names
(24.15 since 6.0.0-rc.4). Its foundryup step refuses to run while any `anvil` is running on the host, other
agents' included: then download that file's foundry release yourself, check it with
`gh attestation verify <tarball> --repo foundry-rs/foundry`, and run the version's `install` script with
`install_foundry` copying those binaries instead of calling foundryup.

## Step 4 — local validation (prove the bump)
Before running the checks, audit every local type/cast that exposes non-public Aztec APIs. These
Expand Down Expand Up @@ -148,6 +154,11 @@ When everything is green: commit, open a PR to `main`, let CI pass, merge. Then
`NARGO_FOREIGN_CALL_TIMEOUT=300000 aztec-nargo test --silence-warnings --oracle-resolver http://127.0.0.1:<p>`.
`aztec start --local-network` likewise defaults anvil to `ANVIL_PORT` 8545 and keeps any inherited
`ETHEREUM_HOSTS`: set both explicitly.
- **On a loaded host a few TXE tests can fail with `Public keys not registered for account …`.** The TXE drops
a test's session when its HTTP socket closes and answers the next call with a fresh, empty one, so a test
whose connection closes mid-run (most likely Node's idle keep-alive timeout, 5 s plus a 1 s buffer, on a
starved test) runs on without its accounts. Rerun the failures alone
(`aztec-nargo test --package <crate> --exact <test>`, same `--oracle-resolver`) before blaming the bump.
- **Hand-rolled reproductions of aztec internals break on API changes.**
- `src/escrow_contract/src/key_derivation.nr` re-implements `deriveKeys`; when v5 added master
message-signing/fallback keys, escrow addresses stopped matching. If `get_escrow`/derivation tests
Expand All @@ -170,7 +181,8 @@ When everything is green: commit, open a PR to `main`, let CI pass, merge. Then
internals used by commitment helpers. Run `yarn test:js` and `yarn bench` against a local network, or
require their CI jobs to pass before calling the bump validated.
- **CI Node floor.** The shared `aztec-ci-actions` `setup-aztec` action pins `setup-node` to 24.0.0, below
the v6 installer's 24.12 floor. If CI fails installing the toolchain, that action needs a bump first.
the installer's floor (24.12 for rc.1 and rc.3, 24.15 for rc.4). If CI fails installing the toolchain, that
action needs a bump first.
- **Benchmark peerDep / duplicate tree.** `aztec-benchmark` 5.x peers `@aztec/*` `>=5 <6`; 6.0.0-rc.1 is
the first release with `@aztec-labs/*` peers. Yarn only warns about a mismatch and tsx doesn't
type-check, so run `yarn typecheck` (`tsconfig.json` includes `benchmarks/`) and then the benchmarks
Expand Down
2 changes: 1 addition & 1 deletion noir-dep-revisions.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
# sha512 has no tags, so its `master` moves: review the upstream change before updating the entry, since escrow
# key derivation hashes with it. Other git dependencies declared in this repo can be listed the same way to catch
# a moved tag.
github.com/noir-lang/sha512/master e92ffb473f3264529a0793770f63a09946df50cc
github.com/noir-lang/sha512/master 811b3780afb2c231d6a0bea3e833d02df1536af6
18 changes: 9 additions & 9 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@aztec-foundation/aztec-standards",
"version": "6.0.0-rc.3",
"version": "6.0.0-rc.4",
"repository": {
"type": "git",
"url": "git+https://github.com/AztecProtocol/aztec-standards.git"
Expand Down Expand Up @@ -28,22 +28,22 @@
"*.ts": "prettier --write -u"
},
"dependencies": {
"@aztec-labs/aztec.js": "6.0.0-rc.3"
"@aztec-labs/aztec.js": "6.0.0-rc.4"
},
"devDependencies": {
"@aztec-foundation/aztec-benchmark": "6.0.0-rc.1",
"@aztec-foundation/bb.js": "6.0.0-rc.6",
"@aztec-labs/pxe": "6.0.0-rc.3",
"@aztec-labs/stdlib": "6.0.0-rc.3",
"@aztec-labs/wallet-sdk": "6.0.0-rc.3",
"@aztec-labs/wallets": "6.0.0-rc.3",
"@aztec-foundation/bb.js": "6.0.0-rc.7",
"@aztec-labs/pxe": "6.0.0-rc.4",
"@aztec-labs/stdlib": "6.0.0-rc.4",
"@aztec-labs/wallet-sdk": "6.0.0-rc.4",
"@aztec-labs/wallets": "6.0.0-rc.4",
"@iarna/toml": "2.2.5",
"@types/node": "25.0.10",
"husky": "9.1.7",
"lint-staged": "16.2.7",
"prettier": "3.8.0",
"typescript": "5.9.3",
"viem": "npm:@aztec/viem@2.38.3",
"viem": "2.57.1",
"vitest": "4.1.11"
},
"resolutions": {
Expand All @@ -63,7 +63,7 @@
"ws": "8.21.0"
},
"config": {
"aztecVersion": "6.0.0-rc.3"
"aztecVersion": "6.0.0-rc.4"
},
"engines": {
"node": ">=22.12.0"
Expand Down
2 changes: 1 addition & 1 deletion src/arc403_interface/Nargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ compiler_version = ">=1.0.0"
type = "contract"

[dependencies]
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.3", directory = "aztec" }
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.4", directory = "aztec" }
2 changes: 1 addition & 1 deletion src/arc403_interface/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ The function bodies in these packages are empty stubs: the artifacts define the

### Why a stub contract?

This mirrors Aztec's own [`protocol_interface`](https://github.com/aztec-labs-eng/aztec-node/tree/v6.0.0-rc.3/noir-projects/noir-contracts/contracts/protocol_interface) packages (FeeJuice, ContractInstanceRegistry), whose empty-bodied `#[aztec]` contracts exist purely to provide a generated Noir call interface. The `#[aztec]` macro derives the caller-side interface exclusively from function names, parameter types, and `#[external]` attributes — bodies are never read — so calls through a stub are byte-identical to calls through the real implementation. The alternative idiom (raw `FunctionSelector::from_signature` + `context.call_*_function`, as used by authwit) was considered and rejected: it leaves implementers with no compilable artifact to conform to, and forfeits compile-time type-checking at the token's call sites.
This mirrors Aztec's own protocol interface packages ([FeeJuice](https://github.com/aztec-labs-eng/aztec-nr/tree/v6.0.0-rc.4/fee-juice-interface), [ContractInstanceRegistry](https://github.com/aztec-labs-eng/aztec-nr/tree/v6.0.0-rc.4/contract-instance-registry-interface)), whose empty-bodied `#[aztec]` contracts exist purely to provide a generated Noir call interface. The `#[aztec]` macro derives the caller-side interface exclusively from function names, parameter types, and `#[external]` attributes — bodies are never read — so calls through a stub are byte-identical to calls through the real implementation. The alternative idiom (raw `FunctionSelector::from_signature` + `context.call_*_function`, as used by authwit) was considered and rejected: it leaves implementers with no compilable artifact to conform to, and forfeits compile-time type-checking at the token's call sites.

## Consuming the interface from Noir

Expand Down
2 changes: 1 addition & 1 deletion src/arc403_interface/multitoken/Nargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ compiler_version = ">=1.0.0"
type = "contract"

[dependencies]
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.3", directory = "aztec" }
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.4", directory = "aztec" }
2 changes: 1 addition & 1 deletion src/dripper/Nargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ compiler_version = ">=1.0.0"
type = "contract"

[dependencies]
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.3", directory = "aztec" }
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.4", directory = "aztec" }
token = { path = "../token_contract" }
4 changes: 2 additions & 2 deletions src/escrow_contract/Nargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ compiler_version = ">=1.0.0"
type = "contract"

[dependencies]
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.3", directory = "aztec" }
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.4", directory = "aztec" }
token = { path = "../token_contract" }
nft = { path = "../nft_contract" }
# Upstream has no tags and nargo pins only refs, so CI checks the resolved commit (scripts/check-noir-deps.sh).
sha512 = { git = "https://github.com/noir-lang/sha512", tag = "master" }
bignum = { git = "https://github.com/noir-lang/noir-bignum", tag = "v0.10.0" }
bignum = { git = "https://github.com/noir-lang/noir-bignum", tag = "v0.11.0" }
2 changes: 1 addition & 1 deletion src/escrow_contract/src/key_derivation.nr
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ fn reduce_to_scalar(hash: [u8; 64]) -> EmbeddedCurveScalar {
}

let hash_value: U512 = U512::from_be_bytes(hash_padded);
let (_, remainder) = hash_value.udiv_mod(FQ_MODULUS_U512);
let (_, remainder) = hash_value.udiv_mod(&FQ_MODULUS_U512);

// U512 limbs are 120-bit each (little-endian).
// EmbeddedCurveScalar splits at 128 bits: lo = lower 128 bits, hi = upper bits.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ compiler_version = ">=1.0.0"
type = "contract"

[dependencies]
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.3", directory = "aztec" }
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.4", directory = "aztec" }
escrow_contract = { path = "../../../" }
token = { path = "../../../../token_contract" }
nft = { path = "../../../../nft_contract" }
2 changes: 1 addition & 1 deletion src/generic_proxy/Nargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ compiler_version = ">=0.25.0"
type = "contract"

[dependencies]
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.3", directory = "aztec" }
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.4", directory = "aztec" }
4 changes: 2 additions & 2 deletions src/multitoken_contract/Nargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ compiler_version = ">=1.0.0"
type = "contract"

[dependencies]
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.3", directory = "aztec" }
compressed_string = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.3", directory = "compressed-string" }
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.4", directory = "aztec" }
compressed_string = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.4", directory = "compressed-string" }
arc403_multitoken_interface = { path = "../arc403_interface/multitoken" }
multitoken_authorization_contract = { path = "src/test/multitoken_authorization_contract" }
generic_proxy = { path = "../generic_proxy" }
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ compiler_version = ">=1.0.0"
type = "contract"

[dependencies]
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.3", directory = "aztec" }
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.4", directory = "aztec" }
4 changes: 2 additions & 2 deletions src/nft_contract/Nargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ compiler_version = ">=1.0.0"
type = "contract"

[dependencies]
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.3", directory = "aztec" }
compressed_string = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.3", directory = "compressed-string" }
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.4", directory = "aztec" }
compressed_string = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.4", directory = "compressed-string" }
generic_proxy = { path = "../generic_proxy" }
8 changes: 4 additions & 4 deletions src/token_contract/Nargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ compiler_version = ">=1.0.0"
type = "contract"

[dependencies]
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.3", directory = "aztec" }
uint_note = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.3", directory = "uint-note" }
balance_set = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.3", directory = "balance-set" }
compressed_string = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.3", directory = "compressed-string" }
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.4", directory = "aztec" }
uint_note = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.4", directory = "uint-note" }
balance_set = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.4", directory = "balance-set" }
compressed_string = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.4", directory = "compressed-string" }
generic_proxy = { path = "../generic_proxy" }
arc403_interface = { path = "../arc403_interface" }
authorization_contract = { path = "src/test/test_authorization_contract" }
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ compiler_version = ">=1.0.0"
type = "contract"

[dependencies]
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.3", directory = "aztec" }
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.4", directory = "aztec" }
2 changes: 1 addition & 1 deletion src/ts/test/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -448,7 +448,7 @@ export async function setPublicAuthWit(
* private return value (the commitment) of the SAME execution that gets submitted. Do NOT replace
* this with simulate()-then-send(): `initialize_transfer_commitment` derives its commitment from
* randomness drawn fresh on every private execution, so a simulated commitment would never match
* the partial note the sent tx actually creates. As of @aztec-labs/* 6.0.0-rc.3 no public wallet API
* the partial note the sent tx actually creates. As of @aztec-labs/* 6.0.0-rc.4 no public wallet API
* exposes private return values (BaseWallet.sendTx discards privateExecutionResult) — re-check on bumps.
*/
async function proveExtractAndSendCommitment(
Expand Down
4 changes: 2 additions & 2 deletions src/vault_contract/Nargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ compiler_version = ">=1.0.0"
type = "contract"

[dependencies]
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.3", directory = "aztec" }
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.4", directory = "aztec" }
token_contract = { path = "../token_contract" }
generic_proxy = { path = "../generic_proxy" }
bignum = { git = "https://github.com/noir-lang/noir-bignum", tag = "v0.10.0" }
bignum = { git = "https://github.com/noir-lang/noir-bignum", tag = "v0.11.0" }
3 changes: 2 additions & 1 deletion src/vault_contract/src/conversion.nr
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@ pub fn mul_div(a: u128, b: u128, denominator: u128, round_up: bool) -> u128 {
// vault's (always non-zero) call sites.
assert(denominator > 0, "division by zero");
let numerator = u256_from_u128(a) * u256_from_u128(b);
let (quotient, remainder) = numerator.udiv_mod(u256_from_u128(denominator));
let divisor = u256_from_u128(denominator);
let (quotient, remainder) = numerator.udiv_mod(&divisor);

let mut result = u256_to_u128(quotient);
if round_up & !u256_is_zero(remainder) {
Expand Down
2 changes: 1 addition & 1 deletion src/vault_deployer/Nargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ compiler_version = ">=1.0.0"
type = "contract"

[dependencies]
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.3", directory = "aztec" }
aztec = { git = "https://github.com/aztec-labs-eng/aztec-nr", tag = "v6.0.0-rc.4", directory = "aztec" }
vault_contract = { path = "../vault_contract" }
token_contract = { path = "../token_contract" }
Loading
Loading