@aztec/pxe 5.0.0-rc.1 → 5.0.0

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 (297) hide show
  1. package/dest/block_synchronizer/block_stream_source.d.ts +5 -5
  2. package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -1
  3. package/dest/block_synchronizer/block_stream_source.js +4 -29
  4. package/dest/block_synchronizer/block_synchronizer.d.ts +16 -12
  5. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  6. package/dest/block_synchronizer/block_synchronizer.js +49 -15
  7. package/dest/config/index.d.ts +2 -1
  8. package/dest/config/index.d.ts.map +1 -1
  9. package/dest/config/index.js +1 -0
  10. package/dest/contract/contract_class_service.d.ts +31 -0
  11. package/dest/contract/contract_class_service.d.ts.map +1 -0
  12. package/dest/contract/contract_class_service.js +68 -0
  13. package/dest/{contract_sync → contract}/contract_sync_service.d.ts +7 -6
  14. package/dest/contract/contract_sync_service.d.ts.map +1 -0
  15. package/dest/{contract_sync → contract}/contract_sync_service.js +10 -30
  16. package/dest/contract/helpers.d.ts +7 -0
  17. package/dest/contract/helpers.d.ts.map +1 -0
  18. package/dest/contract/helpers.js +20 -0
  19. package/dest/contract_function_simulator/anchored_contract_data.d.ts +36 -0
  20. package/dest/contract_function_simulator/anchored_contract_data.d.ts.map +1 -0
  21. package/dest/contract_function_simulator/anchored_contract_data.js +54 -0
  22. package/dest/contract_function_simulator/aztec_node_read_cache.d.ts +39 -0
  23. package/dest/contract_function_simulator/aztec_node_read_cache.d.ts.map +1 -0
  24. package/dest/contract_function_simulator/aztec_node_read_cache.js +60 -0
  25. package/dest/contract_function_simulator/contract_function_simulator.d.ts +19 -18
  26. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  27. package/dest/contract_function_simulator/contract_function_simulator.js +52 -31
  28. package/dest/contract_function_simulator/execution_note_cache.d.ts +3 -9
  29. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  30. package/dest/contract_function_simulator/execution_note_cache.js +8 -28
  31. package/dest/contract_function_simulator/index.d.ts +17 -9
  32. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  33. package/dest/contract_function_simulator/index.js +4 -7
  34. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +8 -27
  35. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -1
  36. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +8 -23
  37. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
  38. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
  39. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
  40. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
  41. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
  42. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
  43. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +1 -1
  44. package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
  45. package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
  46. package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
  47. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
  48. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
  49. package/dest/contract_function_simulator/noir-structs/fact_collection.js +31 -0
  50. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +11 -12
  51. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  52. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +6 -49
  53. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +10 -8
  54. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  55. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -60
  56. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +2 -2
  57. package/dest/contract_function_simulator/noir-structs/option.d.ts +9 -11
  58. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -1
  59. package/dest/contract_function_simulator/noir-structs/option.js +18 -13
  60. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
  61. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
  62. package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
  63. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts +11 -0
  64. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts.map +1 -0
  65. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.js +4 -0
  66. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +6 -9
  67. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -1
  68. package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -14
  69. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts +28 -0
  70. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts.map +1 -0
  71. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.js +50 -0
  72. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +21 -0
  73. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
  74. package/dest/contract_function_simulator/noir-structs/resolved_tx.js +50 -0
  75. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +14 -0
  76. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
  77. package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
  78. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +6 -11
  79. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  80. package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -20
  81. package/dest/contract_function_simulator/oracle/acir_callback.d.ts +7 -2
  82. package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -1
  83. package/dest/contract_function_simulator/oracle/acir_callback.js +55 -11
  84. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts +39 -0
  85. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts.map +1 -0
  86. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.js +107 -0
  87. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -14
  88. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  89. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -24
  90. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +86 -8
  91. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -1
  92. package/dest/contract_function_simulator/oracle/oracle_registry.js +168 -18
  93. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +123 -40
  94. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -1
  95. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +947 -264
  96. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +21 -8
  97. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  98. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +126 -16
  99. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +63 -33
  100. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  101. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +175 -90
  102. package/dest/debug/pxe_debug_utils.d.ts +2 -2
  103. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  104. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  105. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  106. package/dest/entrypoints/client/bundle/utils.js +3 -2
  107. package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
  108. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  109. package/dest/entrypoints/client/lazy/utils.js +3 -2
  110. package/dest/entrypoints/pxe_creation_options.d.ts +8 -2
  111. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  112. package/dest/entrypoints/server/index.d.ts +5 -3
  113. package/dest/entrypoints/server/index.d.ts.map +1 -1
  114. package/dest/entrypoints/server/index.js +3 -2
  115. package/dest/entrypoints/server/utils.d.ts +1 -1
  116. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  117. package/dest/entrypoints/server/utils.js +3 -1
  118. package/dest/error_enriching.d.ts +5 -3
  119. package/dest/error_enriching.d.ts.map +1 -1
  120. package/dest/error_enriching.js +13 -11
  121. package/dest/hooks/execution_hooks.d.ts +27 -7
  122. package/dest/hooks/execution_hooks.d.ts.map +1 -1
  123. package/dest/hooks/execution_hooks.js +3 -3
  124. package/dest/hooks/index.d.ts +4 -3
  125. package/dest/hooks/index.d.ts.map +1 -1
  126. package/dest/hooks/index.js +1 -0
  127. package/dest/hooks/resolve_custom_request.d.ts +23 -0
  128. package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
  129. package/dest/hooks/resolve_custom_request.js +3 -0
  130. package/dest/hooks/resolve_tagging_secret_strategy.d.ts +50 -0
  131. package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
  132. package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
  133. package/dest/logs/log_service.d.ts +7 -6
  134. package/dest/logs/log_service.d.ts.map +1 -1
  135. package/dest/logs/log_service.js +79 -28
  136. package/dest/messages/tx_resolver_service.d.ts +17 -0
  137. package/dest/messages/tx_resolver_service.d.ts.map +1 -0
  138. package/dest/messages/{message_context_service.js → tx_resolver_service.js} +8 -8
  139. package/dest/oracle_version.d.ts +3 -3
  140. package/dest/oracle_version.js +3 -3
  141. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +1 -1
  142. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  143. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +6 -2
  144. package/dest/private_kernel/hints/test_utils.js +1 -1
  145. package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
  146. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  147. package/dest/private_kernel/private_kernel_execution_prover.js +17 -36
  148. package/dest/private_kernel/private_kernel_oracle.d.ts +4 -2
  149. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  150. package/dest/private_kernel/private_kernel_oracle.js +17 -5
  151. package/dest/pxe.d.ts +109 -47
  152. package/dest/pxe.d.ts.map +1 -1
  153. package/dest/pxe.js +222 -139
  154. package/dest/storage/allowed_scopes.d.ts +6 -0
  155. package/dest/storage/allowed_scopes.d.ts.map +1 -0
  156. package/dest/storage/allowed_scopes.js +7 -0
  157. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +1 -1
  158. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -1
  159. package/dest/storage/backwards_compatibility_tests/schema_tests.js +114 -37
  160. package/dest/storage/capsule_store/capsule_service.d.ts +1 -1
  161. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -1
  162. package/dest/storage/capsule_store/capsule_service.js +6 -9
  163. package/dest/storage/contract_store/contract_store.d.ts +27 -24
  164. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  165. package/dest/storage/contract_store/contract_store.js +64 -75
  166. package/dest/storage/fact_store/fact_service.d.ts +22 -0
  167. package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
  168. package/dest/storage/fact_store/fact_service.js +45 -0
  169. package/dest/storage/fact_store/fact_store.d.ts +95 -0
  170. package/dest/storage/fact_store/fact_store.d.ts.map +1 -0
  171. package/dest/storage/fact_store/fact_store.js +408 -0
  172. package/dest/storage/fact_store/fact_store_keys.d.ts +34 -0
  173. package/dest/storage/fact_store/fact_store_keys.d.ts.map +1 -0
  174. package/dest/storage/fact_store/fact_store_keys.js +50 -0
  175. package/dest/storage/fact_store/index.d.ts +6 -0
  176. package/dest/storage/fact_store/index.d.ts.map +1 -0
  177. package/dest/storage/fact_store/index.js +4 -0
  178. package/dest/storage/fact_store/origin_state.d.ts +57 -0
  179. package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
  180. package/dest/storage/fact_store/origin_state.js +53 -0
  181. package/dest/storage/fact_store/stored_fact.d.ts +32 -0
  182. package/dest/storage/fact_store/stored_fact.d.ts.map +1 -0
  183. package/dest/storage/fact_store/stored_fact.js +64 -0
  184. package/dest/storage/index.d.ts +2 -1
  185. package/dest/storage/index.d.ts.map +1 -1
  186. package/dest/storage/index.js +1 -0
  187. package/dest/storage/metadata.d.ts +2 -2
  188. package/dest/storage/metadata.d.ts.map +1 -1
  189. package/dest/storage/metadata.js +1 -1
  190. package/dest/storage/open_pxe_stores.d.ts +5 -3
  191. package/dest/storage/open_pxe_stores.d.ts.map +1 -1
  192. package/dest/storage/open_pxe_stores.js +5 -3
  193. package/dest/storage/tagging_store/index.d.ts +2 -2
  194. package/dest/storage/tagging_store/index.d.ts.map +1 -1
  195. package/dest/storage/tagging_store/index.js +1 -1
  196. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts +51 -0
  197. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts.map +1 -0
  198. package/dest/storage/tagging_store/tagging_secret_sources_store.js +105 -0
  199. package/dest/tagging/constants.d.ts +2 -2
  200. package/dest/tagging/constants.d.ts.map +1 -1
  201. package/dest/tagging/constants.js +18 -9
  202. package/package.json +17 -17
  203. package/src/block_synchronizer/block_stream_source.ts +6 -45
  204. package/src/block_synchronizer/block_synchronizer.ts +65 -24
  205. package/src/config/index.ts +1 -0
  206. package/src/contract/contract_class_service.ts +83 -0
  207. package/src/{contract_sync → contract}/contract_sync_service.ts +18 -37
  208. package/src/contract/helpers.ts +35 -0
  209. package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
  210. package/src/contract_function_simulator/aztec_node_read_cache.ts +89 -0
  211. package/src/contract_function_simulator/contract_function_simulator.ts +86 -43
  212. package/src/contract_function_simulator/execution_note_cache.ts +7 -28
  213. package/src/contract_function_simulator/index.ts +24 -9
  214. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +12 -24
  215. package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
  216. package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
  217. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +1 -1
  218. package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
  219. package/src/contract_function_simulator/noir-structs/fact_collection.ts +64 -0
  220. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +20 -46
  221. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +13 -60
  222. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +2 -2
  223. package/src/contract_function_simulator/noir-structs/option.ts +17 -11
  224. package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
  225. package/src/contract_function_simulator/noir-structs/pending_tagged_log.ts +12 -0
  226. package/src/contract_function_simulator/noir-structs/provided_secret.ts +4 -15
  227. package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +66 -0
  228. package/src/contract_function_simulator/noir-structs/resolved_tx.ts +53 -0
  229. package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +15 -0
  230. package/src/contract_function_simulator/noir-structs/utility_context.ts +5 -17
  231. package/src/contract_function_simulator/oracle/acir_callback.ts +58 -12
  232. package/src/contract_function_simulator/oracle/legacy_oracle_registry.ts +147 -0
  233. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +6 -21
  234. package/src/contract_function_simulator/oracle/oracle_registry.ts +119 -86
  235. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +659 -248
  236. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +155 -24
  237. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +300 -115
  238. package/src/debug/pxe_debug_utils.ts +1 -1
  239. package/src/entrypoints/client/bundle/utils.ts +3 -2
  240. package/src/entrypoints/client/lazy/utils.ts +3 -2
  241. package/src/entrypoints/pxe_creation_options.ts +7 -1
  242. package/src/entrypoints/server/index.ts +5 -2
  243. package/src/entrypoints/server/utils.ts +3 -1
  244. package/src/error_enriching.ts +27 -11
  245. package/src/hooks/execution_hooks.ts +28 -8
  246. package/src/hooks/index.ts +8 -2
  247. package/src/hooks/resolve_custom_request.ts +24 -0
  248. package/src/hooks/resolve_tagging_secret_strategy.ts +60 -0
  249. package/src/logs/log_service.ts +91 -37
  250. package/src/messages/{message_context_service.ts → tx_resolver_service.ts} +16 -9
  251. package/src/oracle_version.ts +3 -3
  252. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +11 -1
  253. package/src/private_kernel/hints/test_utils.ts +1 -1
  254. package/src/private_kernel/private_kernel_execution_prover.ts +22 -52
  255. package/src/private_kernel/private_kernel_oracle.ts +23 -4
  256. package/src/pxe.ts +320 -158
  257. package/src/storage/allowed_scopes.ts +14 -0
  258. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +6 -6
  259. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +1 -1
  260. package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
  261. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +12 -12
  262. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +1 -1
  263. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +11 -3
  264. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +12 -4
  265. package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
  266. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +21 -5
  267. package/src/storage/backwards_compatibility_tests/schema_tests.ts +125 -36
  268. package/src/storage/capsule_store/capsule_service.ts +8 -13
  269. package/src/storage/contract_store/contract_store.ts +86 -93
  270. package/src/storage/fact_store/fact_service.ts +69 -0
  271. package/src/storage/fact_store/fact_store.ts +487 -0
  272. package/src/storage/fact_store/fact_store_keys.ts +75 -0
  273. package/src/storage/fact_store/index.ts +14 -0
  274. package/src/storage/fact_store/origin_state.ts +75 -0
  275. package/src/storage/fact_store/stored_fact.ts +80 -0
  276. package/src/storage/index.ts +1 -0
  277. package/src/storage/metadata.ts +1 -1
  278. package/src/storage/open_pxe_stores.ts +6 -3
  279. package/src/storage/tagging_store/index.ts +1 -1
  280. package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
  281. package/src/tagging/constants.ts +19 -9
  282. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +0 -6
  283. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +0 -1
  284. package/dest/contract_function_simulator/proxied_contract_data_source.js +0 -51
  285. package/dest/contract_sync/contract_sync_service.d.ts.map +0 -1
  286. package/dest/contract_sync/helpers.d.ts +0 -27
  287. package/dest/contract_sync/helpers.d.ts.map +0 -1
  288. package/dest/contract_sync/helpers.js +0 -53
  289. package/dest/messages/message_context_service.d.ts +0 -17
  290. package/dest/messages/message_context_service.d.ts.map +0 -1
  291. package/dest/storage/tagging_store/sender_address_book_store.d.ts +0 -14
  292. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +0 -1
  293. package/dest/storage/tagging_store/sender_address_book_store.js +0 -36
  294. package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -60
  295. package/src/contract_sync/helpers.ts +0 -86
  296. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderAddressBookStore.json +0 -16
  297. package/src/storage/tagging_store/sender_address_book_store.ts +0 -48
