@aztec/pxe 0.0.1-commit.9b94fc1 → 0.0.1-commit.9ee6fcc6

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 (425) 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 +105 -15
  5. package/dest/block_synchronizer/block_synchronizer.d.ts +45 -0
  6. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
  7. package/dest/block_synchronizer/block_synchronizer.js +153 -0
  8. package/dest/block_synchronizer/index.d.ts +2 -0
  9. package/dest/block_synchronizer/index.d.ts.map +1 -0
  10. package/dest/block_synchronizer/index.js +1 -0
  11. package/dest/config/index.d.ts +7 -5
  12. package/dest/config/index.d.ts.map +1 -1
  13. package/dest/config/index.js +18 -1
  14. package/dest/config/package_info.js +1 -1
  15. package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
  16. package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
  17. package/dest/contract_function_simulator/benchmarked_node.js +77 -0
  18. package/dest/contract_function_simulator/contract_function_simulator.d.ts +82 -24
  19. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  20. package/dest/contract_function_simulator/contract_function_simulator.js +246 -79
  21. package/dest/contract_function_simulator/execution_note_cache.d.ts +21 -11
  22. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  23. package/dest/contract_function_simulator/execution_note_cache.js +49 -31
  24. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +7 -7
  25. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  26. package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -11
  27. package/dest/contract_function_simulator/hashed_values_cache.d.ts +2 -2
  28. package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -1
  29. package/dest/contract_function_simulator/index.d.ts +3 -2
  30. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  31. package/dest/contract_function_simulator/index.js +2 -1
  32. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +6 -6
  33. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  34. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +11 -7
  35. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +5 -4
  36. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  37. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +7 -6
  38. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +2 -2
  39. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  40. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +2 -4
  41. package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts +16 -0
  42. package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts.map +1 -0
  43. package/dest/contract_function_simulator/noir-structs/message_tx_context.js +57 -0
  44. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +6 -7
  45. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  46. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +9 -8
  47. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +4 -10
  48. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  49. package/dest/contract_function_simulator/noir-structs/utility_context.js +7 -18
  50. package/dest/contract_function_simulator/oracle/interfaces.d.ts +62 -50
  51. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  52. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +9 -0
  53. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +1 -0
  54. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +42 -0
  55. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +4 -2
  56. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  57. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -1
  58. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +11 -7
  59. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  60. package/dest/contract_function_simulator/oracle/note_packing_utils.js +14 -10
  61. package/dest/contract_function_simulator/oracle/oracle.d.ts +45 -42
  62. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  63. package/dest/contract_function_simulator/oracle/oracle.js +222 -118
  64. package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -27
  65. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  66. package/dest/contract_function_simulator/oracle/private_execution.js +6 -40
  67. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +66 -82
  68. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  69. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +129 -118
  70. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +149 -55
  71. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  72. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +290 -104
  73. package/dest/contract_function_simulator/pick_notes.d.ts +2 -2
  74. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  75. package/dest/contract_function_simulator/pick_notes.js +1 -1
  76. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +4 -4
  77. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  78. package/dest/contract_function_simulator/proxied_contract_data_source.js +23 -5
  79. package/dest/contract_logging.d.ts +22 -0
  80. package/dest/contract_logging.d.ts.map +1 -0
  81. package/dest/contract_logging.js +23 -0
  82. package/dest/contract_sync/contract_sync_service.d.ts +45 -0
  83. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
  84. package/dest/contract_sync/contract_sync_service.js +114 -0
  85. package/dest/contract_sync/helpers.d.ts +29 -0
  86. package/dest/contract_sync/helpers.d.ts.map +1 -0
  87. package/dest/contract_sync/helpers.js +55 -0
  88. package/dest/debug/pxe_debug_utils.d.ts +45 -0
  89. package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
  90. package/dest/debug/pxe_debug_utils.js +48 -0
  91. package/dest/entrypoints/client/bundle/index.d.ts +4 -2
  92. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  93. package/dest/entrypoints/client/bundle/index.js +3 -1
  94. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  95. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  96. package/dest/entrypoints/client/bundle/utils.js +32 -9
  97. package/dest/entrypoints/client/lazy/index.d.ts +4 -2
  98. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  99. package/dest/entrypoints/client/lazy/index.js +3 -1
  100. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  101. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  102. package/dest/entrypoints/client/lazy/utils.js +33 -10
  103. package/dest/entrypoints/pxe_creation_options.d.ts +7 -3
  104. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  105. package/dest/entrypoints/server/index.d.ts +6 -2
  106. package/dest/entrypoints/server/index.d.ts.map +1 -1
  107. package/dest/entrypoints/server/index.js +5 -1
  108. package/dest/entrypoints/server/utils.d.ts +1 -1
  109. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  110. package/dest/entrypoints/server/utils.js +39 -16
  111. package/dest/error_enriching.d.ts +4 -4
  112. package/dest/error_enriching.d.ts.map +1 -1
  113. package/dest/error_enriching.js +6 -6
  114. package/dest/events/event_service.d.ts +15 -0
  115. package/dest/events/event_service.d.ts.map +1 -0
  116. package/dest/events/event_service.js +44 -0
  117. package/dest/events/index.d.ts +2 -0
  118. package/dest/events/index.d.ts.map +1 -0
  119. package/dest/events/index.js +1 -0
  120. package/dest/events/private_event_filter_validator.d.ts +9 -0
  121. package/dest/events/private_event_filter_validator.d.ts.map +1 -0
  122. package/dest/events/private_event_filter_validator.js +38 -0
  123. package/dest/job_coordinator/job_coordinator.d.ts +75 -0
  124. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
  125. package/dest/job_coordinator/job_coordinator.js +94 -0
  126. package/dest/logs/log_service.d.ts +29 -0
  127. package/dest/logs/log_service.d.ts.map +1 -0
  128. package/dest/logs/log_service.js +118 -0
  129. package/dest/messages/message_context_service.d.ts +17 -0
  130. package/dest/messages/message_context_service.d.ts.map +1 -0
  131. package/dest/messages/message_context_service.js +36 -0
  132. package/dest/notes/index.d.ts +2 -0
  133. package/dest/notes/index.d.ts.map +1 -0
  134. package/dest/notes/index.js +1 -0
  135. package/dest/notes/note_service.d.ts +49 -0
  136. package/dest/notes/note_service.d.ts.map +1 -0
  137. package/dest/notes/note_service.js +148 -0
  138. package/dest/notes_filter.d.ts +25 -0
  139. package/dest/notes_filter.d.ts.map +1 -0
  140. package/dest/notes_filter.js +4 -0
  141. package/dest/oracle_version.d.ts +3 -3
  142. package/dest/oracle_version.d.ts.map +1 -1
  143. package/dest/oracle_version.js +5 -4
  144. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  145. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  146. package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
  147. package/dest/private_kernel/hints/index.d.ts +3 -3
  148. package/dest/private_kernel/hints/index.d.ts.map +1 -1
  149. package/dest/private_kernel/hints/index.js +2 -2
  150. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +29 -0
  151. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
  152. package/dest/private_kernel/hints/{build_private_kernel_reset_private_inputs.js → private_kernel_reset_private_inputs_builder.js} +141 -74
  153. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  154. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  155. package/dest/private_kernel/hints/test_utils.js +203 -0
  156. package/dest/private_kernel/private_kernel_execution_prover.d.ts +3 -2
  157. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  158. package/dest/private_kernel/private_kernel_execution_prover.js +28 -21
  159. package/dest/private_kernel/private_kernel_oracle.d.ts +26 -25
  160. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  161. package/dest/private_kernel/private_kernel_oracle.js +94 -2
  162. package/dest/pxe.d.ts +117 -103
  163. package/dest/pxe.d.ts.map +1 -1
  164. package/dest/pxe.js +283 -262
  165. package/dest/storage/address_store/address_store.d.ts +11 -0
  166. package/dest/storage/address_store/address_store.d.ts.map +1 -0
  167. package/dest/storage/{address_data_provider/address_data_provider.js → address_store/address_store.js} +13 -12
  168. package/dest/storage/address_store/index.d.ts +2 -0
  169. package/dest/storage/address_store/index.d.ts.map +1 -0
  170. package/dest/storage/address_store/index.js +1 -0
  171. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +17 -0
  172. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
  173. package/dest/storage/{sync_data_provider/sync_data_provider.js → anchor_block_store/anchor_block_store.js} +10 -10
  174. package/dest/storage/{sync_data_provider → anchor_block_store}/index.d.ts +2 -2
  175. package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
  176. package/dest/storage/anchor_block_store/index.js +1 -0
  177. package/dest/storage/capsule_store/capsule_store.d.ts +72 -0
  178. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
  179. package/dest/storage/capsule_store/capsule_store.js +253 -0
  180. package/dest/storage/capsule_store/index.d.ts +2 -0
  181. package/dest/storage/capsule_store/index.d.ts.map +1 -0
  182. package/dest/storage/capsule_store/index.js +1 -0
  183. package/dest/storage/contract_store/contract_store.d.ts +93 -0
  184. package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
  185. package/dest/storage/contract_store/contract_store.js +309 -0
  186. package/dest/storage/contract_store/index.d.ts +2 -0
  187. package/dest/storage/contract_store/index.d.ts.map +1 -0
  188. package/dest/storage/contract_store/index.js +1 -0
  189. package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.d.ts +1 -1
  190. package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
  191. package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.js +1 -1
  192. package/dest/storage/index.d.ts +8 -8
  193. package/dest/storage/index.d.ts.map +1 -1
  194. package/dest/storage/index.js +7 -7
  195. package/dest/storage/metadata.d.ts +1 -1
  196. package/dest/storage/metadata.js +1 -1
  197. package/dest/storage/note_store/index.d.ts +3 -0
  198. package/dest/storage/note_store/index.d.ts.map +1 -0
  199. package/dest/storage/note_store/index.js +2 -0
  200. package/dest/storage/note_store/note_store.d.ts +83 -0
  201. package/dest/storage/note_store/note_store.d.ts.map +1 -0
  202. package/dest/storage/note_store/note_store.js +343 -0
  203. package/dest/storage/note_store/stored_note.d.ts +16 -0
  204. package/dest/storage/note_store/stored_note.d.ts.map +1 -0
  205. package/dest/storage/note_store/stored_note.js +43 -0
  206. package/dest/storage/private_event_store/private_event_store.d.ts +91 -0
  207. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
  208. package/dest/storage/private_event_store/private_event_store.js +273 -0
  209. package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
  210. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
  211. package/dest/storage/private_event_store/stored_private_event.js +56 -0
  212. package/dest/storage/tagging_store/index.d.ts +4 -0
  213. package/dest/storage/tagging_store/index.d.ts.map +1 -0
  214. package/dest/storage/tagging_store/index.js +3 -0
  215. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +28 -0
  216. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
  217. package/dest/storage/tagging_store/recipient_tagging_store.js +111 -0
  218. package/dest/storage/tagging_store/sender_address_book_store.d.ts +14 -0
  219. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -0
  220. package/dest/storage/tagging_store/sender_address_book_store.js +36 -0
  221. package/dest/storage/tagging_store/sender_tagging_store.d.ts +78 -0
  222. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
  223. package/dest/storage/tagging_store/sender_tagging_store.js +374 -0
  224. package/dest/tagging/constants.d.ts +2 -2
  225. package/dest/tagging/constants.d.ts.map +1 -1
  226. package/dest/tagging/constants.js +10 -2
  227. package/dest/tagging/get_all_logs_by_tags.d.ts +24 -0
  228. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
  229. package/dest/tagging/get_all_logs_by_tags.js +60 -0
  230. package/dest/tagging/index.d.ts +17 -7
  231. package/dest/tagging/index.d.ts.map +1 -1
  232. package/dest/tagging/index.js +15 -5
  233. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +14 -0
  234. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -0
  235. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +99 -0
  236. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +12 -0
  237. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -0
  238. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +20 -0
  239. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +14 -0
  240. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -0
  241. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +33 -0
  242. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +17 -0
  243. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
  244. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +80 -0
  245. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +12 -0
  246. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
  247. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +39 -0
  248. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +19 -0
  249. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
  250. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +72 -0
  251. package/package.json +28 -19
  252. package/src/access_scopes.ts +9 -0
  253. package/src/bin/check_oracle_version.ts +131 -20
  254. package/src/block_synchronizer/block_synchronizer.ts +178 -0
  255. package/src/block_synchronizer/index.ts +1 -0
  256. package/src/config/index.ts +18 -4
  257. package/src/config/package_info.ts +1 -1
  258. package/src/contract_function_simulator/benchmarked_node.ts +103 -0
  259. package/src/contract_function_simulator/contract_function_simulator.ts +418 -111
  260. package/src/contract_function_simulator/execution_note_cache.ts +51 -28
  261. package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -14
  262. package/src/contract_function_simulator/hashed_values_cache.ts +1 -1
  263. package/src/contract_function_simulator/index.ts +2 -1
  264. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +14 -7
  265. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +6 -5
  266. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +2 -5
  267. package/src/contract_function_simulator/noir-structs/message_tx_context.ts +55 -0
  268. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +8 -8
  269. package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
  270. package/src/contract_function_simulator/oracle/interfaces.ts +77 -62
  271. package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +135 -0
  272. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +1 -1
  273. package/src/contract_function_simulator/oracle/note_packing_utils.ts +27 -13
  274. package/src/contract_function_simulator/oracle/oracle.ts +254 -162
  275. package/src/contract_function_simulator/oracle/private_execution.ts +6 -72
  276. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +180 -168
  277. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +457 -115
  278. package/src/contract_function_simulator/pick_notes.ts +1 -1
  279. package/src/contract_function_simulator/proxied_contract_data_source.ts +24 -7
  280. package/src/contract_logging.ts +39 -0
  281. package/src/contract_sync/contract_sync_service.ts +181 -0
  282. package/src/contract_sync/helpers.ts +98 -0
  283. package/src/debug/pxe_debug_utils.ts +93 -0
  284. package/src/entrypoints/client/bundle/index.ts +3 -1
  285. package/src/entrypoints/client/bundle/utils.ts +24 -17
  286. package/src/entrypoints/client/lazy/index.ts +3 -1
  287. package/src/entrypoints/client/lazy/utils.ts +25 -18
  288. package/src/entrypoints/pxe_creation_options.ts +6 -2
  289. package/src/entrypoints/server/index.ts +5 -1
  290. package/src/entrypoints/server/utils.ts +33 -41
  291. package/src/error_enriching.ts +7 -15
  292. package/src/events/event_service.ts +71 -0
  293. package/src/events/index.ts +1 -0
  294. package/src/events/private_event_filter_validator.ts +46 -0
  295. package/src/job_coordinator/job_coordinator.ts +150 -0
  296. package/src/logs/log_service.ts +213 -0
  297. package/src/messages/message_context_service.ts +45 -0
  298. package/src/notes/index.ts +1 -0
  299. package/src/notes/note_service.ts +196 -0
  300. package/src/notes_filter.ts +26 -0
  301. package/src/oracle_version.ts +5 -4
  302. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  303. package/src/private_kernel/hints/index.ts +2 -2
  304. package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +197 -139
  305. package/src/private_kernel/hints/test_utils.ts +325 -0
  306. package/src/private_kernel/private_kernel_execution_prover.ts +32 -23
  307. package/src/private_kernel/private_kernel_oracle.ts +118 -37
  308. package/src/pxe.ts +443 -354
  309. package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +16 -16
  310. package/src/storage/address_store/index.ts +1 -0
  311. package/src/storage/{sync_data_provider/sync_data_provider.ts → anchor_block_store/anchor_block_store.ts} +10 -11
  312. package/src/storage/anchor_block_store/index.ts +1 -0
  313. package/src/storage/capsule_store/capsule_store.ts +315 -0
  314. package/src/storage/capsule_store/index.ts +1 -0
  315. package/src/storage/contract_store/contract_store.ts +429 -0
  316. package/src/storage/contract_store/index.ts +1 -0
  317. package/src/storage/{contract_data_provider → contract_store}/private_functions_tree.ts +1 -1
  318. package/src/storage/index.ts +7 -7
  319. package/src/storage/metadata.ts +1 -1
  320. package/src/storage/note_store/index.ts +2 -0
  321. package/src/storage/note_store/note_store.ts +418 -0
  322. package/src/storage/note_store/stored_note.ts +48 -0
  323. package/src/storage/private_event_store/private_event_store.ts +384 -0
  324. package/src/storage/private_event_store/stored_private_event.ts +73 -0
  325. package/src/storage/tagging_store/index.ts +3 -0
  326. package/src/storage/tagging_store/recipient_tagging_store.ts +143 -0
  327. package/src/storage/tagging_store/sender_address_book_store.ts +48 -0
  328. package/src/storage/tagging_store/sender_tagging_store.ts +476 -0
  329. package/src/tagging/constants.ts +10 -2
  330. package/src/tagging/get_all_logs_by_tags.ts +92 -0
  331. package/src/tagging/index.ts +19 -6
  332. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +140 -0
  333. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
  334. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +44 -0
  335. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +112 -0
  336. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +51 -0
  337. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +85 -0
  338. package/dest/contract_function_simulator/execution_data_provider.d.ts +0 -265
  339. package/dest/contract_function_simulator/execution_data_provider.d.ts.map +0 -1
  340. package/dest/contract_function_simulator/execution_data_provider.js +0 -14
  341. package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
  342. package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
  343. package/dest/contract_function_simulator/proxied_node.js +0 -27
  344. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts +0 -122
  345. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +0 -1
  346. package/dest/contract_function_simulator/pxe_oracle_interface.js +0 -694
  347. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
  348. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
  349. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  350. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
  351. package/dest/private_kernel/private_kernel_oracle_impl.d.ts +0 -45
  352. package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
  353. package/dest/private_kernel/private_kernel_oracle_impl.js +0 -86
  354. package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -11
  355. package/dest/storage/address_data_provider/address_data_provider.d.ts.map +0 -1
  356. package/dest/storage/address_data_provider/index.d.ts +0 -2
  357. package/dest/storage/address_data_provider/index.d.ts.map +0 -1
  358. package/dest/storage/address_data_provider/index.js +0 -1
  359. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -25
  360. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +0 -1
  361. package/dest/storage/capsule_data_provider/capsule_data_provider.js +0 -118
  362. package/dest/storage/capsule_data_provider/index.d.ts +0 -2
  363. package/dest/storage/capsule_data_provider/index.d.ts.map +0 -1
  364. package/dest/storage/capsule_data_provider/index.js +0 -1
  365. package/dest/storage/contract_data_provider/contract_data_provider.d.ts +0 -64
  366. package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
  367. package/dest/storage/contract_data_provider/contract_data_provider.js +0 -193
  368. package/dest/storage/contract_data_provider/index.d.ts +0 -2
  369. package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
  370. package/dest/storage/contract_data_provider/index.js +0 -1
  371. package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
  372. package/dest/storage/note_data_provider/index.d.ts +0 -3
  373. package/dest/storage/note_data_provider/index.d.ts.map +0 -1
  374. package/dest/storage/note_data_provider/index.js +0 -2
  375. package/dest/storage/note_data_provider/note_data_provider.d.ts +0 -83
  376. package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
  377. package/dest/storage/note_data_provider/note_data_provider.js +0 -311
  378. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +0 -37
  379. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +0 -1
  380. package/dest/storage/private_event_data_provider/private_event_data_provider.js +0 -105
  381. package/dest/storage/sync_data_provider/index.d.ts.map +0 -1
  382. package/dest/storage/sync_data_provider/index.js +0 -1
  383. package/dest/storage/sync_data_provider/sync_data_provider.d.ts +0 -10
  384. package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +0 -1
  385. package/dest/storage/tagging_data_provider/index.d.ts +0 -2
  386. package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
  387. package/dest/storage/tagging_data_provider/index.js +0 -1
  388. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +0 -40
  389. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +0 -1
  390. package/dest/storage/tagging_data_provider/tagging_data_provider.js +0 -89
  391. package/dest/synchronizer/index.d.ts +0 -2
  392. package/dest/synchronizer/index.d.ts.map +0 -1
  393. package/dest/synchronizer/index.js +0 -1
  394. package/dest/synchronizer/synchronizer.d.ts +0 -35
  395. package/dest/synchronizer/synchronizer.d.ts.map +0 -1
  396. package/dest/synchronizer/synchronizer.js +0 -101
  397. package/dest/tagging/siloed_tag.d.ts +0 -14
  398. package/dest/tagging/siloed_tag.d.ts.map +0 -1
  399. package/dest/tagging/siloed_tag.js +0 -20
  400. package/dest/tagging/tag.d.ts +0 -12
  401. package/dest/tagging/tag.d.ts.map +0 -1
  402. package/dest/tagging/tag.js +0 -17
  403. package/dest/tagging/utils.d.ts +0 -18
  404. package/dest/tagging/utils.d.ts.map +0 -1
  405. package/dest/tagging/utils.js +0 -24
  406. package/src/contract_function_simulator/execution_data_provider.ts +0 -333
  407. package/src/contract_function_simulator/proxied_node.ts +0 -33
  408. package/src/contract_function_simulator/pxe_oracle_interface.ts +0 -1008
  409. package/src/private_kernel/private_kernel_oracle_impl.ts +0 -132
  410. package/src/storage/address_data_provider/index.ts +0 -1
  411. package/src/storage/capsule_data_provider/capsule_data_provider.ts +0 -147
  412. package/src/storage/capsule_data_provider/index.ts +0 -1
  413. package/src/storage/contract_data_provider/contract_data_provider.ts +0 -277
  414. package/src/storage/contract_data_provider/index.ts +0 -1
  415. package/src/storage/note_data_provider/index.ts +0 -2
  416. package/src/storage/note_data_provider/note_data_provider.ts +0 -399
  417. package/src/storage/private_event_data_provider/private_event_data_provider.ts +0 -143
  418. package/src/storage/sync_data_provider/index.ts +0 -1
  419. package/src/storage/tagging_data_provider/index.ts +0 -1
  420. package/src/storage/tagging_data_provider/tagging_data_provider.ts +0 -120
  421. package/src/synchronizer/index.ts +0 -1
  422. package/src/synchronizer/synchronizer.ts +0 -120
  423. package/src/tagging/siloed_tag.ts +0 -22
  424. package/src/tagging/tag.ts +0 -16
  425. package/src/tagging/utils.ts +0 -31
