@aztec/pxe 5.0.0-private.20260319 → 5.0.0-rc.2

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 (453) hide show
  1. package/dest/bin/check_oracle_version.js +45 -111
  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 +51 -0
  6. package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
  7. package/dest/bin/oracle_version_helpers.js +254 -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 +37 -0
  11. package/dest/block_synchronizer/block_synchronizer.d.ts +20 -14
  12. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  13. package/dest/block_synchronizer/block_synchronizer.js +78 -28
  14. package/dest/config/index.d.ts +8 -1
  15. package/dest/config/index.d.ts.map +1 -1
  16. package/dest/config/index.js +13 -14
  17. package/dest/contract_function_simulator/contract_function_simulator.d.ts +19 -19
  18. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  19. package/dest/contract_function_simulator/contract_function_simulator.js +57 -32
  20. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  21. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  22. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  23. package/dest/contract_function_simulator/execution_note_cache.d.ts +2 -2
  24. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  25. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +5 -9
  26. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  27. package/dest/contract_function_simulator/execution_tagging_index_cache.js +3 -7
  28. package/dest/contract_function_simulator/index.d.ts +24 -6
  29. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  30. package/dest/contract_function_simulator/index.js +11 -4
  31. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +29 -0
  32. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
  33. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +30 -0
  34. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
  35. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
  36. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
  37. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
  38. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
  39. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
  40. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
  41. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
  42. package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
  43. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +5 -5
  44. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  45. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +7 -9
  46. package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
  47. package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
  48. package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
  49. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
  50. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
  51. package/dest/contract_function_simulator/noir-structs/fact_collection.js +29 -0
  52. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +19 -10
  53. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  54. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +12 -24
  55. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +5 -9
  56. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  57. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +2 -61
  58. package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
  59. package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
  60. package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
  61. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +5 -5
  62. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  63. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +8 -10
  64. package/dest/contract_function_simulator/noir-structs/option.d.ts +59 -0
  65. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
  66. package/dest/contract_function_simulator/noir-structs/option.js +67 -0
  67. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
  68. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
  69. package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
  70. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +8 -0
  71. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
  72. package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -0
  73. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts +21 -0
  74. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts.map +1 -0
  75. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.js +33 -0
  76. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +21 -0
  77. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
  78. package/dest/contract_function_simulator/noir-structs/resolved_tx.js +50 -0
  79. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +14 -0
  80. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
  81. package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
  82. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +6 -11
  83. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  84. package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -20
  85. package/dest/contract_function_simulator/oracle/acir_callback.d.ts +16 -0
  86. package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -0
  87. package/dest/contract_function_simulator/oracle/acir_callback.js +71 -0
  88. package/dest/contract_function_simulator/oracle/index.d.ts +2 -13
  89. package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -1
  90. package/dest/contract_function_simulator/oracle/index.js +1 -1
  91. package/dest/contract_function_simulator/oracle/interfaces.d.ts +15 -103
  92. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  93. package/dest/contract_function_simulator/oracle/interfaces.js +2 -2
  94. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -14
  95. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  96. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -24
  97. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +2 -2
  98. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  99. package/dest/contract_function_simulator/oracle/note_packing_utils.js +2 -2
  100. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +135 -0
  101. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
  102. package/dest/contract_function_simulator/oracle/oracle_registry.js +976 -0
  103. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +183 -0
  104. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
  105. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +1222 -0
  106. package/dest/contract_function_simulator/oracle/private_execution.d.ts +1 -1
  107. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  108. package/dest/contract_function_simulator/oracle/private_execution.js +3 -4
  109. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +44 -42
  110. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  111. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +147 -59
  112. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +143 -71
  113. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  114. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +485 -187
  115. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  116. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  117. package/dest/contract_function_simulator/pick_notes.js +20 -3
  118. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +1 -1
  119. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  120. package/dest/contract_function_simulator/proxied_contract_data_source.js +35 -64
  121. package/dest/contract_function_simulator/transient_array_service.d.ts +31 -0
  122. package/dest/contract_function_simulator/transient_array_service.d.ts.map +1 -0
  123. package/dest/contract_function_simulator/transient_array_service.js +62 -0
  124. package/dest/contract_logging.d.ts +9 -4
  125. package/dest/contract_logging.d.ts.map +1 -1
  126. package/dest/contract_logging.js +21 -6
  127. package/dest/contract_sync/contract_sync_service.d.ts +11 -9
  128. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -1
  129. package/dest/contract_sync/contract_sync_service.js +73 -51
  130. package/dest/contract_sync/helpers.d.ts +8 -9
  131. package/dest/contract_sync/helpers.d.ts.map +1 -1
  132. package/dest/contract_sync/helpers.js +23 -30
  133. package/dest/debug/pxe_debug_utils.d.ts +3 -8
  134. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  135. package/dest/debug/pxe_debug_utils.js +0 -6
  136. package/dest/entrypoints/client/bundle/index.d.ts +1 -2
  137. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  138. package/dest/entrypoints/client/bundle/index.js +0 -1
  139. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  140. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  141. package/dest/entrypoints/client/bundle/utils.js +18 -5
  142. package/dest/entrypoints/client/lazy/index.d.ts +1 -2
  143. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  144. package/dest/entrypoints/client/lazy/index.js +0 -1
  145. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  146. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  147. package/dest/entrypoints/client/lazy/utils.js +18 -5
  148. package/dest/entrypoints/pxe_creation_options.d.ts +16 -2
  149. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  150. package/dest/entrypoints/pxe_creation_options.js +3 -1
  151. package/dest/entrypoints/server/index.d.ts +2 -3
  152. package/dest/entrypoints/server/index.d.ts.map +1 -1
  153. package/dest/entrypoints/server/index.js +1 -2
  154. package/dest/entrypoints/server/utils.d.ts +4 -3
  155. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  156. package/dest/entrypoints/server/utils.js +20 -6
  157. package/dest/error_enriching.js +1 -1
  158. package/dest/events/event_service.d.ts +15 -6
  159. package/dest/events/event_service.d.ts.map +1 -1
  160. package/dest/events/event_service.js +44 -11
  161. package/dest/events/private_event_filter_validator.d.ts +3 -2
  162. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  163. package/dest/events/private_event_filter_validator.js +15 -0
  164. package/dest/hooks/authorize_utility_call.d.ts +41 -0
  165. package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
  166. package/dest/hooks/authorize_utility_call.js +4 -0
  167. package/dest/hooks/execution_hooks.d.ts +51 -0
  168. package/dest/hooks/execution_hooks.d.ts.map +1 -0
  169. package/dest/hooks/execution_hooks.js +9 -0
  170. package/dest/hooks/index.d.ts +4 -0
  171. package/dest/hooks/index.d.ts.map +1 -0
  172. package/dest/hooks/index.js +1 -0
  173. package/dest/hooks/resolve_tagging_secret_strategy.d.ts +41 -0
  174. package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
  175. package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
  176. package/dest/logs/log_service.d.ts +12 -12
  177. package/dest/logs/log_service.d.ts.map +1 -1
  178. package/dest/logs/log_service.js +169 -81
  179. package/dest/messages/tx_resolver_service.d.ts +17 -0
  180. package/dest/messages/tx_resolver_service.d.ts.map +1 -0
  181. package/dest/messages/tx_resolver_service.js +55 -0
  182. package/dest/notes/note_service.d.ts +27 -6
  183. package/dest/notes/note_service.d.ts.map +1 -1
  184. package/dest/notes/note_service.js +80 -56
  185. package/dest/notes_filter.d.ts +2 -3
  186. package/dest/notes_filter.d.ts.map +1 -1
  187. package/dest/oracle_version.d.ts +4 -3
  188. package/dest/oracle_version.d.ts.map +1 -1
  189. package/dest/oracle_version.js +20 -10
  190. package/dest/private_kernel/batch_planner.d.ts +47 -0
  191. package/dest/private_kernel/batch_planner.d.ts.map +1 -0
  192. package/dest/private_kernel/batch_planner.js +104 -0
  193. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +1 -1
  194. package/dest/private_kernel/hints/test_utils.d.ts +1 -1
  195. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -1
  196. package/dest/private_kernel/hints/test_utils.js +3 -4
  197. package/dest/private_kernel/private_kernel_execution_prover.d.ts +6 -2
  198. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  199. package/dest/private_kernel/private_kernel_execution_prover.js +152 -59
  200. package/dest/private_kernel/private_kernel_oracle.d.ts +10 -10
  201. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  202. package/dest/private_kernel/private_kernel_oracle.js +24 -22
  203. package/dest/pxe.d.ts +104 -27
  204. package/dest/pxe.d.ts.map +1 -1
  205. package/dest/pxe.js +229 -130
  206. package/dest/storage/allowed_scopes.d.ts +6 -0
  207. package/dest/storage/allowed_scopes.d.ts.map +1 -0
  208. package/dest/storage/allowed_scopes.js +7 -0
  209. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -6
  210. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
  211. package/dest/storage/anchor_block_store/anchor_block_store.js +9 -7
  212. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
  213. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
  214. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
  215. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
  216. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
  217. package/dest/storage/backwards_compatibility_tests/schema_tests.js +647 -0
  218. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
  219. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
  220. package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
  221. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  222. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  223. package/dest/storage/capsule_store/capsule_service.js +47 -0
  224. package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
  225. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  226. package/dest/storage/capsule_store/capsule_store.js +36 -28
  227. package/dest/storage/capsule_store/index.d.ts +2 -1
  228. package/dest/storage/capsule_store/index.d.ts.map +1 -1
  229. package/dest/storage/capsule_store/index.js +1 -0
  230. package/dest/storage/contract_store/contract_store.d.ts +1 -1
  231. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  232. package/dest/storage/contract_store/contract_store.js +11 -28
  233. package/dest/storage/fact_store/fact_service.d.ts +20 -0
  234. package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
  235. package/dest/storage/fact_store/fact_service.js +30 -0
  236. package/dest/storage/fact_store/fact_store.d.ts +95 -0
  237. package/dest/storage/fact_store/fact_store.d.ts.map +1 -0
  238. package/dest/storage/fact_store/fact_store.js +408 -0
  239. package/dest/storage/fact_store/fact_store_keys.d.ts +34 -0
  240. package/dest/storage/fact_store/fact_store_keys.d.ts.map +1 -0
  241. package/dest/storage/fact_store/fact_store_keys.js +50 -0
  242. package/dest/storage/fact_store/index.d.ts +5 -0
  243. package/dest/storage/fact_store/index.d.ts.map +1 -0
  244. package/dest/storage/fact_store/index.js +3 -0
  245. package/dest/storage/fact_store/stored_fact.d.ts +32 -0
  246. package/dest/storage/fact_store/stored_fact.d.ts.map +1 -0
  247. package/dest/storage/fact_store/stored_fact.js +64 -0
  248. package/dest/storage/index.d.ts +3 -2
  249. package/dest/storage/index.d.ts.map +1 -1
  250. package/dest/storage/index.js +2 -1
  251. package/dest/storage/metadata.d.ts +1 -1
  252. package/dest/storage/metadata.js +1 -1
  253. package/dest/storage/note_store/note_store.d.ts +42 -33
  254. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  255. package/dest/storage/note_store/note_store.js +199 -170
  256. package/dest/storage/note_store/stored_note.d.ts +3 -8
  257. package/dest/storage/note_store/stored_note.d.ts.map +1 -1
  258. package/dest/storage/note_store/stored_note.js +4 -20
  259. package/dest/storage/open_pxe_stores.d.ts +35 -0
  260. package/dest/storage/open_pxe_stores.d.ts.map +1 -0
  261. package/dest/storage/open_pxe_stores.js +29 -0
  262. package/dest/storage/private_event_store/private_event_store.d.ts +13 -16
  263. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  264. package/dest/storage/private_event_store/private_event_store.js +43 -43
  265. package/dest/storage/private_event_store/stored_private_event.js +1 -1
  266. package/dest/storage/tagging_store/index.d.ts +2 -2
  267. package/dest/storage/tagging_store/index.d.ts.map +1 -1
  268. package/dest/storage/tagging_store/index.js +1 -1
  269. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  270. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  271. package/dest/storage/tagging_store/sender_tagging_store.d.ts +5 -5
  272. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  273. package/dest/storage/tagging_store/sender_tagging_store.js +3 -3
  274. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts +40 -0
  275. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts.map +1 -0
  276. package/dest/storage/tagging_store/tagging_secret_sources_store.js +92 -0
  277. package/dest/tagging/get_all_logs_by_tags.d.ts +34 -10
  278. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
  279. package/dest/tagging/get_all_logs_by_tags.js +36 -37
  280. package/dest/tagging/index.d.ts +5 -4
  281. package/dest/tagging/index.d.ts.map +1 -1
  282. package/dest/tagging/index.js +4 -3
  283. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +29 -0
  284. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
  285. package/dest/tagging/persist_sender_tagging_index_ranges.js +42 -0
  286. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +69 -0
  287. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
  288. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +203 -0
  289. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +3 -3
  290. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -1
  291. package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
  292. package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
  293. package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
  294. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -5
  295. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  296. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +26 -14
  297. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -6
  298. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  299. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +21 -0
  300. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +4 -4
  301. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  302. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +2 -2
  303. package/package.json +20 -17
  304. package/src/bin/check_oracle_version.ts +51 -133
  305. package/src/bin/index.ts +5 -0
  306. package/src/bin/oracle_version_helpers.ts +311 -0
  307. package/src/block_synchronizer/block_stream_source.ts +42 -0
  308. package/src/block_synchronizer/block_synchronizer.ts +93 -38
  309. package/src/config/index.ts +15 -8
  310. package/src/contract_function_simulator/contract_function_simulator.ts +86 -48
  311. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  312. package/src/contract_function_simulator/execution_note_cache.ts +1 -1
  313. package/src/contract_function_simulator/execution_tagging_index_cache.ts +5 -9
  314. package/src/contract_function_simulator/index.ts +63 -5
  315. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +43 -0
  316. package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
  317. package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
  318. package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
  319. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +5 -7
  320. package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
  321. package/src/contract_function_simulator/noir-structs/fact_collection.ts +59 -0
  322. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +27 -20
  323. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +8 -61
  324. package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
  325. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +6 -8
  326. package/src/contract_function_simulator/noir-structs/option.ts +75 -0
  327. package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
  328. package/src/contract_function_simulator/noir-structs/provided_secret.ts +5 -0
  329. package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +45 -0
  330. package/src/contract_function_simulator/noir-structs/resolved_tx.ts +53 -0
  331. package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +15 -0
  332. package/src/contract_function_simulator/noir-structs/utility_context.ts +5 -17
  333. package/src/contract_function_simulator/oracle/acir_callback.ts +108 -0
  334. package/src/contract_function_simulator/oracle/index.ts +1 -15
  335. package/src/contract_function_simulator/oracle/interfaces.ts +11 -176
  336. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +6 -21
  337. package/src/contract_function_simulator/oracle/note_packing_utils.ts +3 -3
  338. package/src/contract_function_simulator/oracle/oracle_registry.ts +681 -0
  339. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +947 -0
  340. package/src/contract_function_simulator/oracle/private_execution.ts +3 -4
  341. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +182 -79
  342. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +743 -295
  343. package/src/contract_function_simulator/pick_notes.ts +22 -3
  344. package/src/contract_function_simulator/proxied_contract_data_source.ts +41 -64
  345. package/src/contract_function_simulator/transient_array_service.ts +91 -0
  346. package/src/contract_logging.ts +18 -5
  347. package/src/contract_sync/contract_sync_service.ts +101 -87
  348. package/src/contract_sync/helpers.ts +24 -43
  349. package/src/debug/pxe_debug_utils.ts +3 -11
  350. package/src/entrypoints/client/bundle/index.ts +0 -1
  351. package/src/entrypoints/client/bundle/utils.ts +17 -5
  352. package/src/entrypoints/client/lazy/index.ts +0 -1
  353. package/src/entrypoints/client/lazy/utils.ts +17 -5
  354. package/src/entrypoints/pxe_creation_options.ts +21 -1
  355. package/src/entrypoints/server/index.ts +1 -2
  356. package/src/entrypoints/server/utils.ts +24 -7
  357. package/src/error_enriching.ts +1 -1
  358. package/src/events/event_service.ts +69 -21
  359. package/src/events/private_event_filter_validator.ts +21 -1
  360. package/src/hooks/authorize_utility_call.ts +44 -0
  361. package/src/hooks/execution_hooks.ts +57 -0
  362. package/src/hooks/index.ts +11 -0
  363. package/src/hooks/resolve_tagging_secret_strategy.ts +46 -0
  364. package/src/logs/log_service.ts +204 -146
  365. package/src/messages/tx_resolver_service.ts +69 -0
  366. package/src/notes/note_service.ts +119 -85
  367. package/src/notes_filter.ts +1 -3
  368. package/src/oracle_version.ts +20 -10
  369. package/src/private_kernel/batch_planner.ts +169 -0
  370. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +1 -1
  371. package/src/private_kernel/hints/test_utils.ts +3 -10
  372. package/src/private_kernel/private_kernel_execution_prover.ts +240 -82
  373. package/src/private_kernel/private_kernel_oracle.ts +35 -25
  374. package/src/pxe.ts +369 -138
  375. package/src/storage/allowed_scopes.ts +14 -0
  376. package/src/storage/anchor_block_store/anchor_block_store.ts +9 -7
  377. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
  378. package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
  379. package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
  380. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
  381. package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
  382. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
  383. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +40 -0
  384. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +56 -0
  385. package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
  386. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +18 -0
  387. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +22 -0
  388. package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
  389. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +117 -0
  390. package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
  391. package/src/storage/backwards_compatibility_tests/schema_tests.ts +769 -0
  392. package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
  393. package/src/storage/capsule_store/capsule_service.ts +85 -0
  394. package/src/storage/capsule_store/capsule_store.ts +44 -26
  395. package/src/storage/capsule_store/index.ts +1 -0
  396. package/src/storage/contract_store/contract_store.ts +16 -37
  397. package/src/storage/fact_store/fact_service.ts +45 -0
  398. package/src/storage/fact_store/fact_store.ts +487 -0
  399. package/src/storage/fact_store/fact_store_keys.ts +75 -0
  400. package/src/storage/fact_store/index.ts +4 -0
  401. package/src/storage/fact_store/stored_fact.ts +80 -0
  402. package/src/storage/index.ts +2 -1
  403. package/src/storage/metadata.ts +1 -1
  404. package/src/storage/note_store/note_store.ts +228 -192
  405. package/src/storage/note_store/stored_note.ts +5 -27
  406. package/src/storage/open_pxe_stores.ts +52 -0
  407. package/src/storage/private_event_store/private_event_store.ts +52 -54
  408. package/src/storage/private_event_store/stored_private_event.ts +1 -1
  409. package/src/storage/tagging_store/index.ts +1 -1
  410. package/src/storage/tagging_store/recipient_tagging_store.ts +5 -9
  411. package/src/storage/tagging_store/sender_tagging_store.ts +6 -6
  412. package/src/storage/tagging_store/tagging_secret_sources_store.ts +117 -0
  413. package/src/tagging/get_all_logs_by_tags.ts +78 -50
  414. package/src/tagging/index.ts +4 -3
  415. package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
  416. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +301 -0
  417. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
  418. package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
  419. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +41 -19
  420. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +23 -8
  421. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +4 -5
  422. package/dest/access_scopes.d.ts +0 -9
  423. package/dest/access_scopes.d.ts.map +0 -1
  424. package/dest/access_scopes.js +0 -6
  425. package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts +0 -16
  426. package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts.map +0 -1
  427. package/dest/contract_function_simulator/noir-structs/message_tx_context.js +0 -57
  428. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +0 -9
  429. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +0 -1
  430. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +0 -42
  431. package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -61
  432. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
  433. package/dest/contract_function_simulator/oracle/oracle.js +0 -437
  434. package/dest/messages/message_context_service.d.ts +0 -17
  435. package/dest/messages/message_context_service.d.ts.map +0 -1
  436. package/dest/messages/message_context_service.js +0 -36
  437. package/dest/storage/tagging_store/sender_address_book_store.d.ts +0 -14
  438. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +0 -1
  439. package/dest/storage/tagging_store/sender_address_book_store.js +0 -36
  440. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -14
  441. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +0 -1
  442. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +0 -99
  443. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -14
  444. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +0 -1
  445. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +0 -33
  446. package/src/access_scopes.ts +0 -9
  447. package/src/contract_function_simulator/noir-structs/message_tx_context.ts +0 -55
  448. package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +0 -135
  449. package/src/contract_function_simulator/oracle/oracle.ts +0 -675
  450. package/src/messages/message_context_service.ts +0 -45
  451. package/src/storage/tagging_store/sender_address_book_store.ts +0 -48
  452. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -140
  453. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -44