@@ -16,7 +16,8 @@ import { PrivateContextInputs } from '@aztec/stdlib/kernel';
16
16
  import {
17
17
  AppTaggingSecret,
18
18
  AppTaggingSecretKind,
19
- type ContractClassLog,
19
+ ContractClassLog,
20
+ ContractClassLogFields,
20
21
  type TaggingIndexRange,
21
22
  } from '@aztec/stdlib/logs';
22
23
  import { Note, type NoteStatus } from '@aztec/stdlib/note';
@@ -28,6 +29,12 @@ import {
28
29
  type TxContext,
29
30
  } from '@aztec/stdlib/tx';
30
31
 
32
+ import type { ResolveCustomRequest } from '../../hooks/resolve_custom_request.js';
33
+ import {
34
+ DEFAULT_TAGGING_SECRET_STRATEGY,
35
+ type ResolveTaggingSecretStrategy,
36
+ type TaggingSecretStrategy,
37
+ } from '../../hooks/resolve_tagging_secret_strategy.js';
31
38
  import { NoteService } from '../../notes/note_service.js';
32
39
  import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
33
40
  import { syncSenderTaggingIndexes } from '../../tagging/index.js';
@@ -35,18 +42,20 @@ import type { ExecutionNoteCache } from '../execution_note_cache.js';
35
42
  import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js';
