@aztec/pxe 0.0.1-commit.343b43af6 → 0.0.1-commit.350e0a4d

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 (485) hide show
  1. package/dest/bin/check_oracle_version.js +45 -111
  2. package/dest/bin/index.d.ts +2 -0
  3. package/dest/bin/index.d.ts.map +1 -0
  4. package/dest/bin/index.js +1 -0
  5. package/dest/bin/oracle_version_helpers.d.ts +51 -0
  6. package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
  7. package/dest/bin/oracle_version_helpers.js +254 -0
  8. package/dest/block_synchronizer/block_stream_source.d.ts +10 -0
  9. package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -0
  10. package/dest/block_synchronizer/block_stream_source.js +37 -0
  11. package/dest/block_synchronizer/block_synchronizer.d.ts +23 -15
  12. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  13. package/dest/block_synchronizer/block_synchronizer.js +84 -28
  14. package/dest/config/index.d.ts +8 -1
  15. package/dest/config/index.d.ts.map +1 -1
  16. package/dest/config/index.js +13 -14
  17. package/dest/config/package_info.js +1 -1
  18. package/dest/contract/contract_class_service.d.ts +31 -0
  19. package/dest/contract/contract_class_service.d.ts.map +1 -0
  20. package/dest/contract/contract_class_service.js +68 -0
  21. package/dest/contract/contract_sync_service.d.ts +48 -0
  22. package/dest/contract/contract_sync_service.d.ts.map +1 -0
  23. package/dest/contract/contract_sync_service.js +116 -0
  24. package/dest/contract/helpers.d.ts +7 -0
  25. package/dest/contract/helpers.d.ts.map +1 -0
  26. package/dest/contract/helpers.js +20 -0
  27. package/dest/contract_function_simulator/anchored_contract_data.d.ts +36 -0
  28. package/dest/contract_function_simulator/anchored_contract_data.d.ts.map +1 -0
  29. package/dest/contract_function_simulator/anchored_contract_data.js +54 -0
  30. package/dest/contract_function_simulator/contract_function_simulator.d.ts +30 -18
  31. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  32. package/dest/contract_function_simulator/contract_function_simulator.js +106 -40
  33. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  34. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  35. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  36. package/dest/contract_function_simulator/execution_note_cache.d.ts +4 -10
  37. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  38. package/dest/contract_function_simulator/execution_note_cache.js +8 -28
  39. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +7 -11
  40. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  41. package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -15
  42. package/dest/contract_function_simulator/index.d.ts +26 -5
  43. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  44. package/dest/contract_function_simulator/index.js +12 -3
  45. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +29 -0
  46. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
  47. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +30 -0
  48. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
  49. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
  50. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
  51. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
  52. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
  53. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
  54. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
  55. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
  56. package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
  57. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +5 -5
  58. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  59. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +7 -9
  60. package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
  61. package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
  62. package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
  63. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
  64. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
  65. package/dest/contract_function_simulator/noir-structs/fact_collection.js +31 -0
  66. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +19 -10
  67. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  68. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +12 -24
  69. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +11 -9
  70. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  71. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +2 -61
  72. package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
  73. package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
  74. package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
  75. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +5 -5
  76. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  77. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +8 -10
  78. package/dest/contract_function_simulator/noir-structs/option.d.ts +59 -0
  79. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
  80. package/dest/contract_function_simulator/noir-structs/option.js +67 -0
  81. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
  82. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
  83. package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
  84. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts +11 -0
  85. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts.map +1 -0
  86. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.js +4 -0
  87. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +8 -0
  88. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
  89. package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -0
  90. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts +28 -0
  91. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts.map +1 -0
  92. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.js +43 -0
  93. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +21 -0
  94. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
  95. package/dest/contract_function_simulator/noir-structs/resolved_tx.js +50 -0
  96. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +14 -0
  97. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
  98. package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
  99. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +6 -11
  100. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  101. package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -20
  102. package/dest/contract_function_simulator/oracle/acir_callback.d.ts +21 -0
  103. package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -0
  104. package/dest/contract_function_simulator/oracle/acir_callback.js +115 -0
  105. package/dest/contract_function_simulator/oracle/index.d.ts +2 -13
  106. package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -1
  107. package/dest/contract_function_simulator/oracle/index.js +1 -1
  108. package/dest/contract_function_simulator/oracle/interfaces.d.ts +15 -101
  109. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  110. package/dest/contract_function_simulator/oracle/interfaces.js +2 -2
  111. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts +39 -0
  112. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts.map +1 -0
  113. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.js +74 -0
  114. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -14
  115. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  116. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -24
  117. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +2 -2
  118. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  119. package/dest/contract_function_simulator/oracle/note_packing_utils.js +2 -2
  120. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +136 -0
  121. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
  122. package/dest/contract_function_simulator/oracle/oracle_registry.js +989 -0
  123. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +222 -0
  124. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
  125. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +1243 -0
  126. package/dest/contract_function_simulator/oracle/private_execution.d.ts +1 -1
  127. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  128. package/dest/contract_function_simulator/oracle/private_execution.js +7 -6
  129. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +54 -55
  130. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  131. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +195 -77
  132. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +162 -73
  133. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  134. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +523 -149
  135. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  136. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  137. package/dest/contract_function_simulator/pick_notes.js +20 -3
  138. package/dest/contract_function_simulator/transient_array_service.d.ts +31 -0
  139. package/dest/contract_function_simulator/transient_array_service.d.ts.map +1 -0
  140. package/dest/contract_function_simulator/transient_array_service.js +62 -0
  141. package/dest/contract_logging.d.ts +9 -4
  142. package/dest/contract_logging.d.ts.map +1 -1
  143. package/dest/contract_logging.js +21 -6
  144. package/dest/debug/pxe_debug_utils.d.ts +4 -9
  145. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  146. package/dest/debug/pxe_debug_utils.js +0 -6
  147. package/dest/entrypoints/client/bundle/index.d.ts +1 -2
  148. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  149. package/dest/entrypoints/client/bundle/index.js +0 -1
  150. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  151. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  152. package/dest/entrypoints/client/bundle/utils.js +20 -7
  153. package/dest/entrypoints/client/lazy/index.d.ts +1 -2
  154. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  155. package/dest/entrypoints/client/lazy/index.js +0 -1
  156. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  157. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  158. package/dest/entrypoints/client/lazy/utils.js +20 -7
  159. package/dest/entrypoints/pxe_creation_options.d.ts +16 -2
  160. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  161. package/dest/entrypoints/pxe_creation_options.js +3 -1
  162. package/dest/entrypoints/server/index.d.ts +6 -4
  163. package/dest/entrypoints/server/index.d.ts.map +1 -1
  164. package/dest/entrypoints/server/index.js +4 -3
  165. package/dest/entrypoints/server/utils.d.ts +4 -3
  166. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  167. package/dest/entrypoints/server/utils.js +20 -6
  168. package/dest/error_enriching.d.ts +5 -3
  169. package/dest/error_enriching.d.ts.map +1 -1
  170. package/dest/error_enriching.js +13 -11
  171. package/dest/events/event_service.d.ts +15 -6
  172. package/dest/events/event_service.d.ts.map +1 -1
  173. package/dest/events/event_service.js +44 -11
  174. package/dest/events/private_event_filter_validator.d.ts +3 -2
  175. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  176. package/dest/events/private_event_filter_validator.js +15 -0
  177. package/dest/hooks/authorize_utility_call.d.ts +41 -0
  178. package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
  179. package/dest/hooks/authorize_utility_call.js +4 -0
  180. package/dest/hooks/execution_hooks.d.ts +62 -0
  181. package/dest/hooks/execution_hooks.d.ts.map +1 -0
  182. package/dest/hooks/execution_hooks.js +9 -0
  183. package/dest/hooks/index.d.ts +5 -0
  184. package/dest/hooks/index.d.ts.map +1 -0
  185. package/dest/hooks/index.js +1 -0
  186. package/dest/hooks/resolve_custom_request.d.ts +23 -0
  187. package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
  188. package/dest/hooks/resolve_custom_request.js +3 -0
  189. package/dest/hooks/resolve_tagging_secret_strategy.d.ts +48 -0
  190. package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
  191. package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
  192. package/dest/logs/log_service.d.ts +13 -12
  193. package/dest/logs/log_service.d.ts.map +1 -1
  194. package/dest/logs/log_service.js +186 -81
  195. package/dest/messages/tx_resolver_service.d.ts +17 -0
  196. package/dest/messages/tx_resolver_service.d.ts.map +1 -0
  197. package/dest/messages/tx_resolver_service.js +55 -0
  198. package/dest/notes/note_service.d.ts +27 -6
  199. package/dest/notes/note_service.d.ts.map +1 -1
  200. package/dest/notes/note_service.js +80 -56
  201. package/dest/notes_filter.d.ts +2 -3
  202. package/dest/notes_filter.d.ts.map +1 -1
  203. package/dest/oracle_version.d.ts +4 -3
  204. package/dest/oracle_version.d.ts.map +1 -1
  205. package/dest/oracle_version.js +20 -10
  206. package/dest/private_kernel/batch_planner.d.ts +47 -0
  207. package/dest/private_kernel/batch_planner.d.ts.map +1 -0
  208. package/dest/private_kernel/batch_planner.js +104 -0
  209. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +1 -1
  210. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  211. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +7 -3
  212. package/dest/private_kernel/hints/test_utils.d.ts +1 -1
  213. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -1
  214. package/dest/private_kernel/hints/test_utils.js +3 -4
  215. package/dest/private_kernel/private_kernel_execution_prover.d.ts +6 -2
  216. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  217. package/dest/private_kernel/private_kernel_execution_prover.js +203 -89
  218. package/dest/private_kernel/private_kernel_oracle.d.ts +12 -10
  219. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  220. package/dest/private_kernel/private_kernel_oracle.js +40 -26
  221. package/dest/pxe.d.ts +169 -54
  222. package/dest/pxe.d.ts.map +1 -1
  223. package/dest/pxe.js +348 -204
  224. package/dest/storage/allowed_scopes.d.ts +6 -0
  225. package/dest/storage/allowed_scopes.d.ts.map +1 -0
  226. package/dest/storage/allowed_scopes.js +7 -0
  227. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -6
  228. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
  229. package/dest/storage/anchor_block_store/anchor_block_store.js +9 -7
  230. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
  231. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
  232. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
  233. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
  234. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
  235. package/dest/storage/backwards_compatibility_tests/schema_tests.js +647 -0
  236. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
  237. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
  238. package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
  239. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  240. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  241. package/dest/storage/capsule_store/capsule_service.js +47 -0
  242. package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
  243. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  244. package/dest/storage/capsule_store/capsule_store.js +36 -28
  245. package/dest/storage/capsule_store/index.d.ts +2 -1
  246. package/dest/storage/capsule_store/index.d.ts.map +1 -1
  247. package/dest/storage/capsule_store/index.js +1 -0
  248. package/dest/storage/contract_store/contract_store.d.ts +27 -24
  249. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  250. package/dest/storage/contract_store/contract_store.js +70 -98
  251. package/dest/storage/fact_store/fact_service.d.ts +22 -0
  252. package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
  253. package/dest/storage/fact_store/fact_service.js +45 -0
  254. package/dest/storage/fact_store/fact_store.d.ts +95 -0
  255. package/dest/storage/fact_store/fact_store.d.ts.map +1 -0
  256. package/dest/storage/fact_store/fact_store.js +408 -0
  257. package/dest/storage/fact_store/fact_store_keys.d.ts +34 -0
  258. package/dest/storage/fact_store/fact_store_keys.d.ts.map +1 -0
  259. package/dest/storage/fact_store/fact_store_keys.js +50 -0
  260. package/dest/storage/fact_store/index.d.ts +6 -0
  261. package/dest/storage/fact_store/index.d.ts.map +1 -0
  262. package/dest/storage/fact_store/index.js +4 -0
  263. package/dest/storage/fact_store/origin_state.d.ts +57 -0
  264. package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
  265. package/dest/storage/fact_store/origin_state.js +53 -0
  266. package/dest/storage/fact_store/stored_fact.d.ts +32 -0
  267. package/dest/storage/fact_store/stored_fact.d.ts.map +1 -0
  268. package/dest/storage/fact_store/stored_fact.js +64 -0
  269. package/dest/storage/index.d.ts +3 -2
  270. package/dest/storage/index.d.ts.map +1 -1
  271. package/dest/storage/index.js +2 -1
  272. package/dest/storage/metadata.d.ts +2 -2
  273. package/dest/storage/metadata.d.ts.map +1 -1
  274. package/dest/storage/metadata.js +1 -1
  275. package/dest/storage/note_store/note_store.d.ts +42 -33
  276. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  277. package/dest/storage/note_store/note_store.js +199 -170
  278. package/dest/storage/note_store/stored_note.d.ts +3 -8
  279. package/dest/storage/note_store/stored_note.d.ts.map +1 -1
  280. package/dest/storage/note_store/stored_note.js +4 -20
  281. package/dest/storage/open_pxe_stores.d.ts +35 -0
  282. package/dest/storage/open_pxe_stores.d.ts.map +1 -0
  283. package/dest/storage/open_pxe_stores.js +29 -0
  284. package/dest/storage/private_event_store/private_event_store.d.ts +13 -16
  285. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  286. package/dest/storage/private_event_store/private_event_store.js +43 -43
  287. package/dest/storage/private_event_store/stored_private_event.js +1 -1
  288. package/dest/storage/tagging_store/index.d.ts +2 -2
  289. package/dest/storage/tagging_store/index.d.ts.map +1 -1
  290. package/dest/storage/tagging_store/index.js +1 -1
  291. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  292. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  293. package/dest/storage/tagging_store/sender_tagging_store.d.ts +29 -28
  294. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  295. package/dest/storage/tagging_store/sender_tagging_store.js +141 -115
  296. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts +51 -0
  297. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts.map +1 -0
  298. package/dest/storage/tagging_store/tagging_secret_sources_store.js +105 -0
  299. package/dest/tagging/constants.d.ts +2 -2
  300. package/dest/tagging/constants.d.ts.map +1 -1
  301. package/dest/tagging/constants.js +5 -8
  302. package/dest/tagging/get_all_logs_by_tags.d.ts +34 -10
  303. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
  304. package/dest/tagging/get_all_logs_by_tags.js +36 -37
  305. package/dest/tagging/index.d.ts +6 -5
  306. package/dest/tagging/index.d.ts.map +1 -1
  307. package/dest/tagging/index.js +4 -3
  308. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +29 -0
  309. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
  310. package/dest/tagging/persist_sender_tagging_index_ranges.js +42 -0
  311. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +69 -0
  312. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
  313. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +203 -0
  314. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +3 -3
  315. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -1
  316. package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
  317. package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
  318. package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
  319. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -5
  320. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  321. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +31 -10
  322. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +13 -7
  323. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  324. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +41 -10
  325. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +5 -4
  326. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  327. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +26 -13
  328. package/package.json +20 -17
  329. package/src/bin/check_oracle_version.ts +51 -133
  330. package/src/bin/index.ts +5 -0
  331. package/src/bin/oracle_version_helpers.ts +311 -0
  332. package/src/block_synchronizer/block_stream_source.ts +42 -0
  333. package/src/block_synchronizer/block_synchronizer.ts +102 -39
  334. package/src/config/index.ts +15 -8
  335. package/src/config/package_info.ts +1 -1
  336. package/src/contract/contract_class_service.ts +83 -0
  337. package/src/contract/contract_sync_service.ts +176 -0
  338. package/src/contract/helpers.ts +35 -0
  339. package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
  340. package/src/contract_function_simulator/contract_function_simulator.ts +170 -56
  341. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  342. package/src/contract_function_simulator/execution_note_cache.ts +8 -29
  343. package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -18
  344. package/src/contract_function_simulator/index.ts +69 -4
  345. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +43 -0
  346. package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
  347. package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
  348. package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
  349. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +5 -7
  350. package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
  351. package/src/contract_function_simulator/noir-structs/fact_collection.ts +64 -0
  352. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +27 -20
  353. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +14 -61
  354. package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
  355. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +6 -8
  356. package/src/contract_function_simulator/noir-structs/option.ts +75 -0
  357. package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
  358. package/src/contract_function_simulator/noir-structs/pending_tagged_log.ts +12 -0
  359. package/src/contract_function_simulator/noir-structs/provided_secret.ts +5 -0
  360. package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +58 -0
  361. package/src/contract_function_simulator/noir-structs/resolved_tx.ts +53 -0
  362. package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +15 -0
  363. package/src/contract_function_simulator/noir-structs/utility_context.ts +5 -17
  364. package/src/contract_function_simulator/oracle/acir_callback.ts +154 -0
  365. package/src/contract_function_simulator/oracle/index.ts +1 -15
  366. package/src/contract_function_simulator/oracle/interfaces.ts +11 -170
  367. package/src/contract_function_simulator/oracle/legacy_oracle_registry.ts +120 -0
  368. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +6 -21
  369. package/src/contract_function_simulator/oracle/note_packing_utils.ts +3 -3
  370. package/src/contract_function_simulator/oracle/oracle_registry.ts +689 -0
  371. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +964 -0
  372. package/src/contract_function_simulator/oracle/private_execution.ts +6 -7
  373. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +241 -103
  374. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +804 -238
  375. package/src/contract_function_simulator/pick_notes.ts +22 -3
  376. package/src/contract_function_simulator/transient_array_service.ts +91 -0
  377. package/src/contract_logging.ts +18 -5
  378. package/src/debug/pxe_debug_utils.ts +4 -12
  379. package/src/entrypoints/client/bundle/index.ts +0 -1
  380. package/src/entrypoints/client/bundle/utils.ts +19 -7
  381. package/src/entrypoints/client/lazy/index.ts +0 -1
  382. package/src/entrypoints/client/lazy/utils.ts +19 -7
  383. package/src/entrypoints/pxe_creation_options.ts +21 -1
  384. package/src/entrypoints/server/index.ts +6 -3
  385. package/src/entrypoints/server/utils.ts +24 -7
  386. package/src/error_enriching.ts +27 -11
  387. package/src/events/event_service.ts +69 -21
  388. package/src/events/private_event_filter_validator.ts +21 -1
  389. package/src/hooks/authorize_utility_call.ts +44 -0
  390. package/src/hooks/execution_hooks.ts +68 -0
  391. package/src/hooks/index.ts +12 -0
  392. package/src/hooks/resolve_custom_request.ts +24 -0
  393. package/src/hooks/resolve_tagging_secret_strategy.ts +57 -0
  394. package/src/logs/log_service.ts +224 -146
  395. package/src/messages/tx_resolver_service.ts +69 -0
  396. package/src/notes/note_service.ts +119 -85
  397. package/src/notes_filter.ts +1 -3
  398. package/src/oracle_version.ts +20 -10
  399. package/src/private_kernel/batch_planner.ts +168 -0
  400. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +12 -2
  401. package/src/private_kernel/hints/test_utils.ts +3 -10
  402. package/src/private_kernel/private_kernel_execution_prover.ts +335 -121
  403. package/src/private_kernel/private_kernel_oracle.ts +58 -29
  404. package/src/pxe.ts +563 -233
  405. package/src/storage/allowed_scopes.ts +14 -0
  406. package/src/storage/anchor_block_store/anchor_block_store.ts +9 -7
  407. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
  408. package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
  409. package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
  410. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
  411. package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
  412. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
  413. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +40 -0
  414. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +56 -0
  415. package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
  416. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +18 -0
  417. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +22 -0
  418. package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
  419. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +117 -0
  420. package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
  421. package/src/storage/backwards_compatibility_tests/schema_tests.ts +774 -0
  422. package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
  423. package/src/storage/capsule_store/capsule_service.ts +85 -0
  424. package/src/storage/capsule_store/capsule_store.ts +44 -26
  425. package/src/storage/capsule_store/index.ts +1 -0
  426. package/src/storage/contract_store/contract_store.ts +96 -124
  427. package/src/storage/fact_store/fact_service.ts +69 -0
  428. package/src/storage/fact_store/fact_store.ts +487 -0
  429. package/src/storage/fact_store/fact_store_keys.ts +75 -0
  430. package/src/storage/fact_store/index.ts +14 -0
  431. package/src/storage/fact_store/origin_state.ts +75 -0
  432. package/src/storage/fact_store/stored_fact.ts +80 -0
  433. package/src/storage/index.ts +2 -1
  434. package/src/storage/metadata.ts +1 -1
  435. package/src/storage/note_store/note_store.ts +228 -192
  436. package/src/storage/note_store/stored_note.ts +5 -27
  437. package/src/storage/open_pxe_stores.ts +52 -0
  438. package/src/storage/private_event_store/private_event_store.ts +52 -54
  439. package/src/storage/private_event_store/stored_private_event.ts +1 -1
  440. package/src/storage/tagging_store/index.ts +1 -1
  441. package/src/storage/tagging_store/recipient_tagging_store.ts +5 -9
  442. package/src/storage/tagging_store/sender_tagging_store.ts +185 -138
  443. package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
  444. package/src/tagging/constants.ts +6 -8
  445. package/src/tagging/get_all_logs_by_tags.ts +78 -50
  446. package/src/tagging/index.ts +5 -4
  447. package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
  448. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +301 -0
  449. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
  450. package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
  451. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +52 -12
  452. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +44 -14
  453. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +23 -14
  454. package/dest/access_scopes.d.ts +0 -9
  455. package/dest/access_scopes.d.ts.map +0 -1
  456. package/dest/access_scopes.js +0 -6
  457. package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -59
  458. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
  459. package/dest/contract_function_simulator/oracle/oracle.js +0 -406
  460. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +0 -6
  461. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +0 -1
  462. package/dest/contract_function_simulator/proxied_contract_data_source.js +0 -80
  463. package/dest/contract_sync/contract_sync_service.d.ts +0 -43
  464. package/dest/contract_sync/contract_sync_service.d.ts.map +0 -1
  465. package/dest/contract_sync/contract_sync_service.js +0 -97
  466. package/dest/contract_sync/helpers.d.ts +0 -29
  467. package/dest/contract_sync/helpers.d.ts.map +0 -1
  468. package/dest/contract_sync/helpers.js +0 -55
  469. package/dest/storage/tagging_store/sender_address_book_store.d.ts +0 -14
  470. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +0 -1
  471. package/dest/storage/tagging_store/sender_address_book_store.js +0 -36
  472. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -14
  473. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +0 -1
  474. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +0 -99
  475. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -14
  476. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +0 -1
  477. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +0 -33
  478. package/src/access_scopes.ts +0 -9
  479. package/src/contract_function_simulator/oracle/oracle.ts +0 -637
  480. package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -83
  481. package/src/contract_sync/contract_sync_service.ts +0 -152
  482. package/src/contract_sync/helpers.ts +0 -98
  483. package/src/storage/tagging_store/sender_address_book_store.ts +0 -48
  484. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -140
  485. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -44