@@ -21,7 +21,7 @@ import { PrivateCircuitPublicInputs } from '@aztec/stdlib/kernel';
21
21
  import type { CircuitWitnessGenerationStats } from '@aztec/stdlib/stats';
22
22
  import { PrivateCallExecutionResult } from '@aztec/stdlib/tx';
23
23
 
24
- import { Oracle } from './oracle.js';
24
+ import { buildACIRCallback } from './acir_callback.js';
25
25
  import type { PrivateExecutionOracle } from './private_execution_oracle.js';
26
26
 
27
27
  /**
@@ -43,10 +43,9 @@ export async function executePrivateFunction(
43
43
  const functionName = await privateExecutionOracle.getDebugFunctionName();
44
44
  log.verbose(`Executing private function ${functionName}`, { contract: contractAddress });
45
45
  const initialWitness = privateExecutionOracle.getInitialWitness(artifact);
46
- const acvmCallback = new Oracle(privateExecutionOracle);
47
46
  const timer = new Timer();
48
47
  const acirExecutionResult = await simulator
49
- .executeUserCircuit(initialWitness, artifact, acvmCallback.toACIRCallback())
48
+ .executeUserCircuit(initialWitness, artifact, buildACIRCallback(privateExecutionOracle))
50
49
  .catch((err: Error) => {
51
50
  err.message = resolveAssertionMessageFromError(err, artifact);
52
51
  throw new ExecutionError(
@@ -76,7 +75,7 @@ export async function executePrivateFunction(
76
75
 
77
76
  const contractClassLogs = privateExecutionOracle.getContractClassLogs();
78
77
 
79
- const rawReturnValues = await privateExecutionOracle.loadFromExecutionCache(publicInputs.returnsHash);
78
+ const rawReturnValues = await privateExecutionOracle.getHashPreimage(publicInputs.returnsHash);
80
79
 
81
80
  const newNotes = privateExecutionOracle.getNewNotes();
82
81
  const noteHashNullifierCounterMap = privateExecutionOracle.getNoteHashNullifierCounterMap();
@@ -2,11 +2,10 @@ 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 CircuitSimulator, toACVMWitness } from '@aztec/simulator/client';
5
+ import { toACVMWitness } from '@aztec/simulator/client';
6
6
  import {
7
7
  type FunctionAbi,
8
8
  type FunctionArtifact,
9
- type FunctionCall,
10
9
  FunctionSelector,
11
10
  type NoteSelector,
12
11
  countArgumentsSize,
@@ -14,8 +13,13 @@ import {
14
13
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
15
14
  import { siloNullifier } from '@aztec/stdlib/hash';
16
15
  import { PrivateContextInputs } from '@aztec/stdlib/kernel';
17
- import { type ContractClassLog, ExtendedDirectionalAppTaggingSecret, type TaggingIndexRange } from '@aztec/stdlib/logs';
18
- import { Tag } from '@aztec/stdlib/logs';
16
+ import {
17
+ AppTaggingSecret,
18
+ AppTaggingSecretKind,
19
+ ContractClassLog,
20
+ ContractClassLogFields,
21
+ type TaggingIndexRange,
22
+ } from '@aztec/stdlib/logs';
19
23
  import { Note, type NoteStatus } from '@aztec/stdlib/note';
20
24
  import {
21
25
  CallContext,
@@ -25,25 +29,30 @@ import {
25
29
  type TxContext,
26
30
  } from '@aztec/stdlib/tx';
27
31
 
28
- import type { AccessScopes } from '../../access_scopes.js';
32
+ import type {
33
+ ResolveTaggingSecretStrategy,
34
+ TaggingSecretStrategy,
35
+ } from '../../hooks/resolve_tagging_secret_strategy.js';
29
36
  import { NoteService } from '../../notes/note_service.js';
30
37
  import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
31
38
  import { syncSenderTaggingIndexes } from '../../tagging/index.js';
32
39
  import type { ExecutionNoteCache } from '../execution_note_cache.js';
33
40
  import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js';
34
41
  import type { HashedValuesCache } from '../hashed_values_cache.js';
42
+ import { BoundedVec } from '../noir-structs/bounded_vec.js';
43
+ import type { ContractClassLogData } from '../noir-structs/contract_class_log_data.js';
44
+ import type { NoteData } from '../noir-structs/note_data.js';
45
+ import { Option } from '../noir-structs/option.js';
46
+ import type { ResolvedTaggingStrategy } from '../noir-structs/resolved_tagging_strategy.js';
35
47
  import { pickNotes } from '../pick_notes.js';
36
- import type { IPrivateExecutionOracle, NoteData } from './interfaces.js';
48
+ import type { IPrivateExecutionOracle } from './interfaces.js';
37
49
  import { executePrivateFunction } from './private_execution.js';
38
50
  import { UtilityExecutionOracle, type UtilityExecutionOracleArgs } from './utility_execution_oracle.js';
39
51
 
40
52
  /** Args for PrivateExecutionOracle constructor. */
