@aztec/pxe 0.0.1-commit.f504929 → 0.0.1-commit.f5a9928

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 (537) hide show
  1. package/dest/bin/check_oracle_version.js +41 -112
  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 +34 -0
  6. package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
  7. package/dest/bin/oracle_version_helpers.js +46 -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 +22 -16
  12. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  13. package/dest/block_synchronizer/block_synchronizer.js +71 -28
  14. package/dest/config/index.d.ts +9 -2
  15. package/dest/config/index.d.ts.map +1 -1
  16. package/dest/config/index.js +14 -15
  17. package/dest/config/package_info.js +1 -1
  18. package/dest/contract/contract_class_service.d.ts +24 -0
  19. package/dest/contract/contract_class_service.d.ts.map +1 -0
  20. package/dest/contract/contract_class_service.js +36 -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 +119 -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/skip_sync_contracts.d.ts +11 -0
  28. package/dest/contract/skip_sync_contracts.d.ts.map +1 -0
  29. package/dest/contract/skip_sync_contracts.js +18 -0
  30. package/dest/contract_function_simulator/anchored_contract_data.d.ts +36 -0
  31. package/dest/contract_function_simulator/anchored_contract_data.d.ts.map +1 -0
  32. package/dest/contract_function_simulator/anchored_contract_data.js +54 -0
  33. package/dest/contract_function_simulator/contract_function_simulator.d.ts +30 -25
  34. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  35. package/dest/contract_function_simulator/contract_function_simulator.js +114 -66
  36. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  37. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  38. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  39. package/dest/contract_function_simulator/execution_note_cache.d.ts +4 -10
  40. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  41. package/dest/contract_function_simulator/execution_note_cache.js +10 -29
  42. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +7 -11
  43. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  44. package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -15
  45. package/dest/contract_function_simulator/index.d.ts +26 -5
  46. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  47. package/dest/contract_function_simulator/index.js +11 -3
  48. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +29 -0
  49. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
  50. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +30 -0
  51. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
  52. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
  53. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
  54. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
  55. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
  56. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
  57. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
  58. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
  59. package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
  60. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +3 -4
  61. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  62. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +9 -10
  63. package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
  64. package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
  65. package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
  66. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
  67. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
  68. package/dest/contract_function_simulator/noir-structs/fact_collection.js +31 -0
  69. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +19 -10
  70. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  71. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +12 -24
  72. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +11 -9
  73. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  74. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +2 -63
  75. package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
  76. package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
  77. package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
  78. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -5
  79. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  80. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +8 -12
  81. package/dest/contract_function_simulator/noir-structs/option.d.ts +59 -0
  82. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
  83. package/dest/contract_function_simulator/noir-structs/option.js +67 -0
  84. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
  85. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
  86. package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
  87. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts +11 -0
  88. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts.map +1 -0
  89. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.js +4 -0
  90. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +8 -0
  91. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
  92. package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -0
  93. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts +28 -0
  94. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts.map +1 -0
  95. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.js +50 -0
  96. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +19 -0
  97. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
  98. package/dest/contract_function_simulator/noir-structs/resolved_tx.js +9 -0
  99. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +15 -0
  100. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
  101. package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
  102. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +6 -11
  103. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  104. package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -20
  105. package/dest/contract_function_simulator/oracle/acir_callback.d.ts +21 -0
  106. package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -0
  107. package/dest/contract_function_simulator/oracle/acir_callback.js +115 -0
  108. package/dest/contract_function_simulator/oracle/index.d.ts +2 -13
  109. package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -1
  110. package/dest/contract_function_simulator/oracle/index.js +1 -1
  111. package/dest/contract_function_simulator/oracle/interfaces.d.ts +15 -98
  112. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  113. package/dest/contract_function_simulator/oracle/interfaces.js +2 -2
  114. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts +39 -0
  115. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts.map +1 -0
  116. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.js +107 -0
  117. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -14
  118. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  119. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -24
  120. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +2 -2
  121. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  122. package/dest/contract_function_simulator/oracle/note_packing_utils.js +2 -2
  123. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +139 -0
  124. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
  125. package/dest/contract_function_simulator/oracle/oracle_registry.js +1016 -0
  126. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +274 -0
  127. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
  128. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +1243 -0
  129. package/dest/contract_function_simulator/oracle/private_execution.d.ts +1 -1
  130. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  131. package/dest/contract_function_simulator/oracle/private_execution.js +7 -6
  132. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +56 -71
  133. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  134. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +200 -99
  135. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +183 -76
  136. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  137. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +662 -156
  138. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  139. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  140. package/dest/contract_function_simulator/pick_notes.js +20 -3
  141. package/dest/contract_function_simulator/transient_array_service.d.ts +31 -0
  142. package/dest/contract_function_simulator/transient_array_service.d.ts.map +1 -0
  143. package/dest/contract_function_simulator/transient_array_service.js +62 -0
  144. package/dest/contract_logging.d.ts +9 -4
  145. package/dest/contract_logging.d.ts.map +1 -1
  146. package/dest/contract_logging.js +21 -6
  147. package/dest/debug/pxe_debug_utils.d.ts +4 -9
  148. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  149. package/dest/debug/pxe_debug_utils.js +0 -6
  150. package/dest/entrypoints/client/bundle/index.d.ts +2 -2
  151. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  152. package/dest/entrypoints/client/bundle/index.js +1 -1
  153. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  154. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  155. package/dest/entrypoints/client/bundle/utils.js +21 -8
  156. package/dest/entrypoints/client/lazy/index.d.ts +2 -2
  157. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  158. package/dest/entrypoints/client/lazy/index.js +1 -1
  159. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  160. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  161. package/dest/entrypoints/client/lazy/utils.js +21 -8
  162. package/dest/entrypoints/client/store.d.ts +14 -0
  163. package/dest/entrypoints/client/store.d.ts.map +1 -0
  164. package/dest/entrypoints/client/store.js +42 -0
  165. package/dest/entrypoints/pxe_creation_options.d.ts +16 -2
  166. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  167. package/dest/entrypoints/pxe_creation_options.js +3 -1
  168. package/dest/entrypoints/server/index.d.ts +7 -4
  169. package/dest/entrypoints/server/index.d.ts.map +1 -1
  170. package/dest/entrypoints/server/index.js +5 -3
  171. package/dest/entrypoints/server/store.d.ts +18 -0
  172. package/dest/entrypoints/server/store.d.ts.map +1 -0
  173. package/dest/entrypoints/server/store.js +28 -0
  174. package/dest/entrypoints/server/utils.d.ts +4 -3
  175. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  176. package/dest/entrypoints/server/utils.js +22 -8
  177. package/dest/error_enriching.d.ts +5 -3
  178. package/dest/error_enriching.d.ts.map +1 -1
  179. package/dest/error_enriching.js +15 -12
  180. package/dest/events/event_service.d.ts +21 -5
  181. package/dest/events/event_service.d.ts.map +1 -1
  182. package/dest/events/event_service.js +51 -17
  183. package/dest/events/private_event_filter_validator.d.ts +3 -2
  184. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  185. package/dest/events/private_event_filter_validator.js +15 -0
  186. package/dest/hooks/authorize_utility_call.d.ts +41 -0
  187. package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
  188. package/dest/hooks/authorize_utility_call.js +4 -0
  189. package/dest/hooks/execution_hooks.d.ts +62 -0
  190. package/dest/hooks/execution_hooks.d.ts.map +1 -0
  191. package/dest/hooks/execution_hooks.js +9 -0
  192. package/dest/hooks/index.d.ts +5 -0
  193. package/dest/hooks/index.d.ts.map +1 -0
  194. package/dest/hooks/index.js +2 -0
  195. package/dest/hooks/resolve_custom_request.d.ts +23 -0
  196. package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
  197. package/dest/hooks/resolve_custom_request.js +3 -0
  198. package/dest/hooks/resolve_tagging_secret_strategy.d.ts +50 -0
  199. package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
  200. package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
  201. package/dest/logs/log_service.d.ts +21 -11
  202. package/dest/logs/log_service.d.ts.map +1 -1
  203. package/dest/logs/log_service.js +181 -82
  204. package/dest/messages/tx_resolver_service.d.ts +28 -0
  205. package/dest/messages/tx_resolver_service.d.ts.map +1 -0
  206. package/dest/messages/tx_resolver_service.js +62 -0
  207. package/dest/node/benchmarked_node.d.ts +20 -0
  208. package/dest/node/benchmarked_node.d.ts.map +1 -0
  209. package/dest/node/benchmarked_node.js +94 -0
  210. package/dest/node/caching_aztec_node.d.ts +24 -0
  211. package/dest/node/caching_aztec_node.d.ts.map +1 -0
  212. package/dest/node/caching_aztec_node.js +268 -0
  213. package/dest/notes/note_service.d.ts +34 -7
  214. package/dest/notes/note_service.d.ts.map +1 -1
  215. package/dest/notes/note_service.js +82 -57
  216. package/dest/notes_filter.d.ts +2 -3
  217. package/dest/notes_filter.d.ts.map +1 -1
  218. package/dest/oracle_version.d.ts +4 -3
  219. package/dest/oracle_version.d.ts.map +1 -1
  220. package/dest/oracle_version.js +20 -10
  221. package/dest/private_kernel/batch_planner.d.ts +47 -0
  222. package/dest/private_kernel/batch_planner.d.ts.map +1 -0
  223. package/dest/private_kernel/batch_planner.js +104 -0
  224. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +1 -1
  225. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  226. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +10 -5
  227. package/dest/private_kernel/hints/test_utils.d.ts +1 -1
  228. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -1
  229. package/dest/private_kernel/hints/test_utils.js +3 -4
  230. package/dest/private_kernel/private_kernel_execution_prover.d.ts +6 -2
  231. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  232. package/dest/private_kernel/private_kernel_execution_prover.js +160 -85
  233. package/dest/private_kernel/private_kernel_oracle.d.ts +12 -10
  234. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  235. package/dest/private_kernel/private_kernel_oracle.js +40 -26
  236. package/dest/pxe.d.ts +169 -54
  237. package/dest/pxe.d.ts.map +1 -1
  238. package/dest/pxe.js +378 -213
  239. package/dest/storage/address_store/address_store.d.ts +1 -1
  240. package/dest/storage/address_store/address_store.d.ts.map +1 -1
  241. package/dest/storage/address_store/address_store.js +2 -1
  242. package/dest/storage/allowed_scopes.d.ts +6 -0
  243. package/dest/storage/allowed_scopes.d.ts.map +1 -0
  244. package/dest/storage/allowed_scopes.js +7 -0
  245. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -6
  246. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
  247. package/dest/storage/anchor_block_store/anchor_block_store.js +9 -7
  248. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
  249. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
  250. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
  251. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
  252. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
  253. package/dest/storage/backwards_compatibility_tests/schema_tests.js +671 -0
  254. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
  255. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
  256. package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
  257. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  258. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  259. package/dest/storage/capsule_store/capsule_service.js +47 -0
  260. package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
  261. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  262. package/dest/storage/capsule_store/capsule_store.js +37 -29
  263. package/dest/storage/capsule_store/index.d.ts +2 -1
  264. package/dest/storage/capsule_store/index.d.ts.map +1 -1
  265. package/dest/storage/capsule_store/index.js +1 -0
  266. package/dest/storage/contract_store/contract_store.d.ts +27 -24
  267. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  268. package/dest/storage/contract_store/contract_store.js +72 -99
  269. package/dest/storage/contract_store/private_functions_tree.d.ts +1 -1
  270. package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -1
  271. package/dest/storage/contract_store/private_functions_tree.js +2 -1
  272. package/dest/storage/fact_store/fact_service.d.ts +22 -0
  273. package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
  274. package/dest/storage/fact_store/fact_service.js +45 -0
  275. package/dest/storage/fact_store/fact_store.d.ts +95 -0
  276. package/dest/storage/fact_store/fact_store.d.ts.map +1 -0
  277. package/dest/storage/fact_store/fact_store.js +411 -0
  278. package/dest/storage/fact_store/fact_store_keys.d.ts +34 -0
  279. package/dest/storage/fact_store/fact_store_keys.d.ts.map +1 -0
  280. package/dest/storage/fact_store/fact_store_keys.js +50 -0
  281. package/dest/storage/fact_store/index.d.ts +6 -0
  282. package/dest/storage/fact_store/index.d.ts.map +1 -0
  283. package/dest/storage/fact_store/index.js +4 -0
  284. package/dest/storage/fact_store/origin_state.d.ts +59 -0
  285. package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
  286. package/dest/storage/fact_store/origin_state.js +60 -0
  287. package/dest/storage/fact_store/stored_fact.d.ts +32 -0
  288. package/dest/storage/fact_store/stored_fact.d.ts.map +1 -0
  289. package/dest/storage/fact_store/stored_fact.js +64 -0
  290. package/dest/storage/index.d.ts +3 -2
  291. package/dest/storage/index.d.ts.map +1 -1
  292. package/dest/storage/index.js +2 -1
  293. package/dest/storage/metadata.d.ts +2 -2
  294. package/dest/storage/metadata.d.ts.map +1 -1
  295. package/dest/storage/metadata.js +1 -1
  296. package/dest/storage/note_store/note_store.d.ts +42 -33
  297. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  298. package/dest/storage/note_store/note_store.js +202 -172
  299. package/dest/storage/note_store/stored_note.d.ts +3 -8
  300. package/dest/storage/note_store/stored_note.d.ts.map +1 -1
  301. package/dest/storage/note_store/stored_note.js +4 -20
  302. package/dest/storage/open_pxe_stores.d.ts +35 -0
  303. package/dest/storage/open_pxe_stores.d.ts.map +1 -0
  304. package/dest/storage/open_pxe_stores.js +29 -0
  305. package/dest/storage/private_event_store/private_event_store.d.ts +13 -16
  306. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  307. package/dest/storage/private_event_store/private_event_store.js +48 -45
  308. package/dest/storage/private_event_store/stored_private_event.js +1 -1
  309. package/dest/storage/store_identity.d.ts +35 -0
  310. package/dest/storage/store_identity.d.ts.map +1 -0
  311. package/dest/storage/store_identity.js +44 -0
  312. package/dest/storage/tagging_store/index.d.ts +2 -2
  313. package/dest/storage/tagging_store/index.d.ts.map +1 -1
  314. package/dest/storage/tagging_store/index.js +1 -1
  315. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  316. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  317. package/dest/storage/tagging_store/sender_tagging_store.d.ts +63 -31
  318. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  319. package/dest/storage/tagging_store/sender_tagging_store.js +210 -129
  320. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts +51 -0
  321. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts.map +1 -0
  322. package/dest/storage/tagging_store/tagging_secret_sources_store.js +105 -0
  323. package/dest/tagging/constants.d.ts +11 -2
  324. package/dest/tagging/constants.d.ts.map +1 -1
  325. package/dest/tagging/constants.js +38 -10
  326. package/dest/tagging/get_all_logs_by_tags.d.ts +55 -10
  327. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
  328. package/dest/tagging/get_all_logs_by_tags.js +55 -36
  329. package/dest/tagging/index.d.ts +8 -7
  330. package/dest/tagging/index.d.ts.map +1 -1
  331. package/dest/tagging/index.js +6 -5
  332. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +29 -0
  333. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
  334. package/dest/tagging/persist_sender_tagging_index_ranges.js +42 -0
  335. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +74 -0
  336. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
  337. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +235 -0
  338. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +3 -3
  339. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -1
  340. package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
  341. package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
  342. package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
  343. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +8 -6
  344. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  345. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +25 -19
  346. package/dest/tagging/sender_sync/utils/classify_pending_txs.d.ts +22 -0
  347. package/dest/tagging/sender_sync/utils/classify_pending_txs.d.ts.map +1 -0
  348. package/dest/tagging/sender_sync/utils/classify_pending_txs.js +62 -0
  349. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +17 -6
  350. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  351. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +46 -31
  352. package/dest/tagging/sender_sync/utils/resolve_pending_txs.d.ts +29 -0
  353. package/dest/tagging/sender_sync/utils/resolve_pending_txs.d.ts.map +1 -0
  354. package/dest/tagging/sender_sync/utils/resolve_pending_txs.js +42 -0
  355. package/dest/tagging/sender_sync/utils/test_utils.d.ts +16 -0
  356. package/dest/tagging/sender_sync/utils/test_utils.d.ts.map +1 -0
  357. package/dest/tagging/sender_sync/utils/test_utils.js +24 -0
  358. package/dest/tagging/testing/tag_query_test_utils.d.ts +6 -0
  359. package/dest/tagging/testing/tag_query_test_utils.d.ts.map +1 -0
  360. package/dest/tagging/testing/tag_query_test_utils.js +10 -0
  361. package/package.json +20 -17
  362. package/src/bin/check_oracle_version.ts +46 -135
  363. package/src/bin/index.ts +1 -0
  364. package/src/bin/oracle_version_helpers.ts +54 -0
  365. package/src/block_synchronizer/block_stream_source.ts +42 -0
  366. package/src/block_synchronizer/block_synchronizer.ts +86 -40
  367. package/src/config/index.ts +16 -9
  368. package/src/config/package_info.ts +1 -1
  369. package/src/contract/contract_class_service.ts +45 -0
  370. package/src/contract/contract_sync_service.ts +179 -0
  371. package/src/contract/helpers.ts +35 -0
  372. package/src/contract/skip_sync_contracts.ts +23 -0
  373. package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
  374. package/src/contract_function_simulator/contract_function_simulator.ts +178 -82
  375. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  376. package/src/contract_function_simulator/execution_note_cache.ts +10 -30
  377. package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -18
  378. package/src/contract_function_simulator/index.ts +89 -4
  379. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +43 -0
  380. package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
  381. package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
  382. package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
  383. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +10 -9
  384. package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
  385. package/src/contract_function_simulator/noir-structs/fact_collection.ts +64 -0
  386. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +27 -20
  387. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +14 -64
  388. package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
  389. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +6 -11
  390. package/src/contract_function_simulator/noir-structs/option.ts +75 -0
  391. package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
  392. package/src/contract_function_simulator/noir-structs/pending_tagged_log.ts +12 -0
  393. package/src/contract_function_simulator/noir-structs/provided_secret.ts +5 -0
  394. package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +66 -0
  395. package/src/contract_function_simulator/noir-structs/resolved_tx.ts +19 -0
  396. package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +16 -0
  397. package/src/contract_function_simulator/noir-structs/utility_context.ts +5 -17
  398. package/src/contract_function_simulator/oracle/acir_callback.ts +154 -0
  399. package/src/contract_function_simulator/oracle/index.ts +1 -15
  400. package/src/contract_function_simulator/oracle/interfaces.ts +11 -176
  401. package/src/contract_function_simulator/oracle/legacy_oracle_registry.ts +147 -0
  402. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +6 -21
  403. package/src/contract_function_simulator/oracle/note_packing_utils.ts +3 -3
  404. package/src/contract_function_simulator/oracle/oracle_registry.ts +710 -0
  405. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +1052 -0
  406. package/src/contract_function_simulator/oracle/private_execution.ts +6 -7
  407. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +249 -132
  408. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +978 -249
  409. package/src/contract_function_simulator/pick_notes.ts +22 -3
  410. package/src/contract_function_simulator/transient_array_service.ts +91 -0
  411. package/src/contract_logging.ts +18 -5
  412. package/src/debug/pxe_debug_utils.ts +4 -12
  413. package/src/entrypoints/client/bundle/index.ts +1 -1
  414. package/src/entrypoints/client/bundle/utils.ts +26 -8
  415. package/src/entrypoints/client/lazy/index.ts +1 -1
  416. package/src/entrypoints/client/lazy/utils.ts +26 -8
  417. package/src/entrypoints/client/store.ts +54 -0
  418. package/src/entrypoints/pxe_creation_options.ts +21 -1
  419. package/src/entrypoints/server/index.ts +7 -3
  420. package/src/entrypoints/server/store.ts +47 -0
  421. package/src/entrypoints/server/utils.ts +39 -14
  422. package/src/error_enriching.ts +30 -13
  423. package/src/events/event_service.ts +85 -26
  424. package/src/events/private_event_filter_validator.ts +21 -1
  425. package/src/hooks/authorize_utility_call.ts +44 -0
  426. package/src/hooks/execution_hooks.ts +68 -0
  427. package/src/hooks/index.ts +13 -0
  428. package/src/hooks/resolve_custom_request.ts +24 -0
  429. package/src/hooks/resolve_tagging_secret_strategy.ts +60 -0
  430. package/src/logs/log_service.ts +228 -147
  431. package/src/messages/tx_resolver_service.ts +81 -0
  432. package/src/node/benchmarked_node.ts +140 -0
  433. package/src/node/caching_aztec_node.ts +407 -0
  434. package/src/notes/note_service.ts +127 -86
  435. package/src/notes_filter.ts +1 -3
  436. package/src/oracle_version.ts +20 -10
  437. package/src/private_kernel/batch_planner.ts +169 -0
  438. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +15 -4
  439. package/src/private_kernel/hints/test_utils.ts +3 -10
  440. package/src/private_kernel/private_kernel_execution_prover.ts +246 -117
  441. package/src/private_kernel/private_kernel_oracle.ts +58 -29
  442. package/src/pxe.ts +595 -245
  443. package/src/storage/address_store/address_store.ts +2 -1
  444. package/src/storage/allowed_scopes.ts +14 -0
  445. package/src/storage/anchor_block_store/anchor_block_store.ts +9 -7
  446. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
  447. package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
  448. package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
  449. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
  450. package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
  451. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
  452. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +40 -0
  453. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +56 -0
  454. package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
  455. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +26 -0
  456. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +30 -0
  457. package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
  458. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +117 -0
  459. package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
  460. package/src/storage/backwards_compatibility_tests/schema_tests.ts +803 -0
  461. package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
  462. package/src/storage/capsule_store/capsule_service.ts +85 -0
  463. package/src/storage/capsule_store/capsule_store.ts +45 -27
  464. package/src/storage/capsule_store/index.ts +1 -0
  465. package/src/storage/contract_store/contract_store.ts +98 -125
  466. package/src/storage/contract_store/private_functions_tree.ts +2 -1
  467. package/src/storage/fact_store/fact_service.ts +69 -0
  468. package/src/storage/fact_store/fact_store.ts +488 -0
  469. package/src/storage/fact_store/fact_store_keys.ts +75 -0
  470. package/src/storage/fact_store/index.ts +15 -0
  471. package/src/storage/fact_store/origin_state.ts +84 -0
  472. package/src/storage/fact_store/stored_fact.ts +80 -0
  473. package/src/storage/index.ts +2 -1
  474. package/src/storage/metadata.ts +1 -1
  475. package/src/storage/note_store/note_store.ts +233 -194
  476. package/src/storage/note_store/stored_note.ts +5 -27
  477. package/src/storage/open_pxe_stores.ts +52 -0
  478. package/src/storage/private_event_store/private_event_store.ts +55 -56
  479. package/src/storage/private_event_store/stored_private_event.ts +1 -1
  480. package/src/storage/store_identity.ts +72 -0
  481. package/src/storage/tagging_store/index.ts +1 -1
  482. package/src/storage/tagging_store/recipient_tagging_store.ts +5 -9
  483. package/src/storage/tagging_store/sender_tagging_store.ts +278 -158
  484. package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
  485. package/src/tagging/constants.ts +42 -10
  486. package/src/tagging/get_all_logs_by_tags.ts +115 -50
  487. package/src/tagging/index.ts +12 -6
  488. package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
  489. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +356 -0
  490. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
  491. package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
  492. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +32 -22
  493. package/src/tagging/sender_sync/utils/classify_pending_txs.ts +92 -0
  494. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +55 -39
  495. package/src/tagging/sender_sync/utils/resolve_pending_txs.ts +65 -0
  496. package/src/tagging/sender_sync/utils/test_utils.ts +46 -0
  497. package/src/tagging/testing/tag_query_test_utils.ts +11 -0
  498. package/dest/access_scopes.d.ts +0 -9
  499. package/dest/access_scopes.d.ts.map +0 -1
  500. package/dest/access_scopes.js +0 -6
  501. package/dest/contract_function_simulator/benchmarked_node.d.ts +0 -9
  502. package/dest/contract_function_simulator/benchmarked_node.d.ts.map +0 -1
  503. package/dest/contract_function_simulator/benchmarked_node.js +0 -77
  504. package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -60
  505. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
  506. package/dest/contract_function_simulator/oracle/oracle.js +0 -411
  507. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +0 -6
  508. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +0 -1
  509. package/dest/contract_function_simulator/proxied_contract_data_source.js +0 -80
  510. package/dest/contract_sync/contract_sync_service.d.ts +0 -43
  511. package/dest/contract_sync/contract_sync_service.d.ts.map +0 -1
  512. package/dest/contract_sync/contract_sync_service.js +0 -97
  513. package/dest/contract_sync/helpers.d.ts +0 -29
  514. package/dest/contract_sync/helpers.d.ts.map +0 -1
  515. package/dest/contract_sync/helpers.js +0 -55
  516. package/dest/storage/tagging_store/sender_address_book_store.d.ts +0 -14
  517. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +0 -1
  518. package/dest/storage/tagging_store/sender_address_book_store.js +0 -36
  519. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -14
  520. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +0 -1
  521. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +0 -99
  522. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -14
  523. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +0 -1
  524. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +0 -33
  525. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +0 -11
  526. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +0 -1
  527. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +0 -29
  528. package/src/access_scopes.ts +0 -9
  529. package/src/contract_function_simulator/benchmarked_node.ts +0 -103
  530. package/src/contract_function_simulator/oracle/oracle.ts +0 -665
  531. package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -83
  532. package/src/contract_sync/contract_sync_service.ts +0 -152
  533. package/src/contract_sync/helpers.ts +0 -98
  534. package/src/storage/tagging_store/sender_address_book_store.ts +0 -48
  535. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -140
  536. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -44
  537. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +0 -36
