@aztec/pxe 0.0.1-commit.c7c42ec → 0.0.1-commit.c949de6bc

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 (274) 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/bin/check_oracle_version.js +1 -1
  5. package/dest/block_synchronizer/block_synchronizer.d.ts +13 -5
  6. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  7. package/dest/block_synchronizer/block_synchronizer.js +74 -20
  8. package/dest/config/index.d.ts +3 -1
  9. package/dest/config/index.d.ts.map +1 -1
  10. package/dest/config/index.js +17 -0
  11. package/dest/config/package_info.js +1 -1
  12. package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
  13. package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
  14. package/dest/contract_function_simulator/benchmarked_node.js +77 -0
  15. package/dest/contract_function_simulator/contract_function_simulator.d.ts +57 -34
  16. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  17. package/dest/contract_function_simulator/contract_function_simulator.js +199 -81
  18. package/dest/contract_function_simulator/execution_note_cache.d.ts +18 -9
  19. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  20. package/dest/contract_function_simulator/execution_note_cache.js +45 -28
  21. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +5 -5
  22. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  23. package/dest/contract_function_simulator/execution_tagging_index_cache.js +3 -3
  24. package/dest/contract_function_simulator/index.d.ts +2 -2
  25. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  26. package/dest/contract_function_simulator/index.js +1 -1
  27. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +4 -3
  28. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  29. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +7 -4
  30. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -3
  31. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  32. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +2 -2
  33. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +4 -10
  34. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  35. package/dest/contract_function_simulator/noir-structs/utility_context.js +7 -18
  36. package/dest/contract_function_simulator/oracle/interfaces.d.ts +17 -13
  37. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  38. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -1
  39. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  40. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +6 -6
  41. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  42. package/dest/contract_function_simulator/oracle/note_packing_utils.js +8 -8
  43. package/dest/contract_function_simulator/oracle/oracle.d.ts +12 -10
  44. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  45. package/dest/contract_function_simulator/oracle/oracle.js +67 -44
  46. package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -26
  47. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  48. package/dest/contract_function_simulator/oracle/private_execution.js +1 -37
  49. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +45 -47
  50. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  51. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +91 -60
  52. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +67 -33
  53. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  54. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +131 -110
  55. package/dest/contract_logging.d.ts +22 -0
  56. package/dest/contract_logging.d.ts.map +1 -0
  57. package/dest/contract_logging.js +23 -0
  58. package/dest/contract_sync/contract_sync_service.d.ts +43 -0
  59. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
  60. package/dest/contract_sync/contract_sync_service.js +97 -0
  61. package/dest/contract_sync/helpers.d.ts +29 -0
  62. package/dest/contract_sync/helpers.d.ts.map +1 -0
  63. package/dest/contract_sync/helpers.js +55 -0
  64. package/dest/debug/pxe_debug_utils.d.ts +24 -10
  65. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  66. package/dest/debug/pxe_debug_utils.js +28 -17
  67. package/dest/entrypoints/client/bundle/index.d.ts +4 -1
  68. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  69. package/dest/entrypoints/client/bundle/index.js +3 -0
  70. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  71. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  72. package/dest/entrypoints/client/bundle/utils.js +31 -8
  73. package/dest/entrypoints/client/lazy/index.d.ts +4 -1
  74. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  75. package/dest/entrypoints/client/lazy/index.js +3 -0
  76. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  77. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  78. package/dest/entrypoints/client/lazy/utils.js +32 -9
  79. package/dest/entrypoints/pxe_creation_options.d.ts +5 -3
  80. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  81. package/dest/entrypoints/server/index.d.ts +5 -1
  82. package/dest/entrypoints/server/index.d.ts.map +1 -1
  83. package/dest/entrypoints/server/index.js +4 -0
  84. package/dest/entrypoints/server/utils.d.ts +1 -1
  85. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  86. package/dest/entrypoints/server/utils.js +39 -16
  87. package/dest/events/event_service.d.ts +6 -6
  88. package/dest/events/event_service.d.ts.map +1 -1
  89. package/dest/events/event_service.js +19 -22
  90. package/dest/events/private_event_filter_validator.d.ts +5 -5
  91. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  92. package/dest/events/private_event_filter_validator.js +5 -6
  93. package/dest/job_coordinator/job_coordinator.d.ts +75 -0
  94. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
  95. package/dest/job_coordinator/job_coordinator.js +94 -0
  96. package/dest/logs/log_service.d.ts +8 -5
  97. package/dest/logs/log_service.d.ts.map +1 -1
  98. package/dest/logs/log_service.js +31 -33
  99. package/dest/notes/note_service.d.ts +10 -9
  100. package/dest/notes/note_service.d.ts.map +1 -1
  101. package/dest/notes/note_service.js +34 -38
  102. package/dest/notes_filter.d.ts +25 -0
  103. package/dest/notes_filter.d.ts.map +1 -0
  104. package/dest/notes_filter.js +4 -0
  105. package/dest/oracle_version.d.ts +3 -3
  106. package/dest/oracle_version.d.ts.map +1 -1
  107. package/dest/oracle_version.js +4 -3
  108. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  109. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  110. package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
  111. package/dest/private_kernel/hints/index.d.ts +3 -3
  112. package/dest/private_kernel/hints/index.d.ts.map +1 -1
  113. package/dest/private_kernel/hints/index.js +2 -2
  114. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +29 -0
  115. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
  116. package/dest/private_kernel/hints/{build_private_kernel_reset_private_inputs.js → private_kernel_reset_private_inputs_builder.js} +141 -74
  117. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  118. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  119. package/dest/private_kernel/hints/test_utils.js +203 -0
  120. package/dest/private_kernel/private_kernel_execution_prover.d.ts +3 -2
  121. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  122. package/dest/private_kernel/private_kernel_execution_prover.js +24 -17
  123. package/dest/private_kernel/private_kernel_oracle.d.ts +24 -24
  124. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  125. package/dest/private_kernel/private_kernel_oracle.js +94 -2
  126. package/dest/pxe.d.ts +76 -58
  127. package/dest/pxe.d.ts.map +1 -1
  128. package/dest/pxe.js +151 -136
  129. package/dest/storage/address_store/address_store.d.ts +1 -1
  130. package/dest/storage/address_store/address_store.d.ts.map +1 -1
  131. package/dest/storage/address_store/address_store.js +12 -11
  132. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -1
  133. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
  134. package/dest/storage/anchor_block_store/anchor_block_store.js +8 -1
  135. package/dest/storage/capsule_store/capsule_store.d.ts +24 -9
  136. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  137. package/dest/storage/capsule_store/capsule_store.js +130 -23
  138. package/dest/storage/contract_store/contract_store.d.ts +42 -15
  139. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  140. package/dest/storage/contract_store/contract_store.js +157 -72
  141. package/dest/storage/metadata.d.ts +1 -1
  142. package/dest/storage/metadata.js +1 -1
  143. package/dest/storage/note_store/note_store.d.ts +50 -51
  144. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  145. package/dest/storage/note_store/note_store.js +284 -263
  146. package/dest/storage/note_store/stored_note.d.ts +16 -0
  147. package/dest/storage/note_store/stored_note.d.ts.map +1 -0
  148. package/dest/storage/note_store/stored_note.js +43 -0
  149. package/dest/storage/private_event_store/private_event_store.d.ts +47 -7
  150. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  151. package/dest/storage/private_event_store/private_event_store.js +231 -73
  152. package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
  153. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
  154. package/dest/storage/private_event_store/stored_private_event.js +56 -0
  155. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +16 -9
  156. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  157. package/dest/storage/tagging_store/recipient_tagging_store.js +88 -19
  158. package/dest/storage/tagging_store/sender_address_book_store.d.ts +1 -1
  159. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -1
  160. package/dest/storage/tagging_store/sender_address_book_store.js +20 -14
  161. package/dest/storage/tagging_store/sender_tagging_store.d.ts +20 -10
  162. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  163. package/dest/storage/tagging_store/sender_tagging_store.js +254 -102
  164. package/dest/tagging/constants.d.ts +2 -0
  165. package/dest/tagging/constants.d.ts.map +1 -0
  166. package/dest/tagging/constants.js +10 -0
  167. package/dest/tagging/get_all_logs_by_tags.d.ts +24 -0
  168. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
  169. package/dest/tagging/get_all_logs_by_tags.js +60 -0
  170. package/dest/tagging/index.d.ts +4 -3
  171. package/dest/tagging/index.d.ts.map +1 -1
  172. package/dest/tagging/index.js +3 -11
  173. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +5 -5
  174. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
  175. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +13 -13
  176. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
  177. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +7 -7
  178. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -1
  179. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +16 -12
  180. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +5 -8
  181. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  182. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +9 -12
  183. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +1 -1
  184. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  185. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +5 -8
  186. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +7 -7
  187. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  188. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +23 -19
  189. package/package.json +27 -18
  190. package/src/access_scopes.ts +9 -0
  191. package/src/bin/check_oracle_version.ts +1 -0
  192. package/src/block_synchronizer/block_synchronizer.ts +93 -32
  193. package/src/config/index.ts +14 -0
  194. package/src/config/package_info.ts +1 -1
  195. package/src/contract_function_simulator/benchmarked_node.ts +103 -0
  196. package/src/contract_function_simulator/contract_function_simulator.ts +353 -140
  197. package/src/contract_function_simulator/execution_note_cache.ts +44 -25
  198. package/src/contract_function_simulator/execution_tagging_index_cache.ts +5 -5
  199. package/src/contract_function_simulator/index.ts +1 -1
  200. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +6 -2
  201. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +2 -2
  202. package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
  203. package/src/contract_function_simulator/oracle/interfaces.ts +22 -12
  204. package/src/contract_function_simulator/oracle/note_packing_utils.ts +10 -10
  205. package/src/contract_function_simulator/oracle/oracle.ts +79 -47
  206. package/src/contract_function_simulator/oracle/private_execution.ts +1 -69
  207. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +131 -140
  208. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +198 -115
  209. package/src/contract_logging.ts +39 -0
  210. package/src/contract_sync/contract_sync_service.ts +152 -0
  211. package/src/contract_sync/helpers.ts +98 -0
  212. package/src/debug/pxe_debug_utils.ts +63 -18
  213. package/src/entrypoints/client/bundle/index.ts +3 -0
  214. package/src/entrypoints/client/bundle/utils.ts +23 -16
  215. package/src/entrypoints/client/lazy/index.ts +3 -0
  216. package/src/entrypoints/client/lazy/utils.ts +24 -17
  217. package/src/entrypoints/pxe_creation_options.ts +4 -2
  218. package/src/entrypoints/server/index.ts +4 -0
  219. package/src/entrypoints/server/utils.ts +33 -41
  220. package/src/events/event_service.ts +19 -25
  221. package/src/events/private_event_filter_validator.ts +3 -5
  222. package/src/job_coordinator/job_coordinator.ts +150 -0
  223. package/src/logs/log_service.ts +51 -40
  224. package/src/notes/note_service.ts +41 -45
  225. package/src/notes_filter.ts +26 -0
  226. package/src/oracle_version.ts +4 -3
  227. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  228. package/src/private_kernel/hints/index.ts +2 -2
  229. package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +196 -138
  230. package/src/private_kernel/hints/test_utils.ts +325 -0
  231. package/src/private_kernel/private_kernel_execution_prover.ts +27 -19
  232. package/src/private_kernel/private_kernel_oracle.ts +116 -36
  233. package/src/pxe.ts +283 -202
  234. package/src/storage/address_store/address_store.ts +15 -15
  235. package/src/storage/anchor_block_store/anchor_block_store.ts +8 -0
  236. package/src/storage/capsule_store/capsule_store.ts +159 -23
  237. package/src/storage/contract_store/contract_store.ts +186 -76
  238. package/src/storage/metadata.ts +1 -1
  239. package/src/storage/note_store/note_store.ts +326 -320
  240. package/src/storage/note_store/stored_note.ts +48 -0
  241. package/src/storage/private_event_store/private_event_store.ts +301 -79
  242. package/src/storage/private_event_store/stored_private_event.ts +73 -0
  243. package/src/storage/tagging_store/recipient_tagging_store.ts +111 -21
  244. package/src/storage/tagging_store/sender_address_book_store.ts +20 -14
  245. package/src/storage/tagging_store/sender_tagging_store.ts +297 -112
  246. package/src/tagging/constants.ts +10 -0
  247. package/src/tagging/get_all_logs_by_tags.ts +92 -0
  248. package/src/tagging/index.ts +3 -12
  249. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +27 -16
  250. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
  251. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +17 -16
  252. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +13 -15
  253. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +5 -13
  254. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +26 -23
  255. package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
  256. package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
  257. package/dest/contract_function_simulator/proxied_node.js +0 -27
  258. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
  259. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
  260. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  261. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
  262. package/dest/private_kernel/private_kernel_oracle_impl.d.ts +0 -46
  263. package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
  264. package/dest/private_kernel/private_kernel_oracle_impl.js +0 -86
  265. package/dest/public_storage/public_storage_service.d.ts +0 -24
  266. package/dest/public_storage/public_storage_service.d.ts.map +0 -1
  267. package/dest/public_storage/public_storage_service.js +0 -26
  268. package/dest/tree_membership/tree_membership_service.d.ts +0 -52
  269. package/dest/tree_membership/tree_membership_service.d.ts.map +0 -1
  270. package/dest/tree_membership/tree_membership_service.js +0 -84
  271. package/src/contract_function_simulator/proxied_node.ts +0 -33
  272. package/src/private_kernel/private_kernel_oracle_impl.ts +0 -133
  273. package/src/public_storage/public_storage_service.ts +0 -33
  274. package/src/tree_membership/tree_membership_service.ts +0 -112