36
43
  import type { HashedValuesCache } from '../hashed_values_cache.js';
37
44
  import { BoundedVec } from '../noir-structs/bounded_vec.js';
45
+ import type { ContractClassLogData } from '../noir-structs/contract_class_log_data.js';
38
46
  import type { NoteData } from '../noir-structs/note_data.js';
39
47
  import { Option } from '../noir-structs/option.js';
48
+ import type { ResolvedTaggingStrategy } from '../noir-structs/resolved_tagging_strategy.js';
40
49
  import { pickNotes } from '../pick_notes.js';
41
50
  import type { IPrivateExecutionOracle } from './interfaces.js';
42
51
  import { executePrivateFunction } from './private_execution.js';
43
52
  import { UtilityExecutionOracle, type UtilityExecutionOracleArgs } from './utility_execution_oracle.js';
44
53
 
45
54
  /** Args for PrivateExecutionOracle constructor. */
46
- export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contractAddress'> & {
55
+ export type PrivateExecutionOracleArgs = UtilityExecutionOracleArgs & {
47
56
  argsHash: Fr;
48
57
  txContext: TxContext;
49
- callContext: CallContext;
58
+ txRequestSalt: Fr;
50
59
  executionCache: HashedValuesCache;
51
60
  noteCache: ExecutionNoteCache;
52
61
  taggingIndexCache: ExecutionTaggingIndexCache;
@@ -77,7 +86,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
77
86
 
78
87
  private readonly argsHash: Fr;
79
88
  private readonly txContext: TxContext;
80
- private readonly callContext: CallContext;
89
+ private readonly txRequestSalt: Fr;
81
90
  private readonly executionCache: HashedValuesCache;
82
91
  private readonly noteCache: ExecutionNoteCache;
83
92
  private readonly taggingIndexCache: ExecutionTaggingIndexCache;
@@ -90,12 +99,11 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
90
99
  constructor(args: PrivateExecutionOracleArgs) {
91
100
  super({
92
101
  ...args,
93
- contractAddress: args.callContext.contractAddress,
94
102
  log: args.log ?? createLogger('simulator:client_execution_context'),
95
103
  });
96
104
  this.argsHash = args.argsHash;
97
105
  this.txContext = args.txContext;
98
- this.callContext = args.callContext;
106
+ this.txRequestSalt = args.txRequestSalt;
99
107
  this.executionCache = args.executionCache;
100
108
  this.noteCache = args.noteCache;
101
109
  this.taggingIndexCache = args.taggingIndexCache;
@@ -111,6 +119,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
111
119
  this.anchorBlockHeader,
112
120
  this.txContext,
113
121
  this.initialSideEffectCounter,
122
+ this.txRequestSalt,
114
123
  );
115
124
  }