@@ -1,40 +1,58 @@
1
1
  import { MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS, PRIVATE_CONTEXT_INPUTS_LENGTH } from '@aztec/constants';
2
- import { Fr } from '@aztec/foundation/fields';
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
5
  import { type CircuitSimulator, toACVMWitness } from '@aztec/simulator/client';
6
6
  import {
7
7
  type FunctionAbi,
8
8
  type FunctionArtifact,
9
+ type FunctionCall,
9
10
  FunctionSelector,
10
11
  type NoteSelector,
11
12
  countArgumentsSize,
12
13
  } from '@aztec/stdlib/abi';
13
- import type { AuthWitness } from '@aztec/stdlib/auth-witness';
14
14
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
15
- import { computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
15
+ import { siloNullifier } from '@aztec/stdlib/hash';
16
16
  import { PrivateContextInputs } from '@aztec/stdlib/kernel';
17
- import type { ContractClassLog, DirectionalAppTaggingSecret, PreTag } from '@aztec/stdlib/logs';
17
+ import { type ContractClassLog, ExtendedDirectionalAppTaggingSecret, type TaggingIndexRange } from '@aztec/stdlib/logs';
18
+ import { Tag } from '@aztec/stdlib/logs';
18
19
  import { Note, type NoteStatus } from '@aztec/stdlib/note';
19
20
  import {
20
- type BlockHeader,
21
21
  CallContext,
22
- Capsule,
23
22
  CountedContractClassLog,
24
23
  NoteAndSlot,
25
24
  PrivateCallExecutionResult,
26
25
  type TxContext,
27
26
  } from '@aztec/stdlib/tx';
28
27
 
29
- import { Tag } from '../../tagging/tag.js';
30
- import type { ExecutionDataProvider } from '../execution_data_provider.js';
28
+ import type { AccessScopes } from '../../access_scopes.js';
29
+ import { NoteService } from '../../notes/note_service.js';
30
+ import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
31
+ import { syncSenderTaggingIndexes } from '../../tagging/index.js';
31
32
  import type { ExecutionNoteCache } from '../execution_note_cache.js';
32
33
  import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js';
33
34
  import type { HashedValuesCache } from '../hashed_values_cache.js';
34
35
  import { pickNotes } from '../pick_notes.js';
35
36
  import type { IPrivateExecutionOracle, NoteData } from './interfaces.js';
36
- import { executePrivateFunction, verifyCurrentClassId } from './private_execution.js';
37
- import { UtilityExecutionOracle } from './utility_execution_oracle.js';
37
+ import { executePrivateFunction } from './private_execution.js';
38
+ import { UtilityExecutionOracle, type UtilityExecutionOracleArgs } from './utility_execution_oracle.js';
39
+
40
+ /** Args for PrivateExecutionOracle constructor. */
41
+ export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contractAddress'> & {
42
+ argsHash: Fr;
43
+ txContext: TxContext;
44
+ callContext: CallContext;
45
+ /** Needed to trigger contract synchronization before nested calls */
46
+ utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
47
+ executionCache: HashedValuesCache;
48
+ noteCache: ExecutionNoteCache;
49
+ taggingIndexCache: ExecutionTaggingIndexCache;
50
+ senderTaggingStore: SenderTaggingStore;
51
+ totalPublicCalldataCount?: number;
52
+ sideEffectCounter?: number;
53
+ senderForTags?: AztecAddress;
54
+ simulator?: CircuitSimulator;
55
+ };
38
56
 