@@ -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
+ }
@@ -17,13 +17,16 @@ import {
17
17
  MAX_NULLIFIERS_PER_TX,
18
18
  MAX_NULLIFIER_READ_REQUESTS_PER_TX,
19
19
  MAX_PRIVATE_LOGS_PER_TX,
20
+ MAX_TX_LIFETIME,
20
21
  PRIVATE_TX_L2_GAS_OVERHEAD,
22
+ PUBLIC_DATA_WRITE_LENGTH,
21
23
  PUBLIC_TX_L2_GAS_OVERHEAD,
22
24
  TX_DA_GAS_OVERHEAD,
23
25
  } from '@aztec/constants';
24
26
  import { arrayNonEmptyLength, padArrayEnd } from '@aztec/foundation/collection';
25
27
  import { Fr } from '@aztec/foundation/curves/bn254';
26
28
  import { type Logger, createLogger } from '@aztec/foundation/log';
29
+ import { allToCompletion } from '@aztec/foundation/promise';
27
30
  import { Timer } from '@aztec/foundation/timer';
28
31
  import type { KeyStore } from '@aztec/key-store';
29
32
  import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
@@ -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,33 @@ 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';
100
- import type { BenchmarkedNode } from './benchmarked_node.js';
110
+ import type { TaggingSecretSourcesStore } from '../storage/tagging_store/tagging_secret_sources_store.js';
111
+ import { AnchoredContractData } from './anchored_contract_data.js';
101
112
  import { ExecutionNoteCache } from './execution_note_cache.js';
