@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
@@ -0,0 +1,89 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
+ import type { BlockHash, BlockParameter } from '@aztec/stdlib/block';
4
+ import type { AztecNode } from '@aztec/stdlib/interfaces/server';
5
+ import type { TxHash } from '@aztec/stdlib/tx';
6
+
7
+ /**
8
+ * Per-execution cache for immutable Aztec node reads.
9
+ */
10
+ export class AztecNodeReadCache {
11
+ private readonly cache = new Map<string, Promise<unknown>>();
12
+
13
+ constructor(private readonly aztecNode: AztecNode) {}
14
+
15
+ /** Fetches a block without reissuing the same node request. */
16
+ public getBlock(block: BlockParameter) {
17
+ return this.#cachedRead(`block:${this.#keyPart(block)}`, () => this.aztecNode.getBlock(block));
18
+ }
19
+
20
+ /** Fetches a transaction receipt with its effect attached. */
21
+ public getTxReceiptWithEffect(txHash: TxHash) {
22
+ return this.#cachedRead(`tx-receipt-with-effect:${txHash.toString()}`, () =>
23
+ this.aztecNode.getTxReceipt(txHash, { includeTxEffect: true } as const),
24
+ );
25
+ }
26
+
27
+ /** Fetches an archive-tree witness for a block hash. */
28
+ public getBlockHashMembershipWitness(referenceBlock: BlockParameter, blockHash: BlockHash) {
29
+ return this.#cachedRead(
30
+ `block-hash-membership-witness:${this.#keyPart(referenceBlock)}:${blockHash.toString()}`,
31
+ () => this.aztecNode.getBlockHashMembershipWitness(referenceBlock, blockHash),
32
+ );
33
+ }
34
+
35
+ /** Fetches a public-data-tree witness for a leaf slot. */
36
+ public getPublicDataWitness(referenceBlock: BlockParameter, leafSlot: Fr) {
37
+ return this.#cachedRead(`public-data-witness:${this.#keyPart(referenceBlock)}:${leafSlot.toString()}`, () =>
38
+ this.aztecNode.getPublicDataWitness(referenceBlock, leafSlot),
39
+ );
40
+ }
41
+
42
+ /** Fetches public storage for a single slot. */
43
+ public getPublicStorageAt(referenceBlock: BlockParameter, contractAddress: AztecAddress, storageSlot: Fr) {
44
+ return this.#cachedRead(
45
+ `public-storage:${this.#keyPart(referenceBlock)}:${contractAddress.toString()}:${storageSlot.toString()}`,
46
+ () => this.aztecNode.getPublicStorageAt(referenceBlock, contractAddress, storageSlot),
47
+ );
48
+ }
49
+
50
+ /** Fetches a contiguous public storage range, reusing cached reads for overlapping slots. */
51
+ public getPublicStorageRange(
52
+ referenceBlock: BlockParameter,
53
+ contractAddress: AztecAddress,
54
+ startStorageSlot: Fr,
55
+ numberOfElements: number,
56
+ ) {
57
+ const slots = Array(numberOfElements)
58
+ .fill(0)
59
+ .map((_, i) => new Fr(startStorageSlot.value + BigInt(i)));
60
+
61
+ return Promise.all(slots.map(storageSlot => this.getPublicStorageAt(referenceBlock, contractAddress, storageSlot)));
62
+ }
63
+
64
+ #cachedRead<T>(key: string, fetch: () => Promise<T>): Promise<T> {
65
+ const cached = this.cache.get(key);
66
+ if (cached) {
67
+ return cached as Promise<T>;
68
+ }
69
+
70
+ const promise = fetch();
71
+ promise.catch(() => this.cache.delete(key));
72
+ this.cache.set(key, promise);
73
+ return promise;
74
+ }
75
+
76
+ #keyPart(value: unknown): string {
77
+ if (['string', 'number', 'bigint', 'boolean'].includes(typeof value)) {
78
+ return String(value);
79
+ }
80
+ if (value && typeof value === 'object') {
81
+ const toString = (value as { toString?: () => string }).toString;
82
+ if (toString && toString !== Object.prototype.toString) {
83
+ return toString.call(value);
84
+ }
85
+ return JSON.stringify(value, (_key, nested) => (typeof nested === 'bigint' ? nested.toString() : nested));
86
+ }
87
+ return String(value);
88
+ }
89
+ }
@@ -1,3 +1,4 @@
1
+ import { CircuitKind } from '@aztec/bb.js';
1
2
  import {
2
3
  AVM_EMITNOTEHASH_BASE_L2_GAS,
3
4
  AVM_EMITNULLIFIER_BASE_L2_GAS,
@@ -19,6 +20,7 @@ import {
19
20
  MAX_PRIVATE_LOGS_PER_TX,
20
21
  MAX_TX_LIFETIME,
21
22
  PRIVATE_TX_L2_GAS_OVERHEAD,
23
+ PUBLIC_DATA_WRITE_LENGTH,
22
24
  PUBLIC_TX_L2_GAS_OVERHEAD,
23
25
  TX_DA_GAS_OVERHEAD,
24
26
  } from '@aztec/constants';
@@ -80,6 +82,7 @@ import { MerkleTreeId } from '@aztec/stdlib/trees';
80
82
  import {
81
83
  BlockHeader,
82
84
  CallContext,
85
+ type ContractOverrides,
83
86
  HashedValues,
84
87
  type OffchainEffect,
85
88
  PrivateExecutionResult,
@@ -90,33 +93,34 @@ import {
90
93
  getFinalMinRevertibleSideEffectCounter,
91
94
  } from '@aztec/stdlib/tx';
92
95
 
93
- import type { ContractSyncService } from '../contract_sync/contract_sync_service.js';
96
+ import type { ContractClassService } from '../contract/contract_class_service.js';
97
+ import type { ContractSyncService } from '../contract/contract_sync_service.js';
94
98
  import type { ExecutionHooks } from '../hooks/index.js';
95
- import type { MessageContextService } from '../messages/message_context_service.js';
99
+ import type { TxResolverService } from '../messages/tx_resolver_service.js';
96
100
  import type { AddressStore } from '../storage/address_store/address_store.js';
97
101
  import { CapsuleService } from '../storage/capsule_store/capsule_service.js';
98
102
  import type { CapsuleStore } from '../storage/capsule_store/capsule_store.js';
99
103
  import type { ContractStore } from '../storage/contract_store/contract_store.js';
104
+ import { FactService } from '../storage/fact_store/index.js';
105
+ import type { FactStore } from '../storage/fact_store/index.js';
100
106
  import type { NoteStore } from '../storage/note_store/note_store.js';
101
107
  import type { PrivateEventStore } from '../storage/private_event_store/private_event_store.js';
102
108
  import type { RecipientTaggingStore } from '../storage/tagging_store/recipient_tagging_store.js';
103
- import type { SenderAddressBookStore } from '../storage/tagging_store/sender_address_book_store.js';
104
109
  import type { SenderTaggingStore } from '../storage/tagging_store/sender_tagging_store.js';
110
+ import type { TaggingSecretSourcesStore } from '../storage/tagging_store/tagging_secret_sources_store.js';
111
+ import { AnchoredContractData } from './anchored_contract_data.js';
105
112
  import type { BenchmarkedNode } from './benchmarked_node.js';
106
113
  import { ExecutionNoteCache } from './execution_note_cache.js';
107
114
  import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
108
115
  import { HashedValuesCache } from './hashed_values_cache.js';
109
- import { Oracle } from './oracle/oracle.js';
116
+ import { buildACIRCallback } from './oracle/acir_callback.js';
110
117
  import { executePrivateFunction } from './oracle/private_execution.js';
111
118
  import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
112
119
  import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
120
+ import { TransientArrayService } from './transient_array_service.js';
113
121
 
114
122
  /** Options for ContractFunctionSimulator.run. */
115
123
  export type ContractSimulatorRunOpts = {
116
- /** The address of the contract (should match request.origin). */
117
- contractAddress: AztecAddress;
118
- /** The function selector of the entry point. */
119
- selector: FunctionSelector;
120
124
  /** The address calling the function. Can be replaced to simulate a call from another contract or account. */
121
125
  msgSender?: AztecAddress;
122
126
  /** The block header to use as base state for this run. */
@@ -132,6 +136,9 @@ export type ContractSimulatorRunOpts = {
132
136
  /** Args for ContractFunctionSimulator constructor. */
133
137
  export type ContractFunctionSimulatorArgs = {
134
138
  contractStore: ContractStore;
139
+ contractClassService: ContractClassService;
140
+ /** Per-simulation contract overrides. */
141
+ overrides?: ContractOverrides;
135
142
  noteStore: NoteStore;
136
143
  keyStore: KeyStore;
137
144
  addressStore: AddressStore;
@@ -139,12 +146,13 @@ export type ContractFunctionSimulatorArgs = {
139
146
  l2TipsStore: L2TipsProvider;
140
147
  senderTaggingStore: SenderTaggingStore;
141
148
  recipientTaggingStore: RecipientTaggingStore;
142
- senderAddressBookStore: SenderAddressBookStore;
149
+ taggingSecretSourcesStore: TaggingSecretSourcesStore;
143
150
  capsuleStore: CapsuleStore;
151
+ factStore: FactStore;
144
152
  privateEventStore: PrivateEventStore;
145
153
  simulator: CircuitSimulator;
146
154
  contractSyncService: ContractSyncService;
147
- messageContextService: MessageContextService;
155
+ txResolver: TxResolverService;
148
156
  hooks?: ExecutionHooks;
149
157
  };
150
158
 
@@ -154,6 +162,8 @@ export type ContractFunctionSimulatorArgs = {
154
162
  export class ContractFunctionSimulator {
155
163
  private readonly log: Logger;
156
164
  private readonly contractStore: ContractStore;
165
+ private readonly contractClassService: ContractClassService;
166
+ private readonly overrides: ContractOverrides | undefined;
157
167
  private readonly noteStore: NoteStore;
158
168
  private readonly keyStore: KeyStore;
159
169
  private readonly addressStore: AddressStore;
@@ -161,16 +171,19 @@ export class ContractFunctionSimulator {
161
171
  private readonly l2TipsStore: L2TipsProvider;
162
172
  private readonly senderTaggingStore: SenderTaggingStore;
163
173
  private readonly recipientTaggingStore: RecipientTaggingStore;
164
- private readonly senderAddressBookStore: SenderAddressBookStore;
174
+ private readonly taggingSecretSourcesStore: TaggingSecretSourcesStore;
165
175
  private readonly capsuleStore: CapsuleStore;
176
+ private readonly factStore: FactStore;
166
177
  private readonly privateEventStore: PrivateEventStore;
167
178
  private readonly simulator: CircuitSimulator;
168
179
  private readonly contractSyncService: ContractSyncService;
169
- private readonly messageContextService: MessageContextService;
180
+ private readonly txResolver: TxResolverService;
170
181
  private readonly hooks: ExecutionHooks | undefined;
171
182
 
172
183
  constructor(args: ContractFunctionSimulatorArgs) {
173
184
  this.contractStore = args.contractStore;
185
+ this.contractClassService = args.contractClassService;
186
+ this.overrides = args.overrides;
174
187
  this.noteStore = args.noteStore;
175
188
  this.keyStore = args.keyStore;
176
189
  this.addressStore = args.addressStore;
@@ -178,12 +191,13 @@ export class ContractFunctionSimulator {
178
191
  this.l2TipsStore = args.l2TipsStore;
179
192
  this.senderTaggingStore = args.senderTaggingStore;
180
193
  this.recipientTaggingStore = args.recipientTaggingStore;
181
- this.senderAddressBookStore = args.senderAddressBookStore;
194
+ this.taggingSecretSourcesStore = args.taggingSecretSourcesStore;
182
195
  this.capsuleStore = args.capsuleStore;
196
+ this.factStore = args.factStore;
183
197
  this.privateEventStore = args.privateEventStore;
184
198
  this.simulator = args.simulator;
185
199
  this.contractSyncService = args.contractSyncService;
186
- this.messageContextService = args.messageContextService;
200
+ this.txResolver = args.txResolver;
187
201
  this.hooks = args.hooks;
188
202
  this.log = createLogger('simulator');
189
203
  }
@@ -195,9 +209,7 @@ export class ContractFunctionSimulator {
195
209
  public async run(
196
210
  request: TxExecutionRequest,
197
211
  {
198
- contractAddress,
199
- selector,
200
- msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE),
212
+ msgSender = AztecAddress.NULL_MSG_SENDER,
201
213
  anchorBlockHeader,
202
214
  senderForTags,
203
215
  scopes,
@@ -206,18 +218,30 @@ export class ContractFunctionSimulator {
206
218
  ): Promise<PrivateExecutionResult> {
207
219
  const simulatorSetupTimer = new Timer();
208
220
 
209
- const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(contractAddress, selector);
221
+ const contractAddress = request.origin;
210
222
 
211
- if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
212
- throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
213
- }
223
+ const anchoredContractData = new AnchoredContractData(
224
+ this.contractStore,
225
+ this.contractClassService,
226
+ anchorBlockHeader,
227
+ this.overrides,
228
+ );
214
229
 
215
- if (request.origin !== contractAddress) {
230
+ const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(
231
+ contractAddress,
232
+ request.functionSelector,
233
+ );
234
+ if (!entryPointArtifact) {
216
235
  throw new Error(
217
- `Request origin does not match contract address in simulation. Request origin: ${request.origin}, contract address: ${contractAddress}`,
236
+ `Cannot run function ${request.functionSelector} on ${contractAddress}: the contract is not registered. ` +
237
+ `Register it via wallet.registerContract(...).`,
218
238
  );
219
239
  }
220
240
 
241
+ if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
242
+ throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
243
+ }
244
+
221
245
  // reserve the first side effect for the tx hash (inserted by the private kernel)
222
246
  const startSideEffectCounter = 2;
223
247
 
@@ -232,9 +256,15 @@ export class ContractFunctionSimulator {
232
256
  const noteCache = new ExecutionNoteCache(protocolNullifier);
233
257
  const taggingIndexCache = new ExecutionTaggingIndexCache();
234
258
 
259
+ // One shared transient store for the whole execution tree rooted at this transaction. Threaded into every child
260
+ // private oracle and inherited by nested utility frames, so that frames of the same contract see each other's
261
+ // transient arrays, then discarded when run() returns.
262
+ const transientArrayService = new TransientArrayService();
263
+
235
264
  const privateExecutionOracle = new PrivateExecutionOracle({
236
265
  argsHash: request.firstCallArgsHash,
237
266
  txContext: request.txContext,
267
+ txRequestSalt: request.salt,
238
268
  callContext,
239
269
  anchorBlockHeader,
240
270
  utilityExecutor: async (call, execScopes) => {
@@ -245,17 +275,18 @@ export class ContractFunctionSimulator {
245
275
  executionCache: HashedValuesCache.create(request.argsOfCalls),
246
276
  noteCache,
247
277
  taggingIndexCache,
248
- contractStore: this.contractStore,
278
+ anchoredContractData,
249
279
  noteStore: this.noteStore,
250
280
  keyStore: this.keyStore,
251
281
  addressStore: this.addressStore,
252
282
  aztecNode: this.aztecNode,
253
283
  senderTaggingStore: this.senderTaggingStore,
254
284
  recipientTaggingStore: this.recipientTaggingStore,
255
- senderAddressBookStore: this.senderAddressBookStore,
285
+ taggingSecretSourcesStore: this.taggingSecretSourcesStore,
256
286
  capsuleService: new CapsuleService(this.capsuleStore, scopes),
287
+ factService: new FactService(this.factStore, scopes),
257
288
  privateEventStore: this.privateEventStore,
258
- messageContextService: this.messageContextService,
289
+ txResolver: this.txResolver,
259
290
  contractSyncService: this.contractSyncService,
260
291
  jobId,
261
292
  totalPublicCalldataCount: 0,
@@ -265,6 +296,7 @@ export class ContractFunctionSimulator {
265
296
  simulator: this.simulator,
266
297
  l2TipsStore: this.l2TipsStore,
267
298
  hooks: this.hooks,
299
+ transientArrayService,
268
300
  });
269
301
 
270
302
  const setupTime = simulatorSetupTimer.ms();
@@ -283,7 +315,6 @@ export class ContractFunctionSimulator {
283
315
  );
284
316
  const simulatorTeardownTimer = new Timer();
285
317
 
286
- noteCache.finish();
287
318
  const firstNullifierHint = noteCache.getNonceGenerator();
288
319
 
289
320
  const publicCallRequests = collectNested([executionResult], r =>
@@ -318,10 +349,6 @@ export class ContractFunctionSimulator {
318
349
  /**
319
350
  * Runs a utility function.
320
351
  * @param call - The function call to execute.
321
- * @param authwits - Authentication witnesses required for the function call.
322
- * @param anchorBlockHeader - The block header to use as base state for this run.
323
- * @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
324
- * accounts if not specified.
325
352
  * @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
326
353
  */
327
354
  public async runUtility(
@@ -331,7 +358,20 @@ export class ContractFunctionSimulator {
331
358
  scopes: AztecAddress[],
332
359
  jobId: string,
333
360
  ): Promise<{ result: Fr[]; offchainEffects: OffchainEffect[] }> {
334
- const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
361
+ const anchoredContractData = new AnchoredContractData(
362
+ this.contractStore,
363
+ this.contractClassService,
364
+ anchorBlockHeader,
365
+ this.overrides,
366
+ );
367
+
368
+ const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
369
+ if (!entryPointArtifact) {
370
+ throw new Error(
371
+ `Cannot run function ${call.selector} on ${call.to}: the contract is not registered. ` +
372
+ `Register it via wallet.registerContract(...).`,
373
+ );
374
+ }
335
375
 
336
376
  if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
337
377
  throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
@@ -342,20 +382,26 @@ export class ContractFunctionSimulator {
342
382
  };
343
383
 
344
384
  const oracle = new UtilityExecutionOracle({
345
- contractAddress: call.to,
385
+ callContext: CallContext.from({
386
+ msgSender: AztecAddress.NULL_MSG_SENDER,
387
+ contractAddress: call.to,
388
+ functionSelector: call.selector,
389
+ isStaticCall: true,
390
+ }),
346
391
  authWitnesses: authwits,
347
392
  capsules: [],
348
393
  anchorBlockHeader,
349
- contractStore: this.contractStore,
394
+ anchoredContractData,
350
395
  noteStore: this.noteStore,
351
396
  keyStore: this.keyStore,
352
397
  addressStore: this.addressStore,
353
398
  aztecNode: this.aztecNode,
354
399
  recipientTaggingStore: this.recipientTaggingStore,
355
- senderAddressBookStore: this.senderAddressBookStore,
400
+ taggingSecretSourcesStore: this.taggingSecretSourcesStore,
356
401
  capsuleService: new CapsuleService(this.capsuleStore, scopes),
402
+ factService: new FactService(this.factStore, scopes),
357
403
  privateEventStore: this.privateEventStore,
358
- messageContextService: this.messageContextService,
404
+ txResolver: this.txResolver,
359
405
  contractSyncService: this.contractSyncService,
360
406
  l2TipsStore: this.l2TipsStore,
361
407
  jobId,
@@ -363,6 +409,8 @@ export class ContractFunctionSimulator {
363
409
  simulator: this.simulator,
364
410
  hooks: this.hooks,
365
411
  utilityExecutor,
412
+ // Execution-tree root (top-level utility run or contract sync): own store; nested frames inherit it.
413
+ transientArrayService: new TransientArrayService(),
366
414
  });
367
415
 
368
416
  try {
@@ -373,7 +421,7 @@ export class ContractFunctionSimulator {
373
421
 
374
422
  const initialWitness = toACVMWitness(0, call.args);
375
423
  const acirExecutionResult = await this.simulator
376
- .executeUserCircuit(initialWitness, entryPointArtifact, new Oracle(oracle).toACIRCallback())
424
+ .executeUserCircuit(initialWitness, entryPointArtifact, buildACIRCallback(oracle))
377
425
  .catch((err: Error) => {
378
426
  err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
379
427
  throw new ExecutionError(
@@ -540,6 +588,7 @@ export async function generateSimulatedProvingResult(
540
588
  execution.publicInputs.callContext.functionSelector,
541
589
  ),
542
590
  timings: execution.profileResult?.timings ?? { witgen: 0, oracles: {} },
591
+ kind: CircuitKind.App,
543
592
  bytecode: execution.acir,
544
593
  vk: execution.vk,
545
594
  witness: execution.partialWitness,
@@ -608,12 +657,12 @@ export async function generateSimulatedProvingResult(
608
657
  siloedNullifiers,
609
658
  minRevertibleSideEffectCounter,
610
659
  );
660
+ // The protocol nullifier is the nonce generator and the tx's first nullifier. It is injected by the
661
+ // init kernel (at counter 1, index 0) rather than emitted by any private call, so it is absent from
662
+ // the executed nullifiers above. Mirror the kernel here by prepending it as the first non-revertible
663
+ // nullifier.
611
664
  const nonceGenerator = privateExecutionResult.firstNullifier;
612
- if (nonRevertibleNullifiers.length === 0) {
613
- nonRevertibleNullifiers.push(nonceGenerator);
614
- } else if (!nonRevertibleNullifiers[0].equals(nonceGenerator)) {
615
- throw new Error('The first non revertible nullifier should be equal to the nonce generator. This is a bug!');
616
- }
665
+ nonRevertibleNullifiers.unshift(nonceGenerator);
617
666
 
618
667
  if (isPrivateOnlyTx) {
619
668
  // We must make the note hashes unique by using the
@@ -876,6 +925,11 @@ function meterGasUsed(data: PrivateToRollupAccumulatedData | PrivateToPublicAccu
876
925
  );
877
926
  meteredL2Gas += numContractClassLogs * L2_GAS_PER_CONTRACT_CLASS_LOG;
878
927
 
928
+ if (isPrivateOnlyTx) {
929
+ // The public data write that the private tx base rollup always performs to update the fee payer's balance.
930
+ meteredDAFields += PUBLIC_DATA_WRITE_LENGTH;
931
+ }
932
+
879
933
  const meteredDAGas = meteredDAFields * DA_GAS_PER_FIELD;
880
934
 
881
935
  if ((data as PrivateToPublicAccumulatedData).publicCallRequests) {
@@ -43,12 +43,6 @@ export class ExecutionNoteCache {
43
43
 
44
44
  private inRevertiblePhase = false;
45
45
 
46
- /**
47
- * Whether the protocol nullifier was used for nonce generation.
48
- * We don't need to use the protocol nullifier if a non-revertible nullifier is emitted.
49
- */
50
- private usedProtocolNullifierForNonces: boolean | undefined;
51
-
52
46
  constructor(private readonly protocolNullifier: Fr) {}
53
47
 
54
48
  /**
@@ -64,12 +58,9 @@ export class ExecutionNoteCache {
64
58
  this.inRevertiblePhase = true;
65
59
  this.minRevertibleSideEffectCounter = minRevertibleSideEffectCounter;
66
60
 
67
- const nullifiers = this.getEmittedNullifiers();
68
- // If there are no nullifiers emitted by private calls so far, we use the protocol nullifier as the nonce generator.
69
- // Note: There could still be nullifiers emitted after the counter is set, but those nullifiers are revertible, so
70
- // we don't want to use them as the nonce generator.
71
- this.usedProtocolNullifierForNonces = nullifiers.length === 0;
72
- const nonceGenerator = this.usedProtocolNullifierForNonces ? this.protocolNullifier : new Fr(nullifiers[0]);
61
+ // The protocol nullifier is always the tx's first nullifier (injected by the kernel init), so it is the
62
+ // nonce generator for every note hash.
63
+ const nonceGenerator = this.protocolNullifier;
73
64
 
74
65
  // The existing pending notes are all non-revertible.
75
66
  // They cannot be squashed by nullifiers emitted after minRevertibleSideEffectCounter is set.
@@ -102,14 +93,6 @@ export class ExecutionNoteCache {
102
93
  return sideEffectCounter >= this.minRevertibleSideEffectCounter;
103
94
  }
104
95
 
105
- public finish() {
106
- // If we never entered the revertible phase, and there are no nullifiers emitted, we need to use the protocol
107
- // nullifier as the nonce generator.
108
- if (!this.inRevertiblePhase) {
109
- this.usedProtocolNullifierForNonces = this.getEmittedNullifiers().length === 0;
110
- }
111
- }
112
-
113
96
  /**
114
97
  * Add a new note to cache.
115
98
  * @param note - New note created during execution.
@@ -223,19 +206,15 @@ export class ExecutionNoteCache {
223
206
  }
224
207
 
225
208
  /**
226
- * @returns All nullifiers emitted by private calls in this transaction. If the protocol nullifier was used as the
227
- * nonce generator, it is injected as the first nullifier.
209
+ * @returns All nullifiers of the transaction: the protocol nullifier (the kernel-injected first nullifier),
210
+ * followed by those emitted by private calls.
228
211
  */
229
212
  getAllNullifiers(): Fr[] {
230
- if (this.usedProtocolNullifierForNonces === undefined) {
231
- throw new Error('usedProtocolNullifierForNonces is not set yet. Call finish() to complete the transaction.');
232
- }
233
- const allNullifiers = this.getEmittedNullifiers();
234
- return [...(this.usedProtocolNullifierForNonces ? [this.protocolNullifier] : []), ...allNullifiers];
213
+ return [this.protocolNullifier, ...this.getEmittedNullifiers()];
235
214
  }
236
215
 
237
216
  getNonceGenerator(): Fr {
238
- return this.getAllNullifiers()[0];
217
+ return this.protocolNullifier;
239
218
  }
240
219
 
241
220
  #recordNullifier(contractAddress: AztecAddress, siloedNullifier: bigint) {
@@ -1,41 +1,67 @@
1
1
  export {
2
2
  ORACLE_REGISTRY,
3
- callHandler,
4
3
  makeEntry,
5
- type HandlersForPrefix,
6
4
  type NamedValue,
7
5
  type OracleRegistryEntry,
8
6
  type ParamTypes,
9
- type StripOraclePrefix,
10
7
  } from './oracle/oracle_registry.js';
11
8
  export {
9
+ ALIAS,
12
10
  ARRAY,
13
11
  AZTEC_ADDRESS,
14
12
  BIGINT,
13
+ BLOCK_HASH,
15
14
  BLOCK_NUMBER,
16
15
  BOOL,
17
16
  BOUNDED_VEC,
18
- BUFFER,
19
- BYTE,
17
+ U8,
18
+ CONTRACT_INSTANCE,
20
19
  DELIVERY_MODE,
21
20
  EPHEMERAL_ARRAY,
21
+ ETH_ADDRESS,
22
22
  EVENT_VALIDATION_REQUEST,
23
23
  FIELD,
24
+ FIXED_ARRAY,
24
25
  FUNCTION_SELECTOR,
26
+ LEAF,
27
+ LEAF_INDEX,
25
28
  LOG_RETRIEVAL_REQUEST,
26
29
  LOG_RETRIEVAL_RESPONSE,
27
30
  MEMBERSHIP_WITNESS,
28
- MESSAGE_CONTEXT,
31
+ NOTE_SELECTOR,
29
32
  NOTE_VALIDATION_REQUEST,
30
33
  OPTION,
31
34
  PENDING_TAGGED_LOG,
32
35
  POINT,
33
36
  PROVIDED_SECRET,
37
+ SCALAR,
38
+ SLOT_NUMBER,
34
39
  STR,
40
+ STRUCT,
35
41
  U32,
42
+ U64,
43
+ U128,
44
+ tryFieldWidth,
45
+ isArrayMapping,
46
+ isBoundedVecMapping,
47
+ isEphemeralArrayMapping,
48
+ isFixedArrayMapping,
49
+ isFixedBoundedVecMapping,
50
+ isOptionMapping,
51
+ isStructMapping,
52
+ type ArrayMapping,
53
+ type BoundedVecMapping,
54
+ type CompositeMapping,
55
+ type EphemeralArrayMapping,
56
+ type FixedArrayMapping,
57
+ type FixedBoundedVecMapping,
36
58
  type InputSlot,
37
59
  type MaybePromise,
60
+ type OptionMapping,
38
61
  type OutputSlot,
62
+ type SlotShape,
63
+ type StructField,
64
+ type StructMapping,
39
65
  type TypeMapping,
40
66
  } from './oracle/oracle_type_mappings.js';
41
67
  export { ExecutionNoteCache } from './execution_note_cache.js';
@@ -43,21 +69,30 @@ export { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
43
69
  export { HashedValuesCache } from './hashed_values_cache.js';
44
70
  export { pickNotes } from './pick_notes.js';
45
71
  export type { IMiscOracle, IUtilityExecutionOracle, IPrivateExecutionOracle } from './oracle/interfaces.js';
72
+ export type { FactCollection } from './noir-structs/fact_collection.js';
46
73
  export type { NoteData } from './noir-structs/note_data.js';
47
- export { MessageLoadOracleInputs } from './oracle/message_load_oracle_inputs.js';
48
- export { MessageContextService } from '../messages/message_context_service.js';
74
+ export type { ResolvedTaggingStrategy } from './noir-structs/resolved_tagging_strategy.js';
75
+ export type { MessageLoadOracleInputs } from './oracle/message_load_oracle_inputs.js';
76
+ export { TxResolverService } from '../messages/tx_resolver_service.js';
49
77
  export { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
50
78
  export { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
51
- export { Oracle } from './oracle/oracle.js';
79
+ export { buildACIRCallback, UnavailableOracleError } from './oracle/acir_callback.js';
80
+ export { LEGACY_ORACLE_REGISTRY } from './oracle/legacy_oracle_registry.js';
52
81
  export { executePrivateFunction, extractPrivateCircuitPublicInputs } from './oracle/private_execution.js';
53
82
  export { generateSimulatedProvingResult } from './contract_function_simulator.js';
54
83
  export { packAsHintedNote } from './oracle/note_packing_utils.js';
55
84
  export { BoundedVec } from './noir-structs/bounded_vec.js';
85
+ export type { ContractClassLogData } from './noir-structs/contract_class_log_data.js';
86
+ export type { EmbeddedCurvePoint } from './noir-structs/embedded_curve_point.js';
56
87
  export { EphemeralArray } from './noir-structs/ephemeral_array.js';
57
88
  export { Option } from './noir-structs/option.js';
58
- export { UtilityContext } from './noir-structs/utility_context.js';
89
+ export type { UtilityContext } from './noir-structs/utility_context.js';
59
90
  export { EventValidationRequest } from './noir-structs/event_validation_request.js';
60
- export { LogRetrievalRequest } from './noir-structs/log_retrieval_request.js';
61
- export { LogRetrievalResponse } from './noir-structs/log_retrieval_response.js';
91
+ export type { LogRetrievalRequest } from './noir-structs/log_retrieval_request.js';
92
+ export type { LogRetrievalResponse } from './noir-structs/log_retrieval_response.js';
62
93
  export { NoteValidationRequest } from './noir-structs/note_validation_request.js';
63
- export { ProvidedSecret } from './noir-structs/provided_secret.js';
94
+ export type { PendingTaggedLog } from './noir-structs/pending_tagged_log.js';
95
+ export type { TxEffectData } from './noir-structs/tx_effect_data.js';
96
+ export type { ProvidedSecret } from './noir-structs/provided_secret.js';
97
+ export type { ResolvedTx } from './noir-structs/resolved_tx.js';
98
+ export { TransientArrayService } from './transient_array_service.js';