41
- export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contractAddress'> & {
53
+ export type PrivateExecutionOracleArgs = UtilityExecutionOracleArgs & {
42
54
  argsHash: Fr;
43
55
  txContext: TxContext;
44
- callContext: CallContext;
45
- /** Needed to trigger contract synchronization before nested calls */
46
- utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
47
56
  executionCache: HashedValuesCache;
48
57
  noteCache: ExecutionNoteCache;
49
58
  taggingIndexCache: ExecutionTaggingIndexCache;
@@ -51,7 +60,6 @@ export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contr
51
60
  totalPublicCalldataCount?: number;
52
61
  sideEffectCounter?: number;
53
62
  senderForTags?: AztecAddress;
54
- simulator?: CircuitSimulator;
55
63
  };
56
64
 
57
65
  /**
@@ -75,39 +83,38 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
75
83
 
76
84
  private readonly argsHash: Fr;
77
85
  private readonly txContext: TxContext;
78
- private readonly callContext: CallContext;
79
- private readonly utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
80
86
  private readonly executionCache: HashedValuesCache;
81
87
  private readonly noteCache: ExecutionNoteCache;
82
88
  private readonly taggingIndexCache: ExecutionTaggingIndexCache;
83
89
  private readonly senderTaggingStore: SenderTaggingStore;
84
90
  private totalPublicCalldataCount: number;
85
- protected sideEffectCounter: number;
86
- private senderForTags?: AztecAddress;
87
- private readonly simulator?: CircuitSimulator;
91
+ private readonly initialSideEffectCounter: number;
92
+ /** Sender for tags passed in at oracle construction time. Returned by `getSenderForTags`. */
93
+ private readonly defaultSenderForTags: AztecAddress | undefined;
88
94
 