39
57
  /**
40
58
  * The execution oracle for the private part of a transaction.
@@ -51,42 +69,41 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
51
69
  * Users can also use this to get a clearer idea of what's happened during a simulation.
52
70
  */
53
71
  private newNotes: NoteAndSlot[] = [];
54
- /**
55
- * Notes from previous transactions that are returned to the oracle call `getNotes` during this execution.
56
- * The mapping maps from the unique siloed note hash to the index for notes created in private executions.
57
- * It maps from siloed note hash to the index for notes created by public functions.
58
- *
59
- * They are not part of the ExecutionNoteCache and being forwarded to nested contexts via `extend()`
60
- * because these notes are meant to be maintained on a per-call basis
61
- * They should act as references for the read requests output by an app circuit via public inputs.
62
- */
63
- private noteHashLeafIndexMap: Map<bigint, bigint> = new Map();
64
72
  private noteHashNullifierCounterMap: Map<number, number> = new Map();
65
73
  private contractClassLogs: CountedContractClassLog[] = [];
66
- private offchainEffects: { data: Fr[] }[] = [];
67
74
  private nestedExecutionResults: PrivateCallExecutionResult[] = [];
68
75
 
69
- constructor(
70
- private readonly argsHash: Fr,
71
- private readonly txContext: TxContext,
72
- private readonly callContext: CallContext,
73
- /** Header of a block whose state is used during private execution (not the block the transaction is included in). */
74
- protected readonly anchorBlockHeader: BlockHeader,
75
- /** List of transient auth witnesses to be used during this simulation */
76
- authWitnesses: AuthWitness[],
77
- capsules: Capsule[],
78
- private readonly executionCache: HashedValuesCache,
79
- private readonly noteCache: ExecutionNoteCache,
80
- private readonly taggingIndexCache: ExecutionTaggingIndexCache,
81
- executionDataProvider: ExecutionDataProvider,
82
- private totalPublicCalldataCount: number = 0,
83
- protected sideEffectCounter: number = 0,
84
- log = createLogger('simulator:client_execution_context'),
85
- scopes?: AztecAddress[],
86
- private senderForTags?: AztecAddress,
87
- private simulator?: CircuitSimulator,
88
- ) {
89
- super(callContext.contractAddress, authWitnesses, capsules, executionDataProvider, log, scopes);
76
+ private readonly argsHash: Fr;
77
+ private readonly txContext: TxContext;
78
+ private readonly callContext: CallContext;
79
+ private readonly utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
80
+ private readonly executionCache: HashedValuesCache;
81
+ private readonly noteCache: ExecutionNoteCache;
82
+ private readonly taggingIndexCache: ExecutionTaggingIndexCache;
83
+ private readonly senderTaggingStore: SenderTaggingStore;
84
+ private totalPublicCalldataCount: number;
85
+ protected sideEffectCounter: number;
86
+ private senderForTags?: AztecAddress;
87
+ private readonly simulator?: CircuitSimulator;
88
+
89
+ constructor(args: PrivateExecutionOracleArgs) {
90
+ super({
91
+ ...args,
92
+ contractAddress: args.callContext.contractAddress,
93
+ log: args.log ?? createLogger('simulator:client_execution_context'),
94
+ });
95
+ this.argsHash = args.argsHash;
96
+ this.txContext = args.txContext;
97
+ this.callContext = args.callContext;
98
+ this.utilityExecutor = args.utilityExecutor;
99
+ this.executionCache = args.executionCache;
100
+ this.noteCache = args.noteCache;
101
+ this.taggingIndexCache = args.taggingIndexCache;
102
+ this.senderTaggingStore = args.senderTaggingStore;
103
+ this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
104
+ this.sideEffectCounter = args.sideEffectCounter ?? 0;
105
+ this.senderForTags = args.senderForTags;
106
+ this.simulator = args.simulator;
90
107
  }
91
108
 
92
109
  public getPrivateContextInputs(): PrivateContextInputs {
@@ -118,14 +135,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
118
135
  return toACVMWitness(0, fields);
119
136
  }
120
137
 
121
- /**
122
- * The KernelProver will use this to fully populate witnesses and provide hints to the kernel circuit
123
- * regarding which note hash each settled read request corresponds to.
124
- */
125
- public getNoteHashLeafIndexMap() {
126
- return this.noteHashLeafIndexMap;
127
- }
128
-
129
138
  /**
130
139
  * Get the data for the newly created notes.
131
140
  */
@@ -145,17 +154,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
145
154
  }