@@ -0,0 +1,74 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import type { FunctionArtifactWithContractName, FunctionSelector } from '@aztec/stdlib/abi';
3
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+ import type { ContractInstancePreimageWithAddress } from '@aztec/stdlib/contract';
5
+ import type { BlockHeader, ContractOverrides } from '@aztec/stdlib/tx';
6
+
7
+ import type { ContractClassService } from '../contract/contract_class_service.js';
8
+ import type { ContractStore } from '../storage/contract_store/contract_store.js';
9
+
10
+ /**
11
+ * Per-run view of contract data for a single simulation, bound to its anchor block.
12
+ *
13
+ * The {@link ContractStore} is pure class-id-keyed storage and has no notion of which class an address runs. This
14
+ * class bridges that gap: it resolves an address to its current class id (via the {@link ContractClassService}
15
+ * at the run's anchor block) and then serves artifacts from the store. It is also the single place contract
16
+ * overrides are applied — when an address is overridden, both its instance and its class id come from the override
17
+ * rather than the chain, so a simulation can execute different bytecode at that address. Overrides are only set for
18
+ * `simulateTx` (which skips the kernels), so the override path never reaches proving.
19
+ */
20
+ export class AnchoredContractData {
21
+ constructor(
22
+ private readonly store: ContractStore,
23
+ private readonly contractClassService: ContractClassService,
24
+ private readonly anchorBlockHeader: BlockHeader,
25
+ private readonly overrides?: ContractOverrides,
26
+ ) {}
27
+
28
+ /** Returns the address preimage of the instance at `address`, from the override if any, else from storage. */
29
+ getContractInstance(address: AztecAddress): Promise<ContractInstancePreimageWithAddress | undefined> {
30
+ const override = this.overrides?.[address.toString()];
31
+ if (override) {
32
+ return Promise.resolve(override.instance);
33
+ }
34
+ return this.store.getContractInstance(address);
35
+ }
36
+
37
+ /**
38
+ * Resolves the class id `address` runs in this simulation: the override's class if overridden, else resolved against
39
+ * the chain at the anchor block.
40
+ */
41
+ getCurrentClassId(address: AztecAddress): Promise<Fr | undefined> {
42
+ const override = this.overrides?.[address.toString()];
43
+ if (override) {
44
+ return Promise.resolve(override.instance.currentContractClassId);
45
+ }
46
+ return this.contractClassService.getCurrentClassId(address, this.anchorBlockHeader);
47
+ }
48
+
49
+ async getFunctionArtifact(
50
+ address: AztecAddress,
51
+ selector: FunctionSelector,
52
+ ): Promise<FunctionArtifactWithContractName | undefined> {
53
+ const classId = await this.getCurrentClassId(address);
54
+ return classId ? this.store.getFunctionArtifact(classId, selector) : undefined;
55
+ }
56
+
57
+ async getFunctionArtifactWithDebugMetadata(
58
+ address: AztecAddress,
59
+ selector: FunctionSelector,
60
+ ): Promise<FunctionArtifactWithContractName | undefined> {
61
+ const classId = await this.getCurrentClassId(address);
62
+ return classId ? this.store.getFunctionArtifactWithDebugMetadata(classId, selector) : undefined;
63
+ }
64
+
65
+ async getDebugContractName(address: AztecAddress): Promise<string | undefined> {
66
+ const classId = await this.getCurrentClassId(address);
67
+ return classId ? this.store.getDebugContractName(classId) : undefined;
68
+ }
69
+
70
+ async getDebugFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string> {
71
+ const classId = await this.getCurrentClassId(address);
72
+ return classId ? this.store.getDebugFunctionName(classId, selector) : `${address}:${selector}`;
73
+ }
74
+ }
@@ -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,
@@ -17,7 +18,9 @@ import {
17
18
  MAX_NULLIFIERS_PER_TX,
18
19
  MAX_NULLIFIER_READ_REQUESTS_PER_TX,
19
20
  MAX_PRIVATE_LOGS_PER_TX,
21
+ MAX_TX_LIFETIME,
20
22
  PRIVATE_TX_L2_GAS_OVERHEAD,
23
+ PUBLIC_DATA_WRITE_LENGTH,
21
24
  PUBLIC_TX_L2_GAS_OVERHEAD,
22
25
  TX_DA_GAS_OVERHEAD,
23
26
  } from '@aztec/constants';