102
113
  import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
103
114
  import { HashedValuesCache } from './hashed_values_cache.js';
104
- import { Oracle } from './oracle/oracle.js';
115
+ import { buildACIRCallback } from './oracle/acir_callback.js';
105
116
  import { executePrivateFunction } from './oracle/private_execution.js';
106
117
  import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
107
118
  import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
119
+ import { TransientArrayService } from './transient_array_service.js';
108
120
 
109
121
  /** Options for ContractFunctionSimulator.run. */
110
122
  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
123
  /** The address calling the function. Can be replaced to simulate a call from another contract or account. */
116
124
  msgSender?: AztecAddress;
117
125
  /** The block header to use as base state for this run. */
@@ -119,7 +127,7 @@ export type ContractSimulatorRunOpts = {
119
127
  /** The address used as a tagging sender when emitting private logs. */
120
128
  senderForTags?: AztecAddress;
121
129
  /** The accounts whose notes we can access in this call. */
122
- scopes: AccessScopes;
130
+ scopes: AztecAddress[];
123
131
  /** The job ID for staged writes. */
124
132
  jobId: string;
125
133
  };
@@ -127,17 +135,24 @@ export type ContractSimulatorRunOpts = {
127
135
  /** Args for ContractFunctionSimulator constructor. */
128
136
  export type ContractFunctionSimulatorArgs = {
129
137
  contractStore: ContractStore;
138
+ contractClassService: ContractClassService;
139
+ /** Per-simulation contract overrides. */
140
+ overrides?: ContractOverrides;
130
141
  noteStore: NoteStore;
131
142
  keyStore: KeyStore;
132
143
  addressStore: AddressStore;
133
144
  aztecNode: AztecNode;
145
+ l2TipsStore: L2TipsProvider;
134
146
  senderTaggingStore: SenderTaggingStore;
135
147
  recipientTaggingStore: RecipientTaggingStore;
136
- senderAddressBookStore: SenderAddressBookStore;
148
+ taggingSecretSourcesStore: TaggingSecretSourcesStore;
137
149
  capsuleStore: CapsuleStore;
150
+ factStore: FactStore;
138
151
  privateEventStore: PrivateEventStore;
139
152
  simulator: CircuitSimulator;
140
153
  contractSyncService: ContractSyncService;
154
+ txResolver: TxResolverService;
155
+ hooks?: ExecutionHooks;
141
156
  };
142
157
 
143
158
  /**
@@ -146,31 +161,43 @@ export type ContractFunctionSimulatorArgs = {
146
161
  export class ContractFunctionSimulator {
147
162
  private readonly log: Logger;
148
163
  private readonly contractStore: ContractStore;
164
+ private readonly contractClassService: ContractClassService;
165
+ private readonly overrides: ContractOverrides | undefined;
149
166
  private readonly noteStore: NoteStore;
150
167
  private readonly keyStore: KeyStore;
151
168
  private readonly addressStore: AddressStore;
152
169
  private readonly aztecNode: AztecNode;
170
+ private readonly l2TipsStore: L2TipsProvider;
153
171
  private readonly senderTaggingStore: SenderTaggingStore;
154
172
  private readonly recipientTaggingStore: RecipientTaggingStore;
155
- private readonly senderAddressBookStore: SenderAddressBookStore;
173
+ private readonly taggingSecretSourcesStore: TaggingSecretSourcesStore;
156
174
  private readonly capsuleStore: CapsuleStore;
175
+ private readonly factStore: FactStore;
157
176
  private readonly privateEventStore: PrivateEventStore;
158
177
  private readonly simulator: CircuitSimulator;
159
178
  private readonly contractSyncService: ContractSyncService;
179
+ private readonly txResolver: TxResolverService;
180
+ private readonly hooks: ExecutionHooks | undefined;
160
181
 
161
182
  constructor(args: ContractFunctionSimulatorArgs) {
162
183
  this.contractStore = args.contractStore;
184
+ this.contractClassService = args.contractClassService;
185
+ this.overrides = args.overrides;
163
186
  this.noteStore = args.noteStore;
164
187
  this.keyStore = args.keyStore;
165
188
  this.addressStore = args.addressStore;
166
189
  this.aztecNode = args.aztecNode;
190
+ this.l2TipsStore = args.l2TipsStore;
167
191
  this.senderTaggingStore = args.senderTaggingStore;
168
192
  this.recipientTaggingStore = args.recipientTaggingStore;
169
- this.senderAddressBookStore = args.senderAddressBookStore;
193
+ this.taggingSecretSourcesStore = args.taggingSecretSourcesStore;
170
194
  this.capsuleStore = args.capsuleStore;
195
+ this.factStore = args.factStore;
171
196
  this.privateEventStore = args.privateEventStore;
172
197
  this.simulator = args.simulator;
173
198
  this.contractSyncService = args.contractSyncService;
199
+ this.txResolver = args.txResolver;
200
+ this.hooks = args.hooks;
174
201
  this.log = createLogger('simulator');
175
202
  }
176
203
 
@@ -181,9 +208,7 @@ export class ContractFunctionSimulator {
181
208
  public async run(
182
209
  request: TxExecutionRequest,
183
210
  {
184
- contractAddress,
185
- selector,
186
- msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE),
211
+ msgSender = AztecAddress.NULL_MSG_SENDER,
187
212
  anchorBlockHeader,
188
213
  senderForTags,
189
214
  scopes,
@@ -192,18 +217,30 @@ export class ContractFunctionSimulator {
192
217
  ): Promise<PrivateExecutionResult> {
193
218
  const simulatorSetupTimer = new Timer();
194
219
 
195
- const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(contractAddress, selector);
220
+ const contractAddress = request.origin;
196
221
 
197
- if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
198
- throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
199
- }
222
+ const anchoredContractData = new AnchoredContractData(
223
+ this.contractStore,
224
+ this.contractClassService,
225
+ anchorBlockHeader,
226
+ this.overrides,
227
+ );
200
228
 
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}`,
229
+ const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(
230
+ contractAddress,
231
+ request.functionSelector,
232
+ );
233
+ if (!entryPointArtifact) {
234
+ throw new Error(
235
+ `Cannot run function ${request.functionSelector} on ${contractAddress}: the contract is not registered. ` +
236
+ `Register it via wallet.registerContract(...).`,
204
237
  );
205
238
  }
206
239
 
240
+ if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
241
+ throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
242
+ }
243
+
207
244
  // reserve the first side effect for the tx hash (inserted by the private kernel)
208
245
  const startSideEffectCounter = 2;
209
246
 
@@ -218,9 +255,15 @@ export class ContractFunctionSimulator {
218
255
  const noteCache = new ExecutionNoteCache(protocolNullifier);
219
256
  const taggingIndexCache = new ExecutionTaggingIndexCache();
220
257
 
258
+ // One shared transient store for the whole execution tree rooted at this transaction. Threaded into every child
259
+ // private oracle and inherited by nested utility frames, so that frames of the same contract see each other's
260
+ // transient arrays, then discarded when run() returns.
261
+ const transientArrayService = new TransientArrayService();
262
+
221
263
  const privateExecutionOracle = new PrivateExecutionOracle({
222
264
  argsHash: request.firstCallArgsHash,
223
265
  txContext: request.txContext,
266
+ txRequestSalt: request.salt,
224
267
  callContext,
225
268
  anchorBlockHeader,
226
269
  utilityExecutor: async (call, execScopes) => {
@@ -231,16 +274,18 @@ export class ContractFunctionSimulator {
231
274
  executionCache: HashedValuesCache.create(request.argsOfCalls),
232
275
  noteCache,
233
276
  taggingIndexCache,
234
- contractStore: this.contractStore,
277
+ anchoredContractData,
235
278
  noteStore: this.noteStore,
236
279
  keyStore: this.keyStore,
237
280
  addressStore: this.addressStore,
238
281
  aztecNode: this.aztecNode,
239
282
  senderTaggingStore: this.senderTaggingStore,
240
283
  recipientTaggingStore: this.recipientTaggingStore,
241
- senderAddressBookStore: this.senderAddressBookStore,
242
- capsuleStore: this.capsuleStore,
284
+ taggingSecretSourcesStore: this.taggingSecretSourcesStore,
285
+ capsuleService: new CapsuleService(this.capsuleStore, scopes),
286
+ factService: new FactService(this.factStore, scopes),
243
287
  privateEventStore: this.privateEventStore,
288
+ txResolver: this.txResolver,
244
289
  contractSyncService: this.contractSyncService,
245
290
  jobId,
246
291
  totalPublicCalldataCount: 0,
@@ -248,6 +293,9 @@ export class ContractFunctionSimulator {
248
293
  scopes,
249
294
  senderForTags,
250
295
  simulator: this.simulator,
296
+ l2TipsStore: this.l2TipsStore,
297
+ hooks: this.hooks,
298
+ transientArrayService,
251
299
  });
252
300
 
253
301
  const setupTime = simulatorSetupTimer.ms();
@@ -266,8 +314,7 @@ export class ContractFunctionSimulator {
266
314
  );
267
315
  const simulatorTeardownTimer = new Timer();
268
316
 
269
- noteCache.finish();
270
- const firstNullifierHint = noteCache.getNonceGenerator();
317
+ const firstNullifier = noteCache.getNonceGenerator();
271
318
 
272
319
  const publicCallRequests = collectNested([executionResult], r =>
273
320
  r.publicInputs.publicCallRequests
@@ -275,9 +322,9 @@ export class ContractFunctionSimulator {
275
322
  .map(r => r.inner)
276
323
  .concat(r.publicInputs.publicTeardownCallRequest.isEmpty() ? [] : [r.publicInputs.publicTeardownCallRequest]),
277
324
  );
278
- const publicFunctionsCalldata = await Promise.all(
325
+ const publicFunctionsCalldata = await allToCompletion(
279
326
  publicCallRequests.map(async r => {
280
- const calldata = await privateExecutionOracle.loadFromExecutionCache(r.calldataHash);
327
+ const calldata = await privateExecutionOracle.getHashPreimage(r.calldataHash);
281
328
  return new HashedValues(calldata, r.calldataHash);
282
329
  }),
283
330
  );
@@ -290,53 +337,79 @@ export class ContractFunctionSimulator {
290
337
  }
291
338
 
292
339
  // Not to be confused with a PrivateCallExecutionResult. This is a superset
293
- // of the PrivateCallExecutionResult, containing also firstNullifierHint
340
+ // of the PrivateCallExecutionResult, containing also firstNullifier
294
341
  // and publicFunctionsCalldata.
295
- return new PrivateExecutionResult(executionResult, firstNullifierHint, publicFunctionsCalldata);
342
+ return new PrivateExecutionResult(executionResult, firstNullifier, publicFunctionsCalldata);
296
343
  } catch (err) {
297
344
  throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
298
345
  }
299
346
  }
300
347
 
301
- // docs:start:execute_utility_function
302
348
  /**
303
349
  * Runs a utility function.
304
350
  * @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
351
  * @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
310
352
  */
311
353
  public async runUtility(
312
354
  call: FunctionCall,
313
355
  authwits: AuthWitness[],
314
356
  anchorBlockHeader: BlockHeader,
315
- scopes: AccessScopes,
357
+ scopes: AztecAddress[],
316
358
  jobId: string,
317
- ): Promise<Fr[]> {
318
- const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
359
+ ): Promise<{ result: Fr[]; offchainEffects: OffchainEffect[] }> {
360
+ const anchoredContractData = new AnchoredContractData(
361
+ this.contractStore,
362
+ this.contractClassService,
363
+ anchorBlockHeader,
364
+ this.overrides,
365
+ );
366
+
367
+ const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
368
+ if (!entryPointArtifact) {
369
+ throw new Error(
370
+ `Cannot run function ${call.selector} on ${call.to}: the contract is not registered. ` +
371
+ `Register it via wallet.registerContract(...).`,
372
+ );
373
+ }
319
374
 
320
375
  if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
321
376
  throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
322
377
  }
323
378
 
379
+ const utilityExecutor = async (syncCall: FunctionCall, execScopes: AztecAddress[]) => {
380
+ await this.runUtility(syncCall, [], anchorBlockHeader, execScopes, jobId);
381
+ };
382
+
324
383
  const oracle = new UtilityExecutionOracle({
325
- contractAddress: call.to,
384
+ callContext: CallContext.from({
385
+ msgSender: AztecAddress.NULL_MSG_SENDER,
386
+ contractAddress: call.to,
387
+ functionSelector: call.selector,
388
+ isStaticCall: true,
389
+ }),
326
390
  authWitnesses: authwits,
327
391
  capsules: [],
328
392
  anchorBlockHeader,
329
- contractStore: this.contractStore,
393
+ anchoredContractData,
330
394
  noteStore: this.noteStore,
331
395
  keyStore: this.keyStore,
332
396
  addressStore: this.addressStore,
333
397
  aztecNode: this.aztecNode,
334
398
  recipientTaggingStore: this.recipientTaggingStore,
335
- senderAddressBookStore: this.senderAddressBookStore,
336
- capsuleStore: this.capsuleStore,
399
+ taggingSecretSourcesStore: this.taggingSecretSourcesStore,
400
+ capsuleService: new CapsuleService(this.capsuleStore, scopes),
401
+ factService: new FactService(this.factStore, scopes),
337
402
  privateEventStore: this.privateEventStore,
403
+ txResolver: this.txResolver,
404
+ contractSyncService: this.contractSyncService,
405
+ l2TipsStore: this.l2TipsStore,
338
406
  jobId,
339
407
  scopes,
408
+ simulator: this.simulator,
409
+ hooks: this.hooks,
410
+ utilityExecutor,
411
+ // Execution-tree root (top-level utility run or contract sync): own store; nested frames inherit it.
412
+ transientArrayService: new TransientArrayService(),
340
413
  });
341
414
 
342
415
  try {
@@ -347,7 +420,7 @@ export class ContractFunctionSimulator {
347
420
 
348
421
  const initialWitness = toACVMWitness(0, call.args);
349
422
  const acirExecutionResult = await this.simulator
350
- .executeUserCircuit(initialWitness, entryPointArtifact, new Oracle(oracle).toACIRCallback())
423
+ .executeUserCircuit(initialWitness, entryPointArtifact, buildACIRCallback(oracle))
351
424
  .catch((err: Error) => {
352
425
  err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
353
426
  throw new ExecutionError(
@@ -362,28 +435,14 @@ export class ContractFunctionSimulator {
362
435
  });
363
436
 
364
437
  this.log.verbose(`Utility execution for ${call.to}.${call.selector} completed`);
365
- return witnessMapToFields(acirExecutionResult.returnWitness);
438
+ return {
439
+ result: witnessMapToFields(acirExecutionResult.returnWitness),
440
+ offchainEffects: oracle.getOffchainEffects(),
441
+ };
366
442
  } catch (err) {
367
443
  throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
368
444
  }
369
445
  }
370
- // docs:end:execute_utility_function
371
-
372
- /**
373
- * Returns the execution statistics collected during the simulator run.
374
- * @returns The execution statistics.
375
- */
376
- getStats() {
377
- const nodeRPCCalls =
378
- typeof (this.aztecNode as BenchmarkedNode).getStats === 'function'
379
- ? (this.aztecNode as BenchmarkedNode).getStats()
380
- : {
381
- perMethod: {},
382
- roundTrips: { roundTrips: 0, totalBlockingTime: 0, roundTripDurations: [], roundTripMethods: [] },
383
- };
384
-
385
- return { nodeRPCCalls };
386
- }
387
446
  }
388
447
 
389
448
  class OrderedSideEffect<T> {
@@ -432,14 +491,34 @@ export async function generateSimulatedProvingResult(
432
491
 
433
492
  let publicTeardownCallRequest;
434
493
 
494
+ // We set expiration timestamp to anchor_block_timestamp + MAX_TX_LIFETIME (24h) just like kernels do
495
+ let expirationTimestamp =
496
+ privateExecutionResult.entrypoint.publicInputs.anchorBlockHeader.globalVariables.timestamp +
497
+ BigInt(MAX_TX_LIFETIME);
498
+
499
+ let feePayer = AztecAddress.zero();
500
+
435
501
  const executions = [privateExecutionResult.entrypoint];
436
502
 
437
503
  while (executions.length !== 0) {
438
504
  const execution = executions.shift()!;
439
505
  executions.unshift(...execution!.nestedExecutionResults);
440
506
 
507
+ // Just like kernels we overwrite the default value if the call sets it.
508
+ const callExpirationTimestamp = execution.publicInputs.expirationTimestamp;
509
+ if (callExpirationTimestamp !== 0n && callExpirationTimestamp < expirationTimestamp) {
510
+ expirationTimestamp = callExpirationTimestamp;
511
+ }
512
+
441
513
  const { contractAddress } = execution.publicInputs.callContext;
442
514
 
515
+ if (execution.publicInputs.isFeePayer) {
516
+ if (!feePayer.isZero()) {
517
+ throw new Error('Multiple fee payers found in private execution result');
518
+ }
519
+ feePayer = contractAddress;
520
+ }
521
+
443
522
  scopedNoteHashes.push(
444
523
  ...execution.publicInputs.noteHashes
445
524
  .getActiveItems()
@@ -449,7 +528,7 @@ export async function generateSimulatedProvingResult(
449
528
  scopedNullifiers.push(...execution.publicInputs.nullifiers.getActiveItems().map(n => n.scope(contractAddress)));
450
529
 
451
530
  taggedPrivateLogs.push(
452
- ...(await Promise.all(
531
+ ...(await allToCompletion(
453
532
  execution.publicInputs.privateLogs.getActiveItems().map(async metadata => {
454
533
  metadata.log.fields[0] = await computeSiloedPrivateLogFirstField(contractAddress, metadata.log.fields[0]);
455
534
  return new OrderedSideEffect(metadata, metadata.counter);
@@ -528,12 +607,12 @@ export async function generateSimulatedProvingResult(
528
607
  scopedNullifiersCLA,
529
608
  );
530
609
 
531
- const siloedNoteHashes = await Promise.all(
610
+ const siloedNoteHashes = await allToCompletion(
532
611
  filteredNoteHashes
533
612
  .sort((a, b) => a.counter - b.counter)
534
613
  .map(async nh => new OrderedSideEffect(await siloNoteHash(nh.contractAddress, nh.value), nh.counter)),
535
614
  );
536
- const siloedNullifiers = await Promise.all(
615
+ const siloedNullifiers = await allToCompletion(
537
616
  filteredNullifiers
538
617
  .sort((a, b) => a.counter - b.counter)
539
618
  .map(async n => new OrderedSideEffect(await siloNullifier(n.contractAddress, n.value), n.counter)),
@@ -560,17 +639,17 @@ export async function generateSimulatedProvingResult(
560
639
  siloedNullifiers,
561
640
  minRevertibleSideEffectCounter,
562
641
  );
642
+ // The protocol nullifier is the nonce generator and the tx's first nullifier. It is injected by the
643
+ // init kernel (at counter 1, index 0) rather than emitted by any private call, so it is absent from
644
+ // the executed nullifiers above. Mirror the kernel here by prepending it as the first non-revertible
645
+ // nullifier.
563
646
  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
- }
647
+ nonRevertibleNullifiers.unshift(nonceGenerator);
569
648
 
570
649
  if (isPrivateOnlyTx) {
571
650
  // We must make the note hashes unique by using the
572
651
  // nonce generator and their index in the tx.
573
- const uniqueNoteHashes = await Promise.all(
652
+ const uniqueNoteHashes = await allToCompletion(
574
653
  siloedNoteHashes.map(async (orderedSideEffect, i) => {
575
654
  const siloedNoteHash = orderedSideEffect.sideEffect;
576
655
  const nonce = await computeNoteHashNonce(nonceGenerator, i);
@@ -600,7 +679,7 @@ export async function generateSimulatedProvingResult(
600
679
  siloedNoteHashes,
601
680
  minRevertibleSideEffectCounter,
602
681
  );
603
- const nonRevertibleUniqueNoteHashes = await Promise.all(
682
+ const nonRevertibleUniqueNoteHashes = await allToCompletion(
604
683
  nonRevertibleNoteHashes.map(async (noteHash, i) => {
605
684
  const nonce = await computeNoteHashNonce(nonceGenerator, i);
606
685
  return await computeUniqueNoteHash(nonce, noteHash);
@@ -660,8 +739,8 @@ export async function generateSimulatedProvingResult(
660
739
  daGas: TX_DA_GAS_OVERHEAD,
661
740
  }),
662
741
  ),
663
- /*feePayer=*/ AztecAddress.zero(),
664
- /*expirationTimestamp=*/ 0n,
742
+ /*feePayer=*/ feePayer,
743
+ /*expirationTimestamp=*/ expirationTimestamp,
665
744
  hasPublicCalls ? inputsForPublic : undefined,
666
745
  !hasPublicCalls ? inputsForRollup : undefined,
667
746
  );
@@ -716,7 +795,7 @@ function squashTransientSideEffects(
716
795
  * at the tx's anchor block, mimicking the behavior of the kernels
717
796
  */
718
797
  async function verifyReadRequests(
719
- node: Pick<AztecNode, 'getNoteHashMembershipWitness' | 'getNullifierMembershipWitness'>,
798
+ node: Pick<AztecNode, 'findLeavesIndexes'>,
720
799
  anchorBlockHash: BlockParameter,
721
800
  noteHashReadRequests: ScopedReadRequest[],
722
801
  nullifierReadRequests: ScopedReadRequest[],
@@ -749,13 +828,25 @@ async function verifyReadRequests(
749
828
  }
750
829
  }
751
830
 
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))),
831
+ const [noteHashResults, nullifierResults] = await allToCompletion([
832
+ settledNoteHashReads.length > 0
833
+ ? node.findLeavesIndexes(
834
+ anchorBlockHash,
835
+ MerkleTreeId.NOTE_HASH_TREE,
836
+ settledNoteHashReads.map(({ value }) => value),
837
+ )
838
+ : [],
839
+ settledNullifierReads.length > 0
840
+ ? node.findLeavesIndexes(
841
+ anchorBlockHash,
842
+ MerkleTreeId.NULLIFIER_TREE,
843
+ settledNullifierReads.map(({ value }) => value),
844
+ )
845
+ : [],
755
846
  ]);
756
847
 
757
848
  for (let i = 0; i < settledNoteHashReads.length; i++) {
758
- if (!noteHashWitnesses[i]) {
849
+ if (!noteHashResults[i]) {
759
850
  throw new Error(
760
851
  `Note hash read request at index ${settledNoteHashReads[i].index} is reading an unknown note hash: ${settledNoteHashReads[i].value}`,
761
852
  );
@@ -763,7 +854,7 @@ async function verifyReadRequests(
763
854
  }
764
855
 
765
856
  for (let i = 0; i < settledNullifierReads.length; i++) {
766
- if (!nullifierWitnesses[i]) {
857
+ if (!nullifierResults[i]) {
767
858
  throw new Error(
768
859
  `Nullifier read request at index ${settledNullifierReads[i].index} is reading an unknown nullifier: ${settledNullifierReads[i].value}`,
769
860
  );
@@ -816,6 +907,11 @@ function meterGasUsed(data: PrivateToRollupAccumulatedData | PrivateToPublicAccu
816
907
  );
817
908
  meteredL2Gas += numContractClassLogs * L2_GAS_PER_CONTRACT_CLASS_LOG;
818
909
 
910
+ if (isPrivateOnlyTx) {
911
+ // The public data write that the private tx base rollup always performs to update the fee payer's balance.
912
+ meteredDAFields += PUBLIC_DATA_WRITE_LENGTH;
913
+ }
914
+
819
915
  const meteredDAGas = meteredDAFields * DA_GAS_PER_FIELD;
820
916
 
821
917
  if ((data as PrivateToPublicAccumulatedData).publicCallRequests) {