@aztec/pxe 0.0.1-commit.27d773e65 → 0.0.1-commit.2c85e299c

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 (31) hide show
  1. package/dest/config/index.d.ts +2 -2
  2. package/dest/config/index.d.ts.map +1 -1
  3. package/dest/config/index.js +1 -1
  4. package/dest/contract_function_simulator/contract_function_simulator.js +3 -3
  5. package/dest/contract_function_simulator/oracle/interfaces.d.ts +49 -45
  6. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  7. package/dest/contract_function_simulator/oracle/oracle.d.ts +44 -44
  8. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  9. package/dest/contract_function_simulator/oracle/oracle.js +132 -89
  10. package/dest/contract_function_simulator/oracle/private_execution.js +1 -1
  11. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +20 -20
  12. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  13. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +28 -28
  14. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +36 -34
  15. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  16. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +42 -41
  17. package/dest/oracle_version.d.ts +2 -2
  18. package/dest/oracle_version.js +3 -3
  19. package/dest/pxe.d.ts +3 -2
  20. package/dest/pxe.d.ts.map +1 -1
  21. package/dest/pxe.js +8 -5
  22. package/package.json +16 -16
  23. package/src/config/index.ts +1 -1
  24. package/src/contract_function_simulator/contract_function_simulator.ts +3 -3
  25. package/src/contract_function_simulator/oracle/interfaces.ts +47 -44
  26. package/src/contract_function_simulator/oracle/oracle.ts +135 -107
  27. package/src/contract_function_simulator/oracle/private_execution.ts +1 -1
  28. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +28 -28
  29. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +43 -50
  30. package/src/oracle_version.ts +3 -3
  31. package/src/pxe.ts +6 -3
@@ -189,7 +189,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
189
189
  * The value persists through nested calls, meaning all calls down the stack will use the same
190
190
  * 'senderForTags' value (unless it is replaced).
191
191
  */
