@aztec/pxe 0.0.1-commit.e3c1de76 → 0.0.1-commit.e57c76e

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 (347) hide show
  1. package/dest/bin/check_oracle_version.js +43 -99
  2. package/dest/bin/index.d.ts +2 -0
  3. package/dest/bin/index.d.ts.map +1 -0
  4. package/dest/bin/index.js +1 -0
  5. package/dest/bin/oracle_version_helpers.d.ts +26 -0
  6. package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
  7. package/dest/bin/oracle_version_helpers.js +93 -0
  8. package/dest/block_synchronizer/block_stream_source.d.ts +10 -0
  9. package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -0
  10. package/dest/block_synchronizer/block_stream_source.js +62 -0
  11. package/dest/block_synchronizer/block_synchronizer.d.ts +9 -3
  12. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  13. package/dest/block_synchronizer/block_synchronizer.js +37 -11
  14. package/dest/config/index.d.ts +8 -2
  15. package/dest/config/index.d.ts.map +1 -1
  16. package/dest/config/index.js +13 -15
  17. package/dest/config/package_info.js +1 -1
  18. package/dest/contract_function_simulator/contract_function_simulator.d.ts +66 -29
  19. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  20. package/dest/contract_function_simulator/contract_function_simulator.js +216 -75
  21. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  22. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  23. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  24. package/dest/contract_function_simulator/execution_note_cache.d.ts +2 -2
  25. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  26. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +7 -11
  27. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  28. package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -15
  29. package/dest/contract_function_simulator/index.d.ts +14 -2
  30. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  31. package/dest/contract_function_simulator/index.js +11 -0
  32. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +48 -0
  33. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
  34. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +45 -0
  35. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
  36. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
  37. package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
  38. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +3 -4
  39. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  40. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +8 -9
  41. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +13 -3
  42. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  43. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +35 -4
  44. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +2 -2
  45. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  46. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +2 -4
  47. package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
  48. package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
  49. package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
  50. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -5
  51. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  52. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +6 -10
  53. package/dest/contract_function_simulator/noir-structs/option.d.ts +61 -0
  54. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
  55. package/dest/contract_function_simulator/noir-structs/option.js +62 -0
  56. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +11 -0
  57. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
  58. package/dest/contract_function_simulator/noir-structs/provided_secret.js +24 -0
  59. package/dest/contract_function_simulator/oracle/interfaces.d.ts +16 -98
  60. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  61. package/dest/contract_function_simulator/oracle/interfaces.js +2 -2
  62. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +2 -2
  63. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  64. package/dest/contract_function_simulator/oracle/note_packing_utils.js +2 -2
  65. package/dest/contract_function_simulator/oracle/oracle.d.ts +75 -46
  66. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  67. package/dest/contract_function_simulator/oracle/oracle.js +471 -275
  68. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +127 -0
  69. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
  70. package/dest/contract_function_simulator/oracle/oracle_registry.js +786 -0
  71. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +139 -0
  72. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
  73. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +560 -0
  74. package/dest/contract_function_simulator/oracle/private_execution.js +5 -3
  75. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +68 -95
  76. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  77. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +141 -110
  78. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +156 -76
  79. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  80. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +450 -166
  81. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  82. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  83. package/dest/contract_function_simulator/pick_notes.js +20 -3
  84. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +1 -1
  85. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  86. package/dest/contract_function_simulator/proxied_contract_data_source.js +35 -64
  87. package/dest/contract_logging.d.ts +27 -0
  88. package/dest/contract_logging.d.ts.map +1 -0
  89. package/dest/contract_logging.js +38 -0
  90. package/dest/contract_sync/contract_sync_service.d.ts +42 -0
  91. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
  92. package/dest/contract_sync/contract_sync_service.js +135 -0
  93. package/dest/contract_sync/helpers.d.ts +27 -0
  94. package/dest/contract_sync/helpers.d.ts.map +1 -0
  95. package/dest/contract_sync/{index.js → helpers.js} +16 -17
  96. package/dest/debug/pxe_debug_utils.d.ts +14 -15
  97. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  98. package/dest/debug/pxe_debug_utils.js +16 -21
  99. package/dest/entrypoints/client/bundle/index.d.ts +3 -1
  100. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  101. package/dest/entrypoints/client/bundle/index.js +2 -0
  102. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  103. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  104. package/dest/entrypoints/client/bundle/utils.js +21 -5
  105. package/dest/entrypoints/client/lazy/index.d.ts +3 -1
  106. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  107. package/dest/entrypoints/client/lazy/index.js +2 -0
  108. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  109. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  110. package/dest/entrypoints/client/lazy/utils.js +21 -5
  111. package/dest/entrypoints/pxe_creation_options.d.ts +9 -1
  112. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  113. package/dest/entrypoints/pxe_creation_options.js +3 -1
  114. package/dest/entrypoints/server/index.d.ts +5 -3
  115. package/dest/entrypoints/server/index.d.ts.map +1 -1
  116. package/dest/entrypoints/server/index.js +4 -2
  117. package/dest/entrypoints/server/utils.d.ts +4 -3
  118. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  119. package/dest/entrypoints/server/utils.js +21 -5
  120. package/dest/events/event_service.d.ts +15 -6
  121. package/dest/events/event_service.d.ts.map +1 -1
  122. package/dest/events/event_service.js +44 -11
  123. package/dest/events/private_event_filter_validator.d.ts +3 -2
  124. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  125. package/dest/events/private_event_filter_validator.js +15 -0
  126. package/dest/hooks/authorize_utility_call.d.ts +41 -0
  127. package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
  128. package/dest/hooks/authorize_utility_call.js +4 -0
  129. package/dest/hooks/execution_hooks.d.ts +42 -0
  130. package/dest/hooks/execution_hooks.d.ts.map +1 -0
  131. package/dest/hooks/execution_hooks.js +9 -0
  132. package/dest/hooks/index.d.ts +4 -0
  133. package/dest/hooks/index.d.ts.map +1 -0
  134. package/dest/hooks/index.js +1 -0
  135. package/dest/logs/log_service.d.ts +9 -8
  136. package/dest/logs/log_service.d.ts.map +1 -1
  137. package/dest/logs/log_service.js +131 -84
  138. package/dest/messages/message_context_service.d.ts +17 -0
  139. package/dest/messages/message_context_service.d.ts.map +1 -0
  140. package/dest/messages/message_context_service.js +55 -0
  141. package/dest/notes/note_service.d.ts +27 -5
  142. package/dest/notes/note_service.d.ts.map +1 -1
  143. package/dest/notes/note_service.js +83 -58
  144. package/dest/notes_filter.d.ts +24 -0
  145. package/dest/notes_filter.d.ts.map +1 -0
  146. package/dest/notes_filter.js +4 -0
  147. package/dest/oracle_version.d.ts +4 -3
  148. package/dest/oracle_version.d.ts.map +1 -1
  149. package/dest/oracle_version.js +20 -10
  150. package/dest/private_kernel/batch_planner.d.ts +47 -0
  151. package/dest/private_kernel/batch_planner.d.ts.map +1 -0
  152. package/dest/private_kernel/batch_planner.js +104 -0
  153. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  154. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  155. package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
  156. package/dest/private_kernel/hints/index.d.ts +1 -1
  157. package/dest/private_kernel/hints/index.js +1 -1
  158. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +4 -3
  159. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  160. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +130 -69
  161. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  162. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  163. package/dest/private_kernel/hints/test_utils.js +202 -0
  164. package/dest/private_kernel/private_kernel_execution_prover.d.ts +6 -2
  165. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  166. package/dest/private_kernel/private_kernel_execution_prover.js +166 -65
  167. package/dest/private_kernel/private_kernel_oracle.d.ts +15 -11
  168. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  169. package/dest/private_kernel/private_kernel_oracle.js +31 -25
  170. package/dest/pxe.d.ts +120 -24
  171. package/dest/pxe.d.ts.map +1 -1
  172. package/dest/pxe.js +231 -134
  173. package/dest/storage/anchor_block_store/anchor_block_store.js +1 -1
  174. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
  175. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
  176. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
  177. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
  178. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
  179. package/dest/storage/backwards_compatibility_tests/schema_tests.js +591 -0
  180. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
  181. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
  182. package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
  183. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  184. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  185. package/dest/storage/capsule_store/capsule_service.js +50 -0
  186. package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
  187. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  188. package/dest/storage/capsule_store/capsule_store.js +36 -28
  189. package/dest/storage/capsule_store/index.d.ts +2 -1
  190. package/dest/storage/capsule_store/index.d.ts.map +1 -1
  191. package/dest/storage/capsule_store/index.js +1 -0
  192. package/dest/storage/contract_store/contract_store.d.ts +42 -15
  193. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  194. package/dest/storage/contract_store/contract_store.js +146 -87
  195. package/dest/storage/metadata.d.ts +1 -1
  196. package/dest/storage/metadata.js +1 -1
  197. package/dest/storage/note_store/note_store.d.ts +3 -3
  198. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  199. package/dest/storage/note_store/note_store.js +6 -4
  200. package/dest/storage/open_pxe_stores.d.ts +33 -0
  201. package/dest/storage/open_pxe_stores.d.ts.map +1 -0
  202. package/dest/storage/open_pxe_stores.js +27 -0
  203. package/dest/storage/private_event_store/private_event_store.d.ts +1 -1
  204. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  205. package/dest/storage/private_event_store/private_event_store.js +3 -0
  206. package/dest/storage/private_event_store/stored_private_event.js +1 -1
  207. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  208. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  209. package/dest/storage/tagging_store/sender_tagging_store.d.ts +29 -28
  210. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  211. package/dest/storage/tagging_store/sender_tagging_store.js +141 -115
  212. package/dest/tagging/get_all_logs_by_tags.d.ts +34 -10
  213. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
  214. package/dest/tagging/get_all_logs_by_tags.js +45 -32
  215. package/dest/tagging/index.d.ts +6 -5
  216. package/dest/tagging/index.d.ts.map +1 -1
  217. package/dest/tagging/index.js +4 -3
  218. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +29 -0
  219. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
  220. package/dest/tagging/persist_sender_tagging_index_ranges.js +42 -0
  221. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +56 -0
  222. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
  223. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +163 -0
  224. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +3 -3
  225. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -1
  226. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
  227. package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
  228. package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
  229. package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
  230. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -9
  231. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  232. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +32 -14
  233. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +13 -7
  234. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  235. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +41 -10
  236. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +5 -7
  237. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  238. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +37 -25
  239. package/package.json +29 -17
  240. package/src/bin/check_oracle_version.ts +49 -122
  241. package/src/bin/index.ts +1 -0
  242. package/src/bin/oracle_version_helpers.ts +121 -0
  243. package/src/block_synchronizer/block_stream_source.ts +81 -0
  244. package/src/block_synchronizer/block_synchronizer.ts +39 -11
  245. package/src/config/index.ts +15 -9
  246. package/src/config/package_info.ts +1 -1
  247. package/src/contract_function_simulator/contract_function_simulator.ts +391 -136
  248. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  249. package/src/contract_function_simulator/execution_note_cache.ts +1 -1
  250. package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -18
  251. package/src/contract_function_simulator/index.ts +51 -1
  252. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +55 -0
  253. package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
  254. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +9 -8
  255. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +36 -3
  256. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +2 -5
  257. package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
  258. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +4 -9
  259. package/src/contract_function_simulator/noir-structs/option.ts +69 -0
  260. package/src/contract_function_simulator/noir-structs/provided_secret.ts +27 -0
  261. package/src/contract_function_simulator/oracle/interfaces.ts +12 -176
  262. package/src/contract_function_simulator/oracle/note_packing_utils.ts +3 -3
  263. package/src/contract_function_simulator/oracle/oracle.ts +564 -473
  264. package/src/contract_function_simulator/oracle/oracle_registry.ts +585 -0
  265. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +553 -0
  266. package/src/contract_function_simulator/oracle/private_execution.ts +4 -4
  267. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +173 -205
  268. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +664 -245
  269. package/src/contract_function_simulator/pick_notes.ts +22 -3
  270. package/src/contract_function_simulator/proxied_contract_data_source.ts +41 -64
  271. package/src/contract_logging.ts +52 -0
  272. package/src/contract_sync/contract_sync_service.ts +189 -0
  273. package/src/contract_sync/{index.ts → helpers.ts} +17 -29
  274. package/src/debug/pxe_debug_utils.ts +47 -25
  275. package/src/entrypoints/client/bundle/index.ts +2 -0
  276. package/src/entrypoints/client/bundle/utils.ts +19 -6
  277. package/src/entrypoints/client/lazy/index.ts +2 -0
  278. package/src/entrypoints/client/lazy/utils.ts +19 -6
  279. package/src/entrypoints/pxe_creation_options.ts +14 -0
  280. package/src/entrypoints/server/index.ts +4 -2
  281. package/src/entrypoints/server/utils.ts +22 -13
  282. package/src/events/event_service.ts +69 -21
  283. package/src/events/private_event_filter_validator.ts +21 -1
  284. package/src/hooks/authorize_utility_call.ts +44 -0
  285. package/src/hooks/execution_hooks.ts +48 -0
  286. package/src/hooks/index.ts +7 -0
  287. package/src/logs/log_service.ts +162 -145
  288. package/src/messages/message_context_service.ts +62 -0
  289. package/src/notes/note_service.ts +120 -85
  290. package/src/notes_filter.ts +24 -0
  291. package/src/oracle_version.ts +20 -10
  292. package/src/private_kernel/batch_planner.ts +169 -0
  293. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  294. package/src/private_kernel/hints/index.ts +1 -1
  295. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +165 -118
  296. package/src/private_kernel/hints/test_utils.ts +318 -0
  297. package/src/private_kernel/private_kernel_execution_prover.ts +254 -89
  298. package/src/private_kernel/private_kernel_oracle.ts +42 -32
  299. package/src/pxe.ts +416 -181
  300. package/src/storage/anchor_block_store/anchor_block_store.ts +1 -1
  301. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
  302. package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
  303. package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
  304. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
  305. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
  306. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +46 -0
  307. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +36 -0
  308. package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
  309. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +18 -0
  310. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderAddressBookStore.json +16 -0
  311. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +22 -0
  312. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +97 -0
  313. package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
  314. package/src/storage/backwards_compatibility_tests/schema_tests.ts +712 -0
  315. package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
  316. package/src/storage/capsule_store/capsule_service.ts +90 -0
  317. package/src/storage/capsule_store/capsule_store.ts +44 -26
  318. package/src/storage/capsule_store/index.ts +1 -0
  319. package/src/storage/contract_store/contract_store.ts +182 -104
  320. package/src/storage/metadata.ts +1 -1
  321. package/src/storage/note_store/note_store.ts +9 -5
  322. package/src/storage/open_pxe_stores.ts +49 -0
  323. package/src/storage/private_event_store/private_event_store.ts +4 -0
  324. package/src/storage/private_event_store/stored_private_event.ts +1 -1
  325. package/src/storage/tagging_store/recipient_tagging_store.ts +5 -5
  326. package/src/storage/tagging_store/sender_tagging_store.ts +185 -138
  327. package/src/tagging/get_all_logs_by_tags.ts +87 -35
  328. package/src/tagging/index.ts +5 -4
  329. package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
  330. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +240 -0
  331. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +4 -4
  332. package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
  333. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +52 -17
  334. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +44 -14
  335. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +27 -27
  336. package/dest/contract_sync/index.d.ts +0 -23
  337. package/dest/contract_sync/index.d.ts.map +0 -1
  338. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  339. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
  340. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -15
  341. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +0 -1
  342. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +0 -99
  343. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -15
  344. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +0 -1
  345. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +0 -32
  346. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -143
  347. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -49
