@aztec/pxe 0.0.1-commit.7cf39cb55 → 0.0.1-commit.7ffbba4

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 (161) hide show
  1. package/dest/access_scopes.d.ts +9 -0
  2. package/dest/access_scopes.d.ts.map +1 -0
  3. package/dest/access_scopes.js +6 -0
  4. package/dest/config/index.d.ts +2 -2
  5. package/dest/config/index.d.ts.map +1 -1
  6. package/dest/config/index.js +1 -1
  7. package/dest/config/package_info.js +1 -1
  8. package/dest/contract_function_simulator/contract_function_simulator.d.ts +5 -4
  9. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  10. package/dest/contract_function_simulator/contract_function_simulator.js +12 -12
  11. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +5 -5
  12. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  13. package/dest/contract_function_simulator/execution_tagging_index_cache.js +3 -3
  14. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +2 -3
  15. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  16. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +5 -4
  17. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +1 -1
  18. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  19. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -3
  20. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +2 -4
  21. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  22. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +3 -5
  23. package/dest/contract_function_simulator/oracle/interfaces.d.ts +48 -45
  24. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  25. package/dest/contract_function_simulator/oracle/oracle.d.ts +43 -44
  26. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  27. package/dest/contract_function_simulator/oracle/oracle.js +129 -91
  28. package/dest/contract_function_simulator/oracle/private_execution.js +1 -1
  29. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +22 -35
  30. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  31. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +37 -64
  32. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +39 -36
  33. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  34. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +49 -51
  35. package/dest/contract_logging.d.ts +22 -0
  36. package/dest/contract_logging.d.ts.map +1 -0
  37. package/dest/contract_logging.js +23 -0
  38. package/dest/contract_sync/contract_sync_service.d.ts +4 -3
  39. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -1
  40. package/dest/contract_sync/contract_sync_service.js +10 -10
  41. package/dest/contract_sync/helpers.d.ts +3 -2
  42. package/dest/contract_sync/helpers.d.ts.map +1 -1
  43. package/dest/contract_sync/helpers.js +3 -3
  44. package/dest/debug/pxe_debug_utils.d.ts +5 -4
  45. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  46. package/dest/debug/pxe_debug_utils.js +4 -4
  47. package/dest/entrypoints/client/bundle/index.d.ts +4 -1
  48. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  49. package/dest/entrypoints/client/bundle/index.js +3 -0
  50. package/dest/entrypoints/client/lazy/index.d.ts +4 -1
  51. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  52. package/dest/entrypoints/client/lazy/index.js +3 -0
  53. package/dest/entrypoints/server/index.d.ts +3 -1
  54. package/dest/entrypoints/server/index.d.ts.map +1 -1
  55. package/dest/entrypoints/server/index.js +2 -0
  56. package/dest/logs/log_service.d.ts +3 -2
  57. package/dest/logs/log_service.d.ts.map +1 -1
  58. package/dest/logs/log_service.js +5 -5
  59. package/dest/notes/note_service.d.ts +4 -3
  60. package/dest/notes/note_service.d.ts.map +1 -1
  61. package/dest/notes/note_service.js +3 -2
  62. package/dest/notes_filter.d.ts +25 -0
  63. package/dest/notes_filter.d.ts.map +1 -0
  64. package/dest/notes_filter.js +4 -0
  65. package/dest/oracle_version.d.ts +2 -2
  66. package/dest/oracle_version.js +3 -3
  67. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  68. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  69. package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
  70. package/dest/private_kernel/hints/index.d.ts +1 -1
  71. package/dest/private_kernel/hints/index.js +1 -1
  72. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +4 -3
  73. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  74. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +129 -68
  75. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  76. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  77. package/dest/private_kernel/hints/test_utils.js +203 -0
  78. package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
  79. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  80. package/dest/private_kernel/private_kernel_execution_prover.js +19 -11
  81. package/dest/private_kernel/private_kernel_oracle.d.ts +6 -2
  82. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  83. package/dest/private_kernel/private_kernel_oracle.js +7 -3
  84. package/dest/pxe.d.ts +14 -12
  85. package/dest/pxe.d.ts.map +1 -1
  86. package/dest/pxe.js +40 -30
  87. package/dest/storage/contract_store/contract_store.d.ts +42 -15
  88. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  89. package/dest/storage/contract_store/contract_store.js +140 -64
  90. package/dest/storage/note_store/note_store.d.ts +3 -2
  91. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  92. package/dest/storage/note_store/note_store.js +2 -2
  93. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  94. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  95. package/dest/storage/tagging_store/sender_tagging_store.d.ts +5 -5
  96. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  97. package/dest/storage/tagging_store/sender_tagging_store.js +4 -4
  98. package/dest/tagging/get_all_logs_by_tags.d.ts +1 -1
  99. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
  100. package/dest/tagging/get_all_logs_by_tags.js +17 -3
  101. package/dest/tagging/index.d.ts +2 -2
  102. package/dest/tagging/index.d.ts.map +1 -1
  103. package/dest/tagging/index.js +1 -1
  104. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +4 -5
  105. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
  106. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +7 -7
  107. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
  108. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +6 -7
  109. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -1
  110. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +12 -11
  111. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -8
  112. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  113. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +3 -6
  114. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +4 -7
  115. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  116. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +14 -15
  117. package/package.json +16 -16
  118. package/src/access_scopes.ts +9 -0
  119. package/src/config/index.ts +1 -1
  120. package/src/config/package_info.ts +1 -1
  121. package/src/contract_function_simulator/contract_function_simulator.ts +23 -24
  122. package/src/contract_function_simulator/execution_tagging_index_cache.ts +5 -5
  123. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +8 -5
  124. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +1 -4
  125. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +3 -6
  126. package/src/contract_function_simulator/oracle/interfaces.ts +48 -54
  127. package/src/contract_function_simulator/oracle/oracle.ts +136 -136
  128. package/src/contract_function_simulator/oracle/private_execution.ts +1 -1
  129. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +45 -82
  130. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +59 -62
  131. package/src/contract_logging.ts +39 -0
  132. package/src/contract_sync/contract_sync_service.ts +19 -12
  133. package/src/contract_sync/helpers.ts +7 -2
  134. package/src/debug/pxe_debug_utils.ts +9 -8
  135. package/src/entrypoints/client/bundle/index.ts +3 -0
  136. package/src/entrypoints/client/lazy/index.ts +3 -0
  137. package/src/entrypoints/server/index.ts +2 -0
  138. package/src/logs/log_service.ts +13 -11
  139. package/src/notes/note_service.ts +4 -3
  140. package/src/notes_filter.ts +26 -0
  141. package/src/oracle_version.ts +3 -3
  142. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  143. package/src/private_kernel/hints/index.ts +1 -1
  144. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +164 -117
  145. package/src/private_kernel/hints/test_utils.ts +325 -0
  146. package/src/private_kernel/private_kernel_execution_prover.ts +19 -12
  147. package/src/private_kernel/private_kernel_oracle.ts +7 -7
  148. package/src/pxe.ts +51 -43
  149. package/src/storage/contract_store/contract_store.ts +170 -71
  150. package/src/storage/note_store/note_store.ts +7 -3
  151. package/src/storage/tagging_store/recipient_tagging_store.ts +9 -5
  152. package/src/storage/tagging_store/sender_tagging_store.ts +8 -8
  153. package/src/tagging/get_all_logs_by_tags.ts +28 -4
  154. package/src/tagging/index.ts +1 -1
  155. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +7 -10
  156. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
  157. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +10 -15
  158. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +4 -9
  159. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +11 -20
  160. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  161. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
