@aztec/cli-wallet 0.0.1-commit.f504929 → 0.0.1-commit.f5d02921e

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 (41) hide show
  1. package/dest/cmds/check_tx.d.ts +1 -1
  2. package/dest/cmds/check_tx.d.ts.map +1 -1
  3. package/dest/cmds/check_tx.js +34 -8
  4. package/dest/cmds/create_account.d.ts +4 -3
  5. package/dest/cmds/create_account.d.ts.map +1 -1
  6. package/dest/cmds/create_account.js +24 -21
  7. package/dest/cmds/deploy.d.ts +4 -3
  8. package/dest/cmds/deploy.d.ts.map +1 -1
  9. package/dest/cmds/deploy.js +24 -23
  10. package/dest/cmds/deploy_account.d.ts +4 -3
  11. package/dest/cmds/deploy_account.d.ts.map +1 -1
  12. package/dest/cmds/deploy_account.js +19 -16
  13. package/dest/cmds/get_fee_juice_balance.d.ts +5 -0
  14. package/dest/cmds/get_fee_juice_balance.d.ts.map +1 -0
  15. package/dest/cmds/get_fee_juice_balance.js +27 -0
  16. package/dest/cmds/index.d.ts +1 -1
  17. package/dest/cmds/index.d.ts.map +1 -1
  18. package/dest/cmds/index.js +30 -14
  19. package/dest/cmds/send.d.ts +4 -3
  20. package/dest/cmds/send.d.ts.map +1 -1
  21. package/dest/cmds/send.js +23 -22
  22. package/dest/storage/wallet_db.d.ts +6 -1
  23. package/dest/storage/wallet_db.d.ts.map +1 -1
  24. package/dest/storage/wallet_db.js +14 -0
  25. package/dest/utils/options/fees.d.ts +2 -2
  26. package/dest/utils/options/fees.d.ts.map +1 -1
  27. package/dest/utils/options/fees.js +8 -5
  28. package/dest/utils/wallet.d.ts +5 -5
  29. package/dest/utils/wallet.d.ts.map +1 -1
  30. package/dest/utils/wallet.js +29 -28
  31. package/package.json +14 -14
  32. package/src/cmds/check_tx.ts +40 -9
  33. package/src/cmds/create_account.ts +25 -16
  34. package/src/cmds/deploy.ts +21 -15
  35. package/src/cmds/deploy_account.ts +19 -11
  36. package/src/cmds/get_fee_juice_balance.ts +37 -0
  37. package/src/cmds/index.ts +56 -3
  38. package/src/cmds/send.ts +20 -15
  39. package/src/storage/wallet_db.ts +14 -0
  40. package/src/utils/options/fees.ts +13 -5
  41. package/src/utils/wallet.ts +38 -48
@@ -115,6 +115,7 @@ export function parsePaymentMethod(
115
115
  payment: string,
116
116
  log: LogFn,
117
117
  db?: WalletDB,
118
+ estimateOnly?: boolean,
118
119
  ): (wallet: Wallet, from: AztecAddress, gasSettings: GasSettings) => Promise<FeePaymentMethod | undefined> {
119
120
  const parsed = payment.split(',').reduce(
120
121
  (acc, item) => {
@@ -149,7 +150,7 @@ export function parsePaymentMethod(
149
150
  amount: claimAmount,
150
151
  secret: claimSecret,
151
152
  leafIndex: messageLeafIndex,
152
- } = await db.popBridgedFeeJuice(from, log));
153
+ } = estimateOnly ? await db.peekBridgedFeeJuice(from, log) : await db.popBridgedFeeJuice(from, log));
153
154
  } else {
154
155
  ({ claimAmount, claimSecret, messageLeafIndex } = parsed);
155
156
  }
