@aztec/cli-wallet 5.0.0-private.20260319 → 5.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dest/bin/index.js +1 -1
  2. package/dest/cmds/check_tx.js +7 -7
  3. package/dest/cmds/create_account.d.ts +4 -3
  4. package/dest/cmds/create_account.d.ts.map +1 -1
  5. package/dest/cmds/create_account.js +30 -28
  6. package/dest/cmds/deploy.d.ts +5 -4
  7. package/dest/cmds/deploy.d.ts.map +1 -1
  8. package/dest/cmds/deploy.js +43 -40
  9. package/dest/cmds/deploy_account.d.ts +4 -3
  10. package/dest/cmds/deploy_account.d.ts.map +1 -1
  11. package/dest/cmds/deploy_account.js +22 -22
  12. package/dest/cmds/get_fee_juice_balance.d.ts +5 -0
  13. package/dest/cmds/get_fee_juice_balance.d.ts.map +1 -0
  14. package/dest/cmds/get_fee_juice_balance.js +27 -0
  15. package/dest/cmds/import_test_accounts.d.ts +1 -1
  16. package/dest/cmds/import_test_accounts.d.ts.map +1 -1
  17. package/dest/cmds/import_test_accounts.js +1 -1
  18. package/dest/cmds/index.d.ts +1 -1
  19. package/dest/cmds/index.d.ts.map +1 -1
  20. package/dest/cmds/index.js +31 -15
  21. package/dest/cmds/send.d.ts +4 -3
  22. package/dest/cmds/send.d.ts.map +1 -1
  23. package/dest/cmds/send.js +26 -28
  24. package/dest/storage/wallet_db.d.ts +7 -2
  25. package/dest/storage/wallet_db.d.ts.map +1 -1
  26. package/dest/storage/wallet_db.js +14 -0
  27. package/dest/utils/constants.d.ts +2 -2
  28. package/dest/utils/constants.d.ts.map +1 -1
  29. package/dest/utils/constants.js +1 -0
  30. package/dest/utils/options/fees.d.ts +3 -2
  31. package/dest/utils/options/fees.d.ts.map +1 -1
  32. package/dest/utils/options/fees.js +33 -9
  33. package/dest/utils/wallet.d.ts +19 -6
  34. package/dest/utils/wallet.d.ts.map +1 -1
  35. package/dest/utils/wallet.js +130 -63
  36. package/package.json +16 -15
  37. package/src/bin/index.ts +1 -1
  38. package/src/cmds/check_tx.ts +6 -5
  39. package/src/cmds/create_account.ts +31 -20
  40. package/src/cmds/deploy.ts +40 -35
  41. package/src/cmds/deploy_account.ts +22 -14
  42. package/src/cmds/get_fee_juice_balance.ts +37 -0
  43. package/src/cmds/import_test_accounts.ts +5 -1
  44. package/src/cmds/index.ts +59 -5
  45. package/src/cmds/send.ts +23 -18
  46. package/src/storage/wallet_db.ts +14 -0
  47. package/src/utils/constants.ts +7 -1
  48. package/src/utils/options/fees.ts +35 -9
  49. package/src/utils/wallet.ts +141 -72
package/dest/bin/index.js CHANGED
@@ -47,7 +47,7 @@ function injectInternalCommands(program, log, db) {
47
47
  return program;
48
48
  }
