@aztec/pxe 0.0.1-commit.5daedc8 → 0.0.1-commit.6201a7b05

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