@aztec/pxe 0.0.1-commit.fffb133c → 0.0.1-dev

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