@@ -157,10 +158,10 @@ export function parsePaymentMethod(
157
158
  const { FeeJuicePaymentMethodWithClaim } = await import('@aztec/aztec.js/fee');
158
159
  return new FeeJuicePaymentMethodWithClaim(from, {
159
160
  claimAmount: (typeof claimAmount === 'string'
160
- ? Fr.fromHexString(claimAmount)
161
+ ? Fr.fromString(claimAmount)
161
162
  : new Fr(claimAmount)
162
163
  ).toBigInt(),
163
- claimSecret: Fr.fromHexString(claimSecret),
164
+ claimSecret: typeof claimSecret === 'string' ? Fr.fromString(claimSecret) : claimSecret,
164
165
  messageLeafIndex: BigInt(messageLeafIndex),
165
166
  });
166
167
  } else {
@@ -171,6 +172,9 @@ export function parsePaymentMethod(
171
172
  case 'fpc-public': {
172
173
  const fpc = getFpc();
173
174
  const asset = getAsset();
175
+ log(
176
+ `WARNING: fpc-public is deprecated and will not work on mainnet alpha. Use fee_juice or fpc-sponsored instead.`,
177
+ );
174
178
  log(`Using public fee payment with asset ${asset} via paymaster ${fpc}`);
175
179
  const { PublicFeePaymentMethod } = await import('@aztec/aztec.js/fee');
176
180
  return new PublicFeePaymentMethod(fpc, from, wallet, gasSettings);
@@ -178,6 +182,9 @@ export function parsePaymentMethod(
178
182
  case 'fpc-private': {
179
183
  const fpc = getFpc();
180
184
  const asset = getAsset();
185
+ log(
186
+ `WARNING: fpc-private is deprecated and will not work on mainnet alpha. Use fee_juice or fpc-sponsored instead.`,
187
+ );
181
188
  log(`Using private fee payment with asset ${asset} via paymaster ${fpc}`);
182
189
  const { PrivateFeePaymentMethod } = await import('@aztec/aztec.js/fee');
183
190
  return new PrivateFeePaymentMethod(fpc, from, wallet, gasSettings);
@@ -260,9 +267,10 @@ export class CLIFeeArgs {
260
267
  }
261
268
 
262
269
  static parse(args: RawCliFeeArgs, log: LogFn, db?: WalletDB): CLIFeeArgs {
270
+ const estimateOnly = !!args.estimateGasOnly;
263
271
  return new CLIFeeArgs(
264
- !!args.estimateGasOnly,
265
- parsePaymentMethod(args.payment ?? 'method=fee_juice', log, db),
272
+ estimateOnly,
273
+ parsePaymentMethod(args.payment ?? 'method=fee_juice', log, db, estimateOnly),
266
274
  parseGasSettings(args),
267
275
  );
268
276
  }
@@ -2,7 +2,7 @@ import { EcdsaRAccountContract, EcdsaRSSHAccountContract } from '@aztec/accounts
2
2
  import { SchnorrAccountContract } from '@aztec/accounts/schnorr';
3
3
  import { StubAccountContractArtifact, createStubAccount } from '@aztec/accounts/stub';
4
4
  import { getIdentities } from '@aztec/accounts/utils';
5
- import { type Account, type AccountContract, SignerlessAccount } from '@aztec/aztec.js/account';
5
+ import { type Account, type AccountContract, NO_FROM } from '@aztec/aztec.js/account';
6
6
  import {
7
7
  type InteractionFeeOptions,
8
8
  getContractInstanceFromInstantiationParams,
@@ -11,18 +11,19 @@ import {
11
11
  import type { AztecNode } from '@aztec/aztec.js/node';
12
12
  import { AccountManager, type Aliased, type SimulateOptions } from '@aztec/aztec.js/wallet';
13
13
  import type { DefaultAccountEntrypointOptions } from '@aztec/entrypoints/account';
14
+ import { DefaultEntrypoint } from '@aztec/entrypoints/default';
14
15
  import { Fr } from '@aztec/foundation/curves/bn254';
15
16
  import type { LogFn } from '@aztec/foundation/log';
16
- import type { AccessScopes, NotesFilter } from '@aztec/pxe/client/lazy';
17
+ import type { NotesFilter } from '@aztec/pxe/client/lazy';
17
18
  import type { PXEConfig } from '@aztec/pxe/config';
18
19
  import type { PXE } from '@aztec/pxe/server';
19
20
  import { createPXE, getPXEConfig } from '@aztec/pxe/server';
20
21
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
21
22
  import { deriveSigningKey } from '@aztec/stdlib/keys';
22
23
  import { NoteDao } from '@aztec/stdlib/note';
23
- import type { TxProvingResult, TxSimulationResult } from '@aztec/stdlib/tx';
24
+ import type { SimulationOverrides, TxExecutionRequest, TxProvingResult, TxSimulationResult } from '@aztec/stdlib/tx';
24
25
  import { ExecutionPayload, mergeExecutionPayloads } from '@aztec/stdlib/tx';
25
- import { BaseWallet, type FeeOptions } from '@aztec/wallet-sdk/base-wallet';
26
+ import { BaseWallet, type SimulateViaEntrypointOptions } from '@aztec/wallet-sdk/base-wallet';
26
27
 
27
28
  import type { WalletDB } from '../storage/wallet_db.js';
28
29
  import type { AccountType } from './constants.js';
@@ -71,7 +72,8 @@ export class CLIWallet extends BaseWallet {
71
72
  const executionOptions: DefaultAccountEntrypointOptions = {
72
73
  txNonce,
73
74
  cancellable: this.cancellableTransactions,
74
- feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions,
75
+ // If from is an address, feeOptions include the way the account contract should handle the fee payment
76
+ feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions!,
75
77
  };
76
78
  return await fromAccount.createTxExecutionRequest(
77
79
  feeExecutionPayload ?? executionPayload,
@@ -92,9 +94,7 @@ export class CLIWallet extends BaseWallet {
92
94
 
93
95
  override async getAccountFromAddress(address: AztecAddress) {
94
96
  let account: Account | undefined;
95
- if (address.equals(AztecAddress.ZERO)) {
96
- account = new SignerlessAccount();
97
- } else if (this.accountCache.has(address.toString())) {
97
+ if (this.accountCache.has(address.toString())) {
98
98
  return this.accountCache.get(address.toString())!;
99
99
  } else {
100
100
  const accountManager = await this.createOrRetrieveAccount(address);
@@ -185,13 +185,7 @@ export class CLIWallet extends BaseWallet {
185
185
  */
186
186
  private async getFakeAccountDataFor(address: AztecAddress) {
187
187
  const originalAccount = await this.getAccountFromAddress(address);
188
- // Account contracts can only be overridden if they have an associated address
189
- // Overwriting SignerlessAccount is not supported, and does not really make sense
190
- // since it has no authorization mechanism.
191
- if (originalAccount instanceof SignerlessAccount) {
192
- throw new Error(`Cannot create fake account data for SignerlessAccount at address: ${address}`);
193
- }
194
- const originalAddress = (originalAccount as Account).getCompleteAddress();
188
+ const originalAddress = originalAccount.getCompleteAddress();
195
189
  const contractInstance = await this.pxe.getContractInstance(originalAddress.address);
196
190
  if (!contractInstance) {
197
191
  throw new Error(`No contract instance found for address: ${originalAddress.address}`);
@@ -220,52 +214,48 @@ export class CLIWallet extends BaseWallet {
220
214
 
221
215
  /**
222
216
  * Uses a stub account for kernelless simulation, bypassing real account authorization.
223
- * Falls through to the standard entrypoint path for SignerlessAccount (ZERO address).
217
+ * Uses DefaultEntrypoint directly for NO_FROM transactions.
224
218
  */
225
219
  protected override async simulateViaEntrypoint(
226
220
  executionPayload: ExecutionPayload,
227
- from: AztecAddress,
228
- feeOptions: FeeOptions,
229
- scopes: AccessScopes,
230
- skipTxValidation?: boolean,
231
- skipFeeEnforcement?: boolean,
221
+ opts: SimulateViaEntrypointOptions,
232
222
  ): Promise<TxSimulationResult> {
233
- if (from.equals(AztecAddress.ZERO)) {
234
- return super.simulateViaEntrypoint(
235
- executionPayload,
236
- from,
237
- feeOptions,
238
- scopes,
239
- skipTxValidation,
240
- skipFeeEnforcement,
241
- );
242
- }
243
-
223
+ const { from, feeOptions, scopes } = opts;
244
224
  const feeExecutionPayload = await feeOptions.walletFeePaymentMethod?.getExecutionPayload();
245
- const executionOptions: DefaultAccountEntrypointOptions = {
246
- txNonce: Fr.random(),
247
- cancellable: this.cancellableTransactions,
248
- feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions,
249
- };
250
225
  const finalExecutionPayload = feeExecutionPayload
251
226
  ? mergeExecutionPayloads([feeExecutionPayload, executionPayload])
252
227
  : executionPayload;
253
-
254
- const { account: fromAccount, instance, artifact } = await this.getFakeAccountDataFor(from);
255
228
  const chainInfo = await this.getChainInfo();
256
- const txRequest = await fromAccount.createTxExecutionRequest(
257
- finalExecutionPayload,
258
- feeOptions.gasSettings,
259
- chainInfo,
260
- executionOptions,
261
- );
229
+
230
+ let overrides: SimulationOverrides | undefined;
231
+ let txRequest: TxExecutionRequest;
232
+ if (from === NO_FROM) {
233
+ const entrypoint = new DefaultEntrypoint();
234
+ txRequest = await entrypoint.createTxExecutionRequest(finalExecutionPayload, feeOptions.gasSettings, chainInfo);
235
+ } else {
236
+ const { account, instance, artifact } = await this.getFakeAccountDataFor(from);
237
+ overrides = {
238
+ contracts: { [from.toString()]: { instance, artifact } },
239
+ };
240
+ const executionOptions: DefaultAccountEntrypointOptions = {
241
+ txNonce: Fr.random(),
242
+ cancellable: this.cancellableTransactions,
243
+ // If from is an address, feeOptions include the way the account contract should handle the fee payment
244
+ feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions!,
245
+ };
246
+ txRequest = await account.createTxExecutionRequest(
247
+ finalExecutionPayload,
248
+ feeOptions.gasSettings,
249
+ chainInfo,
250
+ executionOptions,
251
+ );
252
+ }
253
+
262
254
  return this.pxe.simulateTx(txRequest, {
263
255
  simulatePublic: true,
264
256
  skipFeeEnforcement: true,
265
257
  skipTxValidation: true,
266
- overrides: {
267
- contracts: { [from.toString()]: { instance, artifact } },
268
- },
258
+ overrides,
269
259
  scopes,
270
260
  });
271
261
  }