@@ -2,42 +2,32 @@ import { MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS, PRIVATE_CONTEXT_INPUTS_LENGTH }
2
2
  import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import { createLogger } from '@aztec/foundation/log';
4
4
  import { Timer } from '@aztec/foundation/timer';
5
- import type { KeyStore } from '@aztec/key-store';
6
5
  import { type CircuitSimulator, toACVMWitness } from '@aztec/simulator/client';
7
6
  import {
8
7
  type FunctionAbi,
9
8
  type FunctionArtifact,
9
+ type FunctionCall,
10
10
  FunctionSelector,
11
11
  type NoteSelector,
12
12
  countArgumentsSize,
13
13
  } from '@aztec/stdlib/abi';
14
- import type { AuthWitness } from '@aztec/stdlib/auth-witness';
15
14
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
16
- import { computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
17
- import type { AztecNode } from '@aztec/stdlib/interfaces/client';
15
+ import { siloNullifier } from '@aztec/stdlib/hash';
18
16
  import { PrivateContextInputs } from '@aztec/stdlib/kernel';
19
- import { type ContractClassLog, DirectionalAppTaggingSecret, type PreTag } from '@aztec/stdlib/logs';
17
+ import { type ContractClassLog, ExtendedDirectionalAppTaggingSecret, type PreTag } from '@aztec/stdlib/logs';
20
18
  import { Tag } from '@aztec/stdlib/logs';
21
19
  import { Note, type NoteStatus } from '@aztec/stdlib/note';
22
20
  import {
23
- type BlockHeader,
24
21
  CallContext,
25
- Capsule,
26
22
  CountedContractClassLog,
27
23
  NoteAndSlot,
28
24
  PrivateCallExecutionResult,
29
25
  type TxContext,
30
26
  } from '@aztec/stdlib/tx';
31
27
 
28
+ import type { AccessScopes } from '../../access_scopes.js';
29
+ import type { ContractSyncService } from '../../contract_sync/contract_sync_service.js';
32
30
  import { NoteService } from '../../notes/note_service.js';
33
- import type { AddressStore } from '../../storage/address_store/address_store.js';
34
- import type { AnchorBlockStore } from '../../storage/anchor_block_store/anchor_block_store.js';
35
- import type { CapsuleStore } from '../../storage/capsule_store/capsule_store.js';
36
- import type { ContractStore } from '../../storage/contract_store/contract_store.js';
37
- import type { NoteStore } from '../../storage/note_store/note_store.js';
38
- import type { PrivateEventStore } from '../../storage/private_event_store/private_event_store.js';
39
- import type { RecipientTaggingStore } from '../../storage/tagging_store/recipient_tagging_store.js';
40
- import type { SenderAddressBookStore } from '../../storage/tagging_store/sender_address_book_store.js';
41
31
  import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
42
32
  import { syncSenderTaggingIndexes } from '../../tagging/index.js';
43
33
  import type { ExecutionNoteCache } from '../execution_note_cache.js';
@@ -45,8 +35,26 @@ import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js'
45
35
  import type { HashedValuesCache } from '../hashed_values_cache.js';
46
36
  import { pickNotes } from '../pick_notes.js';
47
37
  import type { IPrivateExecutionOracle, NoteData } from './interfaces.js';
48
- import { executePrivateFunction, verifyCurrentClassId } from './private_execution.js';
49
- import { UtilityExecutionOracle } from './utility_execution_oracle.js';
38
+ import { executePrivateFunction } from './private_execution.js';
39
+ import { UtilityExecutionOracle, type UtilityExecutionOracleArgs } from './utility_execution_oracle.js';
40
+
41
+ /** Args for PrivateExecutionOracle constructor. */
42
+ export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contractAddress'> & {
43
+ argsHash: Fr;
44
+ txContext: TxContext;
45
+ callContext: CallContext;
46
+ /** Needed to trigger contract synchronization before nested calls */
47
+ utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
48
+ executionCache: HashedValuesCache;
49
+ noteCache: ExecutionNoteCache;
50
+ taggingIndexCache: ExecutionTaggingIndexCache;
51
+ senderTaggingStore: SenderTaggingStore;
52
+ contractSyncService: ContractSyncService;
53
+ totalPublicCalldataCount?: number;
54
+ sideEffectCounter?: number;
55
+ senderForTags?: AztecAddress;
56
+ simulator?: CircuitSimulator;
57
+ };
50
58
 
