@aztec/pxe 4.0.0-nightly.20250907 → 4.0.0-nightly.20260108

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