@aztec/pxe 0.0.1-commit.fce3e4f → 0.0.1-commit.ffe5b04ea

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