89
95
  constructor(args: PrivateExecutionOracleArgs) {
90
96
  super({
91
97
  ...args,
92
- contractAddress: args.callContext.contractAddress,
93
98
  log: args.log ?? createLogger('simulator:client_execution_context'),
94
99
  });
95
100
  this.argsHash = args.argsHash;
96
101
  this.txContext = args.txContext;
97
- this.callContext = args.callContext;
98
- this.utilityExecutor = args.utilityExecutor;
99
102
  this.executionCache = args.executionCache;
100
103
  this.noteCache = args.noteCache;
101
104
  this.taggingIndexCache = args.taggingIndexCache;
102
105
  this.senderTaggingStore = args.senderTaggingStore;
103
106
  this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
104
- this.sideEffectCounter = args.sideEffectCounter ?? 0;
105
- this.senderForTags = args.senderForTags;
106
- this.simulator = args.simulator;
107
+ this.initialSideEffectCounter = args.sideEffectCounter ?? 0;
108
+ this.defaultSenderForTags = args.senderForTags;
107
109
  }
108
110
 
109
111
  public getPrivateContextInputs(): PrivateContextInputs {
110
- return new PrivateContextInputs(this.callContext, this.anchorBlockHeader, this.txContext, this.sideEffectCounter);
112
+ return new PrivateContextInputs(
113
+ this.callContext,
114
+ this.anchorBlockHeader,
115
+ this.txContext,
116
+ this.initialSideEffectCounter,
117
+ );
111
118
  }