116
125
 
@@ -181,9 +190,124 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
181
190
  * Returns the wallet-supplied default sender for tags, or `None` if no default was provided.
182
191
  */
183
192
  public getSenderForTags(): Promise<Option<AztecAddress>> {
184
- return Promise.resolve(
185
- this.defaultSenderForTags ? Option.some(this.defaultSenderForTags) : Option.none(AztecAddress.ZERO),
186
- );
193
+ return Promise.resolve(this.defaultSenderForTags ? Option.some(this.defaultSenderForTags) : Option.none());
194
+ }
195
+
196
+ /**
197
+ * Resolves a custom, caller-defined request via the {@link ResolveCustomRequest} hook, which produces the response
198
+ * however it needs to. Throws when no hook is configured, since the request cannot be served.
199
+ */
200
+ public async resolveCustomRequest(kind: Fr, payload: Fr[]): Promise<Fr[]> {
201
+ const hook: ResolveCustomRequest | undefined = this.hooks?.resolveCustomRequest;
202
+ if (!hook) {
203
+ throw new Error('Cannot serve a request: no resolveCustomRequest hook is configured');
204
+ }
205
+ const contractClassId = await this.#getCurrentContractClassId(this.contractAddress);
206
+ return hook({ contractAddress: this.contractAddress, contractClassId, kind, payload });
207
+ }
208
+
209
+ /**
210
+ * Resolves the tagging strategy for a message via the wallet's {@link ResolveTaggingSecretStrategy} hook. The contract receives a ready-to-use {@link ResolvedTaggingStrategy}.
211
+ * When no hook is configured, applies a default: a non-interactive handshake, except for an unconstrained self-send,
212
+ * which uses an address-derived secret.
213
+ */
214
+ public async resolveTaggingStrategy(
215
+ sender: AztecAddress,
216
+ recipient: AztecAddress,
217
+ deliveryMode: AppTaggingSecretKind,
218
+ ): Promise<ResolvedTaggingStrategy> {
219
+ const [isUnconstrainedSelfSend, chosenStrategy] = await Promise.all([
220
+ this.#isUnconstrainedSelfSend(recipient, deliveryMode),
221
+ this.#chooseTaggingSecretStrategy(sender, recipient, deliveryMode),
222
+ ]);
223
+
224
+ // For unconstrained delivery, a self-send uses a local address-derived secret instead of a non-interactive
225
+ // handshake. A self-send is one where the wallet controls the recipient's keys, so both sides' keys are local: no
226
+ // handshake is needed and nothing is revealed onchain. It also avoids a recursion: a handshake self-delivers its
227
+ // note via unconstrained delivery, which would establish yet another handshake. This guard runs regardless of the
228
+ // resolved strategy (hook or default), to protect wallets from invalid configuration.
229
+ const strategy: TaggingSecretStrategy = isUnconstrainedSelfSend ? { type: 'address-derived' } : chosenStrategy;
230
+
231
+ return this.#resolveTaggingSecretStrategy(strategy, sender, recipient);
232
+ }
233
+
234
+ async #chooseTaggingSecretStrategy(
235
+ sender: AztecAddress,
236
+ recipient: AztecAddress,
237
+ deliveryMode: AppTaggingSecretKind,
238
+ ): Promise<TaggingSecretStrategy> {
239
+ const hook: ResolveTaggingSecretStrategy | undefined = this.hooks?.resolveTaggingSecretStrategy;
240
+ if (!hook) {
241
+ return DEFAULT_TAGGING_SECRET_STRATEGY;
242
+ }
243
+
244
+ const contractClassId = await this.#getCurrentContractClassId(this.contractAddress);
245
+ return hook({
246
+ contractAddress: this.contractAddress,
247
+ contractClassId,
248
+ sender,
249
+ recipient,
250
+ deliveryMode,
251
+ });
252
+ }
253
+
254
+ /**
255
+ * Resolves the class id the given contract runs at this simulation's anchor block. The instance no longer carries
256
+ * its class id (it is chain-derived), so it is resolved via the anchored contract data instead.
257
+ */
258
+ async #getCurrentContractClassId(address: AztecAddress): Promise<Fr> {
259
+ const classId = await this.anchoredContractData.getCurrentClassId(address);
260
+ if (classId === undefined) {
261
+ throw new Error(`Cannot resolve the current contract class for ${address}`);
262
+ }
263
+ return classId;
264
+ }
265
+
266
+ /** Whether this is an unconstrained delivery to one of the wallet's own accounts (a self-send). */
267
+ #isUnconstrainedSelfSend(recipient: AztecAddress, deliveryMode: AppTaggingSecretKind) {
268
+ return deliveryMode === AppTaggingSecretKind.UNCONSTRAINED
269
+ ? this.keyStore.hasAccount(recipient)
270
+ : Promise.resolve(false);
271
+ }
272
+
273
+ /** Resolves a wallet-provided {@link TaggingSecretStrategy} into the app-siloed secret handed to the contract. */
274
+ async #resolveTaggingSecretStrategy(
275
+ strategy: TaggingSecretStrategy,
276
+ sender: AztecAddress,
277
+ recipient: AztecAddress,
278
+ ): Promise<ResolvedTaggingStrategy> {
279
+ // PXE only performs the derivation; it does not reject a strategy that is unsound for the delivery mode (e.g. an
280
+ // address-derived or arbitrary-secret strategy for constrained delivery). That soundness check belongs in the
281
+ // Noir circuit, which constrains the resolved strategy against the delivery mode.
282
+ switch (strategy.type) {
283
+ case 'non-interactive-handshake':
284
+ return { type: 'non-interactive-handshake' };
285
+ case 'interactive-handshake':
286
+ return { type: 'interactive-handshake' };
287
+ case 'address-derived':
288
+ return this.#addressDerivedSecret(sender, recipient);
289
+ case 'arbitrary-secret': {
290
+ // App-silo the raw arbitrary secret point here so wallets never replicate the derivation.
291
+ const appTaggingSecret = await AppTaggingSecret.computeDirectional(
292
+ strategy.secret,
293
+ this.contractAddress,
294
+ recipient,
295
+ );
296
+ return { type: 'unconstrained-secret', secret: appTaggingSecret.secret };
297
+ }
298
+ }
299
+ }
300
+
301
+ /**
302
+ * The app-siloed, recipient-directional secret derived from the sender's and recipient's address keys via ECDH,
303
+ * ready to hand to the contract. Callers must validate the recipient in-circuit before reaching here, so an invalid one is unexpected.
304
+ */
305
+ async #addressDerivedSecret(sender: AztecAddress, recipient: AztecAddress): Promise<ResolvedTaggingStrategy> {
306
+ const secret = await this.getAppTaggingSecret(sender, recipient);
307
+ if (!secret.isSome()) {
308
+ throw new Error(`Cannot derive an address-derived tagging secret for invalid recipient ${recipient}`);
309
+ }
310
+ return { type: 'unconstrained-secret', secret: secret.value };
187
311
  }
