@aztec/pxe 0.0.1-commit.6c91f13 → 0.0.1-commit.6d63667d

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 (237) hide show
  1. package/dest/bin/check_oracle_version.js +1 -1
  2. package/dest/block_synchronizer/block_synchronizer.d.ts +13 -5
  3. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  4. package/dest/block_synchronizer/block_synchronizer.js +74 -20
  5. package/dest/config/index.d.ts +3 -1
  6. package/dest/config/index.d.ts.map +1 -1
  7. package/dest/config/index.js +17 -0
  8. package/dest/config/package_info.js +1 -1
  9. package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
  10. package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
  11. package/dest/contract_function_simulator/benchmarked_node.js +77 -0
  12. package/dest/contract_function_simulator/contract_function_simulator.d.ts +11 -12
  13. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  14. package/dest/contract_function_simulator/contract_function_simulator.js +39 -28
  15. package/dest/contract_function_simulator/execution_note_cache.d.ts +18 -9
  16. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  17. package/dest/contract_function_simulator/execution_note_cache.js +45 -28
  18. package/dest/contract_function_simulator/index.d.ts +2 -2
  19. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  20. package/dest/contract_function_simulator/index.js +1 -1
  21. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +4 -3
  22. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  23. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +6 -3
  24. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +1 -1
  25. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +1 -1
  26. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +4 -10
  27. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  28. package/dest/contract_function_simulator/noir-structs/utility_context.js +7 -18
  29. package/dest/contract_function_simulator/oracle/interfaces.d.ts +16 -12
  30. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  31. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -1
  32. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  33. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +6 -6
  34. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  35. package/dest/contract_function_simulator/oracle/note_packing_utils.js +8 -8
  36. package/dest/contract_function_simulator/oracle/oracle.d.ts +11 -9
  37. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  38. package/dest/contract_function_simulator/oracle/oracle.js +64 -41
  39. package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -26
  40. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  41. package/dest/contract_function_simulator/oracle/private_execution.js +1 -37
  42. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +13 -18
  43. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  44. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +24 -40
  45. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +38 -24
  46. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  47. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +86 -83
  48. package/dest/contract_sync/contract_sync_service.d.ts +41 -0
  49. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
  50. package/dest/contract_sync/contract_sync_service.js +82 -0
  51. package/dest/contract_sync/helpers.d.ts +28 -0
  52. package/dest/contract_sync/helpers.d.ts.map +1 -0
  53. package/dest/contract_sync/helpers.js +55 -0
  54. package/dest/debug/pxe_debug_utils.d.ts +24 -9
  55. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  56. package/dest/debug/pxe_debug_utils.js +31 -17
  57. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  58. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  59. package/dest/entrypoints/client/bundle/utils.js +22 -7
  60. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  61. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  62. package/dest/entrypoints/client/lazy/utils.js +23 -8
  63. package/dest/entrypoints/pxe_creation_options.d.ts +5 -3
  64. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  65. package/dest/entrypoints/server/index.d.ts +3 -1
  66. package/dest/entrypoints/server/index.d.ts.map +1 -1
  67. package/dest/entrypoints/server/index.js +2 -0
  68. package/dest/entrypoints/server/utils.d.ts +1 -1
  69. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  70. package/dest/entrypoints/server/utils.js +30 -15
  71. package/dest/events/event_service.d.ts +6 -6
  72. package/dest/events/event_service.d.ts.map +1 -1
  73. package/dest/events/event_service.js +19 -22
  74. package/dest/events/private_event_filter_validator.d.ts +5 -5
  75. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  76. package/dest/events/private_event_filter_validator.js +5 -6
  77. package/dest/job_coordinator/job_coordinator.d.ts +75 -0
  78. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
  79. package/dest/job_coordinator/job_coordinator.js +94 -0
  80. package/dest/logs/log_service.d.ts +7 -5
  81. package/dest/logs/log_service.d.ts.map +1 -1
  82. package/dest/logs/log_service.js +23 -20
  83. package/dest/notes/note_service.d.ts +7 -7
  84. package/dest/notes/note_service.d.ts.map +1 -1
  85. package/dest/notes/note_service.js +31 -36
  86. package/dest/oracle_version.d.ts +3 -3
  87. package/dest/oracle_version.d.ts.map +1 -1
  88. package/dest/oracle_version.js +4 -3
  89. package/dest/private_kernel/hints/index.d.ts +2 -2
  90. package/dest/private_kernel/hints/index.d.ts.map +1 -1
  91. package/dest/private_kernel/hints/index.js +1 -1
  92. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +28 -0
  93. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
  94. package/dest/private_kernel/hints/{build_private_kernel_reset_private_inputs.js → private_kernel_reset_private_inputs_builder.js} +13 -7
  95. package/dest/private_kernel/private_kernel_execution_prover.d.ts +3 -2
  96. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  97. package/dest/private_kernel/private_kernel_execution_prover.js +6 -7
  98. package/dest/private_kernel/private_kernel_oracle.d.ts +24 -28
  99. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  100. package/dest/private_kernel/private_kernel_oracle.js +90 -2
  101. package/dest/pxe.d.ts +9 -36
  102. package/dest/pxe.d.ts.map +1 -1
  103. package/dest/pxe.js +87 -97
  104. package/dest/storage/address_store/address_store.d.ts +1 -1
  105. package/dest/storage/address_store/address_store.d.ts.map +1 -1
  106. package/dest/storage/address_store/address_store.js +12 -11
  107. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -1
  108. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
  109. package/dest/storage/anchor_block_store/anchor_block_store.js +8 -1
  110. package/dest/storage/capsule_store/capsule_store.d.ts +24 -9
  111. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  112. package/dest/storage/capsule_store/capsule_store.js +130 -23
  113. package/dest/storage/contract_store/contract_store.d.ts +1 -2
  114. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  115. package/dest/storage/contract_store/contract_store.js +22 -25
  116. package/dest/storage/metadata.d.ts +1 -1
  117. package/dest/storage/metadata.js +1 -1
  118. package/dest/storage/note_store/note_store.d.ts +51 -52
  119. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  120. package/dest/storage/note_store/note_store.js +282 -263
  121. package/dest/storage/note_store/stored_note.d.ts +16 -0
  122. package/dest/storage/note_store/stored_note.d.ts.map +1 -0
  123. package/dest/storage/note_store/stored_note.js +43 -0
  124. package/dest/storage/private_event_store/private_event_store.d.ts +47 -7
  125. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  126. package/dest/storage/private_event_store/private_event_store.js +231 -73
  127. package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
  128. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
  129. package/dest/storage/private_event_store/stored_private_event.js +56 -0
  130. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +15 -8
  131. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  132. package/dest/storage/tagging_store/recipient_tagging_store.js +88 -19
  133. package/dest/storage/tagging_store/sender_address_book_store.d.ts +1 -1
  134. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -1
  135. package/dest/storage/tagging_store/sender_address_book_store.js +20 -14
  136. package/dest/storage/tagging_store/sender_tagging_store.d.ts +19 -9
  137. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  138. package/dest/storage/tagging_store/sender_tagging_store.js +253 -101
  139. package/dest/tagging/constants.d.ts +2 -0
  140. package/dest/tagging/constants.d.ts.map +1 -0
  141. package/dest/tagging/constants.js +10 -0
  142. package/dest/tagging/get_all_logs_by_tags.d.ts +24 -0
  143. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
  144. package/dest/tagging/get_all_logs_by_tags.js +46 -0
  145. package/dest/tagging/index.d.ts +3 -2
  146. package/dest/tagging/index.d.ts.map +1 -1
  147. package/dest/tagging/index.js +2 -10
  148. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +3 -2
  149. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
  150. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +8 -8
  151. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +3 -2
  152. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -1
  153. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +5 -2
  154. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +3 -2
  155. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  156. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +8 -8
  157. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +1 -1
  158. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  159. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +5 -8
  160. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +5 -2
  161. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  162. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +10 -5
  163. package/package.json +27 -18
  164. package/src/bin/check_oracle_version.ts +1 -0
  165. package/src/block_synchronizer/block_synchronizer.ts +93 -32
  166. package/src/config/index.ts +14 -0
  167. package/src/config/package_info.ts +1 -1
  168. package/src/contract_function_simulator/benchmarked_node.ts +103 -0
  169. package/src/contract_function_simulator/contract_function_simulator.ts +46 -32
  170. package/src/contract_function_simulator/execution_note_cache.ts +44 -25
  171. package/src/contract_function_simulator/index.ts +1 -1
  172. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +5 -1
  173. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +1 -1
  174. package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
  175. package/src/contract_function_simulator/oracle/interfaces.ts +21 -11
  176. package/src/contract_function_simulator/oracle/note_packing_utils.ts +10 -10
  177. package/src/contract_function_simulator/oracle/oracle.ts +76 -44
  178. package/src/contract_function_simulator/oracle/private_execution.ts +1 -69
  179. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +41 -49
  180. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +108 -90
  181. package/src/contract_sync/contract_sync_service.ts +129 -0
  182. package/src/contract_sync/helpers.ts +93 -0
  183. package/src/debug/pxe_debug_utils.ts +65 -17
  184. package/src/entrypoints/client/bundle/utils.ts +15 -16
  185. package/src/entrypoints/client/lazy/utils.ts +16 -17
  186. package/src/entrypoints/pxe_creation_options.ts +4 -2
  187. package/src/entrypoints/server/index.ts +2 -0
  188. package/src/entrypoints/server/utils.ts +26 -34
  189. package/src/events/event_service.ts +19 -25
  190. package/src/events/private_event_filter_validator.ts +3 -5
  191. package/src/job_coordinator/job_coordinator.ts +150 -0
  192. package/src/logs/log_service.ts +34 -16
  193. package/src/notes/note_service.ts +38 -43
  194. package/src/oracle_version.ts +4 -3
  195. package/src/private_kernel/hints/index.ts +1 -1
  196. package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +33 -22
  197. package/src/private_kernel/private_kernel_execution_prover.ts +9 -8
  198. package/src/private_kernel/private_kernel_oracle.ts +116 -36
  199. package/src/pxe.ts +156 -132
  200. package/src/storage/address_store/address_store.ts +15 -15
  201. package/src/storage/anchor_block_store/anchor_block_store.ts +8 -0
  202. package/src/storage/capsule_store/capsule_store.ts +159 -23
  203. package/src/storage/contract_store/contract_store.ts +22 -31
  204. package/src/storage/metadata.ts +1 -1
  205. package/src/storage/note_store/note_store.ts +317 -318
  206. package/src/storage/note_store/stored_note.ts +48 -0
  207. package/src/storage/private_event_store/private_event_store.ts +301 -79
  208. package/src/storage/private_event_store/stored_private_event.ts +73 -0
  209. package/src/storage/tagging_store/recipient_tagging_store.ts +106 -20
  210. package/src/storage/tagging_store/sender_address_book_store.ts +20 -14
  211. package/src/storage/tagging_store/sender_tagging_store.ts +294 -109
  212. package/src/tagging/constants.ts +10 -0
  213. package/src/tagging/get_all_logs_by_tags.ts +68 -0
  214. package/src/tagging/index.ts +2 -11
  215. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +21 -7
  216. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +7 -1
  217. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +10 -7
  218. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +5 -13
  219. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +16 -4
  220. package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
  221. package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
  222. package/dest/contract_function_simulator/proxied_node.js +0 -27
  223. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
  224. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
  225. package/dest/private_kernel/private_kernel_oracle_impl.d.ts +0 -46
  226. package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
  227. package/dest/private_kernel/private_kernel_oracle_impl.js +0 -86
  228. package/dest/public_storage/public_storage_service.d.ts +0 -24
  229. package/dest/public_storage/public_storage_service.d.ts.map +0 -1
  230. package/dest/public_storage/public_storage_service.js +0 -26
  231. package/dest/tree_membership/tree_membership_service.d.ts +0 -52
  232. package/dest/tree_membership/tree_membership_service.d.ts.map +0 -1
  233. package/dest/tree_membership/tree_membership_service.js +0 -84
  234. package/src/contract_function_simulator/proxied_node.ts +0 -33
  235. package/src/private_kernel/private_kernel_oracle_impl.ts +0 -133
  236. package/src/public_storage/public_storage_service.ts +0 -33
  237. package/src/tree_membership/tree_membership_service.ts +0 -112