@@ -3,23 +3,25 @@ import type { BlockNumber } from '@aztec/foundation/branded-types';
3
3
  import { Aes128 } from '@aztec/foundation/crypto/aes128';
4
4
  import { Fr } from '@aztec/foundation/curves/bn254';
5
5
  import { Point } from '@aztec/foundation/curves/grumpkin';
6
- import { LogLevels, type Logger, applyStringFormatting, createLogger } from '@aztec/foundation/log';
6
+ import { LogLevels, type Logger, createLogger } from '@aztec/foundation/log';
7
7
  import type { MembershipWitness } from '@aztec/foundation/trees';
8
8
  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';
20
20
  import { MerkleTreeId, type NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
21
21
  import type { BlockHeader, Capsule } from '@aztec/stdlib/tx';
22
22
 
23
+ import type { AccessScopes } from '../../access_scopes.js';
24
+ import { createContractLogger, logContractMessage } from '../../contract_logging.js';
23
25
  import { EventService } from '../../events/event_service.js';
24
26
  import { LogService } from '../../logs/log_service.js';
25
27
  import { NoteService } from '../../notes/note_service.js';
@@ -58,7 +60,7 @@ export type UtilityExecutionOracleArgs = {
58
60
  privateEventStore: PrivateEventStore;
59
61
  jobId: string;
60
62
  log?: ReturnType<typeof createLogger>;
61
- scopes?: AztecAddress[];
63
+ scopes: AccessScopes;
62
64
  };
63
65
 
64
66
  /**
@@ -84,8 +86,8 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
84
86
  protected readonly capsuleStore: CapsuleStore;
85
87
  protected readonly privateEventStore: PrivateEventStore;
86
88
  protected readonly jobId: string;
87
- protected log: ReturnType<typeof createLogger>;
88
- protected readonly scopes?: AztecAddress[];
89
+ protected logger: ReturnType<typeof createLogger>;
90
+ protected readonly scopes: AccessScopes;
89
91
 
90
92
  constructor(args: UtilityExecutionOracleArgs) {
91
93
  this.contractAddress = args.contractAddress;
@@ -102,21 +104,21 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
102
104
  this.capsuleStore = args.capsuleStore;
103
105
  this.privateEventStore = args.privateEventStore;
104
106
  this.jobId = args.jobId;
105
- this.log = args.log ?? createLogger('simulator:client_view_context');
107
+ this.logger = args.log ?? createLogger('simulator:client_view_context');
106
108
  this.scopes = args.scopes;
107
109
  }
108
110
 
109
- public utilityAssertCompatibleOracleVersion(version: number): void {
111
+ public assertCompatibleOracleVersion(version: number): void {
110
112
  if (version !== ORACLE_VERSION) {
111
113
  throw new Error(`Incompatible oracle version. Expected version ${ORACLE_VERSION}, got ${version}.`);
112
114
  }
113
115
  }
114
116
 
115
- public utilityGetRandomField(): Fr {
117
+ public getRandomField(): Fr {
116
118
  return Fr.random();
117
119
  }
118
120
 
119
- public utilityGetUtilityContext(): UtilityContext {
121
+ public getUtilityContext(): UtilityContext {
120
122
  return new UtilityContext(this.anchorBlockHeader, this.contractAddress);
121
123
  }
122
124
 
@@ -127,9 +129,9 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
127
129
  * @throws If the keys are not registered in the key store.
128
130
  * @throws If scopes are defined and the account is not in the scopes.
129
131
  */
130
- public async utilityGetKeyValidationRequest(pkMHash: Fr): Promise<KeyValidationRequest> {
132
+ public async getKeyValidationRequest(pkMHash: Fr): Promise<KeyValidationRequest> {
131
133
  // If scopes are defined, check that the key belongs to an account in the scopes.
132
- if (this.scopes && this.scopes.length > 0) {
134
+ if (this.scopes !== 'ALL_SCOPES' && this.scopes.length > 0) {
133
135
  let hasAccess = false;
134
136
  for (let i = 0; i < this.scopes.length && !hasAccess; i++) {
135
137
  if (await this.keyStore.accountHasKey(this.scopes[i], pkMHash)) {
@@ -150,7 +152,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
150
152
  * @param noteHash - The note hash to find in the note hash tree.
151
153
  * @returns The membership witness containing the leaf index and sibling path
152
154
  */
153
- public utilityGetNoteHashMembershipWitness(
155
+ public getNoteHashMembershipWitness(
154
156
  anchorBlockHash: BlockHash,
155
157
  noteHash: Fr,
156
158
  ): Promise<MembershipWitness<typeof NOTE_HASH_TREE_HEIGHT> | undefined> {
@@ -168,7 +170,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
168
170
  * @param blockHash - The block hash to find in the archive tree.
169
171
  * @returns The membership witness containing the leaf index and sibling path
170
172
  */
171
- public utilityGetBlockHashMembershipWitness(
173
+ public getBlockHashMembershipWitness(
172
174
  anchorBlockHash: BlockHash,
173
175
  blockHash: BlockHash,
174
176
  ): Promise<MembershipWitness<typeof ARCHIVE_HEIGHT> | undefined> {
@@ -181,7 +183,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
181
183
  * @param nullifier - Nullifier we try to find witness for.
182
184
  * @returns The nullifier membership witness (if found).
183
185
  */
184
- public utilityGetNullifierMembershipWitness(
186
+ public getNullifierMembershipWitness(
185
187
  blockHash: BlockHash,
186
188
  nullifier: Fr,
187
189
  ): Promise<NullifierMembershipWitness | undefined> {
@@ -197,7 +199,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
197
199
  * list structure" of leaves and proving that a lower nullifier is pointing to a bigger next value than the nullifier
198
200
  * we are trying to prove non-inclusion for.
199
201
  */
200
- public utilityGetLowNullifierMembershipWitness(
202
+ public getLowNullifierMembershipWitness(
201
203
  blockHash: BlockHash,
202
204
  nullifier: Fr,
203
205
  ): Promise<NullifierMembershipWitness | undefined> {
@@ -210,7 +212,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
210
212
  * @param leafSlot - The slot of the public data tree to get the witness for.
211
213
  * @returns - The witness
212
214
  */
213
- public utilityGetPublicDataWitness(blockHash: BlockHash, leafSlot: Fr): Promise<PublicDataWitness | undefined> {
215
+ public getPublicDataWitness(blockHash: BlockHash, leafSlot: Fr): Promise<PublicDataWitness | undefined> {
214
216
  return this.aztecNode.getPublicDataWitness(blockHash, leafSlot);
215
217
  }
216
218
 
@@ -219,7 +221,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
219
221
  * @param blockNumber - The number of a block of which to get the block header.
220
222
  * @returns Block extracted from a block with block number `blockNumber`.
221
223
  */
222
- public async utilityGetBlockHeader(blockNumber: BlockNumber): Promise<BlockHeader | undefined> {
224
+ public async getBlockHeader(blockNumber: BlockNumber): Promise<BlockHeader | undefined> {
223
225
  const anchorBlockNumber = this.anchorBlockHeader.getBlockNumber();
224
226
  if (blockNumber > anchorBlockNumber) {
225
227
  throw new Error(`Block number ${blockNumber} is higher than current block ${anchorBlockNumber}`);
@@ -230,12 +232,18 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
230
232
  }
231
233
 
232
234
  /**
233
- * Retrieve the complete address associated to a given address.
235
+ * Retrieve the public keys and partial address associated to a given address.
234
236
  * @param account - The account address.
235
- * @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.
236
238
  */
237
- public utilityTryGetPublicKeysAndPartialAddress(account: AztecAddress): Promise<CompleteAddress | undefined> {
238
- 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 };
239
247
  }
240
248
 
241
249
  protected async getCompleteAddressOrFail(account: AztecAddress): Promise<CompleteAddress> {
@@ -254,11 +262,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
254
262
  * @param address - Address.
255
263
  * @returns A contract instance.
256
264
  */
257
- public utilityGetContractInstance(address: AztecAddress): Promise<ContractInstance> {
258
- return this.getContractInstance(address);
259
- }
260
-
261
- protected async getContractInstance(address: AztecAddress): Promise<ContractInstance> {
265
+ public async getContractInstance(address: AztecAddress): Promise<ContractInstance> {
262
266
  const instance = await this.contractStore.getContractInstance(address);
263
267
  if (!instance) {
264
268
  throw new Error(`No contract instance found for address ${address.toString()}`);
@@ -272,7 +276,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
272
276
  * @param messageHash - Hash of the message to authenticate.
273
277
  * @returns Authentication witness for the requested message hash.
274
278
  */
275
- public utilityGetAuthWitness(messageHash: Fr): Promise<Fr[] | undefined> {
279
+ public getAuthWitness(messageHash: Fr): Promise<Fr[] | undefined> {
276
280
  return Promise.resolve(this.authWitnesses.find(w => w.requestHash.equals(messageHash))?.witness);
277
281
  }
278
282
 
@@ -298,7 +302,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
298
302
  * @param status - The status of notes to fetch.
299
303
  * @returns Array of note data.
300
304
  */
301
- public async utilityGetNotes(
305
+ public async getNotes(
302
306
  owner: AztecAddress | undefined,
303
307
  storageSlot: Fr,
304
308
  numSelects: number,
@@ -338,7 +342,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
338
342
  * @param innerNullifier - The inner nullifier.
339
343
  * @returns A boolean indicating whether the nullifier exists in the tree or not.
340
344
  */
341
- public async utilityCheckNullifierExists(innerNullifier: Fr) {
345
+ public async checkNullifierExists(innerNullifier: Fr) {
342
346
  const [nullifier, anchorBlockHash] = await Promise.all([
343
347
  siloNullifier(this.contractAddress, innerNullifier!),
344
348
  this.anchorBlockHeader.hash(),
@@ -357,7 +361,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
357
361
  * @dev Contract address and secret are only used to compute the nullifier to get non-nullified messages
358
362
  * @returns The l1 to l2 membership witness (index of message in the tree and sibling path).
359
363
  */
360
- public async utilityGetL1ToL2MembershipWitness(contractAddress: AztecAddress, messageHash: Fr, secret: Fr) {
364
+ public async getL1ToL2MembershipWitness(contractAddress: AztecAddress, messageHash: Fr, secret: Fr) {
361
365
  const [messageIndex, siblingPath] = await getNonNullifiedL1ToL2MessageWitness(
362
366
  this.aztecNode,
363
367
  contractAddress,
@@ -375,7 +379,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
375
379
  * @param startStorageSlot - The starting storage slot.
376
380
  * @param numberOfElements - Number of elements to read from the starting storage slot.
377
381
  */
378
- public async utilityStorageRead(
382
+ public async storageRead(
379
383
  blockHash: BlockHash,
380
384
  contractAddress: AztecAddress,
381
385
  startStorageSlot: Fr,
@@ -389,7 +393,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
389
393
  slots.map(storageSlot => this.aztecNode.getPublicStorageAt(blockHash, contractAddress, storageSlot)),
390
394
  );
391
395
 
392
- this.log.debug(
396
+ this.logger.debug(
393
397
  `Oracle storage read: slots=[${slots.map(slot => slot.toString()).join(', ')}] address=${contractAddress.toString()} values=[${values.join(', ')}]`,
394
398
  );
395
399
 
@@ -401,26 +405,26 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
401
405
  */
402
406
  async #getContractLogger(): Promise<Logger> {
403
407
  if (!this.contractLogger) {
404
- const addrAbbrev = this.contractAddress.toString().slice(0, 10);
405
- const name = await this.contractStore.getDebugContractName(this.contractAddress);
406
- const module = name ? `contract_log::${name}(${addrAbbrev})` : `contract_log::${addrAbbrev}`;
407
408
  // Purpose of instanceId is to distinguish logs from different instances of the same component. It makes sense
408
409
  // to re-use jobId as instanceId here as executions of different PXE jobs are isolated.
409
- this.contractLogger = createLogger(module, { instanceId: this.jobId });
410
+ this.contractLogger = await createContractLogger(
411
+ this.contractAddress,
412
+ addr => this.contractStore.getDebugContractName(addr),
413
+ { instanceId: this.jobId },
414
+ );
410
415
  }
411
416
  return this.contractLogger;
412
417
  }
413
418
 
414
- public async utilityLog(level: number, message: string, fields: Fr[]): Promise<void> {
419
+ public async log(level: number, message: string, fields: Fr[]): Promise<void> {
415
420
  if (!LogLevels[level]) {
416
421
  throw new Error(`Invalid log level: ${level}`);
417
422
  }
418
- const levelName = LogLevels[level];
419
423
  const logger = await this.#getContractLogger();
420
- logger[levelName](`${applyStringFormatting(message, fields)}`);
424
+ logContractMessage(logger, LogLevels[level], message, fields);
421
425
  }
422
426
 
423
- public async utilityFetchTaggedLogs(pendingTaggedLogArrayBaseSlot: Fr) {
427
+ public async fetchTaggedLogs(pendingTaggedLogArrayBaseSlot: Fr) {
424
428
  const logService = new LogService(
425
429
  this.aztecNode,
426
430
  this.anchorBlockHeader,
@@ -430,7 +434,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
430
434
  this.senderAddressBookStore,
431
435
  this.addressStore,
432
436
  this.jobId,
433
- this.log.getBindings(),
437
+ this.logger.getBindings(),
434
438
  );
435
439
 
436
440
  await logService.fetchTaggedLogs(this.contractAddress, pendingTaggedLogArrayBaseSlot, this.scopes);
@@ -446,10 +450,12 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
446
450
  * @param noteValidationRequestsArrayBaseSlot - The base slot of capsule array containing note validation requests.
447
451
  * @param eventValidationRequestsArrayBaseSlot - The base slot of capsule array containing event validation requests.
448
452
  */
449
- public async utilityValidateAndStoreEnqueuedNotesAndEvents(
453
+ public async validateAndStoreEnqueuedNotesAndEvents(
450
454
  contractAddress: AztecAddress,
451
455
  noteValidationRequestsArrayBaseSlot: Fr,
452
456
  eventValidationRequestsArrayBaseSlot: Fr,
457
+ maxNotePackedLen: number,
458
+ maxEventSerializedLen: number,
453
459
  ) {
454
460
  // TODO(#10727): allow other contracts to store notes
455
461
  if (!this.contractAddress.equals(contractAddress)) {
@@ -460,11 +466,11 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
460
466
  // faster as we don't need to wait for the network round-trip.
461
467
  const noteValidationRequests = (
462
468
  await this.capsuleStore.readCapsuleArray(contractAddress, noteValidationRequestsArrayBaseSlot, this.jobId)
463
- ).map(NoteValidationRequest.fromFields);
469
+ ).map(fields => NoteValidationRequest.fromFields(fields, maxNotePackedLen));
464
470
 
465
471
  const eventValidationRequests = (
466
472
  await this.capsuleStore.readCapsuleArray(contractAddress, eventValidationRequestsArrayBaseSlot, this.jobId)
467
- ).map(EventValidationRequest.fromFields);
473
+ ).map(fields => EventValidationRequest.fromFields(fields, maxEventSerializedLen));
468
474
 
469
475
  const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
470
476
  const noteStorePromises = noteValidationRequests.map(request =>
@@ -502,7 +508,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
502
508
  await this.capsuleStore.setCapsuleArray(contractAddress, eventValidationRequestsArrayBaseSlot, [], this.jobId);
503
509
  }
504
510
 
505
- public async utilityBulkRetrieveLogs(
511
+ public async bulkRetrieveLogs(
506
512
  contractAddress: AztecAddress,
507
513
  logRetrievalRequestsArrayBaseSlot: Fr,
508
514
  logRetrievalResponsesArrayBaseSlot: Fr,
@@ -527,7 +533,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
527
533
  this.senderAddressBookStore,
528
534
  this.addressStore,
529
535
  this.jobId,
530
- this.log.getBindings(),
536
+ this.logger.getBindings(),
531
537
  );
532
538
 
533
539
  const maybeLogRetrievalResponses = await logService.bulkRetrieveLogs(logRetrievalRequests);
@@ -544,7 +550,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
544
550
  );
545
551
  }
546
552
 
547
- public utilityStoreCapsule(contractAddress: AztecAddress, slot: Fr, capsule: Fr[]): Promise<void> {
553
+ public storeCapsule(contractAddress: AztecAddress, slot: Fr, capsule: Fr[]): Promise<void> {
548
554
  if (!contractAddress.equals(this.contractAddress)) {
549
555
  // TODO(#10727): instead of this check that this.contractAddress is allowed to access the external DB
550
556
  throw new Error(`Contract ${contractAddress} is not allowed to access ${this.contractAddress}'s PXE DB`);
@@ -553,7 +559,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
553
559
  return Promise.resolve();
554
560
  }
555
561
 
556
- public async utilityLoadCapsule(contractAddress: AztecAddress, slot: Fr): Promise<Fr[] | null> {
562
+ public async loadCapsule(contractAddress: AztecAddress, slot: Fr): Promise<Fr[] | null> {
557
563
  if (!contractAddress.equals(this.contractAddress)) {
558
564
  // TODO(#10727): instead of this check that this.contractAddress is allowed to access the external DB
559
565
  throw new Error(`Contract ${contractAddress} is not allowed to access ${this.contractAddress}'s PXE DB`);
@@ -565,7 +571,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
565
571
  );
566
572
  }
567
573
 
568
- public utilityDeleteCapsule(contractAddress: AztecAddress, slot: Fr): Promise<void> {
574
+ public deleteCapsule(contractAddress: AztecAddress, slot: Fr): Promise<void> {
569
575
  if (!contractAddress.equals(this.contractAddress)) {
570
576
  // TODO(#10727): instead of this check that this.contractAddress is allowed to access the external DB
571
577
  throw new Error(`Contract ${contractAddress} is not allowed to access ${this.contractAddress}'s PXE DB`);
@@ -574,12 +580,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
574
580
  return Promise.resolve();
575
581
  }
576
582
 
577
- public utilityCopyCapsule(
578
- contractAddress: AztecAddress,
579
- srcSlot: Fr,
580
- dstSlot: Fr,
581
- numEntries: number,
582
- ): Promise<void> {
583
+ public copyCapsule(contractAddress: AztecAddress, srcSlot: Fr, dstSlot: Fr, numEntries: number): Promise<void> {
583
584
  if (!contractAddress.equals(this.contractAddress)) {
584
585
  // TODO(#10727): instead of this check that this.contractAddress is allowed to access the external DB
585
586
  throw new Error(`Contract ${contractAddress} is not allowed to access ${this.contractAddress}'s PXE DB`);
@@ -588,7 +589,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
588
589
  }
589
590
 
590
591
  // TODO(#11849): consider replacing this oracle with a pure Noir implementation of aes decryption.
591
- public utilityAes128Decrypt(ciphertext: Buffer, iv: Buffer, symKey: Buffer): Promise<Buffer> {
592
+ public aes128Decrypt(ciphertext: Buffer, iv: Buffer, symKey: Buffer): Promise<Buffer> {
592
593
  const aes128 = new Aes128();
593
594
  return aes128.decryptBufferCBC(ciphertext, iv, symKey);
594
595
  }
@@ -599,11 +600,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
599
600
  * @param ephPk - The ephemeral public key to get the secret for.
600
601
  * @returns The secret for the given address.
601
602
  */
602
- public utilityGetSharedSecret(address: AztecAddress, ephPk: Point): Promise<Point> {
603
- return this.getSharedSecret(address, ephPk);
604
- }
605
-
606
- protected async getSharedSecret(address: AztecAddress, ephPk: Point): Promise<Point> {
603
+ public async getSharedSecret(address: AztecAddress, ephPk: Point): Promise<Point> {
607
604
  // TODO(#12656): return an app-siloed secret
608
605
  const recipientCompleteAddress = await this.getCompleteAddressOrFail(address);
609
606
  const ivskM = await this.keyStore.getMasterSecretKey(
@@ -0,0 +1,39 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { type LogLevel, type Logger, applyStringFormatting, createLogger } from '@aztec/foundation/log';
3
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+ import type { DebugLog } from '@aztec/stdlib/logs';
5
+
6
+ /** Resolves a contract address to a human-readable name, if available. */
7
+ export type ContractNameResolver = (address: AztecAddress) => Promise<string | undefined>;
8
+
9
+ /**
10
+ * Creates a logger whose output is prefixed with `contract_log::<name>(<addrAbbrev>)`.
11
+ */
12
+ export async function createContractLogger(
13
+ contractAddress: AztecAddress,
14
+ getContractName: ContractNameResolver,
15
+ options?: { instanceId?: string },
16
+ ): Promise<Logger> {
17
+ const addrAbbrev = contractAddress.toString().slice(0, 10);
18
+ const name = await getContractName(contractAddress);
19
+ const module = name ? `contract_log::${name}(${addrAbbrev})` : `contract_log::Unknown(${addrAbbrev})`;
20
+ return createLogger(module, options);
21
+ }
22
+
23
+ /**
24
+ * Formats and emits a single contract log message through the given logger.
25
+ */
26
+ export function logContractMessage(logger: Logger, level: LogLevel, message: string, fields: Fr[]): void {
27
+ logger[level](applyStringFormatting(message, fields));
28
+ }
29
+
30
+ /**
31
+ * Displays debug logs collected during public function simulation,
32
+ * using the `contract_log::` prefixed logger format.
33
+ */
34
+ export async function displayDebugLogs(debugLogs: DebugLog[], getContractName: ContractNameResolver): Promise<void> {
35
+ for (const log of debugLogs) {
36
+ const logger = await createContractLogger(log.contractAddress, getContractName);
37
+ logContractMessage(logger, log.level, log.message, log.fields);
38
+ }
39
+ }
@@ -4,6 +4,7 @@ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
4
  import type { AztecNode } from '@aztec/stdlib/interfaces/client';
5
5
  import type { BlockHeader } from '@aztec/stdlib/tx';
6
6
 
7
+ import type { AccessScopes } from '../access_scopes.js';
7
8
  import type { StagedStore } from '../job_coordinator/job_coordinator.js';
8
9
  import type { ContractStore } from '../storage/contract_store/contract_store.js';
9
10
  import type { NoteStore } from '../storage/note_store/note_store.js';
@@ -45,15 +46,15 @@ export class ContractSyncService implements StagedStore {
45
46
  * @param functionToInvokeAfterSync - The function selector that will be called after sync (used to validate it's
46
47
  * not sync_state itself).
47
48
  * @param utilityExecutor - Executor function for running the sync_state utility function.
48
- * @param scopes - Scopes to pass through to the utility executor (affects which notes are discovered).
49
+ * @param scopes - Access scopes to pass through to the utility executor (affects whose account's private state is discovered).
49
50
  */
50
51
  async ensureContractSynced(
51
52
  contractAddress: AztecAddress,
52
53
  functionToInvokeAfterSync: FunctionSelector | null,
53
- utilityExecutor: (call: FunctionCall, scopes: undefined | AztecAddress[]) => Promise<any>,
54
+ utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<any>,
54
55
  anchorBlockHeader: BlockHeader,
55
56
  jobId: string,
56
- scopes: undefined | AztecAddress[],
57
+ scopes: AccessScopes,
57
58
  ): Promise<void> {
58
59
  // Skip sync if this contract has an override for this job (overrides are keyed by contract address only)
59
60
  const overrides = this.overriddenContracts.get(jobId);
@@ -62,13 +63,16 @@ export class ContractSyncService implements StagedStore {
62
63
  }
63
64
 
64
65
  // Skip sync if we already synced for "all scopes", or if we have an empty list of scopes
65
- const allScopesKey = toKey(contractAddress, undefined);
66
+ const allScopesKey = toKey(contractAddress, 'ALL_SCOPES');
66
67
  const allScopesExisting = this.syncedContracts.get(allScopesKey);
67
- if (allScopesExisting || (scopes && scopes.length == 0)) {
68
+ if (allScopesExisting || (scopes !== 'ALL_SCOPES' && scopes.length == 0)) {
68
69
  return;
69
70
  }
70
71
 
71
- const unsyncedScopes = scopes?.filter(scope => !this.syncedContracts.has(toKey(contractAddress, scope)));
72
+ const unsyncedScopes =
73
+ scopes === 'ALL_SCOPES'
74
+ ? scopes
75
+ : scopes.filter(scope => !this.syncedContracts.has(toKey(contractAddress, scope)));
72
76
  const unsyncedScopesKeys = toKeys(contractAddress, unsyncedScopes);
73
77
 
74
78
  if (unsyncedScopesKeys.length > 0) {
@@ -76,9 +80,10 @@ export class ContractSyncService implements StagedStore {
76
80
  const promise = this.#doSync(
77
81
  contractAddress,
78
82
  functionToInvokeAfterSync,
79
- call => utilityExecutor(call, unsyncedScopes),
83
+ utilityExecutor,
80
84
  anchorBlockHeader,
81
85
  jobId,
86
+ unsyncedScopes,
82
87
  ).catch(err => {
83
88
  // There was an error syncing the contract, so we remove it from the cache so that it can be retried.
84
89
  unsyncedScopesKeys.forEach(key => this.syncedContracts.delete(key));
@@ -94,9 +99,10 @@ export class ContractSyncService implements StagedStore {
94
99
  async #doSync(
95
100
  contractAddress: AztecAddress,
96
101
  functionToInvokeAfterSync: FunctionSelector | null,
97
- utilityExecutor: (call: FunctionCall) => Promise<any>,
102
+ utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<any>,
98
103
  anchorBlockHeader: BlockHeader,
99
104
  jobId: string,
105
+ scopes: AccessScopes,
100
106
  ): Promise<void> {
101
107
  this.log.debug(`Syncing contract ${contractAddress}`);
102
108
  await Promise.all([
@@ -109,6 +115,7 @@ export class ContractSyncService implements StagedStore {
109
115
  this.aztecNode,
110
116
  anchorBlockHeader,
111
117
  jobId,
118
+ scopes,
112
119
  ),
113
120
  verifyCurrentClassId(contractAddress, this.aztecNode, this.contractStore, anchorBlockHeader),
114
121
  ]);
@@ -136,10 +143,10 @@ export class ContractSyncService implements StagedStore {
136
143
  }
137
144
  }
138
145
 
139
- function toKeys(contract: AztecAddress, scopes: undefined | AztecAddress[]) {
140
- return scopes === undefined ? [toKey(contract, undefined)] : scopes.map(scope => toKey(contract, scope));
146
+ function toKeys(contract: AztecAddress, scopes: AccessScopes) {
147
+ return scopes === 'ALL_SCOPES' ? [toKey(contract, scopes)] : scopes.map(scope => toKey(contract, scope));
141
148
  }
142
149
 
143
- function toKey(contract: AztecAddress, scope: AztecAddress | undefined) {
144
- return scope === undefined ? `${contract.toString()}:*` : `${contract.toString()}:${scope.toString()}`;
150
+ function toKey(contract: AztecAddress, scope: AztecAddress | 'ALL_SCOPES') {
151
+ return scope === 'ALL_SCOPES' ? `${contract.toString()}:*` : `${contract.toString()}:${scope.toString()}`;
145
152
  }
@@ -6,6 +6,7 @@ import { DelayedPublicMutableValues, DelayedPublicMutableValuesWithHash } from '
6
6
  import type { AztecNode } from '@aztec/stdlib/interfaces/client';
7
7
  import type { BlockHeader } from '@aztec/stdlib/tx';
8
8
 
9
+ import type { AccessScopes } from '../access_scopes.js';
9
10
  import { NoteService } from '../notes/note_service.js';
10
11
  import type { ContractStore } from '../storage/contract_store/contract_store.js';
11
12
  import type { NoteStore } from '../storage/note_store/note_store.js';
@@ -42,11 +43,12 @@ export async function syncState(
42
43
  contractAddress: AztecAddress,
43
44
  contractStore: ContractStore,
44
45
  functionToInvokeAfterSync: FunctionSelector | null,
45
- utilityExecutor: (privateSyncCall: FunctionCall) => Promise<any>,
46
+ utilityExecutor: (privateSyncCall: FunctionCall, scopes: AccessScopes) => Promise<any>,
46
47
  noteStore: NoteStore,
47
48
  aztecNode: AztecNode,
48
49
  anchorBlockHeader: BlockHeader,
49
50
  jobId: string,
51
+ scopes: AccessScopes,
50
52
  ) {
51
53
  // Protocol contracts don't have private state to sync
52
54
  if (!isProtocolContract(contractAddress)) {
@@ -61,7 +63,10 @@ export async function syncState(
61
63
 
62
64
  // Both sync_state and syncNoteNullifiers interact with the note store, but running them in parallel is safe
63
65
  // because note store is designed to handle concurrent operations.
64
- await Promise.all([utilityExecutor(syncStateFunctionCall), noteService.syncNoteNullifiers(contractAddress)]);
66
+ await Promise.all([
67
+ utilityExecutor(syncStateFunctionCall, scopes),
68
+ noteService.syncNoteNullifiers(contractAddress, scopes),
69
+ ]);
65
70
  }
66
71
  }
67
72
 
@@ -1,12 +1,13 @@
1
1
  import type { FunctionCall } from '@aztec/stdlib/abi';
2
2
  import type { AuthWitness } from '@aztec/stdlib/auth-witness';
3
- import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
- import type { NoteDao, NotesFilter } from '@aztec/stdlib/note';
3
+ import type { NoteDao } from '@aztec/stdlib/note';
5
4
  import type { ContractOverrides } from '@aztec/stdlib/tx';
6
5
 
6
+ import type { AccessScopes } from '../access_scopes.js';
7
7
  import type { BlockSynchronizer } from '../block_synchronizer/block_synchronizer.js';
8
8
  import type { ContractFunctionSimulator } from '../contract_function_simulator/contract_function_simulator.js';
9
9
  import type { ContractSyncService } from '../contract_sync/contract_sync_service.js';
10
+ import type { NotesFilter } from '../notes_filter.js';
10
11
  import type { AnchorBlockStore } from '../storage/index.js';
11
12
  import type { NoteStore } from '../storage/note_store/note_store.js';
12
13
 
@@ -17,11 +18,11 @@ import type { NoteStore } from '../storage/note_store/note_store.js';
17
18
  export class PXEDebugUtils {
18
19
  #putJobInQueue!: <T>(job: (jobId: string) => Promise<T>) => Promise<T>;
19
20
  #getSimulatorForTx!: (overrides?: { contracts?: ContractOverrides }) => ContractFunctionSimulator;
20
- #simulateUtility!: (
21
+ #executeUtility!: (
21
22
  contractFunctionSimulator: ContractFunctionSimulator,
22
23
  call: FunctionCall,
23
24
  authWitnesses: AuthWitness[] | undefined,
24
- scopes: AztecAddress[] | undefined,
25
+ scopes: AccessScopes,
25
26
  jobId: string,
26
27
  ) => Promise<any>;
27
28
 
@@ -36,17 +37,17 @@ export class PXEDebugUtils {
36
37
  public setPXEHelpers(
37
38
  putJobInQueue: <T>(job: (jobId: string) => Promise<T>) => Promise<T>,
38
39
  getSimulatorForTx: (overrides?: { contracts?: ContractOverrides }) => ContractFunctionSimulator,
39
- simulateUtility: (
40
+ executeUtility: (
40
41
  contractFunctionSimulator: ContractFunctionSimulator,
41
42
  call: FunctionCall,
42
43
  authWitnesses: AuthWitness[] | undefined,
43
- scopes: AztecAddress[] | undefined,
44
+ scopes: AccessScopes,
44
45
  jobId: string,
45
46
  ) => Promise<any>,
46
47
  ) {
47
48
  this.#putJobInQueue = putJobInQueue;
48
49
  this.#getSimulatorForTx = getSimulatorForTx;
49
- this.#simulateUtility = simulateUtility;
50
+ this.#executeUtility = executeUtility;
50
51
  }
51
52
 
52
53
  /**
@@ -72,7 +73,7 @@ export class PXEDebugUtils {
72
73
  filter.contractAddress,
73
74
  null,
74
75
  async (privateSyncCall, execScopes) =>
75
- await this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], execScopes, jobId),
76
+ await this.#executeUtility(contractFunctionSimulator, privateSyncCall, [], execScopes, jobId),
76
77
  anchorBlockHeader,
77
78
  jobId,
78
79
  filter.scopes,
@@ -1,6 +1,9 @@
1
+ export * from '../../../access_scopes.js';
2
+ export * from '../../../notes_filter.js';
1
3
  export * from '../../../pxe.js';
2
4
  export * from '../../../config/index.js';
3
5
  export * from '../../../error_enriching.js';
6
+ export * from '../../../contract_logging.js';
4
7
  export * from '../../../storage/index.js';
5
8
  export * from './utils.js';
6
9
  export type { PXECreationOptions } from '../../pxe_creation_options.js';
@@ -1,6 +1,9 @@
1
+ export * from '../../../access_scopes.js';
2
+ export * from '../../../notes_filter.js';
1
3
  export * from '../../../pxe.js';
2
4
  export * from '../../../config/index.js';
3
5
  export * from '../../../storage/index.js';
4
6
  export * from '../../../error_enriching.js';
7
+ export * from '../../../contract_logging.js';
5
8
  export * from './utils.js';
6
9
  export { type PXECreationOptions } from '../../pxe_creation_options.js';
@@ -1,3 +1,5 @@
1
+ export * from '../../access_scopes.js';
2
+ export * from '../../notes_filter.js';
1
3
  export * from '../../pxe.js';
2
4
  export * from '../../config/index.js';
3
5
  export * from '../../error_enriching.js';