@@ -41,7 +44,7 @@ import type { FunctionCall } from '@aztec/stdlib/abi';
41
44
  import { FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
42
45
  import type { AuthWitness } from '@aztec/stdlib/auth-witness';
43
46
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
44
- import type { BlockParameter } from '@aztec/stdlib/block';
47
+ import type { BlockParameter, L2TipsProvider } from '@aztec/stdlib/block';
45
48
  import { Gas } from '@aztec/stdlib/gas';
46
49
  import {
47
50
  computeNoteHashNonce,
@@ -75,10 +78,13 @@ import {
75
78
  import { PrivateLog } from '@aztec/stdlib/logs';
76
79
  import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
77
80
  import { ChonkProof } from '@aztec/stdlib/proofs';
81
+ import { MerkleTreeId } from '@aztec/stdlib/trees';
78
82
  import {
79
83
  BlockHeader,
80
84
  CallContext,
85
+ type ContractOverrides,
81
86
  HashedValues,
87
+ type OffchainEffect,
82
88
  PrivateExecutionResult,
83
89
  TxConstantData,
84
90
  TxExecutionRequest,
@@ -87,31 +93,34 @@ import {
87
93
  getFinalMinRevertibleSideEffectCounter,
88
94
  } from '@aztec/stdlib/tx';
89
95
 
90
- import type { AccessScopes } from '../access_scopes.js';
91
- 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';
98
+ import type { ExecutionHooks } from '../hooks/index.js';
99
+ import type { TxResolverService } from '../messages/tx_resolver_service.js';
92
100
  import type { AddressStore } from '../storage/address_store/address_store.js';
101
+ import { CapsuleService } from '../storage/capsule_store/capsule_service.js';
93
102
  import type { CapsuleStore } from '../storage/capsule_store/capsule_store.js';
94
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';
95
106
  import type { NoteStore } from '../storage/note_store/note_store.js';
96
107
  import type { PrivateEventStore } from '../storage/private_event_store/private_event_store.js';
97
108
  import type { RecipientTaggingStore } from '../storage/tagging_store/recipient_tagging_store.js';
98
- import type { SenderAddressBookStore } from '../storage/tagging_store/sender_address_book_store.js';
99
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';
100
112
  import type { BenchmarkedNode } from './benchmarked_node.js';
101
113
  import { ExecutionNoteCache } from './execution_note_cache.js';
102
114
  import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
103
115
  import { HashedValuesCache } from './hashed_values_cache.js';
104
- import { Oracle } from './oracle/oracle.js';
116
+ import { buildACIRCallback } from './oracle/acir_callback.js';
105
117
  import { executePrivateFunction } from './oracle/private_execution.js';
106
118
  import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
107
119
  import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
120
+ import { TransientArrayService } from './transient_array_service.js';
108
121
 
109
122
  /** Options for ContractFunctionSimulator.run. */
110
123
  export type ContractSimulatorRunOpts = {
111
- /** The address of the contract (should match request.origin). */
112
- contractAddress: AztecAddress;
113
- /** The function selector of the entry point. */
114
- selector: FunctionSelector;
115
124
  /** The address calling the function. Can be replaced to simulate a call from another contract or account. */
116
125
  msgSender?: AztecAddress;
117
126
  /** The block header to use as base state for this run. */
@@ -119,7 +128,7 @@ export type ContractSimulatorRunOpts = {
119
128
  /** The address used as a tagging sender when emitting private logs. */
120
129
  senderForTags?: AztecAddress;
121
130
  /** The accounts whose notes we can access in this call. */
122
- scopes: AccessScopes;
131
+ scopes: AztecAddress[];
123
132
  /** The job ID for staged writes. */
124
133
  jobId: string;
125
134
  };
@@ -127,17 +136,24 @@ export type ContractSimulatorRunOpts = {
127
136
  /** Args for ContractFunctionSimulator constructor. */
128
137
  export type ContractFunctionSimulatorArgs = {
129
138
  contractStore: ContractStore;
139
+ contractClassService: ContractClassService;
140
+ /** Per-simulation contract overrides. */
141
+ overrides?: ContractOverrides;
130
142
  noteStore: NoteStore;
131
143
  keyStore: KeyStore;
132
144
  addressStore: AddressStore;
133
145
  aztecNode: AztecNode;
146
+ l2TipsStore: L2TipsProvider;
134
147
  senderTaggingStore: SenderTaggingStore;
135
148
  recipientTaggingStore: RecipientTaggingStore;
136
- senderAddressBookStore: SenderAddressBookStore;
149
+ taggingSecretSourcesStore: TaggingSecretSourcesStore;
137
150
  capsuleStore: CapsuleStore;
151
+ factStore: FactStore;
138
152
  privateEventStore: PrivateEventStore;
139
153
  simulator: CircuitSimulator;
140
154
  contractSyncService: ContractSyncService;
155
+ txResolver: TxResolverService;
156
+ hooks?: ExecutionHooks;
141
157
  };
142
158
 
143
159
  /**
@@ -146,31 +162,43 @@ export type ContractFunctionSimulatorArgs = {
146
162
  export class ContractFunctionSimulator {
147
163
  private readonly log: Logger;
148
164
  private readonly contractStore: ContractStore;
165
+ private readonly contractClassService: ContractClassService;
166
+ private readonly overrides: ContractOverrides | undefined;
149
167
  private readonly noteStore: NoteStore;
150
168
  private readonly keyStore: KeyStore;
151
169
  private readonly addressStore: AddressStore;
152
170
  private readonly aztecNode: AztecNode;
171
+ private readonly l2TipsStore: L2TipsProvider;
153
172
  private readonly senderTaggingStore: SenderTaggingStore;
154
173
  private readonly recipientTaggingStore: RecipientTaggingStore;
155
- private readonly senderAddressBookStore: SenderAddressBookStore;
174
+ private readonly taggingSecretSourcesStore: TaggingSecretSourcesStore;
156
175
  private readonly capsuleStore: CapsuleStore;
176
+ private readonly factStore: FactStore;
157
177
  private readonly privateEventStore: PrivateEventStore;
158
178
  private readonly simulator: CircuitSimulator;
159
179
  private readonly contractSyncService: ContractSyncService;
180
+ private readonly txResolver: TxResolverService;
181
+ private readonly hooks: ExecutionHooks | undefined;
160
182
 
161
183
  constructor(args: ContractFunctionSimulatorArgs) {
162
184
  this.contractStore = args.contractStore;
185
+ this.contractClassService = args.contractClassService;
186
+ this.overrides = args.overrides;
163
187
  this.noteStore = args.noteStore;
164
188
  this.keyStore = args.keyStore;
165
189
  this.addressStore = args.addressStore;
166
190
  this.aztecNode = args.aztecNode;
191
+ this.l2TipsStore = args.l2TipsStore;
167
192
  this.senderTaggingStore = args.senderTaggingStore;
168
193
  this.recipientTaggingStore = args.recipientTaggingStore;
169
- this.senderAddressBookStore = args.senderAddressBookStore;
194
+ this.taggingSecretSourcesStore = args.taggingSecretSourcesStore;
170
195
  this.capsuleStore = args.capsuleStore;
196
+ this.factStore = args.factStore;
171
197
  this.privateEventStore = args.privateEventStore;
172
198
  this.simulator = args.simulator;
173
199
  this.contractSyncService = args.contractSyncService;
200
+ this.txResolver = args.txResolver;
201
+ this.hooks = args.hooks;
174
202
  this.log = createLogger('simulator');
175
203
  }
176
204
 
@@ -181,9 +209,7 @@ export class ContractFunctionSimulator {
181
209
  public async run(
182
210
  request: TxExecutionRequest,
183
211
  {
184
- contractAddress,
185
- selector,
186
- msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE),
212
+ msgSender = AztecAddress.NULL_MSG_SENDER,
187
213
  anchorBlockHeader,
188
214
  senderForTags,
189
215
  scopes,
@@ -192,18 +218,30 @@ export class ContractFunctionSimulator {
192
218
  ): Promise<PrivateExecutionResult> {
193
219
  const simulatorSetupTimer = new Timer();
194
220
 
195
- const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(contractAddress, selector);
221
+ const contractAddress = request.origin;
196
222
 
197
- if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
198
- throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
199
- }
223
+ const anchoredContractData = new AnchoredContractData(
224
+ this.contractStore,
225
+ this.contractClassService,
226
+ anchorBlockHeader,
227
+ this.overrides,
228
+ );
200
229
 
201
- if (request.origin !== contractAddress) {
202
- this.log.warn(
203
- `Request origin does not match contract address in simulation. Request origin: ${request.origin}, contract address: ${contractAddress}`,
230
+ const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(
231
+ contractAddress,
232
+ request.functionSelector,
233
+ );
234
+ if (!entryPointArtifact) {
235
+ throw new Error(
236
+ `Cannot run function ${request.functionSelector} on ${contractAddress}: the contract is not registered. ` +
237
+ `Register it via wallet.registerContract(...).`,
204
238
  );
205
239
  }
206
240
 
241
+ if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
242
+ throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
243
+ }
244
+
207
245
  // reserve the first side effect for the tx hash (inserted by the private kernel)
208
246
  const startSideEffectCounter = 2;
209
247
 
@@ -218,9 +256,15 @@ export class ContractFunctionSimulator {
218
256
  const noteCache = new ExecutionNoteCache(protocolNullifier);
219
257
  const taggingIndexCache = new ExecutionTaggingIndexCache();
220
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
+
221
264
  const privateExecutionOracle = new PrivateExecutionOracle({
222
265
  argsHash: request.firstCallArgsHash,
223
266
  txContext: request.txContext,
267
+ txRequestSalt: request.salt,
224
268
  callContext,
225
269
  anchorBlockHeader,
226
270
  utilityExecutor: async (call, execScopes) => {
@@ -231,16 +275,18 @@ export class ContractFunctionSimulator {
231
275
  executionCache: HashedValuesCache.create(request.argsOfCalls),
232
276
  noteCache,
233
277
  taggingIndexCache,
234
- contractStore: this.contractStore,
278
+ anchoredContractData,
235
279
  noteStore: this.noteStore,
236
280
  keyStore: this.keyStore,
237
281
  addressStore: this.addressStore,
238
282
  aztecNode: this.aztecNode,
239
283
  senderTaggingStore: this.senderTaggingStore,
240
284
  recipientTaggingStore: this.recipientTaggingStore,
241
- senderAddressBookStore: this.senderAddressBookStore,
242
- capsuleStore: this.capsuleStore,
285
+ taggingSecretSourcesStore: this.taggingSecretSourcesStore,
286
+ capsuleService: new CapsuleService(this.capsuleStore, scopes),
287
+ factService: new FactService(this.factStore, scopes),
243
288
  privateEventStore: this.privateEventStore,
289
+ txResolver: this.txResolver,
244
290
  contractSyncService: this.contractSyncService,
245
291
  jobId,
246
292
  totalPublicCalldataCount: 0,
@@ -248,6 +294,9 @@ export class ContractFunctionSimulator {
248
294
  scopes,
249
295
  senderForTags,
250
296
  simulator: this.simulator,
297
+ l2TipsStore: this.l2TipsStore,
298
+ hooks: this.hooks,
299
+ transientArrayService,
251
300
  });
252
301
 
253
302
  const setupTime = simulatorSetupTimer.ms();
@@ -266,7 +315,6 @@ export class ContractFunctionSimulator {
266
315
  );
267
316
  const simulatorTeardownTimer = new Timer();
268
317
 
269
- noteCache.finish();
270
318
  const firstNullifierHint = noteCache.getNonceGenerator();
271
319
 
272
320
  const publicCallRequests = collectNested([executionResult], r =>
@@ -277,7 +325,7 @@ export class ContractFunctionSimulator {
277
325
  );
278
326
  const publicFunctionsCalldata = await Promise.all(
279
327
  publicCallRequests.map(async r => {
280
- const calldata = await privateExecutionOracle.loadFromExecutionCache(r.calldataHash);
328
+ const calldata = await privateExecutionOracle.getHashPreimage(r.calldataHash);
281
329
  return new HashedValues(calldata, r.calldataHash);
282
330
  }),
283
331
  );
@@ -298,45 +346,71 @@ export class ContractFunctionSimulator {
298
346
  }
299
347
  }
300
348
 
301
- // docs:start:execute_utility_function
302
349
  /**
303
350
  * Runs a utility function.
304
351
  * @param call - The function call to execute.
305
- * @param authwits - Authentication witnesses required for the function call.
306
- * @param anchorBlockHeader - The block header to use as base state for this run.
307
- * @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
308
- * accounts if not specified.
309
352
  * @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
310
353
  */
311
354
  public async runUtility(
312
355
  call: FunctionCall,
313
356
  authwits: AuthWitness[],
314
357
  anchorBlockHeader: BlockHeader,
315
- scopes: AccessScopes,
358
+ scopes: AztecAddress[],
316
359
  jobId: string,
317
- ): Promise<Fr[]> {
318
- const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
360
+ ): Promise<{ result: Fr[]; offchainEffects: OffchainEffect[] }> {
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
+ }
319
375
 
320
376
  if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
321
377
  throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
322
378
  }
323
379
 
380
+ const utilityExecutor = async (syncCall: FunctionCall, execScopes: AztecAddress[]) => {
381
+ await this.runUtility(syncCall, [], anchorBlockHeader, execScopes, jobId);
382
+ };
383
+
324
384
  const oracle = new UtilityExecutionOracle({
325
- 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
+ }),
326
391
  authWitnesses: authwits,
327
392
  capsules: [],
328
393
  anchorBlockHeader,
329
- contractStore: this.contractStore,
394
+ anchoredContractData,
330
395
  noteStore: this.noteStore,
331
396
  keyStore: this.keyStore,
332
397
  addressStore: this.addressStore,
333
398
  aztecNode: this.aztecNode,
334
399
  recipientTaggingStore: this.recipientTaggingStore,
335
- senderAddressBookStore: this.senderAddressBookStore,
336
- capsuleStore: this.capsuleStore,
400
+ taggingSecretSourcesStore: this.taggingSecretSourcesStore,
401
+ capsuleService: new CapsuleService(this.capsuleStore, scopes),
402
+ factService: new FactService(this.factStore, scopes),
337
403
  privateEventStore: this.privateEventStore,
404
+ txResolver: this.txResolver,
405
+ contractSyncService: this.contractSyncService,
406
+ l2TipsStore: this.l2TipsStore,
338
407
  jobId,
339
408
  scopes,
409
+ simulator: this.simulator,
410
+ hooks: this.hooks,
411
+ utilityExecutor,
412
+ // Execution-tree root (top-level utility run or contract sync): own store; nested frames inherit it.
413
+ transientArrayService: new TransientArrayService(),
340
414
  });
341
415
 
342
416
  try {
@@ -347,7 +421,7 @@ export class ContractFunctionSimulator {
347
421
 
348
422
  const initialWitness = toACVMWitness(0, call.args);
349
423
  const acirExecutionResult = await this.simulator
350
- .executeUserCircuit(initialWitness, entryPointArtifact, new Oracle(oracle).toACIRCallback())
424
+ .executeUserCircuit(initialWitness, entryPointArtifact, buildACIRCallback(oracle))
351
425
  .catch((err: Error) => {
352
426
  err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
353
427
  throw new ExecutionError(
@@ -362,12 +436,14 @@ export class ContractFunctionSimulator {
362
436
  });
363
437
 
364
438
  this.log.verbose(`Utility execution for ${call.to}.${call.selector} completed`);
365
- return witnessMapToFields(acirExecutionResult.returnWitness);
439
+ return {
440
+ result: witnessMapToFields(acirExecutionResult.returnWitness),
441
+ offchainEffects: oracle.getOffchainEffects(),
442
+ };
366
443
  } catch (err) {
367
444
  throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
368
445
  }
369
446
  }
370
- // docs:end:execute_utility_function
371
447
 
372
448
  /**
373
449
  * Returns the execution statistics collected during the simulator run.
@@ -432,14 +508,34 @@ export async function generateSimulatedProvingResult(
432
508
 
433
509
  let publicTeardownCallRequest;
434
510
 
511
+ // We set expiration timestamp to anchor_block_timestamp + MAX_TX_LIFETIME (24h) just like kernels do
512
+ let expirationTimestamp =
513
+ privateExecutionResult.entrypoint.publicInputs.anchorBlockHeader.globalVariables.timestamp +
514
+ BigInt(MAX_TX_LIFETIME);
515
+
516
+ let feePayer = AztecAddress.zero();
517
+
435
518
  const executions = [privateExecutionResult.entrypoint];
436
519
 
437
520
  while (executions.length !== 0) {
438
521
  const execution = executions.shift()!;
439
522
  executions.unshift(...execution!.nestedExecutionResults);
440
523
 
524
+ // Just like kernels we overwrite the default value if the call sets it.
525
+ const callExpirationTimestamp = execution.publicInputs.expirationTimestamp;
526
+ if (callExpirationTimestamp !== 0n && callExpirationTimestamp < expirationTimestamp) {
527
+ expirationTimestamp = callExpirationTimestamp;
528
+ }
529
+
441
530
  const { contractAddress } = execution.publicInputs.callContext;
442
531
 
532
+ if (execution.publicInputs.isFeePayer) {
533
+ if (!feePayer.isZero()) {
534
+ throw new Error('Multiple fee payers found in private execution result');
535
+ }
536
+ feePayer = contractAddress;
537
+ }
538
+
443
539
  scopedNoteHashes.push(
444
540
  ...execution.publicInputs.noteHashes
445
541
  .getActiveItems()
@@ -492,6 +588,7 @@ export async function generateSimulatedProvingResult(
492
588
  execution.publicInputs.callContext.functionSelector,
493
589
  ),
494
590
  timings: execution.profileResult?.timings ?? { witgen: 0, oracles: {} },
591
+ kind: CircuitKind.App,
495
592
  bytecode: execution.acir,
496
593
  vk: execution.vk,
497
594
  witness: execution.partialWitness,
@@ -560,12 +657,12 @@ export async function generateSimulatedProvingResult(
560
657
  siloedNullifiers,
561
658
  minRevertibleSideEffectCounter,
562
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.
563
664
  const nonceGenerator = privateExecutionResult.firstNullifier;
564
- if (nonRevertibleNullifiers.length === 0) {
565
- nonRevertibleNullifiers.push(nonceGenerator);
566
- } else if (!nonRevertibleNullifiers[0].equals(nonceGenerator)) {
567
- throw new Error('The first non revertible nullifier should be equal to the nonce generator. This is a bug!');
568
- }
665
+ nonRevertibleNullifiers.unshift(nonceGenerator);
569
666
 
570
667
  if (isPrivateOnlyTx) {
571
668
  // We must make the note hashes unique by using the
@@ -660,8 +757,8 @@ export async function generateSimulatedProvingResult(
660
757
  daGas: TX_DA_GAS_OVERHEAD,
661
758
  }),
662
759
  ),
663
- /*feePayer=*/ AztecAddress.zero(),
664
- /*expirationTimestamp=*/ 0n,
760
+ /*feePayer=*/ feePayer,
761
+ /*expirationTimestamp=*/ expirationTimestamp,
665
762
  hasPublicCalls ? inputsForPublic : undefined,
666
763
  !hasPublicCalls ? inputsForRollup : undefined,
667
764
  );
@@ -716,7 +813,7 @@ function squashTransientSideEffects(
716
813
  * at the tx's anchor block, mimicking the behavior of the kernels
717
814
  */
718
815
  async function verifyReadRequests(
719
- node: Pick<AztecNode, 'getNoteHashMembershipWitness' | 'getNullifierMembershipWitness'>,
816
+ node: Pick<AztecNode, 'findLeavesIndexes'>,
720
817
  anchorBlockHash: BlockParameter,
721
818
  noteHashReadRequests: ScopedReadRequest[],
722
819
  nullifierReadRequests: ScopedReadRequest[],
@@ -749,13 +846,25 @@ async function verifyReadRequests(
749
846
  }
750
847
  }
751
848
 
752
- const [noteHashWitnesses, nullifierWitnesses] = await Promise.all([
753
- Promise.all(settledNoteHashReads.map(({ value }) => node.getNoteHashMembershipWitness(anchorBlockHash, value))),
754
- Promise.all(settledNullifierReads.map(({ value }) => node.getNullifierMembershipWitness(anchorBlockHash, value))),
849
+ const [noteHashResults, nullifierResults] = await Promise.all([
850
+ settledNoteHashReads.length > 0
851
+ ? node.findLeavesIndexes(
852
+ anchorBlockHash,
853
+ MerkleTreeId.NOTE_HASH_TREE,
854
+ settledNoteHashReads.map(({ value }) => value),
855
+ )
856
+ : [],
857
+ settledNullifierReads.length > 0
858
+ ? node.findLeavesIndexes(
859
+ anchorBlockHash,
860
+ MerkleTreeId.NULLIFIER_TREE,
861
+ settledNullifierReads.map(({ value }) => value),
862
+ )
863
+ : [],
755
864
  ]);
756
865
 
757
866
  for (let i = 0; i < settledNoteHashReads.length; i++) {
758
- if (!noteHashWitnesses[i]) {
867
+ if (!noteHashResults[i]) {
759
868
  throw new Error(
760
869
  `Note hash read request at index ${settledNoteHashReads[i].index} is reading an unknown note hash: ${settledNoteHashReads[i].value}`,
761
870
  );
@@ -763,7 +872,7 @@ async function verifyReadRequests(
763
872
  }
764
873
 
765
874
  for (let i = 0; i < settledNullifierReads.length; i++) {
766
- if (!nullifierWitnesses[i]) {
875
+ if (!nullifierResults[i]) {
767
876
  throw new Error(
768
877
  `Nullifier read request at index ${settledNullifierReads[i].index} is reading an unknown nullifier: ${settledNullifierReads[i].value}`,
769
878
  );
@@ -816,6 +925,11 @@ function meterGasUsed(data: PrivateToRollupAccumulatedData | PrivateToPublicAccu
816
925
  );
817
926
  meteredL2Gas += numContractClassLogs * L2_GAS_PER_CONTRACT_CLASS_LOG;
818
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
+
819
933
  const meteredDAGas = meteredDAFields * DA_GAS_PER_FIELD;
820
934
 
821
935
  if ((data as PrivateToPublicAccumulatedData).publicCallRequests) {