146
155
 
147
156
  /**
148
- * Return the offchain effects emitted during this execution.
157
+ * Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
149
158
  */
150
- public getOffchainEffects() {
151
- return this.offchainEffects;
152
- }
153
-
154
- /**
155
- * Returns the pre tags that were used in this execution (and that need to be stored in the db).
156
- */
157
- public getUsedPreTags(): PreTag[] {
158
- return this.taggingIndexCache.getUsedPreTags();
159
+ public getUsedTaggingIndexRanges(): TaggingIndexRange[] {
160
+ return this.taggingIndexCache.getUsedTaggingIndexRanges();
159
161
  }
160
162
 
161
163
  /**
@@ -175,7 +177,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
175
177
  * The value persists through nested calls, meaning all calls down the stack will use the same
176
178
  * 'senderForTags' value (unless it is replaced).
177
179
  */
178
- public privateGetSenderForTags(): Promise<AztecAddress | undefined> {
180
+ public getSenderForTags(): Promise<AztecAddress | undefined> {
179
181
  return Promise.resolve(this.senderForTags);
180
182
  }
181
183
 
@@ -190,7 +192,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
190
192
  * through nested calls, meaning all calls down the stack will use the same 'senderForTags'
191
193
  * value (unless it is replaced by another call to this setter).
192
194
  */
193
- public privateSetSenderForTags(senderForTags: AztecAddress): Promise<void> {
195
+ public setSenderForTags(senderForTags: AztecAddress): Promise<void> {
194
196
  this.senderForTags = senderForTags;
195
197
  return Promise.resolve();
196
198
  }
@@ -201,23 +203,39 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
201
203
  * @param recipient - The address receiving the log
202
204
  * @returns An app tag to be used in a log.
203
205
  */
204
- public async privateGetNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
205
- const secret = await this.executionDataProvider.calculateDirectionalAppTaggingSecret(
206
+ public async getNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
207
+ const extendedSecret = await this.#calculateExtendedDirectionalAppTaggingSecret(
206
208
  this.contractAddress,
207
209
  sender,
208
210
  recipient,
209
211
  );
210
212
 
211
- const index = await this.#getIndexToUseForSecret(secret);
212
- this.log.debug(
213
+ const index = await this.#getIndexToUseForSecret(extendedSecret);
214
+ this.logger.debug(
213
215
  `Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
214
216
  );
215
- this.taggingIndexCache.setLastUsedIndex(secret, index);
217
+ this.taggingIndexCache.setLastUsedIndex(extendedSecret, index);
216
218
 
217
- return Tag.compute({ secret, index });
219
+ return Tag.compute({ extendedSecret, index });
218
220
  }
219
221
 
220
- async #getIndexToUseForSecret(secret: DirectionalAppTaggingSecret): Promise<number> {
222
+ async #calculateExtendedDirectionalAppTaggingSecret(
223
+ contractAddress: AztecAddress,
224
+ sender: AztecAddress,
225
+ recipient: AztecAddress,
226
+ ) {
227
+ const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
228
+ const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
229
+ return ExtendedDirectionalAppTaggingSecret.compute(
230
+ senderCompleteAddress,
231
+ senderIvsk,
232
+ recipient,
233
+ contractAddress,
234
+ recipient,
235
+ );
236
+ }
237
+
238
+ async #getIndexToUseForSecret(secret: ExtendedDirectionalAppTaggingSecret): Promise<number> {
221
239
  // If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
222
240
  const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
223
241
 
@@ -227,8 +245,15 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
227
245
  // This is a tagging secret we've not yet used in this tx, so first sync our store to make sure its indices
228
246
  // are up to date. We do this here because this store is not synced as part of the global sync because
229
247
  // that'd be wasteful as most tagging secrets are not used in each tx.
230
- await this.executionDataProvider.syncTaggedLogsAsSender(secret, this.contractAddress);
231
- const lastUsedIndex = await this.executionDataProvider.getLastUsedIndexAsSender(secret);
248
+ await syncSenderTaggingIndexes(
249
+ secret,
250
+ this.aztecNode,
251
+ this.senderTaggingStore,
252
+ await this.anchorBlockHeader.hash(),
253
+ this.jobId,
254
+ );
255
+
256
+ const lastUsedIndex = await this.senderTaggingStore.getLastUsedIndex(secret, this.jobId);
232
257
  // If lastUsedIndex is undefined, we've never used this secret, so start from 0
233
258
  // Otherwise, the next index to use is one past the last used index
234
259
  return lastUsedIndex === undefined ? 0 : lastUsedIndex + 1;
@@ -240,7 +265,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
240
265
  * @param values - Values to store.
241
266
  * @returns The hash of the values.
242
267
  */
243
- public privateStoreInExecutionCache(values: Fr[], hash: Fr) {
268
+ public storeInExecutionCache(values: Fr[], hash: Fr) {
244
269
  return this.executionCache.store(values, hash);
245
270
  }
246
271
 
@@ -249,7 +274,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
249
274
  * @param hash - Hash of the values.
250
275
  * @returns The values.
251
276
  */
252
- public privateLoadFromExecutionCache(hash: Fr): Promise<Fr[]> {
277
+ public loadFromExecutionCache(hash: Fr): Promise<Fr[]> {
253
278
  const preimage = this.executionCache.getPreimage(hash);
254
279
  if (!preimage) {
255
280
  throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
@@ -257,12 +282,12 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
257
282
  return Promise.resolve(preimage);
258
283
  }
259
284
 
260
- override async utilityCheckNullifierExists(innerNullifier: Fr): Promise<boolean> {
285
+ override async checkNullifierExists(innerNullifier: Fr): Promise<boolean> {
261
286
  // This oracle must be overridden because while utility execution can only meaningfully check if a nullifier exists
262
287
  // in the synched block, during private execution there's also the possibility of it being pending, i.e. created
263
288
  // in the current transaction.
264
289
 
265
- this.log.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
290
+ this.logger.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
266
291
  contractAddress: this.contractAddress,
267
292
  });
268
293
 
@@ -270,7 +295,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
270
295
 
271
296
  return (
272
297
  this.noteCache.getNullifiers(this.contractAddress).has(nullifier) ||
273
- (await super.utilityCheckNullifierExists(innerNullifier))
298
+ (await super.checkNullifierExists(innerNullifier))
274
299
  );
275
300
  }
276
301
 
@@ -282,6 +307,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
282
307
  * Real notes coming from DB will have a leafIndex which
283
308
  * represents their index in the note hash tree.
284
309
  *
310
+ * @param owner - The owner of the notes. If undefined, returns notes for all owners.
285
311
  * @param storageSlot - The storage slot.
286
312
  * @param numSelects - The number of valid selects in selectBy and selectValues.
287
313
  * @param selectBy - An array of indices of the fields to selects.
@@ -294,7 +320,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
294
320
  * @param status - The status of notes to fetch.
295
321
  * @returns Array of note data.
296
322
  */
297
- public override async utilityGetNotes(
323
+ public override async getNotes(
324
+ owner: AztecAddress | undefined,
298
325
  storageSlot: Fr,
299
326
  numSelects: number,
300
327
  selectByIndexes: number[],
@@ -311,11 +338,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
311
338
  status: NoteStatus,
312
339
  ): Promise<NoteData[]> {
313
340
  // Nullified pending notes are already removed from the list.
314
- const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, storageSlot);
341
+ const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, owner, storageSlot);
315
342
 
316
343
  const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
317
- const dbNotes = await this.executionDataProvider.getNotes(
344
+
345
+ const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
346
+ const dbNotes = await noteService.getNotes(
318
347
  this.callContext.contractAddress,
348
+ owner,
319
349
  storageSlot,
320
350
  status,
321
351
  this.scopes,
@@ -336,36 +366,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
336
366
  offset,
337
367
  });
338
368
 
339
- this.log.debug(
369
+ this.logger.debug(
340
370
  `Returning ${notes.length} notes for ${this.callContext.contractAddress} at ${storageSlot}: ${notes
341
371
  .map(n => `${n.noteNonce.toString()}:[${n.note.items.map(i => i.toString()).join(',')}]`)
342
372
  .join(', ')}`,
343
373
  );
344
374
 
345
- const noteHashesAndIndexes = await Promise.all(
346
- notes.map(async n => {
347
- if (n.index !== undefined) {
348
- const siloedNoteHash = await siloNoteHash(n.contractAddress, n.noteHash);
349
- const uniqueNoteHash = await computeUniqueNoteHash(n.noteNonce, siloedNoteHash);
350
-
351
- return { hash: uniqueNoteHash, index: n.index };
352
- }
353
- }),
354
- );
355
-
356
- noteHashesAndIndexes
357
- .filter(n => n !== undefined)
358
- .forEach(n => {
359
- this.noteHashLeafIndexMap.set(n!.hash.toBigInt(), n!.index);
360
- });
361
-
362
375
  return notes;
363
376
  }
364
377
 
365
378
  /**
366
379
  * Keep track of the new note created during execution.
367
380
  * It can be used in subsequent calls (or transactions when chaining txs is possible).
368
- * @param contractAddress - The contract address.
381
+ * @param owner - The owner of the note.
369
382
  * @param storageSlot - The storage slot.
370
383
  * @param randomness - The randomness injected into the note.
371
384
  * @param noteTypeId - The type ID of the note.
@@ -373,7 +386,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
373
386
  * @param noteHash - A hash of the new note.
374
387
  * @returns
375
388
  */
376
- public privateNotifyCreatedNote(
389
+ public notifyCreatedNote(
390
+ owner: AztecAddress,
377
391
  storageSlot: Fr,
378
392
  randomness: Fr,
379
393
  noteTypeId: NoteSelector,
@@ -381,7 +395,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
381
395
  noteHash: Fr,
382
396
  counter: number,
383
397
  ) {
384
- this.log.debug(`Notified of new note with inner hash ${noteHash}`, {
398
+ this.logger.debug(`Notified of new note with inner hash ${noteHash}`, {
385
399
  contractAddress: this.callContext.contractAddress,
386
400
  storageSlot,
387
401
  randomness,
@@ -393,12 +407,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
393
407
  this.noteCache.addNewNote(
394
408
  {
395
409
  contractAddress: this.callContext.contractAddress,
410
+ owner,
396
411
  storageSlot,
397
412
  randomness,
398
413
  noteNonce: Fr.ZERO, // Nonce cannot be known during private execution.
399
414
  note,
400
415
  siloedNullifier: undefined, // Siloed nullifier cannot be known for newly created note.
401
416
  noteHash,
417
+ isPending: true, // This note has just been created and hence is not settled yet.
402
418
  },
403
419
  counter,
404
420
  );
@@ -411,7 +427,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
411
427
  * @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
412
428
  * @param noteHash - A hash of the new note.
413
429
  */
414
- public async privateNotifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number) {
430
+ public async notifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number) {
415
431
  const nullifiedNoteHashCounter = await this.noteCache.nullifyNote(
416
432
  this.callContext.contractAddress,
417
433
  innerNullifier,
@@ -428,11 +444,24 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
428
444
  * @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
429
445
  * @param noteHash - A hash of the new note.
430
446
  */
431
- public privateNotifyCreatedNullifier(innerNullifier: Fr) {
432
- this.log.debug(`Notified of new inner nullifier ${innerNullifier}`, { contractAddress: this.contractAddress });
447
+ public notifyCreatedNullifier(innerNullifier: Fr) {
448
+ this.logger.debug(`Notified of new inner nullifier ${innerNullifier}`, { contractAddress: this.contractAddress });
433
449
  return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
434
450
  }
435
451
 
452
+ /**
453
+ * Check if a nullifier has been emitted in the same transaction, i.e. if notifyCreatedNullifier has been
454
+ * called for this inner nullifier from the contract with the specified address.
455
+ * @param innerNullifier - The inner nullifier to check.
456
+ * @param contractAddress - Address of the contract that emitted the nullifier.
457
+ * @returns A boolean indicating whether the nullifier is pending or not.
458
+ */
459
+ public async isNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
460
+ const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
461
+ const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
462
+ return Promise.resolve(isNullifierPending);
463
+ }
464
+
436
465
  /**
437
466
  * Emit a contract class log.
438
467
  * This fn exists because we only carry a poseidon hash through the kernels, and need to
@@ -440,10 +469,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
440
469
  * @param log - The contract class log to be emitted.
441
470
  * @param counter - The contract class log's counter.
442
471
  */
443
- public privateNotifyCreatedContractClassLog(log: ContractClassLog, counter: number) {
472
+ public notifyCreatedContractClassLog(log: ContractClassLog, counter: number) {
444
473
  this.contractClassLogs.push(new CountedContractClassLog(log, counter));
445
474
  const text = log.toBuffer().toString('hex');
446
- this.log.verbose(
475
+ this.logger.verbose(
447
476
  `Emitted log from ContractClassRegistry: "${text.length > 100 ? text.slice(0, 100) + '...' : text}"`,
448
477
  );
449
478
  }
@@ -469,7 +498,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
469
498
  * @param isStaticCall - Whether the call is a static call.
470
499
  * @returns The execution result.
471
500
  */
472
- async privateCallPrivateFunction(
501
+ async callPrivateFunction(
473
502
  targetContractAddress: AztecAddress,
474
503
  functionSelector: FunctionSelector,
475
504
  argsHash: Fr,
@@ -483,15 +512,22 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
483
512
  }
484
513
 
485
514
  const simulatorSetupTimer = new Timer();
486
- this.log.debug(
515
+ this.logger.debug(
487
516
  `Calling private function ${targetContractAddress}:${functionSelector} from ${this.callContext.contractAddress}`,
488
517
  );
489
518
 
490
519
  isStaticCall = isStaticCall || this.callContext.isStaticCall;
491
520
 
492
- await verifyCurrentClassId(targetContractAddress, this.executionDataProvider, this.anchorBlockHeader);
521
+ await this.contractSyncService.ensureContractSynced(
522
+ targetContractAddress,
523
+ functionSelector,
524
+ this.utilityExecutor,
525
+ this.anchorBlockHeader,
526
+ this.jobId,
527
+ this.scopes,
528
+ );
493
529
 
494
- const targetArtifact = await this.executionDataProvider.getFunctionArtifact(
530
+ const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
495
531
  targetContractAddress,
496
532
  functionSelector,
497
533
  );
@@ -500,29 +536,42 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
500
536
 
501
537
  const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
502
538
 
503
- const privateExecutionOracle = new PrivateExecutionOracle(
539
+ const privateExecutionOracle = new PrivateExecutionOracle({
504
540
  argsHash,
505
- derivedTxContext,
506
- derivedCallContext,
507
- this.anchorBlockHeader,
508
- this.authWitnesses,
509
- this.capsules,
510
- this.executionCache,
511
- this.noteCache,
512
- this.taggingIndexCache,
513
- this.executionDataProvider,
514
- this.totalPublicCalldataCount,
541
+ txContext: derivedTxContext,
542
+ callContext: derivedCallContext,
543
+ anchorBlockHeader: this.anchorBlockHeader,
544
+ utilityExecutor: this.utilityExecutor,
545
+ authWitnesses: this.authWitnesses,
546
+ capsules: this.capsules,
547
+ executionCache: this.executionCache,
548
+ noteCache: this.noteCache,
549
+ taggingIndexCache: this.taggingIndexCache,
550
+ contractStore: this.contractStore,
551
+ noteStore: this.noteStore,
552
+ keyStore: this.keyStore,
553
+ addressStore: this.addressStore,
554
+ aztecNode: this.aztecNode,
555
+ senderTaggingStore: this.senderTaggingStore,
556
+ recipientTaggingStore: this.recipientTaggingStore,
557
+ senderAddressBookStore: this.senderAddressBookStore,
558
+ capsuleStore: this.capsuleStore,
559
+ privateEventStore: this.privateEventStore,
560
+ messageContextService: this.messageContextService,
561
+ contractSyncService: this.contractSyncService,
562
+ jobId: this.jobId,
563
+ totalPublicCalldataCount: this.totalPublicCalldataCount,
515
564
  sideEffectCounter,
516
- this.log,
517
- this.scopes,
518
- this.senderForTags,
519
- this.simulator,
520
- );
565
+ log: this.logger,
566
+ scopes: this.scopes,
567
+ senderForTags: this.senderForTags,
568
+ simulator: this.simulator!,
569
+ });
521
570
 
522
571
  const setupTime = simulatorSetupTimer.ms();
523
572
 
524
573
  const childExecutionResult = await executePrivateFunction(
525
- this.simulator,
574
+ this.simulator!,
526
575
  privateExecutionOracle,
527
576
  targetArtifact,
528
577
  targetContractAddress,
@@ -548,7 +597,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
548
597
  };
549
598
  }
550
599
 
551
- #onNewPublicFunctionCall(calldataHash: Fr) {
600
+ /** Validates the calldata preimage exists in the cache and checks cumulative calldata size is within limits. */
601
+ public validatePublicCalldata(calldataHash: Fr) {
552
602
  const calldata = this.executionCache.getPreimage(calldataHash);
553
603
  if (!calldata) {
554
604
  throw new Error('Calldata for public call not found in cache');
@@ -558,47 +608,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
558
608
  if (this.totalPublicCalldataCount > MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS) {
559
609
  throw new Error(`Too many total args to all enqueued public calls! (> ${MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS})`);
560
610
  }
561
- }
562
-
563
- /**
564
- * Verify relevant information when a public function is enqueued.
565
- * @param targetContractAddress - The address of the contract to call.
566
- * @param calldataHash - The hash of the function selector and arguments.
567
- * @param sideEffectCounter - The side effect counter at the start of the call.
568
- * @param isStaticCall - Whether the call is a static call.
569
- */
570
- public privateNotifyEnqueuedPublicFunctionCall(
571
- _targetContractAddress: AztecAddress,
572
- calldataHash: Fr,
573
- _sideEffectCounter: number,
574
- _isStaticCall: boolean,
575
- ) {
576
- this.#onNewPublicFunctionCall(calldataHash);
577
- return Promise.resolve();
578
- }
579
-
580
- /**
581
- * Verify relevant information when a public teardown function is set.
582
- * @param targetContractAddress - The address of the contract to call.
583
- * @param argsHash - The arguments hash to pass to the function.
584
- * @param sideEffectCounter - The side effect counter at the start of the call.
585
- * @param isStaticCall - Whether the call is a static call.
586
- */
587
- public privateNotifySetPublicTeardownFunctionCall(
588
- _targetContractAddress: AztecAddress,
589
- calldataHash: Fr,
590
- _sideEffectCounter: number,
591
- _isStaticCall: boolean,
592
- ) {
593
- this.#onNewPublicFunctionCall(calldataHash);
594
611
  return Promise.resolve();
595
612
  }
596
613
 
597
- public privateNotifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: number): Promise<void> {
614
+ public notifyRevertiblePhaseStart(minRevertibleSideEffectCounter: number): Promise<void> {
598
615
  return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
599
616
  }
600
617
 
601
- public privateIsSideEffectCounterRevertible(sideEffectCounter: number): Promise<boolean> {
618
+ public inRevertiblePhase(sideEffectCounter: number): Promise<boolean> {
602
619
  return Promise.resolve(this.noteCache.isSideEffectCounterRevertible(sideEffectCounter));
603
620
  }
604
621
 
@@ -623,11 +640,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
623
640
  }
624
641
 
625
642
  public getDebugFunctionName() {
626
- return this.executionDataProvider.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
627
- }
628
-
629
- public utilityEmitOffchainEffect(data: Fr[]): Promise<void> {
630
- this.offchainEffects.push({ data });
631
- return Promise.resolve();
643
+ return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
632
644
  }
633
645
  }