192
- public privateGetSenderForTags(): Promise<AztecAddress | undefined> {
192
+ public getSenderForTags(): Promise<AztecAddress | undefined> {
193
193
  return Promise.resolve(this.senderForTags);
194
194
  }
195
195
 
@@ -204,7 +204,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
204
204
  * through nested calls, meaning all calls down the stack will use the same 'senderForTags'
205
205
  * value (unless it is replaced by another call to this setter).
206
206
  */
207
- public privateSetSenderForTags(senderForTags: AztecAddress): Promise<void> {
207
+ public setSenderForTags(senderForTags: AztecAddress): Promise<void> {
208
208
  this.senderForTags = senderForTags;
209
209
  return Promise.resolve();
210
210
  }
@@ -215,7 +215,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
215
215
  * @param recipient - The address receiving the log
216
216
  * @returns An app tag to be used in a log.
217
217
  */
218
- public async privateGetNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
218
+ public async getNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
219
219
  const extendedSecret = await this.#calculateExtendedDirectionalAppTaggingSecret(
220
220
  this.contractAddress,
221
221
  sender,
@@ -223,7 +223,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
223
223
  );
224
224
 
225
225
  const index = await this.#getIndexToUseForSecret(extendedSecret);
226
- this.log.debug(
226
+ this.logger.debug(
227
227
  `Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
228
228
  );
229
229
  this.taggingIndexCache.setLastUsedIndex(extendedSecret, index);
@@ -277,7 +277,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
277
277
  * @param values - Values to store.
278
278
  * @returns The hash of the values.
279
279
  */
280
- public privateStoreInExecutionCache(values: Fr[], hash: Fr) {
280
+ public storeInExecutionCache(values: Fr[], hash: Fr) {
281
281
  return this.executionCache.store(values, hash);
282
282
  }
283
283
 
@@ -286,7 +286,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
286
286
  * @param hash - Hash of the values.
287
287
  * @returns The values.
288
288
  */
289
- public privateLoadFromExecutionCache(hash: Fr): Promise<Fr[]> {
289
+ public loadFromExecutionCache(hash: Fr): Promise<Fr[]> {
290
290
  const preimage = this.executionCache.getPreimage(hash);
291
291
  if (!preimage) {
292
292
  throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
@@ -294,12 +294,12 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
294
294
  return Promise.resolve(preimage);
295
295
  }
296
296
 
297
- override async utilityCheckNullifierExists(innerNullifier: Fr): Promise<boolean> {
297
+ override async checkNullifierExists(innerNullifier: Fr): Promise<boolean> {
298
298
  // This oracle must be overridden because while utility execution can only meaningfully check if a nullifier exists
299
299
  // in the synched block, during private execution there's also the possibility of it being pending, i.e. created
300
300
  // in the current transaction.
301
301
 
302
- this.log.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
302
+ this.logger.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
303
303
  contractAddress: this.contractAddress,
304
304
  });
305
305
 
@@ -307,7 +307,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
307
307
 
308
308
  return (
309
309
  this.noteCache.getNullifiers(this.contractAddress).has(nullifier) ||
310
- (await super.utilityCheckNullifierExists(innerNullifier))
310
+ (await super.checkNullifierExists(innerNullifier))
311
311
  );
312
312
  }
313
313
 
@@ -332,7 +332,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
332
332
  * @param status - The status of notes to fetch.
333
333
  * @returns Array of note data.
334
334
  */
335
- public override async utilityGetNotes(
335
+ public override async getNotes(
336
336
  owner: AztecAddress | undefined,
337
337
  storageSlot: Fr,
338
338
  numSelects: number,
@@ -378,7 +378,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
378
378
  offset,
379
379
  });
380
380
 
381
- this.log.debug(
381
+ this.logger.debug(
382
382
  `Returning ${notes.length} notes for ${this.callContext.contractAddress} at ${storageSlot}: ${notes
383
383
  .map(n => `${n.noteNonce.toString()}:[${n.note.items.map(i => i.toString()).join(',')}]`)
384
384
  .join(', ')}`,
@@ -398,7 +398,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
398
398
  * @param noteHash - A hash of the new note.
399
399
  * @returns
400
400
  */
401
- public privateNotifyCreatedNote(
401
+ public notifyCreatedNote(
402
402
  owner: AztecAddress,
403
403
  storageSlot: Fr,
404
404
  randomness: Fr,
@@ -407,7 +407,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
407
407
  noteHash: Fr,
408
408
  counter: number,
409
409
  ) {
410
- this.log.debug(`Notified of new note with inner hash ${noteHash}`, {
410
+ this.logger.debug(`Notified of new note with inner hash ${noteHash}`, {
411
411
  contractAddress: this.callContext.contractAddress,
412
412
  storageSlot,
413
413
  randomness,
@@ -439,7 +439,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
439
439
  * @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
440
440
  * @param noteHash - A hash of the new note.
441
441
  */
442
- public async privateNotifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number) {
442
+ public async notifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number) {
443
443
  const nullifiedNoteHashCounter = await this.noteCache.nullifyNote(
444
444
  this.callContext.contractAddress,
445
445
  innerNullifier,
@@ -456,19 +456,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
456
456
  * @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
457
457
  * @param noteHash - A hash of the new note.
458
458
  */
459
- public privateNotifyCreatedNullifier(innerNullifier: Fr) {
460
- this.log.debug(`Notified of new inner nullifier ${innerNullifier}`, { contractAddress: this.contractAddress });
459
+ public notifyCreatedNullifier(innerNullifier: Fr) {
460
+ this.logger.debug(`Notified of new inner nullifier ${innerNullifier}`, { contractAddress: this.contractAddress });
461
461
  return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
462
462
  }
463
463
 
464
464
  /**
465
- * Check if a nullifier has been emitted in the same transaction, i.e. if privateNotifyCreatedNullifier has been
465
+ * Check if a nullifier has been emitted in the same transaction, i.e. if notifyCreatedNullifier has been
466
466
  * called for this inner nullifier from the contract with the specified address.
467
467
  * @param innerNullifier - The inner nullifier to check.
468
468
  * @param contractAddress - Address of the contract that emitted the nullifier.
469
469
  * @returns A boolean indicating whether the nullifier is pending or not.
470
470
  */
471
- public async privateIsNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
471
+ public async isNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
472
472
  const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
473
473
  const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
474
474
  return Promise.resolve(isNullifierPending);
@@ -481,10 +481,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
481
481
  * @param log - The contract class log to be emitted.
482
482
  * @param counter - The contract class log's counter.
483
483
  */
484
- public privateNotifyCreatedContractClassLog(log: ContractClassLog, counter: number) {
484
+ public notifyCreatedContractClassLog(log: ContractClassLog, counter: number) {
485
485
  this.contractClassLogs.push(new CountedContractClassLog(log, counter));
486
486
  const text = log.toBuffer().toString('hex');
487
- this.log.verbose(
487
+ this.logger.verbose(
488
488
  `Emitted log from ContractClassRegistry: "${text.length > 100 ? text.slice(0, 100) + '...' : text}"`,
489
489
  );
490
490
  }
@@ -510,7 +510,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
510
510
  * @param isStaticCall - Whether the call is a static call.
511
511
  * @returns The execution result.
512
512
  */
513
- async privateCallPrivateFunction(
513
+ async callPrivateFunction(
514
514
  targetContractAddress: AztecAddress,
515
515
  functionSelector: FunctionSelector,
516
516
  argsHash: Fr,
@@ -524,7 +524,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
524
524
  }
525
525
 
526
526
  const simulatorSetupTimer = new Timer();
527
- this.log.debug(
527
+ this.logger.debug(
528
528
  `Calling private function ${targetContractAddress}:${functionSelector} from ${this.callContext.contractAddress}`,
529
529
  );
530
530
 
@@ -573,7 +573,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
573
573
  jobId: this.jobId,
574
574
  totalPublicCalldataCount: this.totalPublicCalldataCount,
575
575
  sideEffectCounter,
576
- log: this.log,
576
+ log: this.logger,
577
577
  scopes: this.scopes,
578
578
  senderForTags: this.senderForTags,
579
579
  simulator: this.simulator!,
@@ -627,7 +627,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
627
627
  * @param sideEffectCounter - The side effect counter at the start of the call.
628
628
  * @param isStaticCall - Whether the call is a static call.
629
629
  */
630
- public privateNotifyEnqueuedPublicFunctionCall(
630
+ public notifyEnqueuedPublicFunctionCall(
631
631
  _targetContractAddress: AztecAddress,
632
632
  calldataHash: Fr,
633
633
  _sideEffectCounter: number,
@@ -644,7 +644,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
644
644
  * @param sideEffectCounter - The side effect counter at the start of the call.
645
645
  * @param isStaticCall - Whether the call is a static call.
646
646
  */
647
- public privateNotifySetPublicTeardownFunctionCall(
647
+ public notifySetPublicTeardownFunctionCall(
648
648
  _targetContractAddress: AztecAddress,
649
649
  calldataHash: Fr,
650
650
  _sideEffectCounter: number,
@@ -654,11 +654,11 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
654
654
  return Promise.resolve();
655
655
  }
656
656
 
657
- public privateNotifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: number): Promise<void> {
657
+ public notifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: number): Promise<void> {
658
658
  return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
659
659
  }
660
660
 
661
- public privateIsSideEffectCounterRevertible(sideEffectCounter: number): Promise<boolean> {
661
+ public isSideEffectCounterRevertible(sideEffectCounter: number): Promise<boolean> {
662
662
  return Promise.resolve(this.noteCache.isSideEffectCounterRevertible(sideEffectCounter));
663
663
  }
664
664
 
@@ -686,7 +686,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
686
686
  return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
687
687
  }
688
688
 
689
- public utilityEmitOffchainEffect(data: Fr[]): Promise<void> {
689
+ public emitOffchainEffect(data: Fr[]): Promise<void> {
690
690
  this.offchainEffects.push({ data });
691
691
  return Promise.resolve();
692
692
  }
@@ -9,11 +9,11 @@ import type { KeyStore } from '@aztec/key-store';
9
9
  import type { AuthWitness } from '@aztec/stdlib/auth-witness';
10
10
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
11
11
  import { BlockHash } from '@aztec/stdlib/block';
12
- import type { CompleteAddress, ContractInstance } from '@aztec/stdlib/contract';
12
+ import type { CompleteAddress, ContractInstance, PartialAddress } from '@aztec/stdlib/contract';
13
13
  import { siloNullifier } from '@aztec/stdlib/hash';
14
14
  import type { AztecNode } from '@aztec/stdlib/interfaces/server';
15
15
  import type { KeyValidationRequest } from '@aztec/stdlib/kernel';
16
- import { computeAddressSecret } from '@aztec/stdlib/keys';
16
+ import { type PublicKeys, computeAddressSecret } from '@aztec/stdlib/keys';
17
17
  import { deriveEcdhSharedSecret } from '@aztec/stdlib/logs';
18
18
  import { getNonNullifiedL1ToL2MessageWitness } from '@aztec/stdlib/messaging';
19
19
  import type { NoteStatus } from '@aztec/stdlib/note';
@@ -86,7 +86,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
86
86
  protected readonly capsuleStore: CapsuleStore;
87
87
  protected readonly privateEventStore: PrivateEventStore;
88
88
  protected readonly jobId: string;
89
- protected log: ReturnType<typeof createLogger>;
89
+ protected logger: ReturnType<typeof createLogger>;
90
90
  protected readonly scopes: AccessScopes;
91
91
 
92
92
  constructor(args: UtilityExecutionOracleArgs) {
@@ -104,21 +104,21 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
104
104
  this.capsuleStore = args.capsuleStore;
105
105
  this.privateEventStore = args.privateEventStore;
106
106
  this.jobId = args.jobId;
107
- this.log = args.log ?? createLogger('simulator:client_view_context');
107
+ this.logger = args.log ?? createLogger('simulator:client_view_context');
108
108
  this.scopes = args.scopes;
109
109
  }
110
110
 
111
- public utilityAssertCompatibleOracleVersion(version: number): void {
111
+ public assertCompatibleOracleVersion(version: number): void {
112
112
  if (version !== ORACLE_VERSION) {
113
113
  throw new Error(`Incompatible oracle version. Expected version ${ORACLE_VERSION}, got ${version}.`);
114
114
  }
115
115
  }
116
116
 
117
- public utilityGetRandomField(): Fr {
117
+ public getRandomField(): Fr {
118
118
  return Fr.random();
119
119
  }
120
120
 
121
- public utilityGetUtilityContext(): UtilityContext {
121
+ public getUtilityContext(): UtilityContext {
122
122
  return new UtilityContext(this.anchorBlockHeader, this.contractAddress);
123
123
  }
124
124
 
@@ -129,7 +129,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
129
129
  * @throws If the keys are not registered in the key store.
130
130
  * @throws If scopes are defined and the account is not in the scopes.
131
131
  */
132
- public async utilityGetKeyValidationRequest(pkMHash: Fr): Promise<KeyValidationRequest> {
132
+ public async getKeyValidationRequest(pkMHash: Fr): Promise<KeyValidationRequest> {
133
133
  // If scopes are defined, check that the key belongs to an account in the scopes.
134
134
  if (this.scopes !== 'ALL_SCOPES' && this.scopes.length > 0) {
135
135
  let hasAccess = false;
@@ -152,7 +152,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
152
152
  * @param noteHash - The note hash to find in the note hash tree.
153
153
  * @returns The membership witness containing the leaf index and sibling path
154
154
  */
155
- public utilityGetNoteHashMembershipWitness(
155
+ public getNoteHashMembershipWitness(
156
156
  anchorBlockHash: BlockHash,
157
157
  noteHash: Fr,
158
158
  ): Promise<MembershipWitness<typeof NOTE_HASH_TREE_HEIGHT> | undefined> {
@@ -170,7 +170,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
170
170
  * @param blockHash - The block hash to find in the archive tree.
171
171
  * @returns The membership witness containing the leaf index and sibling path
172
172
  */
173
- public utilityGetBlockHashMembershipWitness(
173
+ public getBlockHashMembershipWitness(
174
174
  anchorBlockHash: BlockHash,
175
175
  blockHash: BlockHash,
176
176
  ): Promise<MembershipWitness<typeof ARCHIVE_HEIGHT> | undefined> {
@@ -183,7 +183,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
183
183
  * @param nullifier - Nullifier we try to find witness for.
184
184
  * @returns The nullifier membership witness (if found).
185
185
  */
186
- public utilityGetNullifierMembershipWitness(
186
+ public getNullifierMembershipWitness(
187
187
  blockHash: BlockHash,
188
188
  nullifier: Fr,
189
189
  ): Promise<NullifierMembershipWitness | undefined> {
@@ -199,7 +199,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
199
199
  * list structure" of leaves and proving that a lower nullifier is pointing to a bigger next value than the nullifier
200
200
  * we are trying to prove non-inclusion for.
201
201
  */
202
- public utilityGetLowNullifierMembershipWitness(
202
+ public getLowNullifierMembershipWitness(
203
203
  blockHash: BlockHash,
204
204
  nullifier: Fr,
205
205
  ): Promise<NullifierMembershipWitness | undefined> {
@@ -212,7 +212,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
212
212
  * @param leafSlot - The slot of the public data tree to get the witness for.
213
213
  * @returns - The witness
214
214
  */
215
- public utilityGetPublicDataWitness(blockHash: BlockHash, leafSlot: Fr): Promise<PublicDataWitness | undefined> {
215
+ public getPublicDataWitness(blockHash: BlockHash, leafSlot: Fr): Promise<PublicDataWitness | undefined> {
216
216
  return this.aztecNode.getPublicDataWitness(blockHash, leafSlot);
217
217
  }
218
218
 
@@ -221,7 +221,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
221
221
  * @param blockNumber - The number of a block of which to get the block header.
222
222
  * @returns Block extracted from a block with block number `blockNumber`.
223
223
  */
224
- public async utilityGetBlockHeader(blockNumber: BlockNumber): Promise<BlockHeader | undefined> {
224
+ public async getBlockHeader(blockNumber: BlockNumber): Promise<BlockHeader | undefined> {
225
225
  const anchorBlockNumber = this.anchorBlockHeader.getBlockNumber();
226
226
  if (blockNumber > anchorBlockNumber) {
227
227
  throw new Error(`Block number ${blockNumber} is higher than current block ${anchorBlockNumber}`);
@@ -232,12 +232,18 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
232
232
  }
233
233
 
234
234
  /**
235
- * Retrieve the complete address associated to a given address.
235
+ * Retrieve the public keys and partial address associated to a given address.
236
236
  * @param account - The account address.
237
- * @returns A complete address associated with the input address, or `undefined` if not registered.
237
+ * @returns The public keys and partial address, or `undefined` if the account is not registered.
238
238
  */
239
- public utilityTryGetPublicKeysAndPartialAddress(account: AztecAddress): Promise<CompleteAddress | undefined> {
240
- return this.addressStore.getCompleteAddress(account);
239
+ public async tryGetPublicKeysAndPartialAddress(
240
+ account: AztecAddress,
241
+ ): Promise<{ publicKeys: PublicKeys; partialAddress: PartialAddress } | undefined> {
242
+ const completeAddress = await this.addressStore.getCompleteAddress(account);
243
+ if (!completeAddress) {
244
+ return undefined;
245
+ }
246
+ return { publicKeys: completeAddress.publicKeys, partialAddress: completeAddress.partialAddress };
241
247
  }
242
248
 
243
249
  protected async getCompleteAddressOrFail(account: AztecAddress): Promise<CompleteAddress> {
@@ -256,11 +262,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
256
262
  * @param address - Address.
257
263
  * @returns A contract instance.
258
264
  */
259
- public utilityGetContractInstance(address: AztecAddress): Promise<ContractInstance> {
260
- return this.getContractInstance(address);
261
- }
262
-
263
- protected async getContractInstance(address: AztecAddress): Promise<ContractInstance> {
265
+ public async getContractInstance(address: AztecAddress): Promise<ContractInstance> {
264
266
  const instance = await this.contractStore.getContractInstance(address);
265
267
  if (!instance) {
266
268
  throw new Error(`No contract instance found for address ${address.toString()}`);
@@ -274,7 +276,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
274
276
  * @param messageHash - Hash of the message to authenticate.
275
277
  * @returns Authentication witness for the requested message hash.
276
278
  */
277
- public utilityGetAuthWitness(messageHash: Fr): Promise<Fr[] | undefined> {
279
+ public getAuthWitness(messageHash: Fr): Promise<Fr[] | undefined> {
278
280
  return Promise.resolve(this.authWitnesses.find(w => w.requestHash.equals(messageHash))?.witness);
279
281
  }
280
282
 
@@ -300,7 +302,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
300
302
  * @param status - The status of notes to fetch.
301
303
  * @returns Array of note data.
302
304
  */
303
- public async utilityGetNotes(
305
+ public async getNotes(
304
306
  owner: AztecAddress | undefined,
305
307
  storageSlot: Fr,
306
308
  numSelects: number,
@@ -340,7 +342,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
340
342
  * @param innerNullifier - The inner nullifier.
341
343
  * @returns A boolean indicating whether the nullifier exists in the tree or not.
342
344
  */
343
- public async utilityCheckNullifierExists(innerNullifier: Fr) {
345
+ public async checkNullifierExists(innerNullifier: Fr) {
344
346
  const [nullifier, anchorBlockHash] = await Promise.all([
345
347
  siloNullifier(this.contractAddress, innerNullifier!),
346
348
  this.anchorBlockHeader.hash(),
@@ -359,7 +361,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
359
361
  * @dev Contract address and secret are only used to compute the nullifier to get non-nullified messages
360
362
  * @returns The l1 to l2 membership witness (index of message in the tree and sibling path).
361
363
  */
362
- public async utilityGetL1ToL2MembershipWitness(contractAddress: AztecAddress, messageHash: Fr, secret: Fr) {
364
+ public async getL1ToL2MembershipWitness(contractAddress: AztecAddress, messageHash: Fr, secret: Fr) {
363
365
  const [messageIndex, siblingPath] = await getNonNullifiedL1ToL2MessageWitness(
364
366
  this.aztecNode,
365
367
  contractAddress,
@@ -377,7 +379,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
377
379
  * @param startStorageSlot - The starting storage slot.
378
380
  * @param numberOfElements - Number of elements to read from the starting storage slot.
379
381
  */
380
- public async utilityStorageRead(
382
+ public async storageRead(
381
383
  blockHash: BlockHash,
382
384
  contractAddress: AztecAddress,
383
385
  startStorageSlot: Fr,
@@ -391,7 +393,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
391
393
  slots.map(storageSlot => this.aztecNode.getPublicStorageAt(blockHash, contractAddress, storageSlot)),
392
394
  );
393
395
 
394
- this.log.debug(
396
+ this.logger.debug(
395
397
  `Oracle storage read: slots=[${slots.map(slot => slot.toString()).join(', ')}] address=${contractAddress.toString()} values=[${values.join(', ')}]`,
396
398
  );
397
399
 
@@ -414,7 +416,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
414
416
  return this.contractLogger;
415
417
  }
416
418
 
417
- public async utilityLog(level: number, message: string, fields: Fr[]): Promise<void> {
419
+ public async log(level: number, message: string, fields: Fr[]): Promise<void> {
418
420
  if (!LogLevels[level]) {
419
421
  throw new Error(`Invalid log level: ${level}`);
420
422
  }
@@ -422,7 +424,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
422
424
  logContractMessage(logger, LogLevels[level], message, fields);
423
425
  }
424
426
 
425
- public async utilityFetchTaggedLogs(pendingTaggedLogArrayBaseSlot: Fr) {
427
+ public async fetchTaggedLogs(pendingTaggedLogArrayBaseSlot: Fr) {
426
428
  const logService = new LogService(
427
429
  this.aztecNode,
428
430
  this.anchorBlockHeader,
@@ -432,7 +434,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
432
434
  this.senderAddressBookStore,
433
435
  this.addressStore,
434
436
  this.jobId,
435
- this.log.getBindings(),
437
+ this.logger.getBindings(),
436
438
  );
437
439
 
438
440
  await logService.fetchTaggedLogs(this.contractAddress, pendingTaggedLogArrayBaseSlot, this.scopes);
@@ -448,7 +450,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
448
450
  * @param noteValidationRequestsArrayBaseSlot - The base slot of capsule array containing note validation requests.
449
451
  * @param eventValidationRequestsArrayBaseSlot - The base slot of capsule array containing event validation requests.
450
452
  */
451
- public async utilityValidateAndStoreEnqueuedNotesAndEvents(
453
+ public async validateAndStoreEnqueuedNotesAndEvents(
452
454
  contractAddress: AztecAddress,
453
455
  noteValidationRequestsArrayBaseSlot: Fr,
454
456
  eventValidationRequestsArrayBaseSlot: Fr,
@@ -504,7 +506,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
504
506
  await this.capsuleStore.setCapsuleArray(contractAddress, eventValidationRequestsArrayBaseSlot, [], this.jobId);
505
507
  }
506
508
 
507
- public async utilityBulkRetrieveLogs(
509
+ public async bulkRetrieveLogs(
508
510
  contractAddress: AztecAddress,
509
511
  logRetrievalRequestsArrayBaseSlot: Fr,
510
512
  logRetrievalResponsesArrayBaseSlot: Fr,
@@ -529,7 +531,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
529
531
  this.senderAddressBookStore,
530
532
  this.addressStore,
531
533
  this.jobId,
532
- this.log.getBindings(),
534
+ this.logger.getBindings(),
533
535
  );
534
536
 
535
537
  const maybeLogRetrievalResponses = await logService.bulkRetrieveLogs(logRetrievalRequests);
@@ -546,7 +548,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
546
548
  );
547
549
  }
548
550
 
549
- public utilityStoreCapsule(contractAddress: AztecAddress, slot: Fr, capsule: Fr[]): Promise<void> {
551
+ public storeCapsule(contractAddress: AztecAddress, slot: Fr, capsule: Fr[]): Promise<void> {
550
552
  if (!contractAddress.equals(this.contractAddress)) {
551
553
  // TODO(#10727): instead of this check that this.contractAddress is allowed to access the external DB
552
554
  throw new Error(`Contract ${contractAddress} is not allowed to access ${this.contractAddress}'s PXE DB`);
@@ -555,7 +557,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
555
557
  return Promise.resolve();
556
558
  }
557
559
 
558
- public async utilityLoadCapsule(contractAddress: AztecAddress, slot: Fr): Promise<Fr[] | null> {
560
+ public async loadCapsule(contractAddress: AztecAddress, slot: Fr): Promise<Fr[] | null> {
559
561
  if (!contractAddress.equals(this.contractAddress)) {
560
562
  // TODO(#10727): instead of this check that this.contractAddress is allowed to access the external DB
561
563
  throw new Error(`Contract ${contractAddress} is not allowed to access ${this.contractAddress}'s PXE DB`);
@@ -567,7 +569,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
567
569
  );
568
570
  }
569
571
 
570
- public utilityDeleteCapsule(contractAddress: AztecAddress, slot: Fr): Promise<void> {
572
+ public deleteCapsule(contractAddress: AztecAddress, slot: Fr): Promise<void> {
571
573
  if (!contractAddress.equals(this.contractAddress)) {
572
574
  // TODO(#10727): instead of this check that this.contractAddress is allowed to access the external DB
573
575
  throw new Error(`Contract ${contractAddress} is not allowed to access ${this.contractAddress}'s PXE DB`);
@@ -576,12 +578,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
576
578
  return Promise.resolve();
577
579
  }
578
580
 
579
- public utilityCopyCapsule(
580
- contractAddress: AztecAddress,
581
- srcSlot: Fr,
582
- dstSlot: Fr,
583
- numEntries: number,
584
- ): Promise<void> {
581
+ public copyCapsule(contractAddress: AztecAddress, srcSlot: Fr, dstSlot: Fr, numEntries: number): Promise<void> {
585
582
  if (!contractAddress.equals(this.contractAddress)) {
586
583
  // TODO(#10727): instead of this check that this.contractAddress is allowed to access the external DB
587
584
  throw new Error(`Contract ${contractAddress} is not allowed to access ${this.contractAddress}'s PXE DB`);
@@ -590,7 +587,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
590
587
  }
591
588
 
592
589
  // TODO(#11849): consider replacing this oracle with a pure Noir implementation of aes decryption.
593
- public utilityAes128Decrypt(ciphertext: Buffer, iv: Buffer, symKey: Buffer): Promise<Buffer> {
590
+ public aes128Decrypt(ciphertext: Buffer, iv: Buffer, symKey: Buffer): Promise<Buffer> {
594
591
  const aes128 = new Aes128();
595
592
  return aes128.decryptBufferCBC(ciphertext, iv, symKey);
596
593
  }
@@ -601,11 +598,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
601
598
  * @param ephPk - The ephemeral public key to get the secret for.
602
599
  * @returns The secret for the given address.
603
600
  */
604
- public utilityGetSharedSecret(address: AztecAddress, ephPk: Point): Promise<Point> {
605
- return this.getSharedSecret(address, ephPk);
606
- }
607
-
608
- protected async getSharedSecret(address: AztecAddress, ephPk: Point): Promise<Point> {
601
+ public async getSharedSecret(address: AztecAddress, ephPk: Point): Promise<Point> {
609
602
  // TODO(#12656): return an app-siloed secret
610
603
  const recipientCompleteAddress = await this.getCompleteAddressOrFail(address);
611
604
  const ivskM = await this.keyStore.getMasterSecretKey(
@@ -2,11 +2,11 @@
2
2
  /// to version the oracle interface to ensure that developers get a reasonable error message if they use incompatible
3
3
  /// versions of Aztec.nr and PXE. The Noir counterpart is in `noir-projects/aztec-nr/aztec/src/oracle/version.nr`.
4
4
  ///
5
- /// @dev Whenever a contract function or Noir test is run, the `utilityAssertCompatibleOracleVersion` oracle is called
5
+ /// @dev Whenever a contract function or Noir test is run, the `aztec_utl_assertCompatibleOracleVersion` oracle is called
6
6
  /// and if the oracle version is incompatible an error is thrown.
7
- export const ORACLE_VERSION = 12;
7
+ export const ORACLE_VERSION = 14;
8
8
 
9
9
  /// This hash is computed as by hashing the Oracle interface and it is used to detect when the Oracle interface changes,
10
10
  /// which in turn implies that you need to update the ORACLE_VERSION constant in this file and in
11
11
  /// `noir-projects/aztec-nr/aztec/src/oracle/version.nr`.
12
- export const ORACLE_INTERFACE_HASH = '666a8a7fc697f72b29dbf0ae7464db269cf5afa019acac8861f814543147dbb4';
12
+ export const ORACLE_INTERFACE_HASH = '9fb918682455c164ce8dd3acb71c751e2b9b2fc48913604069c9ea885fa378ca';
package/src/pxe.ts CHANGED
@@ -145,6 +145,7 @@ export type PXECreateArgs = {
145
145
  export class PXE {
146
146
  private constructor(
147
147
  private node: AztecNode,
148
+ private db: AztecAsyncKVStore,
148
149
  private blockStateSynchronizer: BlockSynchronizer,
149
150
  private keyStore: KeyStore,
150
151
  private contractStore: ContractStore,
@@ -240,6 +241,7 @@ export class PXE {
240
241
 
241
242
  const pxe = new PXE(
242
243
  node,
244
+ store,
243
245
  synchronizer,
244
246
  keyStore,
245
247
  contractStore,
@@ -1130,9 +1132,10 @@ export class PXE {
1130
1132
  }
1131
1133
 
1132
1134
  /**
1133
- * Stops the PXE's job queue.
1135
+ * Stops the PXE's job queue and closes the backing store.
1134
1136
  */
1135
- public stop(): Promise<void> {
1136
- return this.jobQueue.end();
1137
+ public async stop(): Promise<void> {
1138
+ await this.jobQueue.end();
1139
+ await this.db.close();
1137
1140
  }
1138
1141
  }