51
59
  /**
52
60
  * The execution oracle for the private part of a transaction.
@@ -63,69 +71,44 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
63
71
  * Users can also use this to get a clearer idea of what's happened during a simulation.
64
72
  */
65
73
  private newNotes: NoteAndSlot[] = [];
66
- /**
67
- * Notes from previous transactions that are returned to the oracle call `getNotes` during this execution.
68
- * The mapping maps from the unique siloed note hash to the index for notes created in private executions.
69
- * It maps from siloed note hash to the index for notes created by public functions.
70
- *
71
- * They are not part of the ExecutionNoteCache and being forwarded to nested contexts via `extend()`
72
- * because these notes are meant to be maintained on a per-call basis
73
- * They should act as references for the read requests output by an app circuit via public inputs.
74
- */
75
- private noteHashLeafIndexMap: Map<bigint, bigint> = new Map();
76
74
  private noteHashNullifierCounterMap: Map<number, number> = new Map();
77
75
  private contractClassLogs: CountedContractClassLog[] = [];
78
76
  private offchainEffects: { data: Fr[] }[] = [];
79
77
  private nestedExecutionResults: PrivateCallExecutionResult[] = [];
80
78
 
81
- constructor(
82
- private readonly argsHash: Fr,
83
- private readonly txContext: TxContext,
84
- private readonly callContext: CallContext,
85
- /** Header of a block whose state is used during private execution (not the block the transaction is included in). */
86
- protected override readonly anchorBlockHeader: BlockHeader,
87
- /** List of transient auth witnesses to be used during this simulation */
88
- authWitnesses: AuthWitness[],
89
- capsules: Capsule[],
90
- private readonly executionCache: HashedValuesCache,
91
- private readonly noteCache: ExecutionNoteCache,
92
- private readonly taggingIndexCache: ExecutionTaggingIndexCache,
93
- contractStore: ContractStore,
94
- noteStore: NoteStore,
95
- keyStore: KeyStore,
96
- addressStore: AddressStore,
97
- aztecNode: AztecNode,
98
- anchorBlockStore: AnchorBlockStore,
99
- private readonly senderTaggingStore: SenderTaggingStore,
100
- recipientTaggingStore: RecipientTaggingStore,
101
- senderAddressBookStore: SenderAddressBookStore,
102
- capsuleStore: CapsuleStore,
103
- privateEventStore: PrivateEventStore,
104
- private totalPublicCalldataCount: number = 0,
105
- protected sideEffectCounter: number = 0,
106
- log = createLogger('simulator:client_execution_context'),
107
- scopes?: AztecAddress[],
108
- private senderForTags?: AztecAddress,
109
- private simulator?: CircuitSimulator,
110
- ) {
111
- super(
112
- callContext.contractAddress,
113
- authWitnesses,
114
- capsules,
115
- anchorBlockHeader,
116
- contractStore,
117
- noteStore,
118
- keyStore,
119
- addressStore,
120
- aztecNode,
121
- anchorBlockStore,
122
- recipientTaggingStore,
123
- senderAddressBookStore,
124
- capsuleStore,
125
- privateEventStore,
126
- log,
127
- scopes,
128
- );
79
+ private readonly argsHash: Fr;
80
+ private readonly txContext: TxContext;
81
+ private readonly callContext: CallContext;
82
+ private readonly utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
83
+ private readonly executionCache: HashedValuesCache;
84
+ private readonly noteCache: ExecutionNoteCache;
85
+ private readonly taggingIndexCache: ExecutionTaggingIndexCache;
86
+ private readonly senderTaggingStore: SenderTaggingStore;
87
+ private readonly contractSyncService: ContractSyncService;
88
+ private totalPublicCalldataCount: number;
89
+ protected sideEffectCounter: number;
90
+ private senderForTags?: AztecAddress;
91
+ private readonly simulator?: CircuitSimulator;
92
+
93
+ constructor(args: PrivateExecutionOracleArgs) {
94
+ super({
95
+ ...args,
96
+ contractAddress: args.callContext.contractAddress,
97
+ log: args.log ?? createLogger('simulator:client_execution_context'),
98
+ });
99
+ this.argsHash = args.argsHash;
100
+ this.txContext = args.txContext;
101
+ this.callContext = args.callContext;
102
+ this.utilityExecutor = args.utilityExecutor;
103
+ this.executionCache = args.executionCache;
104
+ this.noteCache = args.noteCache;
105
+ this.taggingIndexCache = args.taggingIndexCache;
106
+ this.senderTaggingStore = args.senderTaggingStore;
107
+ this.contractSyncService = args.contractSyncService;
108
+ this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
109
+ this.sideEffectCounter = args.sideEffectCounter ?? 0;
110
+ this.senderForTags = args.senderForTags;
111
+ this.simulator = args.simulator;
129
112
  }
130
113
 
131
114
  public getPrivateContextInputs(): PrivateContextInputs {
@@ -157,14 +140,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
157
140
  return toACVMWitness(0, fields);
158
141
  }
159
142
 
160
- /**
161
- * The KernelProver will use this to fully populate witnesses and provide hints to the kernel circuit
162
- * regarding which note hash each settled read request corresponds to.
163
- */
164
- public getNoteHashLeafIndexMap() {
165
- return this.noteHashLeafIndexMap;
166
- }
167
-
168
143
  /**
169
144
  * Get the data for the newly created notes.
170
145
  */
@@ -241,25 +216,29 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
241
216
  * @returns An app tag to be used in a log.
242
217
  */
243
218
  public async privateGetNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
244
- const secret = await this.#calculateDirectionalAppTaggingSecret(this.contractAddress, sender, recipient);
219
+ const extendedSecret = await this.#calculateExtendedDirectionalAppTaggingSecret(
220
+ this.contractAddress,
221
+ sender,
222
+ recipient,
223
+ );
245
224
 