112
119
 
113
120
  // We still need this function until we can get user-defined ordering of structs for fn arguments
@@ -174,59 +181,133 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
174
181
  * for a tag in order to emit a log. Constrained tagging should not use this as there is no
175
182
  * guarantee that the recipient knows about the sender, and hence about the shared secret.
176
183
  *
177
- * The value persists through nested calls, meaning all calls down the stack will use the same
178
- * 'senderForTags' value (unless it is replaced).
184
+ * Returns the wallet-supplied default sender for tags, or `None` if no default was provided.
179
185
  */
180
- public getSenderForTags(): Promise<AztecAddress | undefined> {
181
- return Promise.resolve(this.senderForTags);
186
+ public getSenderForTags(): Promise<Option<AztecAddress>> {
187
+ return Promise.resolve(this.defaultSenderForTags ? Option.some(this.defaultSenderForTags) : Option.none());
182
188
  }
183
189
 
184
190
  /**
185
- * Set the sender for tags.
186
- *
187
- * This unconstrained value is used as the sender when computing an unconstrained shared secret
188
- * for a tag in order to emit a log. Constrained tagging should not use this as there is no
189
- * guarantee that the recipient knows about the sender, and hence about the shared secret.
190
- *
191
- * Account contracts typically set this value before calling other contracts. The value persists
192
- * through nested calls, meaning all calls down the stack will use the same 'senderForTags'
193
- * value (unless it is replaced by another call to this setter).
191
+ * Resolves the tagging strategy for a message via the wallet's {@link ResolveTaggingSecretStrategy} hook. The contract receives a ready-to-use {@link ResolvedTaggingStrategy}.
192
+ * When no hook is configured, applies a privacy-safe default.
194
193
  */
195
- public setSenderForTags(senderForTags: AztecAddress): Promise<void> {
196
- this.senderForTags = senderForTags;
197
- return Promise.resolve();
194
+ public async resolveTaggingStrategy(
195
+ sender: AztecAddress,
196
+ recipient: AztecAddress,
197
+ deliveryMode: AppTaggingSecretKind,
198
+ ): Promise<ResolvedTaggingStrategy> {
199
+ const hook: ResolveTaggingSecretStrategy | undefined = this.hooks?.resolveTaggingSecretStrategy;
200
+ let strategy: TaggingSecretStrategy;
201
+ if (hook) {
202
+ const { currentContractClassId } = await this.getContractInstance(this.contractAddress);
203
+ strategy = await hook({
204
+ contractAddress: this.contractAddress,
205
+ contractClassId: currentContractClassId,
206
+ sender,
207
+ recipient,
208
+ deliveryMode,
209
+ });
210
+ } else {
211
+ strategy = this.#defaultTaggingSecretStrategy(deliveryMode, recipient);
212
+ }
213
+ return this.#resolveTaggingSecretStrategy(strategy, sender, recipient);
214
+ }
215
+
216
+ /** Resolves a wallet-provided {@link TaggingSecretStrategy} into the app-siloed secret handed to the contract. */
217
+ async #resolveTaggingSecretStrategy(
218
+ strategy: TaggingSecretStrategy,
219
+ sender: AztecAddress,
220
+ recipient: AztecAddress,
221
+ ): Promise<ResolvedTaggingStrategy> {
222
+ // PXE only performs the derivation; it does not reject a strategy that is unsound for the delivery mode (e.g. an
223
+ // address-derived or arbitrary-secret strategy for constrained delivery). That soundness check belongs in the
224
+ // Noir circuit, which constrains the resolved strategy against the delivery mode.
225
+ switch (strategy.type) {
226
+ case 'non-interactive-handshake':
227
+ return { type: 'non-interactive-handshake' };
228
+ case 'address-derived':
229
+ return this.#addressDerivedSecret(sender, recipient);
230
+ case 'arbitrary-secret': {
231
+ // App-silo the raw arbitrary secret point here so wallets never replicate the derivation.
232
+ const appTaggingSecret = await AppTaggingSecret.compute(strategy.secret, this.contractAddress, recipient);
233
+ return { type: 'unconstrained-secret', secret: appTaggingSecret.secret };
234
+ }
235
+ }
236
+ }
237
+
238
+ /** The privacy-safe tagging secret strategy used when no {@link ResolveTaggingSecretStrategy} hook is configured. */
239
+ #defaultTaggingSecretStrategy(deliveryMode: AppTaggingSecretKind, recipient: AztecAddress): TaggingSecretStrategy {
240
+ if (deliveryMode === AppTaggingSecretKind.CONSTRAINED) {
241
+ // Constrained delivery has no "safe" default: a non-interactive handshake would reveal the recipient onchain,
242
+ // and an interactive handshake always needs a wallet interaction (i.e. a configured hook). With no hook there is
243
+ // nothing safe to fall back to, so we always fail.
244
+ throw new Error(`Constrained delivery to ${recipient} requires a configured resolveTaggingSecretStrategy hook.`);
245
+ }
246
+
247
+ // Unconstrained default: an address-derived (Diffie-Hellman) shared secret, which leaves no onchain trace.
248
+ return { type: 'address-derived' };
249
+ }
250
+
251
+ /**
252
+ * The app-siloed, recipient-directional secret derived from the sender's and recipient's address keys via ECDH,
253
+ * ready to hand to the contract. Callers must validate the recipient in-circuit before reaching here, so an invalid one is unexpected.
254
+ */
255
+ async #addressDerivedSecret(sender: AztecAddress, recipient: AztecAddress): Promise<ResolvedTaggingStrategy> {
256
+ const secret = await this.getAppTaggingSecret(sender, recipient);
257
+ if (!secret.isSome()) {
258
+ throw new Error(`Cannot derive an address-derived tagging secret for invalid recipient ${recipient}`);
259
+ }
260
+ return { type: 'unconstrained-secret', secret: secret.value };
198
261
  }