@@ -2,52 +2,59 @@ import { MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS, PRIVATE_CONTEXT_INPUTS_LENGTH }
2
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';
6
- import { type CircuitSimulator, toACVMWitness } from '@aztec/simulator/client';
5
+ import { toACVMWitness } from '@aztec/simulator/client';
7
6
  import {
8
7
  type FunctionAbi,
9
8
  type FunctionArtifact,
10
- type FunctionCall,
11
9
  FunctionSelector,
12
10
  type NoteSelector,
13
11
  countArgumentsSize,
14
12
  } from '@aztec/stdlib/abi';
15
- import type { AuthWitness } from '@aztec/stdlib/auth-witness';
16
13
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
17
14
  import { siloNullifier } from '@aztec/stdlib/hash';
18
- import type { AztecNode } from '@aztec/stdlib/interfaces/client';
19
15
  import { PrivateContextInputs } from '@aztec/stdlib/kernel';
20
- import { type ContractClassLog, DirectionalAppTaggingSecret, type PreTag } from '@aztec/stdlib/logs';
21
- import { Tag } from '@aztec/stdlib/logs';
16
+ import {
17
+ AppTaggingSecret,
18
+ AppTaggingSecretKind,
19
+ type ContractClassLog,
20
+ type TaggingIndexRange,
21
+ } from '@aztec/stdlib/logs';
22
22
  import { Note, type NoteStatus } from '@aztec/stdlib/note';