@@ -14,7 +14,7 @@ import {
14
14
  } from '@aztec/stdlib/abi';
15
15
  import type { AuthWitness } from '@aztec/stdlib/auth-witness';
16
16
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
17
- import { computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
17
+ import { siloNullifier } from '@aztec/stdlib/hash';
18
18
  import type { AztecNode } from '@aztec/stdlib/interfaces/client';
19
19
  import { PrivateContextInputs } from '@aztec/stdlib/kernel';
20
20
  import { type ContractClassLog, DirectionalAppTaggingSecret, type PreTag } from '@aztec/stdlib/logs';
@@ -30,9 +30,9 @@ import {
30
30
  type TxContext,
31
31
  } from '@aztec/stdlib/tx';
32
32
 
33
+ import type { ContractSyncService } from '../../contract_sync/contract_sync_service.js';
33
34
  import { NoteService } from '../../notes/note_service.js';
34
35
  import type { AddressStore } from '../../storage/address_store/address_store.js';
35
- import type { AnchorBlockStore } from '../../storage/anchor_block_store/anchor_block_store.js';
36
36
  import type { CapsuleStore } from '../../storage/capsule_store/capsule_store.js';
37
37
  import type { ContractStore } from '../../storage/contract_store/contract_store.js';
38
38
  import type { NoteStore } from '../../storage/note_store/note_store.js';
@@ -46,7 +46,7 @@ import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js'
46
46
  import type { HashedValuesCache } from '../hashed_values_cache.js';
47
47
  import { pickNotes } from '../pick_notes.js';
48
48
  import type { IPrivateExecutionOracle, NoteData } from './interfaces.js';
49
- import { executePrivateFunction, verifyCurrentClassId } from './private_execution.js';
49
+ import { executePrivateFunction } from './private_execution.js';
50
50
  import { UtilityExecutionOracle } from './utility_execution_oracle.js';
51
51
 
52
52
  /**
@@ -64,16 +64,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
64
64
  * Users can also use this to get a clearer idea of what's happened during a simulation.
65
65
  */
66
66
  private newNotes: NoteAndSlot[] = [];
67
- /**
68
- * Notes from previous transactions that are returned to the oracle call `getNotes` during this execution.
69
- * The mapping maps from the unique siloed note hash to the index for notes created in private executions.
70
- * It maps from siloed note hash to the index for notes created by public functions.
71
- *
72
- * They are not part of the ExecutionNoteCache and being forwarded to nested contexts via `extend()`
73
- * because these notes are meant to be maintained on a per-call basis
74
- * They should act as references for the read requests output by an app circuit via public inputs.
75
- */
76
- private noteHashLeafIndexMap: Map<bigint, bigint> = new Map();
77
67
  private noteHashNullifierCounterMap: Map<number, number> = new Map();
78
68
  private contractClassLogs: CountedContractClassLog[] = [];
79
69
  private offchainEffects: { data: Fr[] }[] = [];
@@ -98,12 +88,13 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
98
88
  keyStore: KeyStore,
99
89
  addressStore: AddressStore,
100
90
  aztecNode: AztecNode,
101
- anchorBlockStore: AnchorBlockStore,
102
91
  private readonly senderTaggingStore: SenderTaggingStore,
103
92
  recipientTaggingStore: RecipientTaggingStore,
104
93
  senderAddressBookStore: SenderAddressBookStore,
105
94
  capsuleStore: CapsuleStore,
106
95
  privateEventStore: PrivateEventStore,
96
+ private readonly contractSyncService: ContractSyncService,
97
+ jobId: string,
107
98
  private totalPublicCalldataCount: number = 0,
108
99
  protected sideEffectCounter: number = 0,
109
100
  log = createLogger('simulator:client_execution_context'),
@@ -121,11 +112,11 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
121
112
  keyStore,
122
113
  addressStore,
123
114
  aztecNode,
124
- anchorBlockStore,
125
115
  recipientTaggingStore,
126
116
  senderAddressBookStore,
127
117
  capsuleStore,
128
118
  privateEventStore,
119
+ jobId,
129
120
  log,
130
121
  scopes,
131
122
  );