199
262
 
200
263
  /**
201
- * Returns the next app tag for a given sender and recipient pair.
264
+ * Returns the sender-side app tagging secret for a `(sender, recipient)` pair.
265
+ *
266
+ * The caller obtains an index via {@link getNextTaggingIndex} and computes the final tag itself.
267
+ * The only expected `None` case is an invalid recipient address; missing sender data fails while deriving.
268
+ *
202
269
  * @param sender - The address sending the log
203
270
  * @param recipient - The address receiving the log
204
- * @returns An app tag to be used in a log.
271
+ * @returns The app tagging secret, or `None` if the recipient is invalid.
205
272
  */
206
- public async getNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
207
- const extendedSecret = await this.#calculateExtendedDirectionalAppTaggingSecret(
208
- this.contractAddress,
209
- sender,
210
- recipient,
211
- );
273
+ public async getAppTaggingSecret(sender: AztecAddress, recipient: AztecAddress): Promise<Option<Fr>> {
274
+ const extendedSecret = await this.#calculateAppTaggingSecret(this.contractAddress, sender, recipient);
275
+
276
+ if (!extendedSecret) {
277
+ this.logger.warn(`Computing a tagging secret for invalid recipient ${recipient} - returning no secret`, {
278
+ contractAddress: this.contractAddress,
279
+ });
280
+ return Option.none();
281
+ }
212
282
 
213
- const index = await this.#getIndexToUseForSecret(extendedSecret);
214
- this.logger.debug(
215
- `Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
216
- );
217
- this.taggingIndexCache.setLastUsedIndex(extendedSecret, index);
283
+ return Option.some(extendedSecret.secret);
284
+ }
218
285
 
219
- return Tag.compute({ extendedSecret, index });
286
+ /**
287
+ * Returns the next sender-side tagging index for a given secret and delivery mode.
288
+ *
289
+ * @param secret - The tagging secret to allocate an index for.
290
+ * @param kind - The sender-side index namespace.
291
+ * @returns The next index to use for this secret.
292
+ */
293
+ public async getNextTaggingIndex(secret: Fr, kind: AppTaggingSecretKind): Promise<number> {
294
+ const appTaggingSecret = new AppTaggingSecret(secret, this.contractAddress, kind);
295
+ const index = await this.#reserveNextIndexForSecret(appTaggingSecret);
296
+ this.logger.debug(`Incrementing ${kind} tagging index for secret in contract ${this.contractAddress} to ${index}`);
297
+ return index;
220
298
  }
221
299
 
222
- async #calculateExtendedDirectionalAppTaggingSecret(
223
- contractAddress: AztecAddress,
224
- sender: AztecAddress,
225
- recipient: AztecAddress,
226
- ) {
300
+ /** Resolves the next index for a given tagging secret, syncing from chain if it is missing from the in-tx cache. */
301
+ async #reserveNextIndexForSecret(secret: AppTaggingSecret): Promise<number> {
302
+ const index = await this.#getIndexToUseForSecret(secret);
303
+ this.taggingIndexCache.setLastUsedIndex(secret, index);
304
+ return index;
305
+ }
306
+
307
+ async #calculateAppTaggingSecret(contractAddress: AztecAddress, sender: AztecAddress, recipient: AztecAddress) {
227
308
  const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
228
309
  const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
229
- return ExtendedDirectionalAppTaggingSecret.compute(
310
+ return AppTaggingSecret.computeUnconstrained(
230
311
  senderCompleteAddress,
231
312
  senderIvsk,
232
313
  recipient,
@@ -235,7 +316,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
235
316
  );
236
317
  }
237
318
 
238
- async #getIndexToUseForSecret(secret: ExtendedDirectionalAppTaggingSecret): Promise<number> {
319
+ async #getIndexToUseForSecret(secret: AppTaggingSecret): Promise<number> {
239
320
  // If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
240
321
  const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
241
322
 
@@ -265,7 +346,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
265
346
  * @param values - Values to store.
266
347
  * @returns The hash of the values.
267
348
  */
268
- public storeInExecutionCache(values: Fr[], hash: Fr) {
349
+ public setHashPreimage(values: Fr[], hash: Fr) {
269
350
  return this.executionCache.store(values, hash);
270
351
  }
271
352
 
@@ -274,7 +355,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
274
355
  * @param hash - Hash of the values.
275
356
  * @returns The values.
276
357
  */
277
- public loadFromExecutionCache(hash: Fr): Promise<Fr[]> {
358
+ public getHashPreimage(hash: Fr): Promise<Fr[]> {
278
359
  const preimage = this.executionCache.getPreimage(hash);
279
360
  if (!preimage) {
280
361
  throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
@@ -282,7 +363,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
282
363
  return Promise.resolve(preimage);
283
364
  }
284
365
 
285
- override async checkNullifierExists(innerNullifier: Fr): Promise<boolean> {
366
+ override async doesNullifierExist(innerNullifier: Fr): Promise<boolean> {
286
367
  // This oracle must be overridden because while utility execution can only meaningfully check if a nullifier exists
287
368
  // in the synched block, during private execution there's also the possibility of it being pending, i.e. created
288
369
  // in the current transaction.
@@ -295,7 +376,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
295
376
 
296
377
  return (
297
378
  this.noteCache.getNullifiers(this.contractAddress).has(nullifier) ||
298
- (await super.checkNullifierExists(innerNullifier))
379
+ (await super.doesNullifierExist(innerNullifier))
299
380
  );
300
381
  }
301
382
 
@@ -321,7 +402,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
321
402
  * @returns Array of note data.
322
403
  */
323
404
  public override async getNotes(
324
- owner: AztecAddress | undefined,
405
+ owner: Option<AztecAddress>,
325
406
  storageSlot: Fr,
326
407
  numSelects: number,
327
408
  selectByIndexes: number[],
@@ -336,16 +417,18 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
336
417
  limit: number,
337
418
  offset: number,
338
419
  status: NoteStatus,
339
- ): Promise<NoteData[]> {
420
+ maxNotes: number,
421
+ packedHintedNoteLength: number,
422
+ ): Promise<BoundedVec<NoteData>> {
340
423
  // Nullified pending notes are already removed from the list.
341
- const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, owner, storageSlot);
424
+ const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, owner.value, storageSlot);
342
425
 
343
426
  const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
344
427
 
345
428
  const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
346
429
  const dbNotes = await noteService.getNotes(
347
430
  this.callContext.contractAddress,
348
- owner,
431
+ owner.value,
349
432
  storageSlot,
350
433
  status,
351
434
  this.scopes,
@@ -372,7 +455,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
372
455
  .join(', ')}`,
373
456
  );
374
457
 
375
- return notes;
458
+ return BoundedVec.from({ data: notes, maxLength: maxNotes, elementSize: packedHintedNoteLength });
376
459
  }