23
23
  import {
24
- type BlockHeader,
25
24
  CallContext,
26
- Capsule,
27
25
  CountedContractClassLog,
28
26
  NoteAndSlot,
29
27
  PrivateCallExecutionResult,
30
28
  type TxContext,
31
29
  } from '@aztec/stdlib/tx';
32
30
 
33
- import { ensureContractSynced } from '../../contract_sync/index.js';
34
31
  import { NoteService } from '../../notes/note_service.js';
35
- import type { AddressStore } from '../../storage/address_store/address_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
32
  import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
43
33
  import { syncSenderTaggingIndexes } from '../../tagging/index.js';
44
34
  import type { ExecutionNoteCache } from '../execution_note_cache.js';
45
35
  import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js';
46
36
  import type { HashedValuesCache } from '../hashed_values_cache.js';
37
+ import { BoundedVec } from '../noir-structs/bounded_vec.js';
38
+ import type { NoteData } from '../noir-structs/note_data.js';
39
+ import { Option } from '../noir-structs/option.js';
47
40
  import { pickNotes } from '../pick_notes.js';
48
- import type { IPrivateExecutionOracle, NoteData } from './interfaces.js';
41
+ import type { IPrivateExecutionOracle } from './interfaces.js';
49
42
  import { executePrivateFunction } from './private_execution.js';
