@aztec/pxe 0.0.1-fake-ceab37513c → 0.0.6-commit.a2d1860fe9

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