49
49
  /** CLI wallet main entrypoint */ async function main() {
50
- const walletVersion = getPackageVersion() ?? '0.0.0';
50
+ const walletVersion = getPackageVersion();
51
51
  const db = WalletDB.getInstance();
52
52
  const walletAndNodeWrapper = new CliWalletAndNodeWrapper();
53
53
  const program = new Command('wallet');
@@ -11,10 +11,9 @@ export async function checkTx(wallet, aztecNode, txHash, statusOnly, log) {
11
11
  // The rest of the code here was copied over here from CLI because in CLI I needed to prune the inspect function of the PXE
12
12
  // dependency when dropping PXE JSON RPC Server.
13
13
  async function inspectTx(wallet, aztecNode, txHash, log) {
14
- const [receipt, effectsInBlock] = await Promise.all([
15
- aztecNode.getTxReceipt(txHash),
16
- aztecNode.getTxEffect(txHash)
17
- ]);
14
+ const receipt = await aztecNode.getTxReceipt(txHash, {
15
+ includeTxEffect: true
16
+ });
18
17
  // Base tx data
19
18
  log(`Tx ${txHash.toString()}`);
20
19
  log(` Status: ${receipt.status}`);
@@ -24,10 +23,10 @@ async function inspectTx(wallet, aztecNode, txHash, log) {
24
23
  if (receipt.error) {
25
24
  log(` Error: ${receipt.error}`);
26
25
  }
27
- if (!effectsInBlock) {
26
+ if (!receipt.isMined() || !receipt.txEffect) {
28
27
  return;
29
28
  }
30
- const effects = effectsInBlock.data;
29
+ const effects = receipt.txEffect;
31
30
  const artifactMap = await getKnownArtifacts(wallet);
32
31
  log(` Block: ${receipt.blockNumber} (${receipt.blockHash?.toString()})`);
33
32
  if (receipt.transactionFee) {
@@ -61,6 +60,7 @@ async function inspectTx(wallet, aztecNode, txHash, log) {
61
60
  // Nullifiers
62
61
  const nullifierCount = effects.nullifiers.length;
63
62
  const { deployNullifiers, initNullifiers, classNullifiers } = await getKnownNullifiers(wallet, artifactMap);
63
+ const accounts = (await wallet.getAccounts()).map((a)=>a.item);
64
64
  if (nullifierCount > 0) {
65
65
  log(' Nullifiers:');
66
66
  for (const nullifier of effects.nullifiers){
@@ -68,7 +68,7 @@ async function inspectTx(wallet, aztecNode, txHash, log) {
68
68
  const note = deployed ? (await wallet.getNotes({
69
69
  siloedNullifier: nullifier,
70
70
  contractAddress: deployed,
71
- scopes: 'ALL_SCOPES'
71
+ scopes: accounts
72
72
  }))[0] : undefined;
73
73
  const initialized = initNullifiers[nullifier.toString()];
74
74
  const registered = classNullifiers[nullifier.toString()];
@@ -1,14 +1,15 @@
1
1
  import { AztecAddress } from '@aztec/aztec.js/addresses';
2
- import type { AztecNode } from '@aztec/aztec.js/node';
2
+ import { type AztecNode } from '@aztec/aztec.js/node';
3
3
  import { Fr } from '@aztec/foundation/curves/bn254';
4
4
  import type { LogFn, Logger } from '@aztec/foundation/log';
5
+ import { TxStatus } from '@aztec/stdlib/tx';
5
6
  import type { AccountType } from '../utils/constants.js';
6
7
  import { CLIFeeArgs } from '../utils/options/fees.js';
7
8
  import { CLIWallet } from '../utils/wallet.js';
8
- export declare function createAccount(wallet: CLIWallet, aztecNode: AztecNode, accountType: AccountType, secretKey: Fr | undefined, publicKey: string | undefined, alias: string | undefined, deployer: AztecAddress | undefined, registerOnly: boolean, skipInitialization: boolean, publicDeploy: boolean, registerClass: boolean, wait: boolean, feeOpts: CLIFeeArgs, json: boolean, verbose: boolean, debugLogger: Logger, log: LogFn): Promise<{
9
+ export declare function createAccount(wallet: CLIWallet, aztecNode: AztecNode, accountType: AccountType, secretKey: Fr | undefined, salt: Fr | undefined, publicKey: string | undefined, alias: string | undefined, deployer: AztecAddress | undefined, registerOnly: boolean, skipInitialization: boolean, publicDeploy: boolean, registerClass: boolean, wait: boolean, feeOpts: CLIFeeArgs, waitForStatus: TxStatus, json: boolean, verbose: boolean, debugLogger: Logger, log: LogFn): Promise<{
9
10
  alias: string | undefined;
10
11
  address: AztecAddress;
11
12
  secretKey: Fr;
12
13
  salt: Fr;
13
14
  }>;
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlX2FjY291bnQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbWRzL2NyZWF0ZV9hY2NvdW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd0RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTNELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFL0Msd0JBQXNCLGFBQWEsQ0FDakMsTUFBTSxFQUFFLFNBQVMsRUFDakIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsV0FBVyxFQUFFLFdBQVcsRUFDeEIsU0FBUyxFQUFFLEVBQUUsR0FBRyxTQUFTLEVBQ3pCLFNBQVMsRUFBRSxNQUFNLEdBQUcsU0FBUyxFQUM3QixLQUFLLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFDekIsUUFBUSxFQUFFLFlBQVksR0FBRyxTQUFTLEVBQ2xDLFlBQVksRUFBRSxPQUFPLEVBQ3JCLGtCQUFrQixFQUFFLE9BQU8sRUFDM0IsWUFBWSxFQUFFLE9BQU8sRUFDckIsYUFBYSxFQUFFLE9BQU8sRUFDdEIsSUFBSSxFQUFFLE9BQU8sRUFDYixPQUFPLEVBQUUsVUFBVSxFQUNuQixJQUFJLEVBQUUsT0FBTyxFQUNiLE9BQU8sRUFBRSxPQUFPLEVBQ2hCLFdBQVcsRUFBRSxNQUFNLEVBQ25CLEdBQUcsRUFBRSxLQUFLOzs7OztHQTBIWCJ9
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlX2FjY291bnQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbWRzL2NyZWF0ZV9hY2NvdW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsS0FBSyxTQUFTLEVBQWEsTUFBTSxzQkFBc0IsQ0FBQztBQUdqRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBK0IsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHekUsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXRELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUvQyx3QkFBc0IsYUFBYSxDQUNqQyxNQUFNLEVBQUUsU0FBUyxFQUNqQixTQUFTLEVBQUUsU0FBUyxFQUNwQixXQUFXLEVBQUUsV0FBVyxFQUN4QixTQUFTLEVBQUUsRUFBRSxHQUFHLFNBQVMsRUFDekIsSUFBSSxFQUFFLEVBQUUsR0FBRyxTQUFTLEVBQ3BCLFNBQVMsRUFBRSxNQUFNLEdBQUcsU0FBUyxFQUM3QixLQUFLLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFDekIsUUFBUSxFQUFFLFlBQVksR0FBRyxTQUFTLEVBQ2xDLFlBQVksRUFBRSxPQUFPLEVBQ3JCLGtCQUFrQixFQUFFLE9BQU8sRUFDM0IsWUFBWSxFQUFFLE9BQU8sRUFDckIsYUFBYSxFQUFFLE9BQU8sRUFDdEIsSUFBSSxFQUFFLE9BQU8sRUFDYixPQUFPLEVBQUUsVUFBVSxFQUNuQixhQUFhLEVBQUUsUUFBUSxFQUN2QixJQUFJLEVBQUUsT0FBTyxFQUNiLE9BQU8sRUFBRSxPQUFPLEVBQ2hCLFdBQVcsRUFBRSxNQUFNLEVBQ25CLEdBQUcsRUFBRSxLQUFLOzs7OztHQWtJWCJ9
@@ -1 +1 @@
1
- {"version":3,"file":"create_account.d.ts","sourceRoot":"","sources":["../../src/cmds/create_account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAI3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,EAAE,GAAG,SAAS,EACzB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,QAAQ,EAAE,YAAY,GAAG,SAAS,EAClC,YAAY,EAAE,OAAO,EACrB,kBAAkB,EAAE,OAAO,EAC3B,YAAY,EAAE,OAAO,EACrB,aAAa,EAAE,OAAO,EACtB,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,KAAK;;;;;GA0HX"}
1
+ {"version":3,"file":"create_account.d.ts","sourceRoot":"","sources":["../../src/cmds/create_account.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,sBAAsB,CAAC;AAGjE,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAA+B,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,EAAE,GAAG,SAAS,EACzB,IAAI,EAAE,EAAE,GAAG,SAAS,EACpB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,QAAQ,EAAE,YAAY,GAAG,SAAS,EAClC,YAAY,EAAE,OAAO,EACrB,kBAAkB,EAAE,OAAO,EAC3B,YAAY,EAAE,OAAO,EACrB,aAAa,EAAE,OAAO,EACtB,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,UAAU,EACnB,aAAa,EAAE,QAAQ,EACvB,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,KAAK;;;;;GAkIX"}
@@ -1,13 +1,14 @@
1
- import { AztecAddress } from '@aztec/aztec.js/addresses';
1
+ import { NO_FROM } from '@aztec/aztec.js/account';
2
2
  import { NO_WAIT } from '@aztec/aztec.js/contracts';
3
+ import { waitForTx } from '@aztec/aztec.js/node';
3
4
  import { prettyPrintJSON } from '@aztec/cli/cli-utils';
4
5
  import { Fr } from '@aztec/foundation/curves/bn254';
5
6
  import { DEFAULT_TX_TIMEOUT_S } from '../utils/cli_wallet_and_node_wrapper.js';
6
7
  import { printProfileResult } from '../utils/profiling.js';
7
- export async function createAccount(wallet, aztecNode, accountType, secretKey, publicKey, alias, deployer, registerOnly, skipInitialization, publicDeploy, registerClass, wait, feeOpts, json, verbose, debugLogger, log) {
8
+ export async function createAccount(wallet, aztecNode, accountType, secretKey, salt, publicKey, alias, deployer, registerOnly, skipInitialization, publicDeploy, registerClass, wait, feeOpts, waitForStatus, json, verbose, debugLogger, log) {
8
9
  secretKey ??= Fr.random();
9
- const account = await wallet.createOrRetrieveAccount(undefined /* address, we don't have it yet */ , secretKey, accountType, Fr.ZERO, publicKey);
10
- const { salt } = account.getInstance();
10
+ const account = await wallet.createOrRetrieveAccount(undefined /* address, we don't have it yet */ , secretKey, accountType, salt, publicKey);
11
+ const instanceSalt = account.getInstance().salt;
11
12
  const { address, publicKeys, partialAddress } = await account.getCompleteAddress();
12
13
  const out = {};
13
14
  if (json) {
@@ -17,7 +18,7 @@ export async function createAccount(wallet, aztecNode, accountType, secretKey, p
17
18
  out.secretKey = secretKey;
18
19
  }
19
20
  out.partialAddress = partialAddress;
20
- out.salt = salt;
21
+ out.salt = instanceSalt;
21
22
  out.initHash = account.getInstance().initializationHash;
22
23
  } else {
23
24
  log(`\nNew account:\n`);
@@ -27,15 +28,17 @@ export async function createAccount(wallet, aztecNode, accountType, secretKey, p
27
28
  log(`Secret key: ${secretKey.toString()}`);
28
29
  }
29
30
  log(`Partial address: ${partialAddress.toString()}`);
30
- log(`Salt: ${salt.toString()}`);
31
+ log(`Salt: ${instanceSalt.toString()}`);
31
32
  log(`Init hash: ${account.getInstance().initializationHash.toString()}`);
32
33
  }
33
34
  let txHash;
34
35
  let txReceipt;
35
- if (!registerOnly) {
36
+ // Initializerless accounts have no deployment tx — creating one only registers it locally — so there is
37
+ // nothing to deploy on-chain.
38
+ if (!registerOnly && accountType !== 'schnorr_initializerless') {
36
39
  const { paymentMethod, gasSettings } = await feeOpts.toUserFeeOptions(aztecNode, wallet, address);
37
40
  const delegatedDeployment = deployer && !account.address.equals(deployer);
38
- const from = delegatedDeployment ? deployer : AztecAddress.ZERO;
41
+ const from = delegatedDeployment ? deployer : NO_FROM;
39
42
  const deployAccountOpts = {
40
43
  skipClassPublication: !registerClass,
41
44
  skipInstancePublication: !publicDeploy,
@@ -46,16 +49,14 @@ export async function createAccount(wallet, aztecNode, accountType, secretKey, p
46
49
  gasSettings
47
50
  }
48
51
  };
52
+ const localStart = performance.now();
49
53
  const deployMethod = await account.getDeployMethod();
50
54
  const sim = await deployMethod.simulate({
51
55
  ...deployAccountOpts,
52
- fee: {
53
- ...deployAccountOpts.fee,
54
- estimateGas: true
55
- }
56
+ includeMetadata: true
56
57
  });
57
- // estimateGas: true guarantees these fields are present
58
- const estimatedGas = sim.estimatedGas;
58
+ // includeMetadata: true guarantees these fields are present
59
+ const estimatedGas = await wallet.estimateGasLimits(sim.gasUsed);
59
60
  const stats = sim.stats;
60
61
  if (feeOpts.estimateOnly) {
61
62
  if (json) {
@@ -84,25 +85,26 @@ export async function createAccount(wallet, aztecNode, accountType, secretKey, p
84
85
  gasSettings: estimatedGas
85
86
  } : undefined
86
87
  };
88
+ ({ txHash } = await deployMethod.send({
89
+ ...sendOpts,
90
+ wait: NO_WAIT
91
+ }));
92
+ const localTimeMs = performance.now() - localStart;
87
93
  if (wait) {
88
- const { receipt } = await deployMethod.send({
89
- ...sendOpts,
90
- wait: {
91
- timeout: DEFAULT_TX_TIMEOUT_S,
92
- returnReceipt: true
93
- }
94
+ const nodeStart = performance.now();
95
+ txReceipt = await waitForTx(aztecNode, txHash, {
96
+ timeout: DEFAULT_TX_TIMEOUT_S,
97
+ waitForStatus
94
98
  });
95
- txReceipt = receipt;
96
- txHash = receipt.txHash;
99
+ const nodeTimeMs = performance.now() - nodeStart;
97
100
  out.txReceipt = {
98
101
  status: txReceipt.status,
99
102
  transactionFee: txReceipt.transactionFee
100
103
  };
101
- } else {
102
- ({ txHash } = await deployMethod.send({
103
- ...sendOpts,
104
- wait: NO_WAIT
105
- }));
104
+ if (!json) {
105
+ log(` Local processing time: ${(localTimeMs / 1000).toFixed(1)}s`);
106
+ log(` Node inclusion time: ${(nodeTimeMs / 1000).toFixed(1)}s`);
107
+ }
106
108
  }
107
109
  debugLogger.debug(`Account contract tx sent with hash ${txHash.toString()}`);
108
110
  out.txHash = txHash;
@@ -122,6 +124,6 @@ export async function createAccount(wallet, aztecNode, accountType, secretKey, p
122
124
  alias,
123
125
  address,
124
126
  secretKey,
125
- salt
127
+ salt: instanceSalt
126
128
  };
127
129
  }
@@ -1,9 +1,10 @@
1
- import { AztecAddress } from '@aztec/aztec.js/addresses';
1
+ import type { AztecAddress } from '@aztec/aztec.js/addresses';
2
2
  import { Fr } from '@aztec/aztec.js/fields';
3
- import type { AztecNode } from '@aztec/aztec.js/node';
3
+ import { type AztecNode } from '@aztec/aztec.js/node';
4
4
  import type { LogFn, Logger } from '@aztec/foundation/log';
5
5
  import { PublicKeys } from '@aztec/stdlib/keys';
6
+ import type { TxStatus } from '@aztec/stdlib/tx';
6
7
  import { CLIFeeArgs } from '../utils/options/fees.js';
7
8
  import type { CLIWallet } from '../utils/wallet.js';
8
- export declare function deploy(wallet: CLIWallet, node: AztecNode, deployer: AztecAddress, artifactPath: string, json: boolean, publicKeys: PublicKeys | undefined, rawArgs: any[], salt: Fr | undefined, initializer: string | undefined, skipInstancePublication: boolean, skipClassPublication: boolean, skipInitialization: boolean | undefined, wait: boolean, feeOpts: CLIFeeArgs, verbose: boolean, timeout: number | undefined, debugLogger: Logger, log: LogFn): Promise<AztecAddress | undefined>;
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY21kcy9kZXBsb3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSXpELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV0RCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR2hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV0RCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCx3QkFBc0IsTUFBTSxDQUMxQixNQUFNLEVBQUUsU0FBUyxFQUNqQixJQUFJLEVBQUUsU0FBUyxFQUNmLFFBQVEsRUFBRSxZQUFZLEVBQ3RCLFlBQVksRUFBRSxNQUFNLEVBQ3BCLElBQUksRUFBRSxPQUFPLEVBQ2IsVUFBVSxFQUFFLFVBQVUsR0FBRyxTQUFTLEVBQ2xDLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFDZCxJQUFJLEVBQUUsRUFBRSxHQUFHLFNBQVMsRUFDcEIsV0FBVyxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBQy9CLHVCQUF1QixFQUFFLE9BQU8sRUFDaEMsb0JBQW9CLEVBQUUsT0FBTyxFQUM3QixrQkFBa0IsRUFBRSxPQUFPLEdBQUcsU0FBUyxFQUN2QyxJQUFJLEVBQUUsT0FBTyxFQUNiLE9BQU8sRUFBRSxVQUFVLEVBQ25CLE9BQU8sRUFBRSxPQUFPLEVBQ2hCLE9BQU8sb0JBQStCLEVBQ3RDLFdBQVcsRUFBRSxNQUFNLEVBQ25CLEdBQUcsRUFBRSxLQUFLLHFDQXFIWCJ9
9
+ export declare function deploy(wallet: CLIWallet, node: AztecNode, deployer: AztecAddress, artifactPath: string, json: boolean, publicKeys: PublicKeys | undefined, rawArgs: any[], salt: Fr | undefined, initializer: string | undefined, skipInstancePublication: boolean, skipClassPublication: boolean, skipInitialization: boolean | undefined, wait: boolean, feeOpts: CLIFeeArgs, waitForStatus: TxStatus, verbose: boolean, timeout: number | undefined, debugLogger: Logger, log: LogFn, universal?: boolean): Promise<AztecAddress>;
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY21kcy9kZXBsb3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJOUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVDLE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBYSxNQUFNLHNCQUFzQixDQUFDO0FBRWpFLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXRELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBELHdCQUFzQixNQUFNLENBQzFCLE1BQU0sRUFBRSxTQUFTLEVBQ2pCLElBQUksRUFBRSxTQUFTLEVBQ2YsUUFBUSxFQUFFLFlBQVksRUFDdEIsWUFBWSxFQUFFLE1BQU0sRUFDcEIsSUFBSSxFQUFFLE9BQU8sRUFDYixVQUFVLEVBQUUsVUFBVSxHQUFHLFNBQVMsRUFDbEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUNkLElBQUksRUFBRSxFQUFFLEdBQUcsU0FBUyxFQUNwQixXQUFXLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFDL0IsdUJBQXVCLEVBQUUsT0FBTyxFQUNoQyxvQkFBb0IsRUFBRSxPQUFPLEVBQzdCLGtCQUFrQixFQUFFLE9BQU8sR0FBRyxTQUFTLEVBQ3ZDLElBQUksRUFBRSxPQUFPLEVBQ2IsT0FBTyxFQUFFLFVBQVUsRUFDbkIsYUFBYSxFQUFFLFFBQVEsRUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFDaEIsT0FBTyxvQkFBK0IsRUFDdEMsV0FBVyxFQUFFLE1BQU0sRUFDbkIsR0FBRyxFQUFFLEtBQUssRUFDVixTQUFTLENBQUMsRUFBRSxPQUFPLHlCQXNIcEIifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/cmds/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAIzD,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,wBAAsB,MAAM,CAC1B,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,OAAO,EACb,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,OAAO,EAAE,GAAG,EAAE,EACd,IAAI,EAAE,EAAE,GAAG,SAAS,EACpB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,uBAAuB,EAAE,OAAO,EAChC,oBAAoB,EAAE,OAAO,EAC7B,kBAAkB,EAAE,OAAO,GAAG,SAAS,EACvC,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,OAAO,EAChB,OAAO,oBAA+B,EACtC,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,KAAK,qCAqHX"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/cmds/deploy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAI9D,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,sBAAsB,CAAC;AAEjE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,wBAAsB,MAAM,CAC1B,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,OAAO,EACb,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,OAAO,EAAE,GAAG,EAAE,EACd,IAAI,EAAE,EAAE,GAAG,SAAS,EACpB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,uBAAuB,EAAE,OAAO,EAChC,oBAAoB,EAAE,OAAO,EAC7B,kBAAkB,EAAE,OAAO,GAAG,SAAS,EACvC,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,UAAU,EACnB,aAAa,EAAE,QAAQ,EACvB,OAAO,EAAE,OAAO,EAChB,OAAO,oBAA+B,EACtC,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,KAAK,EACV,SAAS,CAAC,EAAE,OAAO,yBAsHpB"}
@@ -1,20 +1,21 @@
1
- import { AztecAddress } from '@aztec/aztec.js/addresses';
1
+ import { NO_FROM } from '@aztec/aztec.js/account';
2
2
  import { NO_WAIT } from '@aztec/aztec.js/contracts';
3
3
  import { ContractDeployer } from '@aztec/aztec.js/deployment';
4
4
  import { Fr } from '@aztec/aztec.js/fields';
5
+ import { waitForTx } from '@aztec/aztec.js/node';
5
6
  import { encodeArgs, getContractArtifact, prettyPrintJSON } from '@aztec/cli/utils';
6
7
  import { getAllFunctionAbis, getInitializer } from '@aztec/stdlib/abi';
7
8
  import { PublicKeys } from '@aztec/stdlib/keys';
8
9
  import { DEFAULT_TX_TIMEOUT_S } from '../utils/cli_wallet_and_node_wrapper.js';
9
10
  import { printProfileResult } from '../utils/profiling.js';
10
- export async function deploy(wallet, node, deployer, artifactPath, json, publicKeys, rawArgs, salt, initializer, skipInstancePublication, skipClassPublication, skipInitialization, wait, feeOpts, verbose, timeout = DEFAULT_TX_TIMEOUT_S, debugLogger, log) {
11
+ export async function deploy(wallet, node, deployer, artifactPath, json, publicKeys, rawArgs, salt, initializer, skipInstancePublication, skipClassPublication, skipInitialization, wait, feeOpts, waitForStatus, verbose, timeout = DEFAULT_TX_TIMEOUT_S, debugLogger, log, universal) {
11
12
  const out = {};
12
13
  salt ??= Fr.random();
13
14
  const contractArtifact = await getContractArtifact(artifactPath, log);
14
15
  const hasInitializer = getAllFunctionAbis(contractArtifact).some((fn)=>fn.isInitializer);
15
16
  const constructorArtifact = hasInitializer ? getInitializer(contractArtifact, initializer) : undefined;
16
17
  // TODO(#12081): Add contractArtifact.noirVersion and check here (via Noir.lock)?
17
- const contractDeployer = new ContractDeployer(contractArtifact, wallet, publicKeys ?? PublicKeys.default(), initializer);
18
+ const contractDeployer = new ContractDeployer(contractArtifact, wallet, initializer);
18
19
  let args = [];
19
20
  if (rawArgs.length > 0) {
20
21
  if (!constructorArtifact) {
@@ -24,29 +25,31 @@ export async function deploy(wallet, node, deployer, artifactPath, json, publicK
24
25
  args = encodeArgs(rawArgs, constructorArtifact.parameters);
25
26
  debugLogger.debug(`Encoded arguments: ${args.join(', ')}`);
26
27
  }
27
- const deploy1 = contractDeployer.deploy(...args);
28
+ const deployInteraction = contractDeployer.deploy(args, {
29
+ salt,
30
+ publicKeys: publicKeys ?? PublicKeys.default(),
31
+ ...universal ? {
32
+ universalDeploy: true
33
+ } : {}
34
+ });
28
35
  const { paymentMethod, gasSettings } = await feeOpts.toUserFeeOptions(node, wallet, deployer);
29
36
  const deployOpts = {
30
37
  fee: {
31
38
  gasSettings,
32
39
  paymentMethod
33
40
  },
34
- from: deployer ?? AztecAddress.ZERO,
35
- contractAddressSalt: salt,
36
- universalDeploy: !deployer,
41
+ from: deployer ?? NO_FROM,
37
42
  skipClassPublication,
38
43
  skipInitialization,
39
44
  skipInstancePublication
40
45
  };
41
- const sim = await deploy1.simulate({
46
+ const localStart = performance.now();
47
+ const sim = await deployInteraction.simulate({
42
48
  ...deployOpts,
43
- fee: {
44
- ...deployOpts.fee,
45
- estimateGas: true
46
- }
49
+ includeMetadata: true
47
50
  });
48
- // estimateGas: true guarantees these fields are present
49
- const estimatedGas = sim.estimatedGas;
51
+ // includeMetadata: true guarantees these fields are present
52
+ const estimatedGas = await wallet.estimateGasLimits(sim.gasUsed);
50
53
  const stats = sim.stats;
51
54
  if (feeOpts.estimateOnly) {
52
55
  if (json) {
@@ -65,54 +68,54 @@ export async function deploy(wallet, node, deployer, artifactPath, json, publicK
65
68
  if (verbose) {
66
69
  printProfileResult(stats, log);
67
70
  }
68
- const { address, partialAddress } = deploy1;
69
- const instance = await deploy1.getInstance();
71
+ const instance = await deployInteraction.getInstance();
72
+ const address = instance.address;
73
+ const partialAddress = await deployInteraction.getPartialAddress();
74
+ const { txHash } = await deployInteraction.send({
75
+ ...deployOpts,
76
+ wait: NO_WAIT
77
+ });
78
+ const localTimeMs = performance.now() - localStart;
79
+ debugLogger.debug(`Deploy tx sent with hash ${txHash.toString()}`);
80
+ out.hash = txHash;
70
81
  if (wait) {
71
- const { receipt } = await deploy1.send({
72
- ...deployOpts,
73
- wait: {
74
- timeout,
75
- returnReceipt: true
76
- }
82
+ const nodeStart = performance.now();
83
+ const receipt = await waitForTx(node, txHash, {
84
+ timeout,
85
+ waitForStatus
77
86
  });
78
- const txHash = receipt.txHash;
79
- debugLogger.debug(`Deploy tx sent with hash ${txHash.toString()}`);
80
- out.hash = txHash;
87
+ const nodeTimeMs = performance.now() - nodeStart;
81
88
  if (!json) {
82
- log(`Contract deployed at ${address?.toString()}`);
83
- log(`Contract partial address ${(await partialAddress)?.toString()}`);
89
+ log(`Contract deployed at ${address.toString()}`);
90
+ log(`Contract partial address ${partialAddress.toString()}`);
84
91
  log(`Contract init hash ${instance.initializationHash.toString()}`);
85
92
  log(`Deployment tx hash: ${txHash.toString()}`);
86
93
  log(`Deployment salt: ${salt.toString()}`);
87
94
  log(`Deployer: ${instance.deployer.toString()}`);
88
95
  log(`Transaction fee: ${receipt.transactionFee?.toString()}`);
96
+ log(` Local processing time: ${(localTimeMs / 1000).toFixed(1)}s`);
97
+ log(` Node inclusion time: ${(nodeTimeMs / 1000).toFixed(1)}s`);
89
98
  } else {
90
99
  out.contract = {
91
- address: address?.toString(),
92
- partialAddress: (await partialAddress)?.toString(),
100
+ address: address.toString(),
101
+ partialAddress: partialAddress.toString(),
93
102
  initializationHash: instance.initializationHash.toString(),
94
103
  salt: salt.toString(),
95
104
  transactionFee: receipt.transactionFee?.toString()
96
105
  };
97
106
  }
98
107
  } else {
99
- const { txHash } = await deploy1.send({
100
- ...deployOpts,
101
- wait: NO_WAIT
102
- });
103
- debugLogger.debug(`Deploy tx sent with hash ${txHash.toString()}`);
104
- out.hash = txHash;
105
108
  if (!json) {
106
- log(`Contract deployed at ${address?.toString()}`);
107
- log(`Contract partial address ${(await partialAddress)?.toString()}`);
109
+ log(`Contract deployed at ${address.toString()}`);
110
+ log(`Contract partial address ${partialAddress.toString()}`);
108
111
  log(`Contract init hash ${instance.initializationHash.toString()}`);
109
112
  log(`Deployment tx hash: ${txHash.toString()}`);
110
113
  log(`Deployment salt: ${salt.toString()}`);
111
114
  log(`Deployer: ${instance.deployer.toString()}`);
112
115
  } else {
113
116
  out.contract = {
114
- address: address?.toString(),
115
- partialAddress: (await partialAddress)?.toString(),
117
+ address: address.toString(),
118
+ partialAddress: partialAddress.toString(),
116
119
  initializationHash: instance.initializationHash.toString(),
117
120
  salt: salt.toString()
118
121
  };
@@ -122,5 +125,5 @@ export async function deploy(wallet, node, deployer, artifactPath, json, publicK
122
125
  if (json) {
123
126
  log(prettyPrintJSON(out));
124
127
  }
125
- return deploy1.address;
128
+ return await deployInteraction.getAddress();
126
129
  }
@@ -1,7 +1,8 @@
1
1
  import { AztecAddress } from '@aztec/aztec.js/addresses';
2
- import type { AztecNode } from '@aztec/aztec.js/node';
2
+ import { type AztecNode } from '@aztec/aztec.js/node';
3
3
  import type { LogFn, Logger } from '@aztec/foundation/log';
4
+ import type { TxStatus } from '@aztec/stdlib/tx';
4
5
  import type { CLIFeeArgs } from '../utils/options/fees.js';
5
6
  import type { CLIWallet } from '../utils/wallet.js';
6
- export declare function deployAccount(wallet: CLIWallet, aztecNode: AztecNode, address: AztecAddress, wait: boolean, deployer: AztecAddress | undefined, registerClass: boolean, publicDeploy: boolean, skipInitialization: boolean, feeOpts: CLIFeeArgs, json: boolean, verbose: boolean, debugLogger: Logger, log: LogFn): Promise<void>;
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95X2FjY291bnQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbWRzL2RlcGxveV9hY2NvdW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd0RCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJM0QsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsd0JBQXNCLGFBQWEsQ0FDakMsTUFBTSxFQUFFLFNBQVMsRUFDakIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsT0FBTyxFQUFFLFlBQVksRUFDckIsSUFBSSxFQUFFLE9BQU8sRUFDYixRQUFRLEVBQUUsWUFBWSxHQUFHLFNBQVMsRUFDbEMsYUFBYSxFQUFFLE9BQU8sRUFDdEIsWUFBWSxFQUFFLE9BQU8sRUFDckIsa0JBQWtCLEVBQUUsT0FBTyxFQUMzQixPQUFPLEVBQUUsVUFBVSxFQUNuQixJQUFJLEVBQUUsT0FBTyxFQUNiLE9BQU8sRUFBRSxPQUFPLEVBQ2hCLFdBQVcsRUFBRSxNQUFNLEVBQ25CLEdBQUcsRUFBRSxLQUFLLGlCQXlHWCJ9
7
+ export declare function deployAccount(wallet: CLIWallet, aztecNode: AztecNode, address: AztecAddress, wait: boolean, deployer: AztecAddress | undefined, registerClass: boolean, publicDeploy: boolean, skipInitialization: boolean, feeOpts: CLIFeeArgs, waitForStatus: TxStatus, json: boolean, verbose: boolean, debugLogger: Logger, log: LogFn): Promise<void>;
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95X2FjY291bnQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbWRzL2RlcGxveV9hY2NvdW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsS0FBSyxTQUFTLEVBQWEsTUFBTSxzQkFBc0IsQ0FBQztBQUdqRSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR3BFLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBELHdCQUFzQixhQUFhLENBQ2pDLE1BQU0sRUFBRSxTQUFTLEVBQ2pCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLE9BQU8sRUFBRSxZQUFZLEVBQ3JCLElBQUksRUFBRSxPQUFPLEVBQ2IsUUFBUSxFQUFFLFlBQVksR0FBRyxTQUFTLEVBQ2xDLGFBQWEsRUFBRSxPQUFPLEVBQ3RCLFlBQVksRUFBRSxPQUFPLEVBQ3JCLGtCQUFrQixFQUFFLE9BQU8sRUFDM0IsT0FBTyxFQUFFLFVBQVUsRUFDbkIsYUFBYSxFQUFFLFFBQVEsRUFDdkIsSUFBSSxFQUFFLE9BQU8sRUFDYixPQUFPLEVBQUUsT0FBTyxFQUNoQixXQUFXLEVBQUUsTUFBTSxFQUNuQixHQUFHLEVBQUUsS0FBSyxpQkErR1gifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"deploy_account.d.ts","sourceRoot":"","sources":["../../src/cmds/deploy_account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAI3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,YAAY,GAAG,SAAS,EAClC,aAAa,EAAE,OAAO,EACtB,YAAY,EAAE,OAAO,EACrB,kBAAkB,EAAE,OAAO,EAC3B,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,KAAK,iBAyGX"}
1
+ {"version":3,"file":"deploy_account.d.ts","sourceRoot":"","sources":["../../src/cmds/deploy_account.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,sBAAsB,CAAC;AAGjE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAqB,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,YAAY,GAAG,SAAS,EAClC,aAAa,EAAE,OAAO,EACtB,YAAY,EAAE,OAAO,EACrB,kBAAkB,EAAE,OAAO,EAC3B,OAAO,EAAE,UAAU,EACnB,aAAa,EAAE,QAAQ,EACvB,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,KAAK,iBA+GX"}
@@ -1,9 +1,10 @@
1
- import { AztecAddress } from '@aztec/aztec.js/addresses';
1
+ import { NO_FROM } from '@aztec/aztec.js/account';
2
2
  import { NO_WAIT } from '@aztec/aztec.js/contracts';
3
+ import { waitForTx } from '@aztec/aztec.js/node';
3
4
  import { prettyPrintJSON } from '@aztec/cli/cli-utils';
4
5
  import { DEFAULT_TX_TIMEOUT_S } from '../utils/cli_wallet_and_node_wrapper.js';
5
6
  import { printProfileResult } from '../utils/profiling.js';
6
- export async function deployAccount(wallet, aztecNode, address, wait, deployer, registerClass, publicDeploy, skipInitialization, feeOpts, json, verbose, debugLogger, log) {
7
+ export async function deployAccount(wallet, aztecNode, address, wait, deployer, registerClass, publicDeploy, skipInitialization, feeOpts, waitForStatus, json, verbose, debugLogger, log) {
7
8
  const out = {};
8
9
  const account = await wallet.createOrRetrieveAccount(address);
9
10
  const { partialAddress, publicKeys } = await account.getCompleteAddress();
@@ -26,7 +27,7 @@ export async function deployAccount(wallet, aztecNode, address, wait, deployer,
26
27
  let txReceipt;
27
28
  const { paymentMethod, gasSettings } = await feeOpts.toUserFeeOptions(aztecNode, wallet, address);
28
29
  const delegatedDeployment = deployer && !account.address.equals(deployer);
29
- const from = delegatedDeployment ? deployer : AztecAddress.ZERO;
30
+ const from = delegatedDeployment ? deployer : NO_FROM;
30
31
  const deployAccountOpts = {
31
32
  skipClassPublication: !registerClass,
32
33
  skipInstancePublication: !publicDeploy,
@@ -37,16 +38,14 @@ export async function deployAccount(wallet, aztecNode, address, wait, deployer,
37
38
  gasSettings
38
39
  }
39
40
  };
41
+ const localStart = performance.now();
40
42
  const deployMethod = await account.getDeployMethod();
41
43
  const sim = await deployMethod.simulate({
42
44
  ...deployAccountOpts,
43
- fee: {
44
- ...deployAccountOpts.fee,
45
- estimateGas: true
46
- }
45
+ includeMetadata: true
47
46
  });
48
- // estimateGas: true guarantees these fields are present
49
- const estimatedGas = sim.estimatedGas;
47
+ // includeMetadata: true guarantees these fields are present
48
+ const estimatedGas = await wallet.estimateGasLimits(sim.gasUsed);
50
49
  const stats = sim.stats;
51
50
  if (feeOpts.estimateOnly) {
52
51
  if (json) {
@@ -75,25 +74,26 @@ export async function deployAccount(wallet, aztecNode, address, wait, deployer,
75
74
  gasSettings: estimatedGas
76
75
  } : undefined
77
76
  };
77
+ ({ txHash } = await deployMethod.send({
78
+ ...sendOpts,
79
+ wait: NO_WAIT
80
+ }));
81
+ const localTimeMs = performance.now() - localStart;
78
82
  if (wait) {
79
- const { receipt } = await deployMethod.send({
80
- ...sendOpts,
81
- wait: {
82
- timeout: DEFAULT_TX_TIMEOUT_S,
83
- returnReceipt: true
84
- }
83
+ const nodeStart = performance.now();
84
+ txReceipt = await waitForTx(aztecNode, txHash, {
85
+ timeout: DEFAULT_TX_TIMEOUT_S,
86
+ waitForStatus
85
87
  });
86
- txReceipt = receipt;
87
- txHash = receipt.txHash;
88
+ const nodeTimeMs = performance.now() - nodeStart;
88
89
  out.txReceipt = {
89
90
  status: txReceipt.status,
90
91
  transactionFee: txReceipt.transactionFee
91
92
  };
92
- } else {
93
- ({ txHash } = await deployMethod.send({
94
- ...sendOpts,
95
- wait: NO_WAIT
96
- }));
93
+ if (!json) {
94
+ log(` Local processing time: ${(localTimeMs / 1000).toFixed(1)}s`);
95
+ log(` Node inclusion time: ${(nodeTimeMs / 1000).toFixed(1)}s`);
96
+ }
97
97
  }
98
98
  debugLogger.debug(`Account contract tx sent with hash ${txHash.toString()}`);
99
99
  out.txHash = txHash;
@@ -0,0 +1,5 @@
1
+ import type { AztecAddress } from '@aztec/aztec.js/addresses';
2
+ import type { AztecNode } from '@aztec/aztec.js/node';
3
+ import type { LogFn } from '@aztec/foundation/log';
4
+ export declare function getFeeJuiceBalanceCmd(node: AztecNode, address: AztecAddress, json: boolean, exact: boolean, log: LogFn): Promise<void>;
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0X2ZlZV9qdWljZV9iYWxhbmNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY21kcy9nZXRfZmVlX2p1aWNlX2JhbGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHdEQsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFtQm5ELHdCQUFzQixxQkFBcUIsQ0FDekMsSUFBSSxFQUFFLFNBQVMsRUFDZixPQUFPLEVBQUUsWUFBWSxFQUNyQixJQUFJLEVBQUUsT0FBTyxFQUNiLEtBQUssRUFBRSxPQUFPLEVBQ2QsR0FBRyxFQUFFLEtBQUssaUJBUVgifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get_fee_juice_balance.d.ts","sourceRoot":"","sources":["../../src/cmds/get_fee_juice_balance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAmBnD,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,KAAK,iBAQX"}
@@ -0,0 +1,27 @@
1
+ import { getFeeJuiceBalance } from '@aztec/aztec.js/utils';
2
+ import { prettyPrintJSON } from '@aztec/cli/cli-utils';
3
+ const FEE_JUICE_DECIMALS = 18;
4
+ const FEE_JUICE_UNIT = 10n ** BigInt(FEE_JUICE_DECIMALS);
5
+ /** Formats a raw FeeJuice balance (18 decimals) for human-readable display. */ function formatFeeJuice(raw, exact) {
6
+ const whole = raw / FEE_JUICE_UNIT;
7
+ const fractional = raw % FEE_JUICE_UNIT;
8
+ const fracStr = fractional.toString().padStart(FEE_JUICE_DECIMALS, '0');
9
+ if (exact) {
10
+ return `${whole}.${fracStr} FJ`;
11
+ }
12
+ if (fractional === 0n) {
13
+ return `${whole} FJ`;
14
+ }
15
+ return `${whole}.${fracStr.replace(/0+$/, '')} FJ`;
16
+ }
17
+ export async function getFeeJuiceBalanceCmd(node, address, json, exact, log) {
18
+ const balance = await getFeeJuiceBalance(address, node);
19
+ if (json) {
20
+ log(prettyPrintJSON({
21
+ address: address.toString(),
22
+ balance: balance.toString()
23
+ }));
24
+ } else {
25
+ log(`Fee Juice balance for ${address.toString()}: ${formatFeeJuice(balance, exact)}`);
26
+ }
27
+ }
@@ -2,4 +2,4 @@ import type { LogFn } from '@aztec/foundation/log';
2
2
  import type { WalletDB } from '../storage/wallet_db.js';
3
3
  import type { CLIWallet } from '../utils/wallet.js';
4
4
  export declare function importTestAccounts(wallet: CLIWallet, db: WalletDB, json: boolean, log: LogFn): Promise<void>;
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0X3Rlc3RfYWNjb3VudHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbWRzL2ltcG9ydF90ZXN0X2FjY291bnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRW5ELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBELHdCQUFzQixrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxpQkFrQ2xHIn0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0X3Rlc3RfYWNjb3VudHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbWRzL2ltcG9ydF90ZXN0X2FjY291bnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRW5ELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBELHdCQUFzQixrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxpQkFzQ2xHIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"import_test_accounts.d.ts","sourceRoot":"","sources":["../../src/cmds/import_test_accounts.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,iBAkClG"}
1
+ {"version":3,"file":"import_test_accounts.d.ts","sourceRoot":"","sources":["../../src/cmds/import_test_accounts.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,iBAsClG"}
@@ -10,7 +10,7 @@ export async function importTestAccounts(wallet, db, json, log) {
10
10
  const salt = new Fr(account.salt);
11
11
  const address = account.address;
12
12
  await db.storeAccount(address, {
13
- type: 'schnorr',
13
+ type: 'schnorr_initializerless',
14
14
  secretKey: secret,
15
15
  salt,
16
16
  alias,
@@ -3,4 +3,4 @@ import { type Command } from 'commander';
3
3
  import type { WalletDB } from '../storage/wallet_db.js';
4
4
  import type { CliWalletAndNodeWrapper } from '../utils/cli_wallet_and_node_wrapper.js';
5
5
  export declare function injectCommands(program: Command, log: LogFn, debugLogger: Logger, walletAndNodeWrapper: CliWalletAndNodeWrapper, db: WalletDB): Command;
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbWRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFBLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsS0FBSyxPQUFPLEVBQVUsTUFBTSxXQUFXLENBQUM7QUFHakQsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQXdCdkYsd0JBQWdCLGNBQWMsQ0FDNUIsT0FBTyxFQUFFLE9BQU8sRUFDaEIsR0FBRyxFQUFFLEtBQUssRUFDVixXQUFXLEVBQUUsTUFBTSxFQUNuQixvQkFBb0IsRUFBRSx1QkFBdUIsRUFDN0MsRUFBRSxFQUFFLFFBQVEsV0FvbkJiIn0=
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbWRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFBLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUczRCxPQUFPLEVBQUUsS0FBSyxPQUFPLEVBQVUsTUFBTSxXQUFXLENBQUM7QUFHakQsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQW1DdkYsd0JBQWdCLGNBQWMsQ0FDNUIsT0FBTyxFQUFFLE9BQU8sRUFDaEIsR0FBRyxFQUFFLEtBQUssRUFDVixXQUFXLEVBQUUsTUFBTSxFQUNuQixvQkFBb0IsRUFBRSx1QkFBdUIsRUFDN0MsRUFBRSxFQUFFLFFBQVEsV0E4cEJiIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cmds/index.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,WAAW,CAAC;AAGjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAwBvF,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,KAAK,EACV,WAAW,EAAE,MAAM,EACnB,oBAAoB,EAAE,uBAAuB,EAC7C,EAAE,EAAE,QAAQ,WAonBb"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cmds/index.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG3D,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,WAAW,CAAC;AAGjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAmCvF,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,KAAK,EACV,WAAW,EAAE,MAAM,EACnB,oBAAoB,EAAE,uBAAuB,EAC7C,EAAE,EAAE,QAAQ,WA8pBb"}