Skip to content

Update to Aztec v5 (5.0.0-rc.1) - #56

Merged
Thunkar merged 4 commits into
mainfrom
gj/update-to-v5
Jun 18, 2026
Merged

Thunkar merged 4 commits into
mainfrom
gj/update-to-v5

Conversation

@Thunkar

@Thunkar Thunkar commented Jun 18, 2026

Copy link
Copy Markdown
Collaborator

Summary

Migrates demo-wallet from Aztec v4.3.0-rc.1 → v5.0.0-rc.1, using aztec-packages/yarn-project/wallets EmbeddedWallet as the reference for how the wallet adapts to v5. The custom DemoWallet/InternalWallet/ExternalWallet hierarchy (which mirrors EmbeddedWallet) was adapted by hand.

The current tip of main is preserved as the v4 tag.

SDK / API changes

  • AccountManager.create now takes an options bag { salt, immutablesHash }
  • SimulationOverrides ctor now takes { contracts }
  • getGasLimits moved to @aztec/wallet-sdk/base-wallet, new signature (gasUsed, maxTxGasLimits, padding); maxTxGasLimits derived from node txsLimits
  • removed the estimateGas fee option (gas estimated from simulation)
  • stub account imports moved to @aztec/accounts/{schnorr,ecdsa}/stub
  • buildAccountOverrides now overrides currentContractClassId against pre-registered stub classes; added initStubClasses() invoked at wallet bootstrap (web + app)
  • AztecNode.getBlockHeader() → getBlockData("latest").header
  • Zod v3 → v4: bumped to ^4, migrated z.function({ input, output }), two-arg z.record, and getSchemaReturnType/getSchemaParameters helpers
  • extension: BackgroundConnectionHandler config now requires a logger

Features

  • Initializerless Schnorr accounts (schnorr_initializerless): committed into the address via an immutables hash, no deployment tx required — usable immediately (state materialized by simulating the constructor). Marked deployed at creation so the UI skips the deploy action.
  • Account-creation type chooser: the create dialog now lets the user pick initializerless / Schnorr / ECDSA R1 / ECDSA K1 instead of hardcoding ecdsasecp256r1.

Networks

  • Only localhost + testnet remain (already the case). Testnet RPC is now https://canonical.testnet.rpc.aztec-labs.com and the rollup version auto-detects from the node.

⚠️ Breaking

v5 changed the Schnorr signature scheme and public-key representation, so pre-existing testnet Schnorr accounts cannot be controlled by this code and must be recreated. ECDSA accounts are unaffected.

Verification

  • turbo typecheck ✓ (shared, web, app) and extension tsc ✓
  • turbo build (web) ✓, extension wxt build ✓
  • turbo lint ✓ (0 errors; remaining warnings pre-existing)

🤖 Generated with Claude Code

Bumps all @aztec/* packages to 5.0.0-rc.1 and adapts the custom
DemoWallet/InternalWallet/ExternalWallet hierarchy to the v5 SDK,
using yarn-project/wallets EmbeddedWallet as the reference.

SDK / API changes:
- AccountManager.create now takes an options bag { salt, immutablesHash }
- SimulationOverrides ctor now takes { contracts }
- getGasLimits moved to @aztec/wallet-sdk/base-wallet and now takes
  (gasUsed, maxTxGasLimits, padding); derive maxTxGasLimits from node txsLimits
- removed estimateGas fee option (gas is estimated via simulation)
- stub account imports moved: @aztec/accounts/{schnorr,ecdsa}/stub
- buildAccountOverrides now overrides currentContractClassId against
  pre-registered stub classes; added initStubClasses() called at wallet
  bootstrap (web + app)
- AztecNode.getBlockHeader() -> getBlockData("latest").header
- zod v4: bump to ^4, migrate z.function({input,output}) and two-arg
  z.record; use getSchemaReturnType/getSchemaParameters helpers
- extension: BackgroundConnectionHandler config now requires a logger

Features:
- Initializerless Schnorr accounts (schnorr_initializerless): committed
  into the address via immutables hash, no deployment tx; materialized
  locally by simulating the constructor. Marked deployed at creation so
  the UI skips the deploy action.
- Account creation UI now offers a type chooser (initializerless / schnorr
  / ecdsa r1 / ecdsa k1) instead of hardcoding ecdsasecp256r1.

Networks:
- Removed nothing new (only localhost + testnet remained); testnet RPC is
  now https://canonical.testnet.rpc.aztec-labs.com and its rollup version
  auto-detects from the node.

Note: v5 changed the Schnorr signature scheme and public-key representation,
so pre-existing testnet Schnorr accounts are not controllable by this code
and must be recreated. ECDSA accounts are unaffected.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jun 18, 2026 •

Copy link
Copy Markdown

🚀 Web wallet deployed!

Preview URL: https://demo-wallet-h01yggfdj-thunkars-projects.vercel.app

Thunkar and others added 3 commits June 18, 2026 09:02
- Schnorr signing keys are Grumpkin scalars (Fq); the account-creation UI
  was generating raw random 32-byte keys, which frequently exceed the Fq
  modulus and made Fq.fromBuffer throw ("greater or equal to field
  modulus"). Generate a valid Fq for schnorr/schnorr_initializerless;
  ECDSA keeps raw 32-byte buffers.
- initStubClasses registered the stub contract classes with PXE on every
  wallet/session bootstrap, producing repeated "Added contract class" work
  on the shared PXE. Guard registration with a getContractArtifact check so
  each class is registered at most once per PXE.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The dev-mode system-wide manifest check hardcoded Google Chrome's dir
(/etc/opt/chrome/native-messaging-hosts), so on Chromium/Brave (e.g.
Arch/CachyOS, which default to Chromium) the browser never found the
host and never spawned it. Check all Chromium-family dirs and print a
one-shot install command covering Chrome, Chromium and Brave; document
the per-browser paths in the README.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Align the live progress bar and the phase-breakdown timeline with the
reference palette in aztec-kit/packages/embedded-wallet:
- Simulation: #ff9800 -> #ce93d8 (reference purple)
- Sync (#90caf9), Witgen (#ffb74d), Proving (#f48fb1), Other (#bdbdbd),
  Sending (#2196f3), Mining (#4caf50) already matched.
- Validation moves to the freed #ff9800 so it stays distinct from
  Simulation in the breakdown bar (the reference has no Validation phase).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@Thunkar
Thunkar merged commit f1f96a1 into main Jun 18, 2026
8 checks passed
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.

1 participant