@aztec/pxe 0.0.1-commit.b9865e97 → 0.0.1-commit.be03c316

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 (397) hide show
  1. package/dest/bin/check_oracle_version.js +8 -23
  2. package/dest/bin/index.d.ts +2 -2
  3. package/dest/bin/index.d.ts.map +1 -1
  4. package/dest/bin/index.js +1 -1
  5. package/dest/bin/oracle_version_helpers.d.ts +16 -8
  6. package/dest/bin/oracle_version_helpers.d.ts.map +1 -1
  7. package/dest/bin/oracle_version_helpers.js +22 -69
  8. package/dest/block_synchronizer/block_stream_source.d.ts +5 -5
  9. package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -1
  10. package/dest/block_synchronizer/block_stream_source.js +4 -29
  11. package/dest/block_synchronizer/block_synchronizer.d.ts +18 -14
  12. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  13. package/dest/block_synchronizer/block_synchronizer.js +54 -18
  14. package/dest/config/index.d.ts +2 -1
  15. package/dest/config/index.d.ts.map +1 -1
  16. package/dest/config/index.js +1 -0
  17. package/dest/contract/contract_class_service.d.ts +31 -0
  18. package/dest/contract/contract_class_service.d.ts.map +1 -0
  19. package/dest/contract/contract_class_service.js +68 -0
  20. package/dest/contract/contract_sync_service.d.ts +48 -0
  21. package/dest/contract/contract_sync_service.d.ts.map +1 -0
  22. package/dest/{contract_sync → contract}/contract_sync_service.js +26 -45
  23. package/dest/contract/helpers.d.ts +7 -0
  24. package/dest/contract/helpers.d.ts.map +1 -0
  25. package/dest/contract/helpers.js +20 -0
  26. package/dest/contract/skip_sync_contracts.d.ts +11 -0
  27. package/dest/contract/skip_sync_contracts.d.ts.map +1 -0
  28. package/dest/contract/skip_sync_contracts.js +18 -0
  29. package/dest/contract_function_simulator/anchored_contract_data.d.ts +36 -0
  30. package/dest/contract_function_simulator/anchored_contract_data.d.ts.map +1 -0
  31. package/dest/contract_function_simulator/anchored_contract_data.js +54 -0
  32. package/dest/contract_function_simulator/aztec_node_read_cache.d.ts +39 -0
  33. package/dest/contract_function_simulator/aztec_node_read_cache.d.ts.map +1 -0
  34. package/dest/contract_function_simulator/aztec_node_read_cache.js +60 -0
  35. package/dest/contract_function_simulator/contract_function_simulator.d.ts +19 -18
  36. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  37. package/dest/contract_function_simulator/contract_function_simulator.js +63 -32
  38. package/dest/contract_function_simulator/execution_note_cache.d.ts +3 -9
  39. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  40. package/dest/contract_function_simulator/execution_note_cache.js +8 -28
  41. package/dest/contract_function_simulator/index.d.ts +19 -10
  42. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  43. package/dest/contract_function_simulator/index.js +6 -9
  44. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +8 -27
  45. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -1
  46. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +8 -23
  47. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
  48. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
  49. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
  50. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
  51. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
  52. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
  53. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +1 -1
  54. package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
  55. package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
  56. package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
  57. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
  58. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
  59. package/dest/contract_function_simulator/noir-structs/fact_collection.js +31 -0
  60. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +11 -12
  61. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  62. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +6 -49
  63. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +10 -8
  64. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  65. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -60
  66. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +2 -2
  67. package/dest/contract_function_simulator/noir-structs/option.d.ts +9 -11
  68. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -1
  69. package/dest/contract_function_simulator/noir-structs/option.js +18 -13
  70. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
  71. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
  72. package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
  73. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts +11 -0
  74. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts.map +1 -0
  75. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.js +4 -0
  76. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +6 -9
  77. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -1
  78. package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -24
  79. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts +28 -0
  80. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts.map +1 -0
  81. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.js +50 -0
  82. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +19 -0
  83. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
  84. package/dest/contract_function_simulator/noir-structs/resolved_tx.js +9 -0
  85. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +15 -0
  86. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
  87. package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
  88. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +6 -11
  89. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  90. package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -20
  91. package/dest/contract_function_simulator/oracle/acir_callback.d.ts +21 -0
  92. package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -0
  93. package/dest/contract_function_simulator/oracle/acir_callback.js +115 -0
  94. package/dest/contract_function_simulator/oracle/index.d.ts +2 -13
  95. package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -1
  96. package/dest/contract_function_simulator/oracle/index.js +1 -1
  97. package/dest/contract_function_simulator/oracle/interfaces.d.ts +2 -3
  98. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  99. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts +39 -0
  100. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts.map +1 -0
  101. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.js +107 -0
  102. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -14
  103. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  104. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -24
  105. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +43 -31
  106. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -1
  107. package/dest/contract_function_simulator/oracle/oracle_registry.js +259 -29
  108. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +180 -45
  109. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -1
  110. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +1024 -341
  111. package/dest/contract_function_simulator/oracle/private_execution.d.ts +1 -1
  112. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  113. package/dest/contract_function_simulator/oracle/private_execution.js +2 -3
  114. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +21 -8
  115. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  116. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +132 -22
  117. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +77 -34
  118. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  119. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +247 -106
  120. package/dest/contract_function_simulator/transient_array_service.d.ts +31 -0
  121. package/dest/contract_function_simulator/transient_array_service.d.ts.map +1 -0
  122. package/dest/contract_function_simulator/transient_array_service.js +62 -0
  123. package/dest/debug/pxe_debug_utils.d.ts +2 -2
  124. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  125. package/dest/entrypoints/client/bundle/index.d.ts +2 -1
  126. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  127. package/dest/entrypoints/client/bundle/index.js +1 -0
  128. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  129. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  130. package/dest/entrypoints/client/bundle/utils.js +17 -6
  131. package/dest/entrypoints/client/lazy/index.d.ts +2 -1
  132. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  133. package/dest/entrypoints/client/lazy/index.js +1 -0
  134. package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
  135. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  136. package/dest/entrypoints/client/lazy/utils.js +17 -6
  137. package/dest/entrypoints/client/store.d.ts +14 -0
  138. package/dest/entrypoints/client/store.d.ts.map +1 -0
  139. package/dest/entrypoints/client/store.js +42 -0
  140. package/dest/entrypoints/pxe_creation_options.d.ts +9 -3
  141. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  142. package/dest/entrypoints/server/index.d.ts +6 -3
  143. package/dest/entrypoints/server/index.d.ts.map +1 -1
  144. package/dest/entrypoints/server/index.js +4 -2
  145. package/dest/entrypoints/server/store.d.ts +18 -0
  146. package/dest/entrypoints/server/store.d.ts.map +1 -0
  147. package/dest/entrypoints/server/store.js +28 -0
  148. package/dest/entrypoints/server/utils.d.ts +1 -1
  149. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  150. package/dest/entrypoints/server/utils.js +16 -4
  151. package/dest/error_enriching.d.ts +5 -3
  152. package/dest/error_enriching.d.ts.map +1 -1
  153. package/dest/error_enriching.js +13 -11
  154. package/dest/hooks/execution_hooks.d.ts +31 -11
  155. package/dest/hooks/execution_hooks.d.ts.map +1 -1
  156. package/dest/hooks/execution_hooks.js +3 -3
  157. package/dest/hooks/index.d.ts +4 -3
  158. package/dest/hooks/index.d.ts.map +1 -1
  159. package/dest/hooks/index.js +1 -0
  160. package/dest/hooks/resolve_custom_request.d.ts +23 -0
  161. package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
  162. package/dest/hooks/resolve_custom_request.js +3 -0
  163. package/dest/hooks/resolve_tagging_secret_strategy.d.ts +50 -0
  164. package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
  165. package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
  166. package/dest/logs/log_service.d.ts +8 -6
  167. package/dest/logs/log_service.d.ts.map +1 -1
  168. package/dest/logs/log_service.js +88 -28
  169. package/dest/messages/tx_resolver_service.d.ts +17 -0
  170. package/dest/messages/tx_resolver_service.d.ts.map +1 -0
  171. package/dest/messages/{message_context_service.js → tx_resolver_service.js} +13 -8
  172. package/dest/notes/note_service.d.ts +1 -1
  173. package/dest/notes/note_service.js +1 -1
  174. package/dest/oracle_version.d.ts +3 -3
  175. package/dest/oracle_version.js +5 -5
  176. package/dest/private_kernel/batch_planner.d.ts +1 -1
  177. package/dest/private_kernel/batch_planner.d.ts.map +1 -1
  178. package/dest/private_kernel/batch_planner.js +1 -1
  179. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +1 -1
  180. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  181. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +6 -2
  182. package/dest/private_kernel/hints/test_utils.js +1 -1
  183. package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
  184. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  185. package/dest/private_kernel/private_kernel_execution_prover.js +61 -40
  186. package/dest/private_kernel/private_kernel_oracle.d.ts +4 -2
  187. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  188. package/dest/private_kernel/private_kernel_oracle.js +17 -5
  189. package/dest/pxe.d.ts +114 -48
  190. package/dest/pxe.d.ts.map +1 -1
  191. package/dest/pxe.js +225 -139
  192. package/dest/storage/allowed_scopes.d.ts +6 -0
  193. package/dest/storage/allowed_scopes.d.ts.map +1 -0
  194. package/dest/storage/allowed_scopes.js +7 -0
  195. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -6
  196. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
  197. package/dest/storage/anchor_block_store/anchor_block_store.js +8 -6
  198. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +1 -1
  199. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -1
  200. package/dest/storage/backwards_compatibility_tests/schema_tests.js +129 -49
  201. package/dest/storage/capsule_store/capsule_service.d.ts +1 -1
  202. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -1
  203. package/dest/storage/capsule_store/capsule_service.js +6 -9
  204. package/dest/storage/contract_store/contract_store.d.ts +27 -24
  205. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  206. package/dest/storage/contract_store/contract_store.js +64 -75
  207. package/dest/storage/fact_store/fact_service.d.ts +22 -0
  208. package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
  209. package/dest/storage/fact_store/fact_service.js +45 -0
  210. package/dest/storage/fact_store/fact_store.d.ts +95 -0
  211. package/dest/storage/fact_store/fact_store.d.ts.map +1 -0
  212. package/dest/storage/fact_store/fact_store.js +408 -0
  213. package/dest/storage/fact_store/fact_store_keys.d.ts +34 -0
  214. package/dest/storage/fact_store/fact_store_keys.d.ts.map +1 -0
  215. package/dest/storage/fact_store/fact_store_keys.js +50 -0
  216. package/dest/storage/fact_store/index.d.ts +6 -0
  217. package/dest/storage/fact_store/index.d.ts.map +1 -0
  218. package/dest/storage/fact_store/index.js +4 -0
  219. package/dest/storage/fact_store/origin_state.d.ts +59 -0
  220. package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
  221. package/dest/storage/fact_store/origin_state.js +60 -0
  222. package/dest/storage/fact_store/stored_fact.d.ts +32 -0
  223. package/dest/storage/fact_store/stored_fact.d.ts.map +1 -0
  224. package/dest/storage/fact_store/stored_fact.js +64 -0
  225. package/dest/storage/index.d.ts +3 -2
  226. package/dest/storage/index.d.ts.map +1 -1
  227. package/dest/storage/index.js +2 -1
  228. package/dest/storage/metadata.d.ts +2 -2
  229. package/dest/storage/metadata.d.ts.map +1 -1
  230. package/dest/storage/metadata.js +1 -1
  231. package/dest/storage/note_store/note_store.d.ts +42 -33
  232. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  233. package/dest/storage/note_store/note_store.js +197 -168
  234. package/dest/storage/note_store/stored_note.d.ts +3 -8
  235. package/dest/storage/note_store/stored_note.d.ts.map +1 -1
  236. package/dest/storage/note_store/stored_note.js +4 -20
  237. package/dest/storage/open_pxe_stores.d.ts +5 -3
  238. package/dest/storage/open_pxe_stores.d.ts.map +1 -1
  239. package/dest/storage/open_pxe_stores.js +5 -3
  240. package/dest/storage/private_event_store/private_event_store.d.ts +13 -16
  241. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  242. package/dest/storage/private_event_store/private_event_store.js +40 -43
  243. package/dest/storage/store_identity.d.ts +35 -0
  244. package/dest/storage/store_identity.d.ts.map +1 -0
  245. package/dest/storage/store_identity.js +44 -0
  246. package/dest/storage/tagging_store/index.d.ts +2 -2
  247. package/dest/storage/tagging_store/index.d.ts.map +1 -1
  248. package/dest/storage/tagging_store/index.js +1 -1
  249. package/dest/storage/tagging_store/sender_tagging_store.d.ts +19 -3
  250. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  251. package/dest/storage/tagging_store/sender_tagging_store.js +48 -11
  252. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts +51 -0
  253. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts.map +1 -0
  254. package/dest/storage/tagging_store/tagging_secret_sources_store.js +105 -0
  255. package/dest/tagging/constants.d.ts +3 -2
  256. package/dest/tagging/constants.d.ts.map +1 -1
  257. package/dest/tagging/constants.js +28 -10
  258. package/dest/tagging/index.d.ts +2 -2
  259. package/dest/tagging/index.d.ts.map +1 -1
  260. package/dest/tagging/index.js +1 -1
  261. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +26 -8
  262. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -1
  263. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +95 -20
  264. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +1 -1
  265. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +1 -1
  266. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  267. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +6 -2
  268. package/dest/tagging/testing/tag_query_test_utils.d.ts +6 -0
  269. package/dest/tagging/testing/tag_query_test_utils.d.ts.map +1 -0
  270. package/dest/tagging/testing/tag_query_test_utils.js +10 -0
  271. package/package.json +17 -17
  272. package/src/bin/check_oracle_version.ts +8 -24
  273. package/src/bin/index.ts +1 -1
  274. package/src/bin/oracle_version_helpers.ts +23 -90
  275. package/src/block_synchronizer/block_stream_source.ts +6 -45
  276. package/src/block_synchronizer/block_synchronizer.ts +70 -29
  277. package/src/config/index.ts +1 -0
  278. package/src/contract/contract_class_service.ts +83 -0
  279. package/src/{contract_sync → contract}/contract_sync_service.ts +37 -50
  280. package/src/contract/helpers.ts +35 -0
  281. package/src/contract/skip_sync_contracts.ts +23 -0
  282. package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
  283. package/src/contract_function_simulator/aztec_node_read_cache.ts +89 -0
  284. package/src/contract_function_simulator/contract_function_simulator.ts +96 -42
  285. package/src/contract_function_simulator/execution_note_cache.ts +7 -28
  286. package/src/contract_function_simulator/index.ts +48 -13
  287. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +12 -24
  288. package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
  289. package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
  290. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +1 -1
  291. package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
  292. package/src/contract_function_simulator/noir-structs/fact_collection.ts +64 -0
  293. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +20 -46
  294. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +13 -60
  295. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +2 -2
  296. package/src/contract_function_simulator/noir-structs/option.ts +17 -11
  297. package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
  298. package/src/contract_function_simulator/noir-structs/pending_tagged_log.ts +12 -0
  299. package/src/contract_function_simulator/noir-structs/provided_secret.ts +4 -26
  300. package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +66 -0
  301. package/src/contract_function_simulator/noir-structs/resolved_tx.ts +19 -0
  302. package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +16 -0
  303. package/src/contract_function_simulator/noir-structs/utility_context.ts +5 -17
  304. package/src/contract_function_simulator/oracle/acir_callback.ts +154 -0
  305. package/src/contract_function_simulator/oracle/index.ts +1 -15
  306. package/src/contract_function_simulator/oracle/interfaces.ts +1 -2
  307. package/src/contract_function_simulator/oracle/legacy_oracle_registry.ts +147 -0
  308. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +6 -21
  309. package/src/contract_function_simulator/oracle/oracle_registry.ts +172 -47
  310. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +814 -315
  311. package/src/contract_function_simulator/oracle/private_execution.ts +2 -3
  312. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +167 -30
  313. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +399 -135
  314. package/src/contract_function_simulator/transient_array_service.ts +91 -0
  315. package/src/debug/pxe_debug_utils.ts +1 -1
  316. package/src/entrypoints/client/bundle/index.ts +1 -0
  317. package/src/entrypoints/client/bundle/utils.ts +24 -5
  318. package/src/entrypoints/client/lazy/index.ts +1 -0
  319. package/src/entrypoints/client/lazy/utils.ts +24 -5
  320. package/src/entrypoints/client/store.ts +54 -0
  321. package/src/entrypoints/pxe_creation_options.ts +8 -2
  322. package/src/entrypoints/server/index.ts +6 -2
  323. package/src/entrypoints/server/store.ts +47 -0
  324. package/src/entrypoints/server/utils.ts +31 -9
  325. package/src/error_enriching.ts +27 -11
  326. package/src/hooks/execution_hooks.ts +32 -12
  327. package/src/hooks/index.ts +8 -2
  328. package/src/hooks/resolve_custom_request.ts +24 -0
  329. package/src/hooks/resolve_tagging_secret_strategy.ts +60 -0
  330. package/src/logs/log_service.ts +100 -37
  331. package/src/messages/{message_context_service.ts → tx_resolver_service.ts} +16 -9
  332. package/src/notes/note_service.ts +1 -1
  333. package/src/oracle_version.ts +5 -5
  334. package/src/private_kernel/batch_planner.ts +0 -1
  335. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +11 -1
  336. package/src/private_kernel/hints/test_utils.ts +1 -1
  337. package/src/private_kernel/private_kernel_execution_prover.ts +112 -56
  338. package/src/private_kernel/private_kernel_oracle.ts +23 -4
  339. package/src/pxe.ts +328 -159
  340. package/src/storage/allowed_scopes.ts +14 -0
  341. package/src/storage/anchor_block_store/anchor_block_store.ts +8 -6
  342. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +6 -6
  343. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +1 -1
  344. package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
  345. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +12 -12
  346. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +9 -15
  347. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +24 -4
  348. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +11 -3
  349. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +12 -4
  350. package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
  351. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +29 -9
  352. package/src/storage/backwards_compatibility_tests/schema_tests.ts +141 -50
  353. package/src/storage/capsule_store/capsule_service.ts +8 -13
  354. package/src/storage/contract_store/contract_store.ts +86 -93
  355. package/src/storage/fact_store/fact_service.ts +69 -0
  356. package/src/storage/fact_store/fact_store.ts +487 -0
  357. package/src/storage/fact_store/fact_store_keys.ts +75 -0
  358. package/src/storage/fact_store/index.ts +15 -0
  359. package/src/storage/fact_store/origin_state.ts +84 -0
  360. package/src/storage/fact_store/stored_fact.ts +80 -0
  361. package/src/storage/index.ts +2 -1
  362. package/src/storage/metadata.ts +1 -1
  363. package/src/storage/note_store/note_store.ts +226 -187
  364. package/src/storage/note_store/stored_note.ts +5 -27
  365. package/src/storage/open_pxe_stores.ts +6 -3
  366. package/src/storage/private_event_store/private_event_store.ts +49 -55
  367. package/src/storage/store_identity.ts +72 -0
  368. package/src/storage/tagging_store/index.ts +1 -1
  369. package/src/storage/tagging_store/sender_tagging_store.ts +62 -15
  370. package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
  371. package/src/tagging/constants.ts +30 -10
  372. package/src/tagging/index.ts +1 -1
  373. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +148 -30
  374. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +1 -1
  375. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +6 -2
  376. package/src/tagging/testing/tag_query_test_utils.ts +11 -0
  377. package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -89
  378. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
  379. package/dest/contract_function_simulator/oracle/oracle.js +0 -552
  380. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +0 -6
  381. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +0 -1
  382. package/dest/contract_function_simulator/proxied_contract_data_source.js +0 -51
  383. package/dest/contract_sync/contract_sync_service.d.ts +0 -42
  384. package/dest/contract_sync/contract_sync_service.d.ts.map +0 -1
  385. package/dest/contract_sync/helpers.d.ts +0 -27
  386. package/dest/contract_sync/helpers.d.ts.map +0 -1
  387. package/dest/contract_sync/helpers.js +0 -53
  388. package/dest/messages/message_context_service.d.ts +0 -17
  389. package/dest/messages/message_context_service.d.ts.map +0 -1
  390. package/dest/storage/tagging_store/sender_address_book_store.d.ts +0 -14
  391. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +0 -1
  392. package/dest/storage/tagging_store/sender_address_book_store.js +0 -36
  393. package/src/contract_function_simulator/oracle/oracle.ts +0 -711
  394. package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -60
  395. package/src/contract_sync/helpers.ts +0 -86
  396. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderAddressBookStore.json +0 -16
  397. package/src/storage/tagging_store/sender_address_book_store.ts +0 -48