@@ -160,14 +151,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
160
151
  return toACVMWitness(0, fields);
161
152
  }
162
153
 
163
- /**
164
- * The KernelProver will use this to fully populate witnesses and provide hints to the kernel circuit
165
- * regarding which note hash each settled read request corresponds to.
166
- */
167
- public getNoteHashLeafIndexMap() {
168
- return this.noteHashLeafIndexMap;
169
- }
170
-
171
154
  /**
172
155
  * Get the data for the newly created notes.
173
156
  */
@@ -260,7 +243,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
260
243
  sender: AztecAddress,
261
244
  recipient: AztecAddress,
262
245
  ) {
263
- const senderCompleteAddress = await this.getCompleteAddress(sender);
246
+ const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
264
247
  const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
265
248
  return DirectionalAppTaggingSecret.compute(
266
249
  senderCompleteAddress,
@@ -281,9 +264,16 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
281
264
  // This is a tagging secret we've not yet used in this tx, so first sync our store to make sure its indices
282
265
  // are up to date. We do this here because this store is not synced as part of the global sync because
283
266
  // that'd be wasteful as most tagging secrets are not used in each tx.
284
- await syncSenderTaggingIndexes(secret, this.contractAddress, this.aztecNode, this.senderTaggingStore);
285
-
286
- const lastUsedIndex = await this.senderTaggingStore.getLastUsedIndex(secret);
267
+ await syncSenderTaggingIndexes(
268
+ secret,
269
+ this.contractAddress,
270
+ this.aztecNode,
271
+ this.senderTaggingStore,
272
+ await this.anchorBlockHeader.hash(),
273
+ this.jobId,
274
+ );
275
+
276
+ const lastUsedIndex = await this.senderTaggingStore.getLastUsedIndex(secret, this.jobId);
287
277
  // If lastUsedIndex is undefined, we've never used this secret, so start from 0
288
278
  // Otherwise, the next index to use is one past the last used index
289
279
  return lastUsedIndex === undefined ? 0 : lastUsedIndex + 1;
@@ -372,7 +362,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
372
362
 
373
363
  const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
374
364
 
375
- const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockStore);
365
+ const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
376
366
  const dbNotes = await noteService.getNotes(
377
367
  this.callContext.contractAddress,
378
368
  owner,
@@ -402,23 +392,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
402
392
  .join(', ')}`,
403
393
  );
404
394
 
405
- const noteHashesAndIndexes = await Promise.all(
406
- notes.map(async n => {
407
- if (n.index !== undefined) {
408
- const siloedNoteHash = await siloNoteHash(n.contractAddress, n.noteHash);
409
- const uniqueNoteHash = await computeUniqueNoteHash(n.noteNonce, siloedNoteHash);
410
-
411
- return { hash: uniqueNoteHash, index: n.index };
412
- }
413
- }),
414
- );
415
-
416
- noteHashesAndIndexes
417
- .filter(n => n !== undefined)
418
- .forEach(n => {
419
- this.noteHashLeafIndexMap.set(n!.hash.toBigInt(), n!.index);
420
- });
421
-
422
395
  return notes;
423
396
  }
424
397
 
@@ -461,6 +434,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
461
434
  note,
462
435
  siloedNullifier: undefined, // Siloed nullifier cannot be known for newly created note.
463
436
  noteHash,
437
+ isPending: true, // This note has just been created and hence is not settled yet.
464
438
  },
465
439
  counter,
466
440
  );
@@ -495,6 +469,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
495
469
  return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
496
470
  }
497
471
 
472
+ /**
473
+ * Check if a nullifier has been emitted in the same transaction, i.e. if privateNotifyCreatedNullifier has been
474
+ * called for this inner nullifier from the contract with the specified address.
475
+ * @param innerNullifier - The inner nullifier to check.
476
+ * @param contractAddress - Address of the contract that emitted the nullifier.
477
+ * @returns A boolean indicating whether the nullifier is pending or not.
478
+ */
479
+ public async privateIsNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
480
+ const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
481
+ const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
482
+ return Promise.resolve(isNullifierPending);
483
+ }
484
+
498
485
  /**
499
486
  * Emit a contract class log.
500
487
  * This fn exists because we only carry a poseidon hash through the kernels, and need to
@@ -551,9 +538,13 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
551
538
 
552
539
  isStaticCall = isStaticCall || this.callContext.isStaticCall;
553
540
 
554
- await verifyCurrentClassId(targetContractAddress, this.aztecNode, this.contractStore, this.anchorBlockHeader);
555
-
556
- await this.contractStore.syncPrivateState(targetContractAddress, functionSelector, this.utilityExecutor);
541
+ await this.contractSyncService.ensureContractSynced(
542
+ targetContractAddress,
543
+ functionSelector,
544
+ this.utilityExecutor,
545
+ this.anchorBlockHeader,
546
+ this.jobId,
547
+ );
557
548
 
558
549
  const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
559
550
  targetContractAddress,
@@ -580,12 +571,13 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
580
571
  this.keyStore,
581
572
  this.addressStore,
582
573
  this.aztecNode,
583
- this.anchorBlockStore,
584
574
  this.senderTaggingStore,
585
575
  this.recipientTaggingStore,
586
576
  this.senderAddressBookStore,
587
577
  this.capsuleStore,
588
578
  this.privateEventStore,
579
+ this.contractSyncService,
580
+ this.jobId,
589
581
  this.totalPublicCalldataCount,
590
582
  sideEffectCounter,
591
583
  this.log,