Skip to main content


Accounts is a client library that provides implementations for some common account flavors. Use it to acquire a Wallet object that corresponds to an account, and use that together with @aztec/aztec.js to interact with the network.


npm install @aztec/accounts

Account types

  • Schnorr: Uses an Grumpkin private key with Schnorr signatures for authentication, and a separate Grumpkin private key for encryption. Recommended for most use cases.
  • ECDSA: Uses an ECDSA private key for authentication, and a Grumpkin private key for encryption. Recommended for building integrations with Ethereum wallets.
  • SingleKey: Uses a single Grumpkin private key for both authentication and encryption. Recommended for testing purposes only.


Deploy a new account

import { getSchnorrAccount } from '@aztec/accounts/schnorr';
import { GrumpkinPrivateKey } from '@aztec/circuit-types';

const encryptionPrivateKey = GrumpkinPrivateKey.random();
const signingPrivateKey = GrumpkinPrivateKey.random();
const wallet = getSchnorrAccount(pxe, encryptionPrivateKey, signingPrivateKey).waitDeploy();
console.log(`New account deployed at ${wallet.getAddress()}`);

Create a wallet object from an already deployed account

import { getSchnorrAccount } from '@aztec/accounts/schnorr';

const wallet = getSchnorrWallet(pxe, encryptionPrivateKey);
console.log(`Wallet for ${wallet.getAddress()} ready`);