@@ -1,13 +1,17 @@
1
1
  import { BBBundlePrivateKernelProver } from '@aztec/bb-prover/client/bundle';
2
2
  import { createLogger } from '@aztec/foundation/log';
3
- import { createStore } from '@aztec/kv-store/lmdb-v2';
3
+ import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
4
4
  import { BundledProtocolContractsProvider } from '@aztec/protocol-contracts/providers/bundle';
5
- import { MemoryCircuitRecorder, SimulatorRecorderWrapper, WASMSimulator } from '@aztec/simulator/client';
5
+ import { WASMSimulator } from '@aztec/simulator/client';
6
+ import { MemoryCircuitRecorder, SimulatorRecorderWrapper } from '@aztec/simulator/server';
6
7
  import { FileCircuitRecorder } from '@aztec/simulator/testing';
8
+ import { getStandardAuthRegistry } from '@aztec/standard-contracts/auth-registry';
9
+ import { getStandardHandshakeRegistry } from '@aztec/standard-contracts/handshake-registry';
7
10
  import { getStandardMultiCallEntrypoint } from '@aztec/standard-contracts/multi-call-entrypoint';
8
11
  import { PXE } from '../../pxe.js';
9
12
  import { PXE_DATA_SCHEMA_VERSION } from '../../storage/index.js';