50
- import { UtilityExecutionOracle } from './utility_execution_oracle.js';
43
+ import { UtilityExecutionOracle, type UtilityExecutionOracleArgs } from './utility_execution_oracle.js';
44
+
45
+ /** Args for PrivateExecutionOracle constructor. */
46
+ export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contractAddress'> & {
47
+ argsHash: Fr;
48
+ txContext: TxContext;
49
+ callContext: CallContext;
50
+ executionCache: HashedValuesCache;
51
+ noteCache: ExecutionNoteCache;
52
+ taggingIndexCache: ExecutionTaggingIndexCache;
53
+ senderTaggingStore: SenderTaggingStore;
54
+ totalPublicCalldataCount?: number;
55
+ sideEffectCounter?: number;
56
+ senderForTags?: AztecAddress;
57
+ };
51
58
 
52
59
  /**
53
60
  * The execution oracle for the private part of a transaction.
@@ -66,63 +73,45 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
66
73
  private newNotes: NoteAndSlot[] = [];
67
74
  private noteHashNullifierCounterMap: Map<number, number> = new Map();
68
75
  private contractClassLogs: CountedContractClassLog[] = [];
69
- private offchainEffects: { data: Fr[] }[] = [];
70
76
  private nestedExecutionResults: PrivateCallExecutionResult[] = [];
71
77
 
72
- constructor(
73
- private readonly argsHash: Fr,
74
- private readonly txContext: TxContext,
75
- private readonly callContext: CallContext,
76
- /** Header of a block whose state is used during private execution (not the block the transaction is included in). */
77
- protected override readonly anchorBlockHeader: BlockHeader,
78
- /** Needed to trigger contract synchronization before nested calls */
79
- private readonly utilityExecutor: (call: FunctionCall) => Promise<void>,
80
- /** List of transient auth witnesses to be used during this simulation */
81
- authWitnesses: AuthWitness[],
82
- capsules: Capsule[],
83
- private readonly executionCache: HashedValuesCache,
84
- private readonly noteCache: ExecutionNoteCache,
85
- private readonly taggingIndexCache: ExecutionTaggingIndexCache,
86
- contractStore: ContractStore,
87
- noteStore: NoteStore,
88
- keyStore: KeyStore,
89
- addressStore: AddressStore,
90
- aztecNode: AztecNode,
91
- private readonly senderTaggingStore: SenderTaggingStore,
92
- recipientTaggingStore: RecipientTaggingStore,
93
- senderAddressBookStore: SenderAddressBookStore,
94
- capsuleStore: CapsuleStore,
95
- privateEventStore: PrivateEventStore,
96
- jobId: string,
97
- private totalPublicCalldataCount: number = 0,
98
- protected sideEffectCounter: number = 0,
99
- log = createLogger('simulator:client_execution_context'),
100
- scopes?: AztecAddress[],
101
- private senderForTags?: AztecAddress,
102
- private simulator?: CircuitSimulator,
103
- ) {
104
- super(
105
- callContext.contractAddress,
106
- authWitnesses,
107
- capsules,
108
- anchorBlockHeader,
109
- contractStore,
110
- noteStore,
111
- keyStore,
112
- addressStore,
113
- aztecNode,
114
- recipientTaggingStore,
115
- senderAddressBookStore,
116
- capsuleStore,
117
- privateEventStore,
118
- jobId,
119
- log,
120
- scopes,
121
- );
78
+ private readonly argsHash: Fr;
79
+ private readonly txContext: TxContext;
80
+ private readonly callContext: CallContext;
81
+ private readonly executionCache: HashedValuesCache;
82
+ private readonly noteCache: ExecutionNoteCache;
83
+ private readonly taggingIndexCache: ExecutionTaggingIndexCache;
84
+ private readonly senderTaggingStore: SenderTaggingStore;
85
+ private totalPublicCalldataCount: number;
86
+ private readonly initialSideEffectCounter: number;
87
+ /** Sender for tags passed in at oracle construction time. Returned by `getSenderForTags`. */
88
+ private readonly defaultSenderForTags: AztecAddress | undefined;
89
+
90
+ constructor(args: PrivateExecutionOracleArgs) {
91
+ super({
92
+ ...args,
93
+ contractAddress: args.callContext.contractAddress,
94
+ log: args.log ?? createLogger('simulator:client_execution_context'),
95
+ });
96
+ this.argsHash = args.argsHash;
97
+ this.txContext = args.txContext;
98
+ this.callContext = args.callContext;
99
+ this.executionCache = args.executionCache;
100
+ this.noteCache = args.noteCache;
101
+ this.taggingIndexCache = args.taggingIndexCache;
102
+ this.senderTaggingStore = args.senderTaggingStore;
103
+ this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
104
+ this.initialSideEffectCounter = args.sideEffectCounter ?? 0;
105
+ this.defaultSenderForTags = args.senderForTags;
122
106
  }
123
107
 
124
108
  public getPrivateContextInputs(): PrivateContextInputs {
125
- return new PrivateContextInputs(this.callContext, this.anchorBlockHeader, this.txContext, this.sideEffectCounter);
109
+ return new PrivateContextInputs(
110
+ this.callContext,
111
+ this.anchorBlockHeader,
112
+ this.txContext,
113
+ this.initialSideEffectCounter,
114
+ );
126
115
  }
127
116
 
128
117
  // We still need this function until we can get user-defined ordering of structs for fn arguments
@@ -169,17 +158,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
169
158
  }