188
312
 
189
313
  /**
@@ -203,7 +327,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
203
327
  this.logger.warn(`Computing a tagging secret for invalid recipient ${recipient} - returning no secret`, {
204
328
  contractAddress: this.contractAddress,
205
329
  });
206
- return Option.none(Fr.ZERO);
330
+ return Option.none();
207
331
  }
208
332
 
209
333
  return Option.some(extendedSecret.secret);
@@ -233,13 +357,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
233
357
  async #calculateAppTaggingSecret(contractAddress: AztecAddress, sender: AztecAddress, recipient: AztecAddress) {
234
358
  const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
235
359
  const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
236
- return AppTaggingSecret.computeUnconstrained(
237
- senderCompleteAddress,
238
- senderIvsk,
239
- recipient,
240
- contractAddress,
241
- recipient,
242
- );
360
+ return AppTaggingSecret.computeViaEcdh(senderCompleteAddress, senderIvsk, recipient, contractAddress, recipient);
243
361
  }
244
362
 
245
363
  async #getIndexToUseForSecret(secret: AppTaggingSecret): Promise<number> {
@@ -475,10 +593,15 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
475
593
  * Emit a contract class log.
476
594
  * This fn exists because we only carry a poseidon hash through the kernels, and need to
477
595
  * keep the preimage in ts for later.
478
- * @param log - The contract class log to be emitted.
596
+ * @param logData - The contract class log to be emitted.
479
597
  * @param counter - The contract class log's counter.
480
598
  */