10
13
  import { isPrivateKernelProver } from '../pxe_creation_options.js';
14
+ import { openStore } from './store.js';
11
15
  export async function createPXE(aztecNode, config, options = {
12
16
  loggers: {}
13
17
  }) {
@@ -33,7 +37,12 @@ export async function createPXE(aztecNode, config, options = {
33
37
  const storeLogger = loggers.store ?? createLogger('pxe:data:lmdb', {
34
38
  actor
35
39
  });
36
- options.store = await createStore('pxe_data', PXE_DATA_SCHEMA_VERSION, configWithContracts, storeLogger.getBindings());
40
+ options.store = configWithContracts.dataDirectory ? await openStore('pxe_data', PXE_DATA_SCHEMA_VERSION, {
41
+ dataDirectory: configWithContracts.dataDirectory,
42
+ dataStoreMapSizeKb: configWithContracts.dataStoreMapSizeKb,
43
+ l1ChainId,
44
+ rollupAddress: l1ContractAddresses.rollupAddress
45
+ }, storeLogger.getBindings()) : await openTmpStore('pxe_data', true, configWithContracts.dataStoreMapSizeKb, undefined, storeLogger.getBindings());
37
46
  }
38
47
  const proverLogger = loggers.prover ?? createLogger('pxe:bb:native', {
39
48
  actor
@@ -50,7 +59,9 @@ export async function createPXE(aztecNode, config, options = {
50
59
  const protocolContractsProvider = new BundledProtocolContractsProvider();
51
60
  const preloadedContractsProvider = options.preloadedContractsProvider ?? {
52
61
  getPreloadedContracts: async ()=>[
53
- await getStandardMultiCallEntrypoint()
62
+ await getStandardMultiCallEntrypoint(),
63
+ await getStandardAuthRegistry(),
64
+ await getStandardHandshakeRegistry()
54
65
  ]
55
66
  };
56
67
  const pxeLogger = loggers.pxe ?? createLogger('pxe:service', {
@@ -58,6 +69,7 @@ export async function createPXE(aztecNode, config, options = {
58
69
  });
59
70
  const pxe = await PXE.create({
60
71
  node: aztecNode,
72
+ nodeDebug: options.nodeDebug,
61
73
  store: options.store,
62
74
  proofCreator: prover,
63
75
  simulator,
@@ -1,11 +1,13 @@
1
1
  import type { Logger } from '@aztec/foundation/log';
2
2
  import { type SimulationError } from '@aztec/stdlib/errors';
3
+ import type { BlockHeader } from '@aztec/stdlib/tx';
4
+ import type { ContractClassService } from './contract/contract_class_service.js';
3
5
  import type { ContractStore } from './storage/contract_store/contract_store.js';
4
6
  /**
5
7
  * Adds contract and function names to a simulation error, if they
6
8
  * can be found in the PXE database
7
9
  * @param err - The error to enrich.
8
10
  */
9
- export declare function enrichSimulationError(err: SimulationError, contractStore: ContractStore, logger: Logger): Promise<void>;
10
- export declare function enrichPublicSimulationError(err: SimulationError, contractStore: ContractStore, logger: Logger): Promise<void>;
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JfZW5yaWNoaW5nLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZXJyb3JfZW5yaWNoaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSXBELE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBNkIsTUFBTSxzQkFBc0IsQ0FBQztBQUV2RixPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUVoRjs7OztHQUlHO0FBQ0gsd0JBQXNCLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFtRDdHO0FBRUQsd0JBQXNCLDJCQUEyQixDQUFDLEdBQUcsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkF3Q25IIn0=
11
+ export declare function enrichSimulationError(err: SimulationError, contractStore: ContractStore, contractClassService: ContractClassService, anchorHeader: BlockHeader, logger: Logger): Promise<void>;
12
+ export declare function enrichPublicSimulationError(err: SimulationError, contractStore: ContractStore, contractClassService: ContractClassService, anchorHeader: BlockHeader, logger: Logger): Promise<void>;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JfZW5yaWNoaW5nLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZXJyb3JfZW5yaWNoaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSXBELE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBNkIsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RixPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pGLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRWhGOzs7O0dBSUc7QUFDSCx3QkFBc0IscUJBQXFCLENBQ3pDLEdBQUcsRUFBRSxlQUFlLEVBQ3BCLGFBQWEsRUFBRSxhQUFhLEVBQzVCLG9CQUFvQixFQUFFLG9CQUFvQixFQUMxQyxZQUFZLEVBQUUsV0FBVyxFQUN6QixNQUFNLEVBQUUsTUFBTSxpQkFxRGY7QUFFRCx3QkFBc0IsMkJBQTJCLENBQy9DLEdBQUcsRUFBRSxlQUFlLEVBQ3BCLGFBQWEsRUFBRSxhQUFhLEVBQzVCLG9CQUFvQixFQUFFLG9CQUFvQixFQUMxQyxZQUFZLEVBQUUsV0FBVyxFQUN6QixNQUFNLEVBQUUsTUFBTSxpQkEwQ2YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"error_enriching.d.ts","sourceRoot":"","sources":["../src/error_enriching.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,EAAE,KAAK,eAAe,EAA6B,MAAM,sBAAsB,CAAC;AAEvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAEhF;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,iBAmD7G;AAED,wBAAsB,2BAA2B,CAAC,GAAG,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,iBAwCnH"}
1
+ {"version":3,"file":"error_enriching.d.ts","sourceRoot":"","sources":["../src/error_enriching.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,EAAE,KAAK,eAAe,EAA6B,MAAM,sBAAsB,CAAC;AACvF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAEhF;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,eAAe,EACpB,aAAa,EAAE,aAAa,EAC5B,oBAAoB,EAAE,oBAAoB,EAC1C,YAAY,EAAE,WAAW,EACzB,MAAM,EAAE,MAAM,iBAqDf;AAED,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,eAAe,EACpB,aAAa,EAAE,aAAa,EAC5B,oBAAoB,EAAE,oBAAoB,EAC1C,YAAY,EAAE,WAAW,EACzB,MAAM,EAAE,MAAM,iBA0Cf"}
@@ -6,7 +6,7 @@ import { isNoirCallStackUnresolved } from '@aztec/stdlib/errors';
6
6
  * Adds contract and function names to a simulation error, if they
7
7
  * can be found in the PXE database
8
8
  * @param err - The error to enrich.
9
- */ export async function enrichSimulationError(err, contractStore, logger) {
9
+ */ export async function enrichSimulationError(err, contractStore, contractClassService, anchorHeader, logger) {
10
10
  // Maps contract addresses to the set of function selectors that were in error.
11
11
  // Map and Set do reference equality for their keys instead of value equality, so we store the string
12
12
  // representation to get e.g. different contract address objects with the same address value to match.
@@ -23,13 +23,14 @@ import { isNoirCallStackUnresolved } from '@aztec/stdlib/errors';
23
23
  await Promise.all([
24
24
  ...mentionedFunctions.entries()
25
25
  ].map(async ([contractAddress, fnSelectors])=>{
26
- const parsedContractAddress = AztecAddress.fromString(contractAddress);
27
- const contract = await contractStore.getContract(parsedContractAddress);
28
- if (contract) {
29
- err.enrichWithContractName(parsedContractAddress, contract.name);
26
+ const parsedContractAddress = AztecAddress.fromStringUnsafe(contractAddress);
27
+ const classId = await contractClassService.getCurrentClassId(parsedContractAddress, anchorHeader);
28
+ const artifact = classId && await contractStore.getContractArtifact(classId);
29
+ if (artifact) {
30
+ err.enrichWithContractName(parsedContractAddress, artifact.name);
30
31
  // Map from function selector to function name. It uses a stringified key for the same reason as mentionedFunctions.
31
32
  const selectorToNameMap = new Map();
32
- await Promise.all(contract.functions.map(async (fn)=>{
33
+ await Promise.all(artifact.functions.map(async (fn)=>{
33
34
  const selector = await FunctionSelector.fromNameAndParameters(fn);
34
35
  selectorToNameMap.set(selector.toString(), fn.name);
35
36
  }));
@@ -37,7 +38,7 @@ import { isNoirCallStackUnresolved } from '@aztec/stdlib/errors';
37
38
  if (selectorToNameMap.has(fnSelector.toString())) {
38
39
  err.enrichWithFunctionName(parsedContractAddress, fnSelector, selectorToNameMap.get(fnSelector.toString()));
39
40
  } else {
40
- logger.warn(`Could not find function artifact in contract ${contract.name} for function '${fnSelector}' when enriching error callstack`);
41
+ logger.warn(`Could not find function artifact in contract ${artifact.name} for function '${fnSelector}' when enriching error callstack`);
41
42
  }
42
43
  }
43
44
  } else {
@@ -45,13 +46,14 @@ import { isNoirCallStackUnresolved } from '@aztec/stdlib/errors';
45
46
  }
46
47
  }));
47
48
  }
48
- export async function enrichPublicSimulationError(err, contractStore, logger) {
49
+ export async function enrichPublicSimulationError(err, contractStore, contractClassService, anchorHeader, logger) {
49
50
  const callStack = err.getCallStack();
50
51
  const originalFailingFunction = callStack[callStack.length - 1];
51
52
  if (!originalFailingFunction) {
52
53
  throw new Error(`Original failing function not found when enriching public simulation, missing callstack`);
53
54
  }
54
- const artifact = await contractStore.getPublicFunctionArtifact(originalFailingFunction.contractAddress);
55
+ const classId = await contractClassService.getCurrentClassId(originalFailingFunction.contractAddress, anchorHeader);
56
+ const artifact = classId && await contractStore.getPublicFunctionArtifact(classId);
55
57
  if (!artifact) {
56
58
  throw new Error(`Artifact not found when enriching public simulation error. Contract address: ${originalFailingFunction.contractAddress}.`);
57
59
  }
@@ -59,7 +61,7 @@ export async function enrichPublicSimulationError(err, contractStore, logger) {
59
61
  if (assertionMessage) {
60
62
  err.setOriginalMessage(err.getOriginalMessage() + `${assertionMessage}`);
61
63
  }
62
- const debugInfo = await contractStore.getPublicFunctionDebugMetadata(originalFailingFunction.contractAddress);
64
+ const debugInfo = await contractStore.getPublicFunctionDebugMetadata(classId);
63
65
  const noirCallStack = err.getNoirCallStack();
64
66
  if (debugInfo) {
65
67
  if (isNoirCallStackUnresolved(noirCallStack)) {
@@ -72,6 +74,6 @@ export async function enrichPublicSimulationError(err, contractStore, logger) {
72
74
  logger.warn(`Could not resolve noir call stack for ${originalFailingFunction.contractAddress.toString()}:${originalFailingFunction.functionName?.toString() ?? ''}: ${err}`);
73
75
  }
74
76
  }
75
- await enrichSimulationError(err, contractStore, logger);
77
+ await enrichSimulationError(err, contractStore, contractClassService, anchorHeader, logger);
76
78
  }
77
79
  }
@@ -1,15 +1,17 @@
1
1
  import type { AuthorizeUtilityCall } from './authorize_utility_call.js';
2
+ import type { ResolveCustomRequest } from './resolve_custom_request.js';
3
+ import type { ResolveTaggingSecretStrategy } from './resolve_tagging_secret_strategy.js';
2
4
  /**
3
- * Hooks that PXE invokes during client-side simulation to gate operations that the protocol
5
+ * Hooks that PXE invokes during client-side simulation to gate or steer operations that the protocol
4
6
  * does not restrict on its own. They give the wallet a chance to apply custom policies (e.g.
5
7
  * prompting the user, consulting a dynamic allowlist, or inspecting call arguments) before the
6
- * execution proceeds.
8
+ * execution proceeds. All hooks are optional, and when a hook is absent PXE applies a safe default.
7
9
  *
8
- * For example, {@link authorizeUtilityCall} is called whenever a utility function makes a
9
- * cross-contract call. A call made by a malicious contract could leak private information, so the
10
- * hook lets the wallet decide, per-call, whether to allow it. A static allowlist would not work
11
- * here because neither the app nor the wallet can predict ahead of time which contracts will be
12
- * invoked during execution.
10
+ * For example, {@link authorizeUtilityCall} is called whenever a utility function makes a cross-contract call. A call
11
+ * made by a malicious contract could leak private information, so the hook lets the wallet decide, per-call, whether
12
+ * to allow it. A static allowlist would not work here because neither the app nor the wallet can predict ahead of
13
+ * time which contracts will be invoked during execution. Calls to standard contracts (such as the HandshakeRegistry)
14
+ * bypass this hook and are always authorized. When the hook is absent, cross-contract utility calls are denied.
13
15
  *
14
16
  * Note: hooks are unrelated to authentication witnesses (authwits). Authwits are an on-chain
15
17
  * mechanism where a contract verifies that a caller was authorized by a specific account; hooks
@@ -26,17 +28,35 @@ import type { AuthorizeUtilityCall } from './authorize_utility_call.js';
26
28
  * ? { authorized: true }
27
29
  * : { authorized: false, reason: 'Unknown target' };
28
30
  * },
31
+ * // Apply per-recipient policy: reach a known contact via their address keys (no onchain trace) and use a
32
+ * // non-interactive handshake for everyone else.
33
+ * resolveTaggingSecretStrategy: async ({ recipient }) =>
34
+ * knownContacts.has(recipient.toString())
35
+ * ? { type: 'address-derived' }
36
+ * : { type: 'non-interactive-handshake' },
29
37
  * },
30
38
  * });
31
39
  * ```
32
40
  */
33
41
  export interface ExecutionHooks {
34
- /** Called when a contract attempts a cross-contract utility call. */
35
- authorizeUtilityCall: AuthorizeUtilityCall;
42
+ /** Called when a contract attempts a cross-contract utility call. Calls are denied when absent. */
43
+ authorizeUtilityCall?: AuthorizeUtilityCall;
44
+ /**
45
+ * Resolves a message's tagging secret when none is already established for the sender/recipient pair, letting the
46
+ * wallet apply per-recipient policy. PXE applies a default when absent.
47
+ * See {@link ResolveTaggingSecretStrategy} for the request shape and defaults.
48
+ */
49
+ resolveTaggingSecretStrategy?: ResolveTaggingSecretStrategy;
50
+ /**
51
+ * Resolves a custom, caller-defined request a circuit cannot serve from local state. Any contract can issue one, so
52
+ * an implementor should verify both the request `kind` and the issuing contract (its address and class ID) before
53
+ * fulfilling it. Rejected when absent; see {@link ResolveCustomRequest}.
54
+ */
55
+ resolveCustomRequest?: ResolveCustomRequest;
36
56
  }
37
57
  /**
38
58
  * Builds an {@link ExecutionHooks} from individually-constructed hook callbacks. Returns `undefined`
39
59
  * when every field is absent, so callers can unconditionally pass the result as `hooks`.
40
60
  */
41
- export declare function composeHooks(partial: Partial<ExecutionHooks>): ExecutionHooks | undefined;
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uX2hvb2tzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvZXhlY3V0aW9uX2hvb2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFeEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCRztBQUNILE1BQU0sV0FBVyxjQUFjO0lBQzdCLHFFQUFxRTtJQUNyRSxvQkFBb0IsRUFBRSxvQkFBb0IsQ0FBQztDQUM1QztBQUVEOzs7R0FHRztBQUNILHdCQUFnQixZQUFZLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxjQUFjLEdBQUcsU0FBUyxDQUt6RiJ9
61
+ export declare function composeHooks(hooks: ExecutionHooks): ExecutionHooks | undefined;
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uX2hvb2tzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvZXhlY3V0aW9uX2hvb2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEUsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RSxPQUFPLEtBQUssRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXpGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQ0c7QUFDSCxNQUFNLFdBQVcsY0FBYztJQUM3QixtR0FBbUc7SUFDbkcsb0JBQW9CLENBQUMsRUFBRSxvQkFBb0IsQ0FBQztJQUM1Qzs7OztPQUlHO0lBQ0gsNEJBQTRCLENBQUMsRUFBRSw0QkFBNEIsQ0FBQztJQUM1RDs7OztPQUlHO0lBQ0gsb0JBQW9CLENBQUMsRUFBRSxvQkFBb0IsQ0FBQztDQUM3QztBQUVEOzs7R0FHRztBQUNILHdCQUFnQixZQUFZLENBQUMsS0FBSyxFQUFFLGNBQWMsR0FBRyxjQUFjLEdBQUcsU0FBUyxDQUs5RSJ9
@@ -1 +1 @@
1
- {"version":3,"file":"execution_hooks.d.ts","sourceRoot":"","sources":["../../src/hooks/execution_hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,WAAW,cAAc;IAC7B,qEAAqE;IACrE,oBAAoB,EAAE,oBAAoB,CAAC;CAC5C;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,GAAG,SAAS,CAKzF"}
1
+ {"version":3,"file":"execution_hooks.d.ts","sourceRoot":"","sources":["../../src/hooks/execution_hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAEzF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,WAAW,cAAc;IAC7B,mGAAmG;IACnG,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C;;;;OAIG;IACH,4BAA4B,CAAC,EAAE,4BAA4B,CAAC;IAC5D;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,GAAG,SAAS,CAK9E"}
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Builds an {@link ExecutionHooks} from individually-constructed hook callbacks. Returns `undefined`
3
3
  * when every field is absent, so callers can unconditionally pass the result as `hooks`.
4
- */ export function composeHooks(partial) {
5
- if (Object.values(partial).every((v)=>v === undefined)) {
4
+ */ export function composeHooks(hooks) {
5
+ if (Object.values(hooks).every((v)=>v === undefined)) {
6
6
  return undefined;
7
7
  }
8
- return partial;
8
+ return hooks;
9
9
  }
@@ -1,4 +1,5 @@
1
1
  export type { AuthorizeUtilityCall, UtilityCallAuthorizationRequest, UtilityCallAuthorizationResponse, } from './authorize_utility_call.js';
2
- export type { ExecutionHooks } from './execution_hooks.js';
3
- export { composeHooks } from './execution_hooks.js';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLEVBQ1Ysb0JBQW9CLEVBQ3BCLCtCQUErQixFQUMvQixnQ0FBZ0MsR0FDakMsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDIn0=
2
+ export { type ExecutionHooks, composeHooks } from './execution_hooks.js';
3
+ export { type CustomRequest, type ResolveCustomRequest } from './resolve_custom_request.js';
4
+ export { DEFAULT_TAGGING_SECRET_STRATEGY, type ResolveTaggingSecretStrategy, type TaggingSecretStrategy, type TaggingSecretStrategyRequest, } from './resolve_tagging_secret_strategy.js';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLEVBQ1Ysb0JBQW9CLEVBQ3BCLCtCQUErQixFQUMvQixnQ0FBZ0MsR0FDakMsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsS0FBSyxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekUsT0FBTyxFQUFFLEtBQUssYUFBYSxFQUFFLEtBQUssb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RixPQUFPLEVBQ0wsK0JBQStCLEVBQy9CLEtBQUssNEJBQTRCLEVBQ2pDLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssNEJBQTRCLEdBQ2xDLE1BQU0sc0NBQXNDLENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,oBAAoB,EACpB,+BAA+B,EAC/B,gCAAgC,GACjC,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,oBAAoB,EACpB,+BAA+B,EAC/B,gCAAgC,GACjC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,KAAK,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAC5F,OAAO,EACL,+BAA+B,EAC/B,KAAK,4BAA4B,EACjC,KAAK,qBAAqB,EAC1B,KAAK,4BAA4B,GAClC,MAAM,sCAAsC,CAAC"}
@@ -1 +1,2 @@
1
1
  export { composeHooks } from './execution_hooks.js';
2
+ export { DEFAULT_TAGGING_SECRET_STRATEGY } from './resolve_tagging_secret_strategy.js';
@@ -0,0 +1,23 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
+ /**
4
+ * A custom, caller-defined request resolved via the {@link ResolveCustomRequest} hook. It carries no fixed meaning:
5
+ * `kind` selects the request type so one hook can serve many such types, and `payload` holds the opaque,
6
+ * request-specific arguments. The resolver answers by whatever means it needs (local state, a third party,
7
+ * offchain data).
8
+ */
9
+ export type CustomRequest = {
10
+ /** The address of the contract issuing the request. */
11
+ contractAddress: AztecAddress;
12
+ /** The issuing contract's class ID, so resolvers can apply class-level (not just per-address) policy. */
13
+ contractClassId: Fr;
14
+ /** Discriminates the request type, letting one hook serve many such types. */
15
+ kind: Fr;
16
+ /** Opaque, request-specific arguments. */
17
+ payload: Fr[];
18
+ };
19
+ /**
20
+ * Hook resolving a {@link CustomRequest}. The resolver produces the response however it needs to.
21
+ */
22
+ export type ResolveCustomRequest = (request: CustomRequest) => Promise<Fr[]>;
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZV9jdXN0b21fcmVxdWVzdC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3Jlc29sdmVfY3VzdG9tX3JlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFaEU7Ozs7O0dBS0c7QUFDSCxNQUFNLE1BQU0sYUFBYSxHQUFHO0lBQzFCLHVEQUF1RDtJQUN2RCxlQUFlLEVBQUUsWUFBWSxDQUFDO0lBQzlCLHlHQUF5RztJQUN6RyxlQUFlLEVBQUUsRUFBRSxDQUFDO0lBQ3BCLDhFQUE4RTtJQUM5RSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ1QsMENBQTBDO0lBQzFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQztDQUNmLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sTUFBTSxvQkFBb0IsR0FBRyxDQUFDLE9BQU8sRUFBRSxhQUFhLEtBQUssT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve_custom_request.d.ts","sourceRoot":"","sources":["../../src/hooks/resolve_custom_request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,uDAAuD;IACvD,eAAe,EAAE,YAAY,CAAC;IAC9B,yGAAyG;IACzG,eAAe,EAAE,EAAE,CAAC;IACpB,8EAA8E;IAC9E,IAAI,EAAE,EAAE,CAAC;IACT,0CAA0C;IAC1C,OAAO,EAAE,EAAE,EAAE,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ /**
2
+ * Hook resolving a {@link CustomRequest}. The resolver produces the response however it needs to.
3
+ */ export { };
@@ -0,0 +1,50 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import type { Point } from '@aztec/foundation/curves/grumpkin';
3
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+ import type { AppTaggingSecretKind } from '@aztec/stdlib/logs';
5
+ /**
6
+ * How a message's tagging secret is chosen: the wallet's strategy, returned by the `resolveTaggingSecretStrategy` hook
7
+ * when no onchain handshake has been registered for the sender/recipient pair. This is intent (plus, for an arbitrary
8
+ * secret, the raw material); PXE resolves it into the secret it hands the contract.
9
+ */
10
+ export type TaggingSecretStrategy = {
11
+ /** Establish a fresh non-interactive handshake via the onchain registry; reveals the recipient onchain. */
12
+ type: 'non-interactive-handshake';
13
+ } | {
14
+ /**
15
+ * Establish a fresh interactive handshake via the onchain registry. Reveals nothing about the recipient
16
+ * onchain, but requires the recipient to answer the registry's signed-authorization request (served through
17
+ * the {@link ResolveCustomRequest} hook), so the send fails when it cannot be served.
18
+ */
19
+ type: 'interactive-handshake';
20
+ } | {
21
+ /** Derive the secret from the sender's and recipient's address keys via ECDH. PXE computes and silos it. */
22
+ type: 'address-derived';
23
+ } | {
24
+ /**
25
+ * A raw shared secret point the two parties already share offchain (e.g. coordinated out-of-band), supplied by
26
+ * the wallet. PXE app-silos it before use. Only sound for unconstrained delivery, since nothing onchain proves
27
+ * the recipient knows it.
28
+ */
29
+ type: 'arbitrary-secret';
30
+ /** The raw (un-siloed) shared secret point to derive the tag from. */
31
+ secret: Point;
32
+ };
33
+ /** The strategy PXE applies to both delivery modes when no `resolveTaggingSecretStrategy` hook is configured. */
34
+ export declare const DEFAULT_TAGGING_SECRET_STRATEGY: TaggingSecretStrategy;
35
+ /** Information about the message delivery requesting a tagging secret strategy. */
36
+ export type TaggingSecretStrategyRequest = {
37
+ contractAddress: AztecAddress;
38
+ /**
39
+ * The contract class ID of the executing contract, so wallets can apply class-level (not just per-address) policy.
40
+ */
41
+ contractClassId: Fr;
42
+ sender: AztecAddress;
43
+ recipient: AztecAddress;
44
+ deliveryMode: AppTaggingSecretKind;
45
+ };
46
+ /**
47
+ * Hook returning the {@link TaggingSecretStrategy} for an outgoing message.
48
+ */
49
+ export type ResolveTaggingSecretStrategy = (request: TaggingSecretStrategyRequest) => Promise<TaggingSecretStrategy>;
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZV90YWdnaW5nX3NlY3JldF9zdHJhdGVneS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3Jlc29sdmVfdGFnZ2luZ19zZWNyZXRfc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDL0QsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUsvRDs7OztHQUlHO0FBQ0gsTUFBTSxNQUFNLHFCQUFxQixHQUM3QjtJQUNFLDJHQUEyRztJQUMzRyxJQUFJLEVBQUUsMkJBQTJCLENBQUM7Q0FDbkMsR0FDRDtJQUNFOzs7O09BSUc7SUFDSCxJQUFJLEVBQUUsdUJBQXVCLENBQUM7Q0FDL0IsR0FDRDtJQUNFLDRHQUE0RztJQUM1RyxJQUFJLEVBQUUsaUJBQWlCLENBQUM7Q0FDekIsR0FDRDtJQUNFOzs7O09BSUc7SUFDSCxJQUFJLEVBQUUsa0JBQWtCLENBQUM7SUFDekIsc0VBQXNFO0lBQ3RFLE1BQU0sRUFBRSxLQUFLLENBQUM7Q0FDZixDQUFDO0FBRU4saUhBQWlIO0FBQ2pILGVBQU8sTUFBTSwrQkFBK0IsRUFBRSxxQkFBNkQsQ0FBQztBQUU1RyxtRkFBbUY7QUFDbkYsTUFBTSxNQUFNLDRCQUE0QixHQUFHO0lBQ3pDLGVBQWUsRUFBRSxZQUFZLENBQUM7SUFDOUI7O09BRUc7SUFDSCxlQUFlLEVBQUUsRUFBRSxDQUFDO0lBQ3BCLE1BQU0sRUFBRSxZQUFZLENBQUM7SUFDckIsU0FBUyxFQUFFLFlBQVksQ0FBQztJQUN4QixZQUFZLEVBQUUsb0JBQW9CLENBQUM7Q0FDcEMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxNQUFNLDRCQUE0QixHQUFHLENBQUMsT0FBTyxFQUFFLDRCQUE0QixLQUFLLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve_tagging_secret_strategy.d.ts","sourceRoot":"","sources":["../../src/hooks/resolve_tagging_secret_strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAK/D;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAC7B;IACE,2GAA2G;IAC3G,IAAI,EAAE,2BAA2B,CAAC;CACnC,GACD;IACE;;;;OAIG;IACH,IAAI,EAAE,uBAAuB,CAAC;CAC/B,GACD;IACE,4GAA4G;IAC5G,IAAI,EAAE,iBAAiB,CAAC;CACzB,GACD;IACE;;;;OAIG;IACH,IAAI,EAAE,kBAAkB,CAAC;IACzB,sEAAsE;IACtE,MAAM,EAAE,KAAK,CAAC;CACf,CAAC;AAEN,iHAAiH;AACjH,eAAO,MAAM,+BAA+B,EAAE,qBAA6D,CAAC;AAE5G,mFAAmF;AACnF,MAAM,MAAM,4BAA4B,GAAG;IACzC,eAAe,EAAE,YAAY,CAAC;IAC9B;;OAEG;IACH,eAAe,EAAE,EAAE,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,YAAY,CAAC;IACxB,YAAY,EAAE,oBAAoB,CAAC;CACpC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG,CAAC,OAAO,EAAE,4BAA4B,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** The strategy PXE applies to both delivery modes when no `resolveTaggingSecretStrategy` hook is configured. */ export const DEFAULT_TAGGING_SECRET_STRATEGY = {
2
+ type: 'non-interactive-handshake'
3
+ };
@@ -3,13 +3,14 @@ import type { KeyStore } from '@aztec/key-store';
3
3
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
4
  import type { L2TipsProvider } from '@aztec/stdlib/block';
5
5
  import type { AztecNode } from '@aztec/stdlib/interfaces/server';
6
- import { AppTaggingSecret, PendingTaggedLog } from '@aztec/stdlib/logs';
6
+ import { AppTaggingSecret } from '@aztec/stdlib/logs';
7
7
  import type { BlockHeader } from '@aztec/stdlib/tx';
8
8
  import { type LogRetrievalRequest } from '../contract_function_simulator/noir-structs/log_retrieval_request.js';
9
- import { LogRetrievalResponse } from '../contract_function_simulator/noir-structs/log_retrieval_response.js';
9
+ import type { LogRetrievalResponse } from '../contract_function_simulator/noir-structs/log_retrieval_response.js';
10
+ import type { PendingTaggedLog } from '../contract_function_simulator/noir-structs/pending_tagged_log.js';
10
11
  import { AddressStore } from '../storage/address_store/address_store.js';
11
12
  import type { RecipientTaggingStore } from '../storage/tagging_store/recipient_tagging_store.js';
12
- import type { SenderAddressBookStore } from '../storage/tagging_store/sender_address_book_store.js';
13
+ import type { TaggingSecretSourcesStore } from '../storage/tagging_store/tagging_secret_sources_store.js';
13
14
  export declare class LogService {
14
15
  #private;
15
16
  private readonly aztecNode;
@@ -17,13 +18,14 @@ export declare class LogService {
17
18
  private readonly l2TipsStore;
18
19
  private readonly keyStore;
19
20
  private readonly recipientTaggingStore;
20
- private readonly senderAddressBookStore;
21
+ private readonly taggingSecretSourcesStore;
21
22
  private readonly addressStore;
23
+ private readonly scopes;
22
24
  private readonly jobId;
23
25
  private log;
24
- constructor(aztecNode: AztecNode, anchorBlockHeader: BlockHeader, l2TipsStore: L2TipsProvider, keyStore: KeyStore, recipientTaggingStore: RecipientTaggingStore, senderAddressBookStore: SenderAddressBookStore, addressStore: AddressStore, jobId: string, bindings?: LoggerBindings);
26
+ constructor(aztecNode: AztecNode, anchorBlockHeader: BlockHeader, l2TipsStore: L2TipsProvider, keyStore: KeyStore, recipientTaggingStore: RecipientTaggingStore, taggingSecretSourcesStore: TaggingSecretSourcesStore, addressStore: AddressStore, scopes: AztecAddress[], jobId: string, bindings?: LoggerBindings);
25
27
  /** Fetches all logs matching each request's tag, returning an array of log arrays (one per request). */
26
28
  fetchLogsByTag(contractAddress: AztecAddress, logRetrievalRequests: LogRetrievalRequest[]): Promise<LogRetrievalResponse[][]>;
27
29
  fetchTaggedLogs(contractAddress: AztecAddress, recipient: AztecAddress, providedSecrets: AppTaggingSecret[]): Promise<PendingTaggedLog[]>;
28
30
  }
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nX3NlcnZpY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2dzL2xvZ19zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RixPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQWEsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFrQixnQkFBZ0IsRUFBYSxNQUFNLG9CQUFvQixDQUFDO0FBQ25HLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXBELE9BQU8sRUFDTCxLQUFLLG1CQUFtQixFQUV6QixNQUFNLHNFQUFzRSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVFQUF1RSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RSxPQUFPLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2pHLE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFXcEcscUJBQWEsVUFBVTs7SUFJbkIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTO0lBQzFCLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCO0lBQ2xDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVztJQUM1QixPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVE7SUFDekIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUI7SUFDdEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxzQkFBc0I7SUFDdkMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZO0lBQzdCLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSztJQVZ4QixPQUFPLENBQUMsR0FBRyxDQUFTO0lBRXBCLFlBQ21CLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLGlCQUFpQixFQUFFLFdBQVcsRUFDOUIsV0FBVyxFQUFFLGNBQWMsRUFDM0IsUUFBUSxFQUFFLFFBQVEsRUFDbEIscUJBQXFCLEVBQUUscUJBQXFCLEVBQzVDLHNCQUFzQixFQUFFLHNCQUFzQixFQUM5QyxZQUFZLEVBQUUsWUFBWSxFQUMxQixLQUFLLEVBQUUsTUFBTSxFQUM5QixRQUFRLENBQUMsRUFBRSxjQUFjLEVBRzFCO0lBRUQsd0dBQXdHO0lBQzNGLGNBQWMsQ0FDekIsZUFBZSxFQUFFLFlBQVksRUFDN0Isb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUsR0FDMUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQyxDQXNCbkM7SUFrR1ksZUFBZSxDQUMxQixlQUFlLEVBQUUsWUFBWSxFQUM3QixTQUFTLEVBQUUsWUFBWSxFQUN2QixlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsR0FDbEMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0F5QjdCO0NBdUNGIn0=
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nX3NlcnZpY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2dzL2xvZ19zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RixPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQWEsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFckUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUNMLGdCQUFnQixFQUtqQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXBELE9BQU8sRUFDTCxLQUFLLG1CQUFtQixFQUV6QixNQUFNLHNFQUFzRSxDQUFDO0FBQzlFLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUVBQXVFLENBQUM7QUFDbEgsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUMxRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFekUsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNqRyxPQUFPLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBVzFHLHFCQUFhLFVBQVU7O0lBSW5CLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUztJQUMxQixPQUFPLENBQUMsUUFBUSxDQUFDLGlCQUFpQjtJQUNsQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVc7SUFDNUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRO0lBQ3pCLE9BQU8sQ0FBQyxRQUFRLENBQUMscUJBQXFCO0lBQ3RDLE9BQU8sQ0FBQyxRQUFRLENBQUMseUJBQXlCO0lBQzFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWTtJQUM3QixPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU07SUFDdkIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO0lBWHhCLE9BQU8sQ0FBQyxHQUFHLENBQVM7SUFFcEIsWUFDbUIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsaUJBQWlCLEVBQUUsV0FBVyxFQUM5QixXQUFXLEVBQUUsY0FBYyxFQUMzQixRQUFRLEVBQUUsUUFBUSxFQUNsQixxQkFBcUIsRUFBRSxxQkFBcUIsRUFDNUMseUJBQXlCLEVBQUUseUJBQXlCLEVBQ3BELFlBQVksRUFBRSxZQUFZLEVBQzFCLE1BQU0sRUFBRSxZQUFZLEVBQUUsRUFDdEIsS0FBSyxFQUFFLE1BQU0sRUFDOUIsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUcxQjtJQUVELHdHQUF3RztJQUMzRixjQUFjLENBQ3pCLGVBQWUsRUFBRSxZQUFZLEVBQzdCLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLEdBQzFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUMsQ0FzQm5DO0lBeUdZLGVBQWUsQ0FDMUIsZUFBZSxFQUFFLFlBQVksRUFDN0IsU0FBUyxFQUFFLFlBQVksRUFDdkIsZUFBZSxFQUFFLGdCQUFnQixFQUFFLEdBQ2xDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBNEM3QjtDQWdFRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"log_service.d.ts","sourceRoot":"","sources":["../../src/logs/log_service.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAa,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAkB,gBAAgB,EAAa,MAAM,oBAAoB,CAAC;AACnG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EACL,KAAK,mBAAmB,EAEzB,MAAM,sEAAsE,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uEAAuE,CAAC;AAC7G,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;AACjG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uDAAuD,CAAC;AAWpG,qBAAa,UAAU;;IAInB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAVxB,OAAO,CAAC,GAAG,CAAS;IAEpB,YACmB,SAAS,EAAE,SAAS,EACpB,iBAAiB,EAAE,WAAW,EAC9B,WAAW,EAAE,cAAc,EAC3B,QAAQ,EAAE,QAAQ,EAClB,qBAAqB,EAAE,qBAAqB,EAC5C,sBAAsB,EAAE,sBAAsB,EAC9C,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,MAAM,EAC9B,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAED,wGAAwG;IAC3F,cAAc,CACzB,eAAe,EAAE,YAAY,EAC7B,oBAAoB,EAAE,mBAAmB,EAAE,GAC1C,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAsBnC;IAkGY,eAAe,CAC1B,eAAe,EAAE,YAAY,EAC7B,SAAS,EAAE,YAAY,EACvB,eAAe,EAAE,gBAAgB,EAAE,GAClC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAyB7B;CAuCF"}
1
+ {"version":3,"file":"log_service.d.ts","sourceRoot":"","sources":["../../src/logs/log_service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAa,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EACL,gBAAgB,EAKjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EACL,KAAK,mBAAmB,EAEzB,MAAM,sEAAsE,CAAC;AAC9E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uEAAuE,CAAC;AAClH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mEAAmE,CAAC;AAC1G,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAEzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;AACjG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0DAA0D,CAAC;AAW1G,qBAAa,UAAU;;IAInB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAC1C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAXxB,OAAO,CAAC,GAAG,CAAS;IAEpB,YACmB,SAAS,EAAE,SAAS,EACpB,iBAAiB,EAAE,WAAW,EAC9B,WAAW,EAAE,cAAc,EAC3B,QAAQ,EAAE,QAAQ,EAClB,qBAAqB,EAAE,qBAAqB,EAC5C,yBAAyB,EAAE,yBAAyB,EACpD,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,YAAY,EAAE,EACtB,KAAK,EAAE,MAAM,EAC9B,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAED,wGAAwG;IAC3F,cAAc,CACzB,eAAe,EAAE,YAAY,EAC7B,oBAAoB,EAAE,mBAAmB,EAAE,GAC1C,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAsBnC;IAyGY,eAAe,CAC1B,eAAe,EAAE,YAAY,EAC7B,SAAS,EAAE,YAAY,EACvB,eAAe,EAAE,gBAAgB,EAAE,GAClC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA4C7B;CAgEF"}
@@ -1,8 +1,8 @@
1
+ import { PRIVATE_LOG_CIPHERTEXT_LEN } from '@aztec/constants';
1
2
  import { createLogger } from '@aztec/foundation/log';
2
- import { AztecAddress } from '@aztec/stdlib/aztec-address';
3
- import { AppTaggingSecret, PendingTaggedLog, SiloedTag } from '@aztec/stdlib/logs';
3
+ import { AppTaggingSecret, AppTaggingSecretKind, SiloedTag, computeSharedTaggingSecret } from '@aztec/stdlib/logs';
4
4
  import { LogSource } from '../contract_function_simulator/noir-structs/log_retrieval_request.js';
5
- import { LogRetrievalResponse } from '../contract_function_simulator/noir-structs/log_retrieval_response.js';
5
+ import { assertAllowedScope } from '../storage/allowed_scopes.js';
6
6
  import { getAllPrivateLogsByTags, getAllPublicLogsByTagsFromContract, syncTaggedPrivateLogs } from '../tagging/index.js';
7
7
  const rangeKey = (fromBlock, toBlock)=>`${fromBlock ?? ''}-${toBlock ?? ''}`;
8
8
  export class LogService {
@@ -11,18 +11,20 @@ export class LogService {
11
11
  l2TipsStore;
12
12
  keyStore;
13
13
  recipientTaggingStore;
14
- senderAddressBookStore;
14
+ taggingSecretSourcesStore;
15
15
  addressStore;
16
+ scopes;
16
17
  jobId;
17
18
  log;
18
- constructor(aztecNode, anchorBlockHeader, l2TipsStore, keyStore, recipientTaggingStore, senderAddressBookStore, addressStore, jobId, bindings){
19
+ constructor(aztecNode, anchorBlockHeader, l2TipsStore, keyStore, recipientTaggingStore, taggingSecretSourcesStore, addressStore, scopes, jobId, bindings){
19
20
  this.aztecNode = aztecNode;
20
21
  this.anchorBlockHeader = anchorBlockHeader;
21
22
  this.l2TipsStore = l2TipsStore;
22
23
  this.keyStore = keyStore;
23
24
  this.recipientTaggingStore = recipientTaggingStore;
24
- this.senderAddressBookStore = senderAddressBookStore;
25
+ this.taggingSecretSourcesStore = taggingSecretSourcesStore;
25
26
  this.addressStore = addressStore;
27
+ this.scopes = scopes;
26
28
  this.jobId = jobId;
27
29
  this.log = createLogger('pxe:log_service', bindings);
28
30
  }
@@ -101,14 +103,16 @@ export class LogService {
101
103
  */ static #groupByRange(entries) {
102
104
  const groups = new Map();
103
105
  for (const entry of entries){
104
- const key = rangeKey(entry.request.fromBlock, entry.request.toBlock);
106
+ const fromBlock = entry.request.fromBlock.value;
107
+ const toBlock = entry.request.toBlock.value;
108
+ const key = rangeKey(fromBlock, toBlock);
105
109
  const existing = groups.get(key);
106
110
  if (existing) {
107
111
  existing.entries.push(entry);
108
112
  } else {
109
113
  groups.set(key, {
110
- fromBlock: entry.request.fromBlock,
111
- toBlock: entry.request.toBlock,
114
+ fromBlock,
115
+ toBlock,
112
116
  entries: [
113
117
  entry
114
118
  ]
@@ -125,17 +129,35 @@ export class LogService {
125
129
  if (nullifiers.length === 0) {
126
130
  throw new Error(`Log for tx ${log.txHash} returned no nullifiers from the node`);
127
131
  }
128
- return new LogRetrievalResponse(log.logData.slice(1), log.txHash, noteHashes, nullifiers[0]);
132
+ return {
133
+ // Skip the tag, and clip to the wire cap: public logs can exceed PRIVATE_LOG_CIPHERTEXT_LEN, which is the fixed
134
+ // size of the oracle's BoundedVec slot. A no-op for private logs, which are already within the cap.
135
+ logPayload: log.logData.slice(1, 1 + PRIVATE_LOG_CIPHERTEXT_LEN),
136
+ txHash: log.txHash,
137
+ uniqueNoteHashesInTx: noteHashes,
138
+ firstNullifierInTx: nullifiers[0],
139
+ blockNumber: log.blockNumber,
140
+ blockTimestamp: log.blockTimestamp,
141
+ blockHash: log.blockHash
142
+ };
129
143
  }
130
144
  async fetchTaggedLogs(contractAddress, recipient, providedSecrets) {
131
- this.log.verbose(`Fetching tagged logs for ${contractAddress.toString()}`);
145
+ assertAllowedScope(recipient, this.scopes);
146
+ this.log.verbose(`Fetching tagged logs for contract ${contractAddress.toString()} and recipient ${recipient.toString()}`);
132
147
  const l2Tips = await this.l2TipsStore.getL2Tips();
133
- // The secrets PXE derives or stores internally, plus any the app supplies explicitly for secrets PXE cannot
134
- // enumerate itself (e.g. handshake-derived ones).
135
- const secrets = [
136
- ...await this.#getSecretsForSenders(contractAddress, recipient),
148
+ // Secrets PXE can enumerate for this recipient (senders via ECDH + pre-shared store secrets), plus any the app
149
+ // supplies explicitly for secrets PXE cannot enumerate itself (e.g. handshake-derived ones). The latter arrive
150
+ // already computed and are searched even when the recipient's account is unknown locally, since they need no ECDH.
151
+ const combinedSecrets = [
152
+ ...await this.#getPointDerivedSecrets(contractAddress, recipient),
137
153
  ...providedSecrets
138
154
  ];
155
+ // These sources can overlap (a sender that is also a PXE account, or a pre-shared secret that coincides with a
156
+ // sender-derived one), so we deduplicate the combined set.
157
+ const secrets = Array.from(new Map(combinedSecrets.map((secret)=>[
158
+ secret.toString(),
159
+ secret
160
+ ])).values());
139
161
  const logs = await syncTaggedPrivateLogs(secrets, this.aztecNode, this.recipientTaggingStore, this.anchorBlockHeader, l2Tips.finalized.block.number, this.jobId);
140
162
  return logs.map((log)=>{
141
163
  const noteHashes = log.noteHashes;
@@ -143,30 +165,68 @@ export class LogService {
143
165
  if (nullifiers.length === 0) {
144
166
  throw new Error(`Log for tx ${log.txHash} returned no nullifiers from the node`);
145
167
  }
146
- return new PendingTaggedLog(log.logData, log.txHash, noteHashes, nullifiers[0]);
168
+ return {
169
+ log: log.logData,
170
+ context: {
171
+ txHash: log.txHash,
172
+ uniqueNoteHashesInTx: noteHashes,
173
+ firstNullifierInTx: nullifiers[0],
174
+ blockNumber: log.blockNumber,
175
+ blockHash: log.blockHash.toFr()
176
+ }
177
+ };
147
178
  });
148
179
  }
149
- async #getSecretsForSenders(contractAddress, recipient) {
180
+ /**
181
+ * Computes the tagging secrets PXE can enumerate for a recipient: one per known sender (via ECDH) plus any
182
+ * pre-shared secrets registered directly for the recipient. Each registered secret is scanned under the tag
183
+ * streams its kind can back. Deriving the sender-based secrets requires the recipient's address preimage and keys,
184
+ * so returns an empty array when those are unavailable. App-supplied secrets (e.g. derived from discovered
185
+ * handshakes) are handled separately by the caller and do not go through here.
186
+ */ async #getPointDerivedSecrets(contractAddress, recipient) {
150
187
  const recipientCompleteAddress = await this.addressStore.getCompleteAddress(recipient);
151
- if (!recipientCompleteAddress) {
188
+ if (!recipientCompleteAddress || !await this.keyStore.hasAccount(recipient)) {
189
+ this.log.warn(`Skipping sender-derived tag retrieval for ${recipient.toString()} due to unknown address preimage`);
152
190
  return [];
153
191
  }
154
192
  const recipientIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(recipient);
155
- // We implicitly add all PXE accounts as senders, this helps us find tagged logs with messages that are sent to a
156
- // local account (recipient = us, sender = us)
193
+ const [senderPoints, registeredSecrets] = await Promise.all([
194
+ this.#getSecretsForSenders(recipientCompleteAddress, recipientIvsk),
195
+ this.taggingSecretSourcesStore.getSharedSecretsForRecipient(recipient)
196
+ ]);
197
+ return Promise.all([
198
+ ...senderPoints.map((secret)=>AppTaggingSecret.computeDirectional(secret, contractAddress, recipient)),
199
+ ...registeredSecrets.flatMap(({ kind, secret })=>{
200
+ switch(kind){
201
+ case 'arbitrary-secret':
202
+ return [
203
+ AppTaggingSecret.computeDirectional(secret, contractAddress, recipient)
204
+ ];
205
+ case 'handshake':
206
+ // A handshake-backed sender tags messages with the bare app-siloed secret, one tag domain per delivery
207
+ // mode.
208
+ return [
209
+ AppTaggingSecret.computeAppSiloed(secret, contractAddress, AppTaggingSecretKind.UNCONSTRAINED),
210
+ AppTaggingSecret.computeAppSiloed(secret, contractAddress, AppTaggingSecretKind.CONSTRAINED)
211
+ ];
212
+ }
213
+ })
214
+ ]);
215
+ }
216
+ async #getSecretsForSenders(recipientCompleteAddress, recipientIvsk) {
217
+ // We implicitly add all PXE accounts as senders, this helps us decrypt tags on notes that we send to ourselves
218
+ // (recipient = us, sender = us).
157
219
  const allSenders = [
158
- ...await this.senderAddressBookStore.getSenders(),
220
+ ...await this.taggingSecretSourcesStore.getSenders(),
159
221
  ...await this.keyStore.getAccounts()
160
222
  ];
161
- // We deduplicate the senders by adding them to a set and then converting the set back to an array
162
- const deduplicatedSenders = Array.from(new Set(allSenders.map((sender)=>sender.toString()))).map((sender)=>AztecAddress.fromString(sender));
163
- return Promise.all(deduplicatedSenders.map(async (sender)=>{
164
- const secret = await AppTaggingSecret.computeUnconstrained(recipientCompleteAddress, recipientIvsk, sender, contractAddress, recipient);
165
- if (!secret) {
166
- // Note that all senders originate from either the SenderAddressBookStore or the KeyStore.
223
+ return Promise.all(allSenders.map(async (sender)=>{
224
+ const taggingSecretPoint = await computeSharedTaggingSecret(recipientCompleteAddress, recipientIvsk, sender);
225
+ if (!taggingSecretPoint) {
226
+ // Note that all senders originate from either the TaggingSecretSourcesStore or the KeyStore.
167
227
  throw new Error(`Failed to compute a tagging secret for sender ${sender} - this implies this is an invalid address, which should not happen as they have been previously registered in PXE.`);
168
228
  }
169
- return secret;
229
+ return taggingSecretPoint;
170
230
  }));
171
231
  }
172
232
  }
@@ -0,0 +1,17 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ import type { AztecNode } from '@aztec/stdlib/interfaces/server';
3
+ import type { ResolvedTx } from '../contract_function_simulator/noir-structs/resolved_tx.js';
4
+ /** Resolves transaction hashes into their on-chain context (note hashes, first nullifier, and mined block). */
5
+ export declare class TxResolverService {
6
+ private readonly aztecNode;
7
+ constructor(aztecNode: AztecNode);
8
+ /**
9
+ * Resolves a list of tx hashes into their on-chain context.
10
+ *
11
+ * For each tx hash, looks up the corresponding tx effect and extracts the note hashes, first nullifier, and the
12
+ * number and hash of the block it was mined in. Returns `null` for tx hashes that are zero, not yet available, or in
13
+ * blocks beyond the anchor block.
14
+ */
15
+ resolveTxs(txHashes: Fr[], anchorBlockNumber: number): Promise<(ResolvedTx | null)[]>;
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfcmVzb2x2ZXJfc2VydmljZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21lc3NhZ2VzL3R4X3Jlc29sdmVyX3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBR2pFLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBRTdGLCtHQUErRztBQUMvRyxxQkFBYSxpQkFBaUI7SUFDaEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTO0lBQXRDLFlBQTZCLFNBQVMsRUFBRSxTQUFTLEVBQUk7SUFFckQ7Ozs7OztPQU1HO0lBQ0csVUFBVSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FpRDFGO0NBQ0YifQ==