377
460
 
378
461
  /**
@@ -466,10 +549,15 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
466
549
  * Emit a contract class log.
467
550
  * This fn exists because we only carry a poseidon hash through the kernels, and need to
468
551
  * keep the preimage in ts for later.
469
- * @param log - The contract class log to be emitted.
552
+ * @param logData - The contract class log to be emitted.
470
553
  * @param counter - The contract class log's counter.
471
554
  */
472
- public notifyCreatedContractClassLog(log: ContractClassLog, counter: number) {
555
+ public notifyCreatedContractClassLog(logData: ContractClassLogData, counter: number) {
556
+ const log = ContractClassLog.from({
557
+ contractAddress: logData.contractAddress,
558
+ fields: new ContractClassLogFields(logData.fields),
559
+ emittedLength: logData.emittedLength,
560
+ });
473
561
  this.contractClassLogs.push(new CountedContractClassLog(log, counter));
474
562
  const text = log.toBuffer().toString('hex');
475
563
  this.logger.verbose(
@@ -554,30 +642,37 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
554
642
  aztecNode: this.aztecNode,
555
643
  senderTaggingStore: this.senderTaggingStore,
556
644
  recipientTaggingStore: this.recipientTaggingStore,
557
- senderAddressBookStore: this.senderAddressBookStore,
558
- capsuleStore: this.capsuleStore,
645
+ taggingSecretSourcesStore: this.taggingSecretSourcesStore,
646
+ capsuleService: this.capsuleService,
647
+ factService: this.factService,
559
648
  privateEventStore: this.privateEventStore,
560
- messageContextService: this.messageContextService,
649
+ txResolver: this.txResolver,
561
650
  contractSyncService: this.contractSyncService,
562
651
  jobId: this.jobId,
563
652
  totalPublicCalldataCount: this.totalPublicCalldataCount,
564
653
  sideEffectCounter,
565
654
  log: this.logger,
566
655
  scopes: this.scopes,
567
- senderForTags: this.senderForTags,
568
- simulator: this.simulator!,
656
+ senderForTags: this.defaultSenderForTags,
657
+ simulator: this.simulator,
658
+ hooks: this.hooks,
659
+ l2TipsStore: this.l2TipsStore,
660
+ transientArrayService: this.transientArrayService,
569
661
  });
570
662
 
571
663
  const setupTime = simulatorSetupTimer.ms();
572
664
 
573
665
  const childExecutionResult = await executePrivateFunction(
574
- this.simulator!,
666
+ this.simulator,
575
667
  privateExecutionOracle,
576
668
  targetArtifact,
577
669
  targetContractAddress,
578
670
  functionSelector,
579
671
  );
580
672
 
673
+ // Propagate the nested call's calldata count so the parent sees its increments on subsequent enqueues.
674
+ this.totalPublicCalldataCount = privateExecutionOracle.getTotalPublicCalldataCount();
675
+
581
676
  if (isStaticCall) {
582
677
  this.#checkValidStaticCall(childExecutionResult);
583
678
  }
@@ -598,7 +693,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
598
693
  }