481
- public notifyCreatedContractClassLog(log: ContractClassLog, counter: number) {
599
+ public notifyCreatedContractClassLog(logData: ContractClassLogData, counter: number) {
600
+ const log = ContractClassLog.from({
601
+ contractAddress: logData.contractAddress,
602
+ fields: new ContractClassLogFields(logData.fields),
603
+ emittedLength: logData.emittedLength,
604
+ });
482
605
  this.contractClassLogs.push(new CountedContractClassLog(log, counter));
483
606
  const text = log.toBuffer().toString('hex');
484
607
  this.logger.verbose(
@@ -536,10 +659,16 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
536
659
  this.scopes,
537
660
  );
538
661
 
539
- const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
662
+ const targetArtifact = await this.anchoredContractData.getFunctionArtifactWithDebugMetadata(
540
663
  targetContractAddress,
541
664
  functionSelector,
542
665
  );
666
+ if (!targetArtifact) {
667
+ throw new Error(
668
+ `Cannot call ${targetContractAddress}:${functionSelector}: the contract is not registered. ` +
669
+ `Register it via wallet.registerContract(...).`,
670
+ );
671
+ }
543
672
 
544
673
  const derivedTxContext = this.txContext.clone();
545
674
 
@@ -548,6 +677,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
548
677
  const privateExecutionOracle = new PrivateExecutionOracle({
549
678
  argsHash,
550
679
  txContext: derivedTxContext,
680
+ txRequestSalt: this.txRequestSalt,
551
681
  callContext: derivedCallContext,
552
682
  anchorBlockHeader: this.anchorBlockHeader,
553
683
  utilityExecutor: this.utilityExecutor,
@@ -556,17 +686,18 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
556
686
  executionCache: this.executionCache,
557
687
  noteCache: this.noteCache,
558
688
  taggingIndexCache: this.taggingIndexCache,
559
- contractStore: this.contractStore,
689
+ anchoredContractData: this.anchoredContractData,
560
690
  noteStore: this.noteStore,
561
691
  keyStore: this.keyStore,
562
692
  addressStore: this.addressStore,
563
693
  aztecNode: this.aztecNode,
564
694
  senderTaggingStore: this.senderTaggingStore,
565
695
  recipientTaggingStore: this.recipientTaggingStore,
566
- senderAddressBookStore: this.senderAddressBookStore,
696
+ taggingSecretSourcesStore: this.taggingSecretSourcesStore,
567
697
  capsuleService: this.capsuleService,
698
+ factService: this.factService,
568
699
  privateEventStore: this.privateEventStore,
569
- messageContextService: this.messageContextService,
700
+ txResolver: this.txResolver,
570
701
  contractSyncService: this.contractSyncService,
571
702
  jobId: this.jobId,
572
703
  totalPublicCalldataCount: this.totalPublicCalldataCount,
@@ -659,7 +790,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
659
790
  }
660
791
 
661
792
  public getDebugFunctionName() {
662
- return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
793
+ return this.anchoredContractData.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
663
794
  }
664
795
 
665
796
  protected override get callerContext() {