246
- const index = await this.#getIndexToUseForSecret(secret);
225
+ const index = await this.#getIndexToUseForSecret(extendedSecret);
247
226
  this.log.debug(
248
227
  `Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
249
228
  );
250
- this.taggingIndexCache.setLastUsedIndex(secret, index);
229
+ this.taggingIndexCache.setLastUsedIndex(extendedSecret, index);
251
230
 
252
- return Tag.compute({ secret, index });
231
+ return Tag.compute({ extendedSecret, index });
253
232
  }
254
233
 
255
- async #calculateDirectionalAppTaggingSecret(
234
+ async #calculateExtendedDirectionalAppTaggingSecret(
256
235
  contractAddress: AztecAddress,
257
236
  sender: AztecAddress,
258
237
  recipient: AztecAddress,
259
238
  ) {
260
- const senderCompleteAddress = await this.getCompleteAddress(sender);
239
+ const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
261
240
  const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
262
- return DirectionalAppTaggingSecret.compute(
241
+ return ExtendedDirectionalAppTaggingSecret.compute(
263
242
  senderCompleteAddress,
264
243
  senderIvsk,
265
244
  recipient,
@@ -268,7 +247,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
268
247
  );
269
248
  }
270
249
 
271
- async #getIndexToUseForSecret(secret: DirectionalAppTaggingSecret): Promise<number> {
250
+ async #getIndexToUseForSecret(secret: ExtendedDirectionalAppTaggingSecret): Promise<number> {
272
251
  // If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
273
252
  const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
274
253
 
@@ -278,9 +257,15 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
278
257
  // This is a tagging secret we've not yet used in this tx, so first sync our store to make sure its indices
279
258
  // are up to date. We do this here because this store is not synced as part of the global sync because
280
259
  // that'd be wasteful as most tagging secrets are not used in each tx.
281
- await syncSenderTaggingIndexes(secret, this.contractAddress, this.aztecNode, this.senderTaggingStore);
282
-
283
- const lastUsedIndex = await this.senderTaggingStore.getLastUsedIndex(secret);
260
+ await syncSenderTaggingIndexes(
261
+ secret,
262
+ this.aztecNode,
263
+ this.senderTaggingStore,
264
+ await this.anchorBlockHeader.hash(),
265
+ this.jobId,
266
+ );
267
+
268
+ const lastUsedIndex = await this.senderTaggingStore.getLastUsedIndex(secret, this.jobId);
284
269
  // If lastUsedIndex is undefined, we've never used this secret, so start from 0
285
270
  // Otherwise, the next index to use is one past the last used index
286
271
  return lastUsedIndex === undefined ? 0 : lastUsedIndex + 1;
@@ -369,7 +354,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
369
354
 
370
355
  const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
371
356
 
372
- const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockStore);
357
+ const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
373
358
  const dbNotes = await noteService.getNotes(
374
359
  this.callContext.contractAddress,
375
360
  owner,
@@ -399,23 +384,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
399
384
  .join(', ')}`,
400
385
  );