170
159
 
171
160
  /**
172
- * Return the offchain effects emitted during this execution.
173
- */
174
- public getOffchainEffects() {
175
- return this.offchainEffects;
176
- }
177
-
178
- /**
179
- * Returns the pre-tags that were used in this execution (and that need to be stored in the db).
161
+ * Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
180
162
  */
181
- public getUsedPreTags(): PreTag[] {
182
- return this.taggingIndexCache.getUsedPreTags();
163
+ public getUsedTaggingIndexRanges(): TaggingIndexRange[] {
164
+ return this.taggingIndexCache.getUsedTaggingIndexRanges();
183
165
  }
184
166
 
185
167
  /**
@@ -196,55 +178,62 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
196
178
  * for a tag in order to emit a log. Constrained tagging should not use this as there is no
197
179
  * guarantee that the recipient knows about the sender, and hence about the shared secret.
198
180
  *
199
- * The value persists through nested calls, meaning all calls down the stack will use the same
200
- * 'senderForTags' value (unless it is replaced).
181
+ * Returns the wallet-supplied default sender for tags, or `None` if no default was provided.
201
182
  */
202
- public privateGetSenderForTags(): Promise<AztecAddress | undefined> {
203
- return Promise.resolve(this.senderForTags);
183
+ public getSenderForTags(): Promise<Option<AztecAddress>> {
184
+ return Promise.resolve(
185
+ this.defaultSenderForTags ? Option.some(this.defaultSenderForTags) : Option.none(AztecAddress.ZERO),
186
+ );
204
187
  }
205
188
 
206
189
  /**
207
- * Set the sender for tags.
190
+ * Returns the sender-side app tagging secret for a `(sender, recipient)` pair.
208
191
  *
209
- * This unconstrained value is used as the sender when computing an unconstrained shared secret
210
- * for a tag in order to emit a log. Constrained tagging should not use this as there is no
211
- * guarantee that the recipient knows about the sender, and hence about the shared secret.
192
+ * The caller obtains an index via {@link getNextTaggingIndex} and computes the final tag itself.
193
+ * The only expected `None` case is an invalid recipient address; missing sender data fails while deriving.
212
194
  *
213
- * Account contracts typically set this value before calling other contracts. The value persists
214
- * through nested calls, meaning all calls down the stack will use the same 'senderForTags'
215
- * value (unless it is replaced by another call to this setter).
195
+ * @param sender - The address sending the log
196
+ * @param recipient - The address receiving the log
197
+ * @returns The app tagging secret, or `None` if the recipient is invalid.
216
198
  */
217
- public privateSetSenderForTags(senderForTags: AztecAddress): Promise<void> {
218
- this.senderForTags = senderForTags;
219
- return Promise.resolve();
199
+ public async getAppTaggingSecret(sender: AztecAddress, recipient: AztecAddress): Promise<Option<Fr>> {
200
+ const extendedSecret = await this.#calculateAppTaggingSecret(this.contractAddress, sender, recipient);
201
+
202
+ if (!extendedSecret) {
203
+ this.logger.warn(`Computing a tagging secret for invalid recipient ${recipient} - returning no secret`, {
204
+ contractAddress: this.contractAddress,
205
+ });
206
+ return Option.none(Fr.ZERO);
207
+ }
208
+
209
+ return Option.some(extendedSecret.secret);
220
210
  }
221
211
 
222
212
  /**
223
- * Returns the next app tag for a given sender and recipient pair.
224
- * @param sender - The address sending the log
225
- * @param recipient - The address receiving the log
226
- * @returns An app tag to be used in a log.
213
+ * Returns the next sender-side tagging index for a given secret and delivery mode.
214
+ *
215
+ * @param secret - The tagging secret to allocate an index for.
216
+ * @param kind - The sender-side index namespace.
217
+ * @returns The next index to use for this secret.
227
218
  */
228
- public async privateGetNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
229
- const secret = await this.#calculateDirectionalAppTaggingSecret(this.contractAddress, sender, recipient);
219
+ public async getNextTaggingIndex(secret: Fr, kind: AppTaggingSecretKind): Promise<number> {
220
+ const appTaggingSecret = new AppTaggingSecret(secret, this.contractAddress, kind);
221
+ const index = await this.#reserveNextIndexForSecret(appTaggingSecret);
222
+ this.logger.debug(`Incrementing ${kind} tagging index for secret in contract ${this.contractAddress} to ${index}`);
223
+ return index;
224
+ }
230
225
 
226
+ /** Resolves the next index for a given tagging secret, syncing from chain if it is missing from the in-tx cache. */
227
+ async #reserveNextIndexForSecret(secret: AppTaggingSecret): Promise<number> {
231
228
  const index = await this.#getIndexToUseForSecret(secret);
232
- this.log.debug(
233
- `Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
234
- );
235
229
  this.taggingIndexCache.setLastUsedIndex(secret, index);
236
-
237
- return Tag.compute({ secret, index });
230
+ return index;
238
231
  }
239
232
 
240
- async #calculateDirectionalAppTaggingSecret(
241
- contractAddress: AztecAddress,
242
- sender: AztecAddress,
243
- recipient: AztecAddress,
244
- ) {
245
- const senderCompleteAddress = await this.getCompleteAddress(sender);
233
+ async #calculateAppTaggingSecret(contractAddress: AztecAddress, sender: AztecAddress, recipient: AztecAddress) {
234
+ const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
246
235
  const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
247
- return DirectionalAppTaggingSecret.compute(
236
+ return AppTaggingSecret.computeUnconstrained(
248
237
  senderCompleteAddress,
249
238
  senderIvsk,
250
239
  recipient,
@@ -253,7 +242,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
253
242
  );
254
243
  }
255
244
 
256
- async #getIndexToUseForSecret(secret: DirectionalAppTaggingSecret): Promise<number> {
245
+ async #getIndexToUseForSecret(secret: AppTaggingSecret): Promise<number> {
257
246
  // If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
258
247
  const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
259
248
 
@@ -265,7 +254,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
265
254
  // that'd be wasteful as most tagging secrets are not used in each tx.
266
255
  await syncSenderTaggingIndexes(
267
256
  secret,
268
- this.contractAddress,
269
257
  this.aztecNode,
270
258
  this.senderTaggingStore,
271
259
  await this.anchorBlockHeader.hash(),
@@ -284,7 +272,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
284
272
  * @param values - Values to store.
285
273
  * @returns The hash of the values.
286
274
  */
287
- public privateStoreInExecutionCache(values: Fr[], hash: Fr) {
275
+ public setHashPreimage(values: Fr[], hash: Fr) {
288
276
  return this.executionCache.store(values, hash);
289
277
  }
290
278
 
@@ -293,7 +281,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
293
281
  * @param hash - Hash of the values.
294
282
  * @returns The values.
295
283
  */
296
- public privateLoadFromExecutionCache(hash: Fr): Promise<Fr[]> {
284
+ public getHashPreimage(hash: Fr): Promise<Fr[]> {
297
285
  const preimage = this.executionCache.getPreimage(hash);
298
286
  if (!preimage) {
299
287
  throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
@@ -301,12 +289,12 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
301
289
  return Promise.resolve(preimage);
302
290
  }
303
291
 
304
- override async utilityCheckNullifierExists(innerNullifier: Fr): Promise<boolean> {
292
+ override async doesNullifierExist(innerNullifier: Fr): Promise<boolean> {
305
293
  // This oracle must be overridden because while utility execution can only meaningfully check if a nullifier exists
306
294
  // in the synched block, during private execution there's also the possibility of it being pending, i.e. created
307
295
  // in the current transaction.
308
296
 
309
- this.log.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
297
+ this.logger.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
310
298
  contractAddress: this.contractAddress,
311
299
  });
312
300
 
@@ -314,7 +302,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
314
302
 
315
303
  return (
316
304
  this.noteCache.getNullifiers(this.contractAddress).has(nullifier) ||
317
- (await super.utilityCheckNullifierExists(innerNullifier))
305
+ (await super.doesNullifierExist(innerNullifier))
318
306
  );
319
307
  }
320
308
 
@@ -339,8 +327,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
339
327
  * @param status - The status of notes to fetch.
340
328
  * @returns Array of note data.
341
329
  */
342
- public override async utilityGetNotes(
343
- owner: AztecAddress | undefined,
330
+ public override async getNotes(
331
+ owner: Option<AztecAddress>,
344
332
  storageSlot: Fr,
345
333
  numSelects: number,
346
334
  selectByIndexes: number[],
@@ -355,16 +343,18 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
355
343
  limit: number,
356
344
  offset: number,
357
345
  status: NoteStatus,
358
- ): Promise<NoteData[]> {
346
+ maxNotes: number,
347
+ packedHintedNoteLength: number,
348
+ ): Promise<BoundedVec<NoteData>> {
359
349
  // Nullified pending notes are already removed from the list.
360
- const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, owner, storageSlot);
350
+ const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, owner.value, storageSlot);
361
351
 
362
352
  const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
363
353
 
364
354
  const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
365
355
  const dbNotes = await noteService.getNotes(
366
356
  this.callContext.contractAddress,
367
- owner,
357
+ owner.value,
368
358
  storageSlot,
369
359
  status,
370
360
  this.scopes,
@@ -385,13 +375,13 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
385
375
  offset,
386
376
  });
387
377
 
388
- this.log.debug(
378
+ this.logger.debug(
389
379
  `Returning ${notes.length} notes for ${this.callContext.contractAddress} at ${storageSlot}: ${notes
390
380
  .map(n => `${n.noteNonce.toString()}:[${n.note.items.map(i => i.toString()).join(',')}]`)
391
381
  .join(', ')}`,
392
382
  );
393
383
 
394
- return notes;
384
+ return BoundedVec.from({ data: notes, maxLength: maxNotes, elementSize: packedHintedNoteLength });
395
385
  }
396
386
 
397
387
  /**
@@ -405,7 +395,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
405
395
  * @param noteHash - A hash of the new note.
406
396
  * @returns
407
397
  */
408
- public privateNotifyCreatedNote(
398
+ public notifyCreatedNote(
409
399
  owner: AztecAddress,
410
400
  storageSlot: Fr,
411
401
  randomness: Fr,
@@ -414,7 +404,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
414
404
  noteHash: Fr,
415
405
  counter: number,
416
406
  ) {
417
- this.log.debug(`Notified of new note with inner hash ${noteHash}`, {
407
+ this.logger.debug(`Notified of new note with inner hash ${noteHash}`, {
418
408
  contractAddress: this.callContext.contractAddress,
419
409
  storageSlot,
420
410
  randomness,
@@ -446,7 +436,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
446
436
  * @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
447
437
  * @param noteHash - A hash of the new note.
448
438
  */
449
- public async privateNotifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number) {
439
+ public async notifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number) {
450
440
  const nullifiedNoteHashCounter = await this.noteCache.nullifyNote(
451
441
  this.callContext.contractAddress,
452
442
  innerNullifier,
@@ -463,19 +453,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
463
453
  * @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
464
454
  * @param noteHash - A hash of the new note.
465
455
  */
466
- public privateNotifyCreatedNullifier(innerNullifier: Fr) {
467
- this.log.debug(`Notified of new inner nullifier ${innerNullifier}`, { contractAddress: this.contractAddress });
456
+ public notifyCreatedNullifier(innerNullifier: Fr) {
457
+ this.logger.debug(`Notified of new inner nullifier ${innerNullifier}`, { contractAddress: this.contractAddress });
468
458
  return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
469
459
  }
470
460
 
471
461
  /**
472
- * Check if a nullifier has been emitted in the same transaction, i.e. if privateNotifyCreatedNullifier has been
462
+ * Check if a nullifier has been emitted in the same transaction, i.e. if notifyCreatedNullifier has been
473
463
  * called for this inner nullifier from the contract with the specified address.
474
464
  * @param innerNullifier - The inner nullifier to check.
475
465
  * @param contractAddress - Address of the contract that emitted the nullifier.
476
466
  * @returns A boolean indicating whether the nullifier is pending or not.
477
467
  */
478
- public async privateIsNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
468
+ public async isNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
479
469
  const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
480
470
  const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
481
471
  return Promise.resolve(isNullifierPending);
@@ -488,10 +478,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
488
478
  * @param log - The contract class log to be emitted.
489
479
  * @param counter - The contract class log's counter.
490
480
  */
491
- public privateNotifyCreatedContractClassLog(log: ContractClassLog, counter: number) {
481
+ public notifyCreatedContractClassLog(log: ContractClassLog, counter: number) {
492
482
  this.contractClassLogs.push(new CountedContractClassLog(log, counter));
493
483
  const text = log.toBuffer().toString('hex');
494
- this.log.verbose(
484
+ this.logger.verbose(
495
485
  `Emitted log from ContractClassRegistry: "${text.length > 100 ? text.slice(0, 100) + '...' : text}"`,
496
486
  );
497
487
  }
@@ -517,7 +507,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
517
507
  * @param isStaticCall - Whether the call is a static call.
518
508
  * @returns The execution result.
519
509
  */
520
- async privateCallPrivateFunction(
510
+ async callPrivateFunction(
521
511
  targetContractAddress: AztecAddress,
522
512
  functionSelector: FunctionSelector,
523
513
  argsHash: Fr,
@@ -531,19 +521,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
531
521
  }
532
522
 
533
523
  const simulatorSetupTimer = new Timer();
534
- this.log.debug(
524
+ this.logger.debug(
535
525
  `Calling private function ${targetContractAddress}:${functionSelector} from ${this.callContext.contractAddress}`,
536
526
  );
537
527
 
538
528
  isStaticCall = isStaticCall || this.callContext.isStaticCall;
539
529
 
540
- await ensureContractSynced(
530
+ await this.contractSyncService.ensureContractSynced(
541
531
  targetContractAddress,
542
532
  functionSelector,
543
533
  this.utilityExecutor,
544
- this.aztecNode,
545
- this.contractStore,
546
534
  this.anchorBlockHeader,
535
+ this.jobId,
536
+ this.scopes,
547
537
  );
548
538
 
549
539
  const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
@@ -555,35 +545,39 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
555
545
 
556
546
  const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
557
547
 
558
- const privateExecutionOracle = new PrivateExecutionOracle(
548
+ const privateExecutionOracle = new PrivateExecutionOracle({
559
549
  argsHash,
560
- derivedTxContext,
561
- derivedCallContext,
562
- this.anchorBlockHeader,
563
- this.utilityExecutor,
564
- this.authWitnesses,
565
- this.capsules,
566
- this.executionCache,
567
- this.noteCache,
568
- this.taggingIndexCache,
569
- this.contractStore,
570
- this.noteStore,
571
- this.keyStore,
572
- this.addressStore,
573
- this.aztecNode,
574
- this.senderTaggingStore,
575
- this.recipientTaggingStore,
576
- this.senderAddressBookStore,
577
- this.capsuleStore,
578
- this.privateEventStore,
579
- this.jobId,
580
- 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
+ capsuleService: this.capsuleService,
568
+ privateEventStore: this.privateEventStore,
569
+ messageContextService: this.messageContextService,
570
+ contractSyncService: this.contractSyncService,
571
+ jobId: this.jobId,
572
+ totalPublicCalldataCount: this.totalPublicCalldataCount,
581
573
  sideEffectCounter,
582
- this.log,
583
- this.scopes,
584
- this.senderForTags,
585
- this.simulator,
586
- );
574
+ log: this.logger,
575
+ scopes: this.scopes,
576
+ senderForTags: this.defaultSenderForTags,
577
+ simulator: this.simulator,
578
+ hooks: this.hooks,
579
+ l2TipsStore: this.l2TipsStore,
580
+ });
587
581
 
588
582
  const setupTime = simulatorSetupTimer.ms();
589
583
 
@@ -595,6 +589,9 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
595
589
  functionSelector,
596
590
  );
597
591
 
592
+ // Propagate the nested call's calldata count so the parent sees its increments on subsequent enqueues.
593
+ this.totalPublicCalldataCount = privateExecutionOracle.getTotalPublicCalldataCount();
594
+
598
595
  if (isStaticCall) {
599
596
  this.#checkValidStaticCall(childExecutionResult);
600
597
  }
@@ -614,7 +611,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
614
611
  };
615
612
  }
616
613
 
617
- #onNewPublicFunctionCall(calldataHash: Fr) {
614
+ /** Validates the calldata preimage exists in the cache and checks cumulative calldata size is within limits. */
615
+ public assertValidPublicCalldata(calldataHash: Fr) {
618
616
  const calldata = this.executionCache.getPreimage(calldataHash);
619
617
  if (!calldata) {
620
618
  throw new Error('Calldata for public call not found in cache');
@@ -624,47 +622,18 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
624
622
  if (this.totalPublicCalldataCount > MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS) {
625
623
  throw new Error(`Too many total args to all enqueued public calls! (> ${MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS})`);
626
624
  }
627
- }
628
-
629
- /**
630
- * Verify relevant information when a public function is enqueued.
631
- * @param targetContractAddress - The address of the contract to call.
632
- * @param calldataHash - The hash of the function selector and arguments.
633
- * @param sideEffectCounter - The side effect counter at the start of the call.
634
- * @param isStaticCall - Whether the call is a static call.
635
- */
636
- public privateNotifyEnqueuedPublicFunctionCall(
637
- _targetContractAddress: AztecAddress,
638
- calldataHash: Fr,
639
- _sideEffectCounter: number,
640
- _isStaticCall: boolean,
641
- ) {
642
- this.#onNewPublicFunctionCall(calldataHash);
643
625
  return Promise.resolve();
644
626
  }
645
627
 
646
- /**
647
- * Verify relevant information when a public teardown function is set.
648
- * @param targetContractAddress - The address of the contract to call.
649
- * @param argsHash - The arguments hash to pass to the function.
650
- * @param sideEffectCounter - The side effect counter at the start of the call.
651
- * @param isStaticCall - Whether the call is a static call.
652
- */
653
- public privateNotifySetPublicTeardownFunctionCall(
654
- _targetContractAddress: AztecAddress,
655
- calldataHash: Fr,
656
- _sideEffectCounter: number,
657
- _isStaticCall: boolean,
658
- ) {
659
- this.#onNewPublicFunctionCall(calldataHash);
660
- return Promise.resolve();
628
+ public getTotalPublicCalldataCount(): number {
629
+ return this.totalPublicCalldataCount;
661
630
  }
662
631
 
663
- public privateNotifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: number): Promise<void> {
632
+ public notifyRevertiblePhaseStart(minRevertibleSideEffectCounter: number): Promise<void> {
664
633
  return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
665
634
  }
666
635
 
667
- public privateIsSideEffectCounterRevertible(sideEffectCounter: number): Promise<boolean> {
636
+ public isExecutionInRevertiblePhase(sideEffectCounter: number): Promise<boolean> {
668
637
  return Promise.resolve(this.noteCache.isSideEffectCounterRevertible(sideEffectCounter));
669
638
  }
670
639
 
@@ -692,8 +661,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
692
661
  return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
693
662
  }
694
663
 
695
- public utilityEmitOffchainEffect(data: Fr[]): Promise<void> {
696
- this.offchainEffects.push({ data });
697
- return Promise.resolve();
664
+ protected override get callerContext() {
665
+ return this.callContext.isStaticCall ? 'private view' : 'private';
698
666
  }
699
667
  }