599
694
 
600
695
  /** Validates the calldata preimage exists in the cache and checks cumulative calldata size is within limits. */
601
- public validatePublicCalldata(calldataHash: Fr) {
696
+ public assertValidPublicCalldata(calldataHash: Fr) {
602
697
  const calldata = this.executionCache.getPreimage(calldataHash);
603
698
  if (!calldata) {
604
699
  throw new Error('Calldata for public call not found in cache');
@@ -611,11 +706,15 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
611
706
  return Promise.resolve();
612
707
  }
613
708
 
709
+ public getTotalPublicCalldataCount(): number {
710
+ return this.totalPublicCalldataCount;
711
+ }
712
+
614
713
  public notifyRevertiblePhaseStart(minRevertibleSideEffectCounter: number): Promise<void> {
615
714
  return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
616
715
  }
617
716
 
618
- public inRevertiblePhase(sideEffectCounter: number): Promise<boolean> {
717
+ public isExecutionInRevertiblePhase(sideEffectCounter: number): Promise<boolean> {
619
718
  return Promise.resolve(this.noteCache.isSideEffectCounterRevertible(sideEffectCounter));
620
719
  }
621
720
 
@@ -642,4 +741,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
642
741
  public getDebugFunctionName() {
643
742
  return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
644
743
  }
744
+
745
+ protected override get callerContext() {
746
+ return this.callContext.isStaticCall ? 'private view' : 'private';
747
+ }
645
748
  }