401
386
 
402
- const noteHashesAndIndexes = await Promise.all(
403
- notes.map(async n => {
404
- if (n.index !== undefined) {
405
- const siloedNoteHash = await siloNoteHash(n.contractAddress, n.noteHash);
406
- const uniqueNoteHash = await computeUniqueNoteHash(n.noteNonce, siloedNoteHash);
407
-
408
- return { hash: uniqueNoteHash, index: n.index };
409
- }
410
- }),
411
- );
412
-
413
- noteHashesAndIndexes
414
- .filter(n => n !== undefined)
415
- .forEach(n => {
416
- this.noteHashLeafIndexMap.set(n!.hash.toBigInt(), n!.index);
417
- });
418
-
419
387
  return notes;
420
388
  }
421
389
 
@@ -458,6 +426,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
458
426
  note,
459
427
  siloedNullifier: undefined, // Siloed nullifier cannot be known for newly created note.
460
428
  noteHash,
429
+ isPending: true, // This note has just been created and hence is not settled yet.
461
430
  },
462
431
  counter,
463
432
  );
@@ -492,6 +461,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
492
461
  return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
493
462
  }
494
463
 
464
+ /**
465
+ * Check if a nullifier has been emitted in the same transaction, i.e. if privateNotifyCreatedNullifier has been
466
+ * called for this inner nullifier from the contract with the specified address.
467
+ * @param innerNullifier - The inner nullifier to check.
468
+ * @param contractAddress - Address of the contract that emitted the nullifier.
469
+ * @returns A boolean indicating whether the nullifier is pending or not.
470
+ */
471
+ public async privateIsNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
472
+ const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
473
+ const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
474
+ return Promise.resolve(isNullifierPending);
475
+ }
476
+
495
477
  /**
496
478
  * Emit a contract class log.
497
479
  * This fn exists because we only carry a poseidon hash through the kernels, and need to
@@ -548,7 +530,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
548
530
 
549
531
  isStaticCall = isStaticCall || this.callContext.isStaticCall;
550
532
 
551
- await verifyCurrentClassId(targetContractAddress, this.aztecNode, this.contractStore, this.anchorBlockHeader);
533
+ await this.contractSyncService.ensureContractSynced(
534
+ targetContractAddress,
535
+ functionSelector,
536
+ this.utilityExecutor,
537
+ this.anchorBlockHeader,
538
+ this.jobId,
539
+ this.scopes,
540
+ );
552
541
 
553
542
  const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
554
543
  targetContractAddress,
@@ -559,39 +548,41 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
559
548
 
560
549
  const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
561
550
 
562
- const privateExecutionOracle = new PrivateExecutionOracle(
551
+ const privateExecutionOracle = new PrivateExecutionOracle({
563
552
  argsHash,
564
- derivedTxContext,
565
- derivedCallContext,
566
- this.anchorBlockHeader,
567
- this.authWitnesses,
568
- this.capsules,
569
- this.executionCache,
570
- this.noteCache,
571
- this.taggingIndexCache,
572
- this.contractStore,
573
- this.noteStore,
574
- this.keyStore,
575
- this.addressStore,
576
- this.aztecNode,
577
- this.anchorBlockStore,
578
- this.senderTaggingStore,
579
- this.recipientTaggingStore,
580
- this.senderAddressBookStore,
581
- this.capsuleStore,
582
- this.privateEventStore,
583
- this.totalPublicCalldataCount,
553
+ txContext: derivedTxContext,
554
+ callContext: derivedCallContext,
555
+ anchorBlockHeader: this.anchorBlockHeader,
556
+ utilityExecutor: this.utilityExecutor,
557
+ authWitnesses: this.authWitnesses,
558
+ capsules: this.capsules,
559
+ executionCache: this.executionCache,
560
+ noteCache: this.noteCache,
561
+ taggingIndexCache: this.taggingIndexCache,
562
+ contractStore: this.contractStore,
563
+ noteStore: this.noteStore,
564
+ keyStore: this.keyStore,
565
+ addressStore: this.addressStore,
566
+ aztecNode: this.aztecNode,
567
+ senderTaggingStore: this.senderTaggingStore,
568
+ recipientTaggingStore: this.recipientTaggingStore,
569
+ senderAddressBookStore: this.senderAddressBookStore,
570
+ capsuleStore: this.capsuleStore,
571
+ privateEventStore: this.privateEventStore,
572
+ contractSyncService: this.contractSyncService,
573
+ jobId: this.jobId,
574
+ totalPublicCalldataCount: this.totalPublicCalldataCount,
584
575
  sideEffectCounter,
585
- this.log,
586
- this.scopes,
587
- this.senderForTags,
588
- this.simulator,
589
- );
576
+ log: this.log,
577
+ scopes: this.scopes,
578
+ senderForTags: this.senderForTags,
579
+ simulator: this.simulator!,
580
+ });
590
581
 
591
582
  const setupTime = simulatorSetupTimer.ms();
592
583
 
593
584
  const childExecutionResult = await executePrivateFunction(
594
- this.simulator,
585
+ this.simulator!,
595
586
  privateExecutionOracle,
596
587
  targetArtifact,
597
588
  targetContractAddress,